Compare commits

...

2931 Commits

Author SHA1 Message Date
ruthra kumar
799d6d159c Merge pull request #54960 from frappe/mergify/bp/version-16/pr-54941
fix: flag to disable opening balance calculation in general ledger (backport #54941)
2026-05-15 14:31:57 +05:30
ruthra kumar
48f59a033f refactor: flag to disable opening balance calculation
(cherry picked from commit 28a2230d02)
2026-05-15 07:32:52 +00:00
Frappe PR Bot
2807c9f08f chore(release): Bumped to Version 16.18.3
## [16.18.3](https://github.com/frappe/erpnext/compare/v16.18.2...v16.18.3) (2026-05-14)

### Bug Fixes

* status not changing for dropshipped POs and SOs (backport [#54934](https://github.com/frappe/erpnext/issues/54934)) (backport [#54937](https://github.com/frappe/erpnext/issues/54937)) ([#54938](https://github.com/frappe/erpnext/issues/54938)) ([5271773](5271773595))
2026-05-14 09:39:02 +00:00
mergify[bot]
5271773595 fix: status not changing for dropshipped POs and SOs (backport #54934) (backport #54937) (#54938)
fix: status not changing for dropshipped POs and SOs (backport #54934) (#54937)

fix: status not changing for dropshipped POs and SOs (#54934)

* fix: status not changing for dropshipped POs and SOs

* test: change test case to accomodate new flow

(cherry picked from commit 78a79120ea)


(cherry picked from commit 3c571a1691)

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-05-14 09:37:26 +00:00
Frappe PR Bot
dd35cd1f84 chore(release): Bumped to Version 16.18.2
## [16.18.2](https://github.com/frappe/erpnext/compare/v16.18.1...v16.18.2) (2026-05-14)

### Bug Fixes

* posting date and time ([ab09029](ab090295d9))
2026-05-14 05:35:39 +00:00
rohitwaghchaure
77a6299e8b Merge pull request #54931 from frappe/mergify/bp/version-16/pr-54928
fix: posting date and time (backport #54905) (backport #54928)
2026-05-14 11:04:07 +05:30
rohitwaghchaure
b79ec7cbdd chore: fix linter issue
(cherry picked from commit 3c993377aa)
(cherry picked from commit 21ada7799c)
2026-05-14 02:04:52 +00:00
rohitwaghchaure
927360dd1d chore: fixed test case
(cherry picked from commit c740f77a6f)
(cherry picked from commit f4e66914c6)
2026-05-14 02:04:52 +00:00
Rohit Waghchaure
ab090295d9 fix: posting date and time
(cherry picked from commit fb6c05f186)
(cherry picked from commit 1c44c60dbd)
2026-05-14 02:04:51 +00:00
Frappe PR Bot
c4b7b15824 chore(release): Bumped to Version 16.18.1
## [16.18.1](https://github.com/frappe/erpnext/compare/v16.18.0...v16.18.1) (2026-05-13)

### Reverts

* Revert "fix: debit credit not equal in purchase transactions for mult… (backport [#54906](https://github.com/frappe/erpnext/issues/54906)) (backport [#54908](https://github.com/frappe/erpnext/issues/54908)) ([#54916](https://github.com/frappe/erpnext/issues/54916)) ([cfd3847](cfd3847255))
2026-05-13 10:16:21 +00:00
mergify[bot]
cfd3847255 Revert "fix: debit credit not equal in purchase transactions for mult… (backport #54906) (backport #54908) (#54916)
Revert "fix: debit credit not equal in purchase transactions for mult… (backport #54906) (#54908)

Revert "fix: debit credit not equal in purchase transactions for mult… (#54906)

* Revert "fix: debit credit not equal in purchase transactions for multi currency"

This reverts commit 75bcea57f4.

* Revert "test: add test case"

This reverts commit 1d30a202c3.

* Revert "fix: include rejected qty in tax (purchase receipt)"

This reverts commit 8c9a88abbe.

(cherry picked from commit cf5e8ce878)


(cherry picked from commit 0d07083299)

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-05-13 10:14:46 +00:00
Frappe PR Bot
dc914adb62 chore(release): Bumped to Version 16.18.0
# [16.18.0](https://github.com/frappe/erpnext/compare/v16.17.0...v16.18.0) (2026-05-12)

### Bug Fixes

* added permission validation for `deactivate_sales_person` (backport [#54884](https://github.com/frappe/erpnext/issues/54884)) ([#54886](https://github.com/frappe/erpnext/issues/54886)) ([98de025](98de025a09))
* check if item is dropshipped before updating quantity (backport [#54825](https://github.com/frappe/erpnext/issues/54825)) ([#54827](https://github.com/frappe/erpnext/issues/54827)) ([0db7e1e](0db7e1e56b))
* **crm:** handle empty _assign in appointment auto assignment (backport [#54782](https://github.com/frappe/erpnext/issues/54782)) ([#54795](https://github.com/frappe/erpnext/issues/54795)) ([f36bdaa](f36bdaadae))
* decimal issue ([8b9b83a](8b9b83a9df))
* do not rely on client side to update quantities during partial d… (backport [#54804](https://github.com/frappe/erpnext/issues/54804)) ([#54821](https://github.com/frappe/erpnext/issues/54821)) ([f24b556](f24b556336))
* fetch get_item_tax_template while update items (backport [#53708](https://github.com/frappe/erpnext/issues/53708)) ([#54767](https://github.com/frappe/erpnext/issues/54767)) ([4fbaea1](4fbaea17f8))
* incorrect serial nos picked during disassemble (backport [#54757](https://github.com/frappe/erpnext/issues/54757)) ([#54760](https://github.com/frappe/erpnext/issues/54760)) ([66ae590](66ae590adc))
* incorrect validation thrown for drop shipped PI (backport [#54751](https://github.com/frappe/erpnext/issues/54751)) ([#54753](https://github.com/frappe/erpnext/issues/54753)) ([379ebbe](379ebbe8c4))
* raw material should not have target warehouse in manufacture entry (backport [#54849](https://github.com/frappe/erpnext/issues/54849)) ([#54861](https://github.com/frappe/erpnext/issues/54861)) ([3dbadfa](3dbadfadd5))
* rename supplier wise stock analytics report ([7086db1](7086db1e1c))
* **stock:** apply filters for rejected warehouse in pick list (backport [#54733](https://github.com/frappe/erpnext/issues/54733)) ([#54776](https://github.com/frappe/erpnext/issues/54776)) ([cf0d9df](cf0d9dfbfd))
* **stock:** ignore reserved qty for stock levels in batch (backport [#54790](https://github.com/frappe/erpnext/issues/54790)) ([#54797](https://github.com/frappe/erpnext/issues/54797)) ([338d190](338d1904c1))
* **stock:** priorities pick list parent warehouse (backport [#54788](https://github.com/frappe/erpnext/issues/54788)) ([#54793](https://github.com/frappe/erpnext/issues/54793)) ([d3bc629](d3bc629f68))
* **task:** update depends_on for closing date and review date [#54850](https://github.com/frappe/erpnext/issues/54850) (backport [#54852](https://github.com/frappe/erpnext/issues/54852)) ([#54863](https://github.com/frappe/erpnext/issues/54863)) ([b962a1a](b962a1a0cd))
* validate variant values (backport [#54831](https://github.com/frappe/erpnext/issues/54831)) ([#54839](https://github.com/frappe/erpnext/issues/54839)) ([87b798b](87b798b936))

### Features

* partial delivery in dropshipping (backport [#54787](https://github.com/frappe/erpnext/issues/54787)) ([#54800](https://github.com/frappe/erpnext/issues/54800)) ([f64f871](f64f871d45))
* Philippines chart of account (backport [#53918](https://github.com/frappe/erpnext/issues/53918)) ([#54888](https://github.com/frappe/erpnext/issues/54888)) ([8f03108](8f0310859d))
2026-05-12 18:49:27 +00:00
diptanilsaha
41bff45d7a Merge pull request #54865 from frappe/version-16-hotfix
chore: release v16
2026-05-13 00:17:54 +05:30
mergify[bot]
8f0310859d feat: Philippines chart of account (backport #53918) (#54888)
feat: Added Philippines chart of account json file (#53918)

* feat: Added philipinnes chart of account json file



* feat: made changes as per review comments and corrected indentation

* feat: made changes as per review comments

* feat: made changes as per review comments to resolve the issues

* fix: fixed changes as per review comments



* fix: fixed changes as per review comments on bank group account



---------




(cherry picked from commit 5560f6c270)

Signed-off-by: Soham-ambibuzz <soham.pawar@ambibuzz.com>
Signed-off-by: soham7117 <sohampawar626@gmail.com>
Co-authored-by: Soham-ambibuzz <soham.pawar@ambibuzz.com>
Co-authored-by: soham7117 <sohampawar626@gmail.com>
2026-05-12 16:46:05 +00:00
mergify[bot]
98de025a09 fix: added permission validation for deactivate_sales_person (backport #54884) (#54886)
* fix: added permission validation for `deactivate_sales_person` (#54884)

(cherry picked from commit 9134db9cd3)

# Conflicts:
#	erpnext/setup/doctype/employee/employee.py

* chore: resolved conflict

---------

Co-authored-by: diptanilsaha <diptanil@frappe.io>
2026-05-12 16:31:21 +00:00
mergify[bot]
b962a1a0cd fix(task): update depends_on for closing date and review date #54850 (backport #54852) (#54863)
fix(task): update depends_on for closing date and review date #54850 (#54852)

(cherry picked from commit 3532c1cc69)

Co-authored-by: Jaypal Lakum <96212547+jp-the-dev@users.noreply.github.com>
2026-05-12 10:13:49 +00:00
mergify[bot]
3dbadfadd5 fix: raw material should not have target warehouse in manufacture entry (backport #54849) (#54861)
fix: raw material should not have target warehouse in manufacture entry (#54849)

(cherry picked from commit b5527cf328)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-05-12 09:46:45 +00:00
Nishka Gosalia
67ad437dd3 Merge pull request #54854 from frappe/mergify/bp/version-16-hotfix/pr-54835
fix: rename supplier wise stock analytics report (backport #54835)
2026-05-12 14:08:34 +05:30
nishkagosalia
7086db1e1c fix: rename supplier wise stock analytics report
(cherry picked from commit 85206e0278)
2026-05-12 07:08:04 +00:00
mergify[bot]
87b798b936 fix: validate variant values (backport #54831) (#54839)
fix: validate variant values (#54831)

(cherry picked from commit 95705f18aa)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-05-11 21:23:34 +05:30
ruthra kumar
b894b02ebc Merge pull request #54832 from frappe/mergify/bp/version-16-hotfix/pr-54828
refactor(test): speed up payment reconciliation tests (backport #54828)
2026-05-11 14:28:02 +05:30
ruthra kumar
1d20469c99 refactor(test): speed up payment reconciliation tests
(cherry picked from commit f58242dca7)
2026-05-11 08:40:07 +00:00
mergify[bot]
0db7e1e56b fix: check if item is dropshipped before updating quantity (backport #54825) (#54827)
fix: check if item is dropshipped before updating quantity (#54825)

(cherry picked from commit 23e9ad3fd9)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-05-11 08:08:09 +00:00
mergify[bot]
f24b556336 fix: do not rely on client side to update quantities during partial d… (backport #54804) (#54821)
* fix: do not rely on client side to update quantities during partial d… (#54804)

fix: do not rely on client side to update quantities during partial dropship
(cherry picked from commit 03acbc3dc9)

# Conflicts:
#	erpnext/buying/doctype/purchase_order/purchase_order.py

* chore: resolve conflicts

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-05-11 07:40:14 +00:00
MochaMind
1fcd2837e8 chore: update POT file (#54814) 2026-05-10 13:56:48 +02:00
mergify[bot]
f64f871d45 feat: partial delivery in dropshipping (backport #54787) (#54800)
* feat: partial delivery in dropshipping (#54787)

(cherry picked from commit db74360396)

# Conflicts:
#	erpnext/buying/doctype/purchase_order/purchase_order.py
#	erpnext/buying/doctype/purchase_order_item/purchase_order_item.json

* chore: resolve conflicts

* chore: resolve conflicts

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-05-09 02:01:42 +00:00
mergify[bot]
f36bdaadae fix(crm): handle empty _assign in appointment auto assignment (backport #54782) (#54795)
fix(crm): handle empty _assign in appointment auto assignment (#54782)

(cherry picked from commit a4a389bd41)

Co-authored-by: Sakthivel Murugan S <129778327+ssakthivelmurugan@users.noreply.github.com>
2026-05-08 12:55:38 +00:00
mergify[bot]
d3bc629f68 fix(stock): priorities pick list parent warehouse (backport #54788) (#54793)
fix(stock): priorities pick list parent warehouse (#54788)

(cherry picked from commit 4e850f31d5)

Co-authored-by: Sudharsanan Ashok <135326972+Sudharsanan11@users.noreply.github.com>
2026-05-08 12:42:02 +00:00
mergify[bot]
338d1904c1 fix(stock): ignore reserved qty for stock levels in batch (backport #54790) (#54797)
fix(stock): ignore reserved qty for stock levels in batch (#54790)

(cherry picked from commit 0b6a372a52)

Co-authored-by: Pandiyan P <pandiyanpalani37@gmail.com>
2026-05-08 12:35:22 +00:00
mergify[bot]
4fbaea17f8 fix: fetch get_item_tax_template while update items (backport #53708) (#54767)
* fix: fetch get_item_tax_template while update items

(cherry picked from commit 03c9d16ca6)

* fix: resolve item tax template from item group in update items

(cherry picked from commit 97e7916b66)

* fix: resolve item tax template from item group in update items

(cherry picked from commit ad22256b2d)

---------

Co-authored-by: ervishnucs <ervishnucs369@gmail.com>
2026-05-07 16:04:20 +05:30
mergify[bot]
cf0d9dfbfd fix(stock): apply filters for rejected warehouse in pick list (backport #54733) (#54776)
fix(stock): apply filters for rejected warehouse in pick list (#54733)

(cherry picked from commit 0fc96e8f7d)

Co-authored-by: Pandiyan P <pandiyanpalani37@gmail.com>
2026-05-07 10:31:19 +00:00
mergify[bot]
66ae590adc fix: incorrect serial nos picked during disassemble (backport #54757) (#54760)
fix: incorrect serial nos picked during disassemble

(cherry picked from commit 25f7fa548d)

Co-authored-by: Rohit Waghchaure <rohitw1991@gmail.com>
2026-05-06 16:06:03 +05:30
mergify[bot]
379ebbe8c4 fix: incorrect validation thrown for drop shipped PI (backport #54751) (#54753)
* fix: incorrect validation thrown for drop shipped PI (#54751)

(cherry picked from commit 907a809f3f)

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

* chore: resolve conflicts

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-05-06 05:55:26 +00:00
Frappe PR Bot
7b494dc9e8 chore(release): Bumped to Version 16.17.0
# [16.17.0](https://github.com/frappe/erpnext/compare/v16.16.0...v16.17.0) (2026-05-05)

### Bug Fixes

* accounts and account types in German CoA "SKR 03" (backport [#54711](https://github.com/frappe/erpnext/issues/54711)) ([#54713](https://github.com/frappe/erpnext/issues/54713)) ([982810a](982810a700))
* add missing fields in set_currency_labels (backport [#54689](https://github.com/frappe/erpnext/issues/54689)) ([#54690](https://github.com/frappe/erpnext/issues/54690)) ([bca893a](bca893a508))
* Backfill `not_applicable` on Item Tax Template Details for German companies (backport [#54682](https://github.com/frappe/erpnext/issues/54682)) ([#54686](https://github.com/frappe/erpnext/issues/54686)) ([a22d773](a22d773341))
* copy project from first row to new rows (backport [#53295](https://github.com/frappe/erpnext/issues/53295)) ([#54620](https://github.com/frappe/erpnext/issues/54620)) ([e24ab72](e24ab72c0d))
* correct project filter in buying doctypes (backport [#54644](https://github.com/frappe/erpnext/issues/54644)) ([#54652](https://github.com/frappe/erpnext/issues/54652)) ([86cf256](86cf256358))
* correct titles set to {customer_name} or {supplier_name} text strings (backport [#54656](https://github.com/frappe/erpnext/issues/54656)) ([#54669](https://github.com/frappe/erpnext/issues/54669)) ([38cfeb1](38cfeb1bb7))
* dont show serial/batch button when PR is submitted (backport [#54642](https://github.com/frappe/erpnext/issues/54642)) ([#54646](https://github.com/frappe/erpnext/issues/54646)) ([6dbc17d](6dbc17d71a))
* error when creating quotation from CRM (backport [#54722](https://github.com/frappe/erpnext/issues/54722)) ([#54725](https://github.com/frappe/erpnext/issues/54725)) ([2cd4c1a](2cd4c1a052))
* hide payment and payment request buttons based on permissions in invoices and orders (backport [#53920](https://github.com/frappe/erpnext/issues/53920)) ([#54736](https://github.com/frappe/erpnext/issues/54736)) ([e60490d](e60490dceb))
* incorrect expense account book in purchase return (backport [#54681](https://github.com/frappe/erpnext/issues/54681)) ([#54693](https://github.com/frappe/erpnext/issues/54693)) ([0dade2c](0dade2c38c))
* mark item tax templates as not applicable (backport [#54673](https://github.com/frappe/erpnext/issues/54673)) ([#54677](https://github.com/frappe/erpnext/issues/54677)) ([126e13b](126e13be25))
* **payment_entry:** convert the date args to string type before escaping in `get_outstanding_reference_documents` (backport [#54639](https://github.com/frappe/erpnext/issues/54639)) ([#54648](https://github.com/frappe/erpnext/issues/54648)) ([19a8ebe](19a8ebe8a5))
* **project:** use user.email for invitations and skip disabled users. (backport [#54561](https://github.com/frappe/erpnext/issues/54561)) ([#54667](https://github.com/frappe/erpnext/issues/54667)) ([288cdf3](288cdf3bf0))
* py error on sales forecast doctype (backport [#54641](https://github.com/frappe/erpnext/issues/54641)) ([#54643](https://github.com/frappe/erpnext/issues/54643)) ([7bd360a](7bd360aa29))
* Remove bom stock report link from manufacturing workspace ([0f27881](0f27881fed))
* **selling:** blanket order ordered qty recalculation on sales order status change (backport [#54593](https://github.com/frappe/erpnext/issues/54593)) ([#54623](https://github.com/frappe/erpnext/issues/54623)) ([9db03bc](9db03bc520))
* set valid_from in created Item Price (backport [#54696](https://github.com/frappe/erpnext/issues/54696)) ([#54700](https://github.com/frappe/erpnext/issues/54700)) ([bbb4e79](bbb4e79d0a))
* show correct status in Serial No Ledger (backport [#54567](https://github.com/frappe/erpnext/issues/54567)) ([#54626](https://github.com/frappe/erpnext/issues/54626)) ([d6f2ff6](d6f2ff6b87))
* show in and out qty in the stock ledger report for stock recos ([d27cf48](d27cf48b19))
* skip depreciation rescheduling when asset is fully depreciated on sale ([d3c893d](d3c893d08b))
* skip rescheduling only for asset being disposed ([07a957c](07a957c164))
* use RecoverableErrors isinstance check for repost timeout status (backport [#54543](https://github.com/frappe/erpnext/issues/54543)) ([#54649](https://github.com/frappe/erpnext/issues/54649)) ([b300159](b3001595ab))

### Features

* copy terms attachments to transactions (backport [#53403](https://github.com/frappe/erpnext/issues/53403)) ([#54661](https://github.com/frappe/erpnext/issues/54661)) ([bd932da](bd932da08b))
* **ux:** Naming series dialog ([#54554](https://github.com/frappe/erpnext/issues/54554)) ([48ebb4c](48ebb4ca61))

### Performance Improvements

* max recursion depth error in serial no (backport [#54629](https://github.com/frappe/erpnext/issues/54629)) ([#54631](https://github.com/frappe/erpnext/issues/54631)) ([808214f](808214fd95))
2026-05-05 16:32:20 +00:00
rohitwaghchaure
2bc07f18a7 Merge pull request #54745 from frappe/mergify/bp/version-16-hotfix/pr-54723
fix: decimal issue in stock ageing report (backport #54723)
2026-05-05 22:02:16 +05:30
diptanilsaha
ed69dafbe8 Merge pull request #54740 from frappe/version-16-hotfix 2026-05-05 22:00:39 +05:30
Nishka Gosalia
c985f94009 Merge pull request #54743 from frappe/mergify/bp/version-16-hotfix/pr-54732
fix: Remove bom stock report link from manufacturing workspace (backport #54732)
2026-05-05 16:44:55 +05:30
Rohit Waghchaure
8b9b83a9df fix: decimal issue
(cherry picked from commit 542eb6aca4)
2026-05-05 11:13:04 +00:00
nishkagosalia
0f27881fed fix: Remove bom stock report link from manufacturing workspace
(cherry picked from commit f86568b078)
2026-05-05 10:51:13 +00:00
mergify[bot]
e60490dceb fix: hide payment and payment request buttons based on permissions in invoices and orders (backport #53920) (#54736)
Co-authored-by: Sakthivel Murugan S <129778327+ssakthivelmurugan@users.noreply.github.com>
Co-authored-by: ravibharathi656 <ravibharathi656@gmail.com>
fix: hide payment and payment request buttons based on permissions in invoices and orders (#53920)
2026-05-05 12:17:57 +05:30
mergify[bot]
2cd4c1a052 fix: error when creating quotation from CRM (backport #54722) (#54725)
fix: error when creating quotation from CRM (#54722)

(cherry picked from commit 2d3190effb)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-05-04 16:04:03 +00:00
mergify[bot]
982810a700 fix: accounts and account types in German CoA "SKR 03" (backport #54711) (#54713)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
fix: accounts and account types in German CoA "SKR 03" (#54711)
2026-05-03 17:49:02 +00:00
MochaMind
18006b978f chore: update POT file (#54710) 2026-05-03 14:24:28 +02:00
mergify[bot]
bbb4e79d0a fix: set valid_from in created Item Price (backport #54696) (#54700)
* fix: set valid_from in created Item Price (#54696)

Co-authored-by: Kaajal-Chhattani <kaajal.chhattani@aurigait.com>
(cherry picked from commit 6246a9aa6e)

# Conflicts:
#	erpnext/stock/get_item_details.py

* chore: resolve conflicts

---------

Co-authored-by: Kaajalchhattani <89331214+Kaajalchhattani@users.noreply.github.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-05-02 16:45:52 +00:00
mergify[bot]
bca893a508 fix: add missing fields in set_currency_labels (backport #54689) (#54690)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
fix: add missing fields in set_currency_labels (#54689)
2026-05-01 14:39:39 +02:00
mergify[bot]
0dade2c38c fix: incorrect expense account book in purchase return (backport #54681) (#54693)
fix: incorrect expense account book in purchase return

(cherry picked from commit 2a720e7008)

Co-authored-by: Rohit Waghchaure <rohitw1991@gmail.com>
2026-05-01 12:47:05 +05:30
mergify[bot]
a22d773341 fix: Backfill not_applicable on Item Tax Template Details for German companies (backport #54682) (#54686)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
fix: Backfill `not_applicable` on Item Tax Template Details for German companies (#54682)
2026-05-01 04:29:06 +02:00
mergify[bot]
126e13be25 fix: mark item tax templates as not applicable (backport #54673) (#54677)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
fix: mark item tax templates as not applicable (#54673)
2026-04-30 17:52:24 +02:00
mergify[bot]
288cdf3bf0 fix(project): use user.email for invitations and skip disabled users. (backport #54561) (#54667)
fix(project): use user.email for invitations and skip disabled users. (#54561)

* fix(project): use user.email for invitations and skip disabled users.

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



* fix(project): remove duplicate loop causing indentation error

* fix(project): resolve pre-commit hook failure

---------


(cherry picked from commit 231dd1856f)

Co-authored-by: Hemil-Sangani <hemil@sanskartechnolab.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-04-30 14:35:12 +05:30
rohitwaghchaure
2422237c1a Merge pull request #54671 from frappe/mergify/bp/version-16-hotfix/pr-54664
fix: show in and out qty in the stock ledger report for stock recos (backport #54664)
2026-04-30 14:34:23 +05:30
mergify[bot]
38cfeb1bb7 fix: correct titles set to {customer_name} or {supplier_name} text strings (backport #54656) (#54669)
Co-authored-by: Trusted Computer <75872475+trustedcomputer@users.noreply.github.com>
Co-authored-by: barredterra <14891507+barredterra@users.noreply.github.com>
fix: correct titles set to {customer_name} or {supplier_name} text strings (#54656)
2026-04-30 08:52:23 +00:00
Rohit Waghchaure
d27cf48b19 fix: show in and out qty in the stock ledger report for stock recos
(cherry picked from commit da081254a6)
2026-04-30 08:44:26 +00:00
Khushi Rawat
c232f1f450 Merge pull request #54659 from frappe/mergify/bp/version-16-hotfix/pr-54658
fix: skip depreciation rescheduling when asset is fully depreciated on sale (backport #54658)
2026-04-30 11:31:15 +05:30
mergify[bot]
bd932da08b feat: copy terms attachments to transactions (backport #53403) (#54661)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2026-04-29 23:43:28 +02:00
khushi8112
07a957c164 fix: skip rescheduling only for asset being disposed
(cherry picked from commit 88b82383f5)
2026-04-29 21:05:17 +00:00
khushi8112
d3c893d08b fix: skip depreciation rescheduling when asset is fully depreciated on sale
(cherry picked from commit c4155b6c81)
2026-04-29 21:05:17 +00:00
mergify[bot]
b3001595ab fix: use RecoverableErrors isinstance check for repost timeout status (backport #54543) (#54649)
fix: use RecoverableErrors isinstance check for repost timeout status

When a Repost Item Valuation job is killed by an RQ worker timeout
(JobTimeoutException raised via SIGALRM), the existing status detection
relied solely on traceback string matching for 'timeout' or 'Deadlock'.

This is unreliable because SIGALRM can interrupt a C-extension call
(e.g. inside pypika's copy.copy()) before Python records the exception
in the traceback. In that case the traceback shows only the interrupted
frame -- not JobTimeoutException -- so the job is permanently marked
'Failed' instead of 'In Progress', preventing the scheduler from
automatically retrying it.

RecoverableErrors = (JobTimeoutException, QueryDeadlockError,
QueryTimeoutError) is already defined at the top of this file and is
already used further down in the same except block to suppress email
notifications. Extend its use to also guard the status decision.

The traceback string fallback is kept as a secondary check for
forward compatibility with other timeout signals.

Fixes: jobs permanently stuck as 'Failed' after RQ worker timeout,
requiring manual re-queue to resume reposting.

(cherry picked from commit a49e2de866)

Co-authored-by: Assem Bahnasy <bahnasyassem@gmail.com>
2026-04-29 12:02:04 +00:00
mergify[bot]
86cf256358 fix: correct project filter in buying doctypes (backport #54644) (#54652)
fix: correct project filter in buying doctypes (#54644)

(cherry picked from commit a04c028522)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-29 17:28:12 +05:30
mergify[bot]
19a8ebe8a5 fix(payment_entry): convert the date args to string type before escaping in get_outstanding_reference_documents (backport #54639) (#54648)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix(payment_entry): convert the date args to string type before escaping in `get_outstanding_reference_documents` (#54639)
2026-04-29 11:45:24 +00:00
mergify[bot]
6dbc17d71a fix: dont show serial/batch button when PR is submitted (backport #54642) (#54646)
fix: dont show serial/batch button when PR is submitted (#54642)

(cherry picked from commit 060defcc2b)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-29 11:32:37 +00:00
mergify[bot]
7bd360aa29 fix: py error on sales forecast doctype (backport #54641) (#54643)
fix: py error on sales forecast doctype (#54641)

fix: py error on sales forecase doctype
(cherry picked from commit d0d8cff48f)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-29 11:13:18 +00:00
Nishka Gosalia
2e438011da Merge pull request #54635 from frappe/mergify/bp/version-16-hotfix/pr-54554 2026-04-29 15:21:22 +05:30
Nishka Gosalia
48ebb4ca61 feat(ux): Naming series dialog (#54554)
(cherry picked from commit 844f3dbc0b)
2026-04-29 09:15:45 +00:00
mergify[bot]
808214fd95 perf: max recursion depth error in serial no (backport #54629) (#54631)
perf: max recursion depth error in serial no (#54629)

(cherry picked from commit 503b5bf140)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-29 08:53:07 +00:00
mergify[bot]
d6f2ff6b87 fix: show correct status in Serial No Ledger (backport #54567) (#54626)
* refactor: extract SN status logic

(cherry picked from commit cb2e6e1e2e)

* fix: show correct status in Serial No Ledger

(cherry picked from commit 2b3e047143)

---------

Co-authored-by: barredterra <14891507+barredterra@users.noreply.github.com>
2026-04-29 13:55:18 +05:30
mergify[bot]
9db03bc520 fix(selling): blanket order ordered qty recalculation on sales order status change (backport #54593) (#54623)
fix(selling): blanket order ordered qty recalculation on sales order status change (#54593)

(cherry picked from commit d68801e73a)

Co-authored-by: Pandiyan P <pandiyanpalani37@gmail.com>
2026-04-29 06:47:55 +00:00
mergify[bot]
e24ab72c0d fix: copy project from first row to new rows (backport #53295) (#54620)
fix: copy project to new item row from parent

(cherry picked from commit 68cc518497)

Co-authored-by: ravibharathi656 <ravibharathi656@gmail.com>
2026-04-29 11:55:46 +05:30
Frappe PR Bot
4d5c665e22 chore(release): Bumped to Version 16.16.0
# [16.16.0](https://github.com/frappe/erpnext/compare/v16.15.1...v16.16.0) (2026-04-28)

### Bug Fixes

* **`get_stock_balance`:** validate inventory dimension fieldnames (backport [#54587](https://github.com/frappe/erpnext/issues/54587)) ([#54589](https://github.com/frappe/erpnext/issues/54589)) ([9f04fcc](9f04fcc190))
* add filter labels and required filters for financial report validation ([e6f0bb6](e6f0bb66e2))
* add party type for dynamic link support ([c6d4802](c6d4802857))
* always exclude pcv entries except for closing account head ([446c111](446c111653))
* avoid double reduction of pe reference outstanding (backport [#54193](https://github.com/frappe/erpnext/issues/54193)) ([#54613](https://github.com/frappe/erpnext/issues/54613)) ([5de4b01](5de4b013ea))
* correct display depends on condition ([#54556](https://github.com/frappe/erpnext/issues/54556)) ([0df38a8](0df38a841e))
* debit credit not equal in purchase transactions for multi currency (backport [#54456](https://github.com/frappe/erpnext/issues/54456)) ([#54564](https://github.com/frappe/erpnext/issues/54564)) ([d9a9a5b](d9a9a5bcde))
* delivery schedule in the sales order ([386f499](386f49978e))
* duplicate entries being shown in batch exists in future transact… (backport [#54604](https://github.com/frappe/erpnext/issues/54604)) ([#54606](https://github.com/frappe/erpnext/issues/54606)) ([1111771](11117710d3))
* **edi:** restrict Code List imports to files and trusted backend URLs (backport [#54137](https://github.com/frappe/erpnext/issues/54137)) ([#54266](https://github.com/frappe/erpnext/issues/54266)) ([2a244d1](2a244d162b)), closes [#54488](https://github.com/frappe/erpnext/issues/54488)
* ensure fiscal year is checked before validating date filters in financial statements ([fba7871](fba78711cc))
* ensure tax withholding entries respect date range of category ([719d982](719d982a07))
* filter opening entries in first year in custom financial statement ([6bd6e62](6bd6e62c8c))
* filter overdue purchase order items by company (backport [#54099](https://github.com/frappe/erpnext/issues/54099)) ([#54611](https://github.com/frappe/erpnext/issues/54611)) ([8f8bf13](8f8bf13b41))
* hide feature flag controlled fields on install ([45dc2c4](45dc2c40fd))
* make inv dimen reqd only in delivery note (backport [#54546](https://github.com/frappe/erpnext/issues/54546)) ([#54552](https://github.com/frappe/erpnext/issues/54552)) ([d56df96](d56df96f73))
* **manufacturing:** remove conversion factor for stock qty (backport [#54525](https://github.com/frappe/erpnext/issues/54525)) ([#54573](https://github.com/frappe/erpnext/issues/54573)) ([f14751d](f14751d538))
* negative quantity check in validate_item_qty (backport [#54559](https://github.com/frappe/erpnext/issues/54559)) ([#54572](https://github.com/frappe/erpnext/issues/54572)) ([f7fa394](f7fa394aea))
* **payment_entry:** escape arguments on invoice and order fetching sql queries (backport [#54582](https://github.com/frappe/erpnext/issues/54582)) ([#54586](https://github.com/frappe/erpnext/issues/54586)) ([5289aa0](5289aa0ab3))
* **PCV:** set correct filters of `from_date` and `to_date` on General Ledger Report on clicking `Ledger` button (backport [#54522](https://github.com/frappe/erpnext/issues/54522)) ([#54524](https://github.com/frappe/erpnext/issues/54524)) ([f3996fb](f3996fb971))
* preserve inventory dimensions when raw materials are reset (backport [#54440](https://github.com/frappe/erpnext/issues/54440)) ([#54493](https://github.com/frappe/erpnext/issues/54493)) ([456e99b](456e99b352))
* py error on stock ageing report (backport [#54467](https://github.com/frappe/erpnext/issues/54467)) ([#54469](https://github.com/frappe/erpnext/issues/54469)) ([090aab3](090aab33fb))
* skip BudgetValidation when cancelling GL entries ([1b14673](1b146738c4))
* **stock:** add stock entry in batch master connection ([62bbe28](62bbe28a72))
* **stock:** remove validation for transfer_qty field (backport [#54542](https://github.com/frappe/erpnext/issues/54542)) ([#54545](https://github.com/frappe/erpnext/issues/54545)) ([cc85370](cc85370d54))
* **stock:** set incoming rate as zero for outward sle (backport [#54514](https://github.com/frappe/erpnext/issues/54514)) ([#54533](https://github.com/frappe/erpnext/issues/54533)) ([cabea2f](cabea2f288))
* **stock:** show available qty in warehouse link field (backport [#54474](https://github.com/frappe/erpnext/issues/54474)) ([#54484](https://github.com/frappe/erpnext/issues/54484)) ([f7b87ed](f7b87ed0e3))
* **stock:** show item code in serial and batch selector dialog ([85d1eb8](85d1eb8379))
* summing of values could be zero even if values exist ([d51ce66](d51ce66cb2))
* update account identification to avoid using name_field in financial statements ([7b60ec8](7b60ec8457))
* update fiscal year filter to use mandatory_depends_on instead of reqd ([6570796](6570796fba))
* update status of quotation in patch (backport [#54577](https://github.com/frappe/erpnext/issues/54577)) ([#54580](https://github.com/frappe/erpnext/issues/54580)) ([134e4b7](134e4b7446))

### Features

* add setting to hide Subscription references across doctypes ([#54576](https://github.com/frappe/erpnext/issues/54576)) ([15b6633](15b6633fc3))
* Add XLSX styling support to custom financial report templates ([#52612](https://github.com/frappe/erpnext/issues/52612)) ([055ff56](055ff56ce4))
* Add XLSX styling support to custom financial report templates (backport [#52612](https://github.com/frappe/erpnext/issues/52612)) ([#54485](https://github.com/frappe/erpnext/issues/54485)) ([df3fbed](df3fbeded2))
* danish_bosnian_address_template (backport [#54093](https://github.com/frappe/erpnext/issues/54093)) ([#54516](https://github.com/frappe/erpnext/issues/54516)) ([5c0d2cb](5c0d2cb474))
* enhance account category with root type ([#53190](https://github.com/frappe/erpnext/issues/53190)) ([96bab08](96bab08ae0))
2026-04-28 21:03:29 +00:00
diptanilsaha
e09487d140 Merge pull request #54583 from frappe/version-16-hotfix 2026-04-29 02:31:54 +05:30
mergify[bot]
5de4b013ea fix: avoid double reduction of pe reference outstanding (backport #54193) (#54613)
* fix: avoid double reduction of pe reference outstanding (#54193)

Co-authored-by: diptanilsaha <diptanil@frappe.io>
(cherry picked from commit d1a80d40c4)

# Conflicts:
#	erpnext/accounts/utils.py

* chore: remove type hints for function parameters

---------

Co-authored-by: Ravibharathi <131471282+ravibharathi656@users.noreply.github.com>
Co-authored-by: diptanilsaha <diptanil@frappe.io>
2026-04-28 20:41:42 +00:00
mergify[bot]
8f8bf13b41 fix: filter overdue purchase order items by company (backport #54099) (#54611)
Co-authored-by: Ravibharathi <131471282+ravibharathi656@users.noreply.github.com>
fix: filter overdue purchase order items by company (#54099)
2026-04-29 01:25:31 +05:30
mergify[bot]
11117710d3 fix: duplicate entries being shown in batch exists in future transact… (backport #54604) (#54606)
fix: duplicate entries being shown in batch exists in future transact… (#54604)

fix: duplicate entries being shown in batch exists in future transactions msg
(cherry picked from commit 54f20de7e3)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-28 22:23:13 +05:30
diptanilsaha
90b07b3db5 Merge branch 'version-16' into version-16-hotfix 2026-04-28 21:49:53 +05:30
Trusted Computer
0d498baa10 refactor: bring back titles on sales transactions and make them optional and visible on purchase transactions (backport #52633) (#54601)
* refactor: bring back titles on sales transactions and make them optional and visible on purchase transactions

* fix: update timestamp in json to UTC
2026-04-28 21:12:41 +05:30
mergify[bot]
deef1696d6 refactor(sms_center): replaced raw SQL queries with Query Builder (backport #54600) (#54603)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
2026-04-28 15:41:59 +00:00
Lakshit Jain
c6ee18b4d4 Merge pull request #54599 from frappe/mergify/bp/version-16-hotfix/pr-54362
fix: filter opening entries after closing voucher (backport #54362)
2026-04-28 19:04:45 +05:30
Lakshit Jain
2f88fa6731 Merge pull request #54598 from frappe/mergify/bp/version-16-hotfix/pr-54517
fix: always exclude pcv entries except for closing account head (backport #54517)
2026-04-28 19:03:09 +05:30
Lakshit Jain
9c5c87b354 Merge pull request #54594 from frappe/mergify/bp/version-16-hotfix/pr-54479
fix:  Handle mandantory filters for financial statements report (backport #54479)
2026-04-28 18:45:05 +05:30
Smit Vora
64a724baea test: include both accounts to test sum = 0
(cherry picked from commit 590f2ffe28)
2026-04-28 13:13:46 +00:00
Smit Vora
7f32c3aca7 test: opening entries after period closing
(cherry picked from commit 5fc3ca1d4b)
2026-04-28 13:13:46 +00:00
Smit Vora
4675921077 chore: comment
(cherry picked from commit c94b8c41f3)
2026-04-28 13:13:46 +00:00
Smit Vora
d51ce66cb2 fix: summing of values could be zero even if values exist
(cherry picked from commit 7ae91cac01)
2026-04-28 13:13:45 +00:00
vorasmit
6bd6e62c8c fix: filter opening entries in first year in custom financial statement
(cherry picked from commit 3c8a066484)
2026-04-28 13:13:45 +00:00
Smit Vora
fa901946ce test: pcv is excluded from PL accounts
(cherry picked from commit 84aa54c540)
2026-04-28 13:13:18 +00:00
Smit Vora
446c111653 fix: always exclude pcv entries except for closing account head
(cherry picked from commit 0349e7a0b8)
2026-04-28 13:13:18 +00:00
Abdeali Chharchhoda
859b24dd95 chore: minor fix
(cherry picked from commit 3854d2cbf6)
2026-04-28 12:01:21 +00:00
Abdeali Chharchhoda
7b60ec8457 fix: update account identification to avoid using name_field in financial statements
(cherry picked from commit 1fd6c3ba1a)
2026-04-28 12:01:21 +00:00
Abdeali Chharchhoda
e6f0bb66e2 fix: add filter labels and required filters for financial report validation
(cherry picked from commit 4274c2aba3)
2026-04-28 12:01:21 +00:00
Abdeali Chharchhoda
6570796fba fix: update fiscal year filter to use mandatory_depends_on instead of reqd
(cherry picked from commit 79d6a51e1e)
2026-04-28 12:01:20 +00:00
Abdeali Chharchhoda
fba78711cc fix: ensure fiscal year is checked before validating date filters in financial statements
(cherry picked from commit 5a915cb45e)
2026-04-28 12:01:20 +00:00
mergify[bot]
9f04fcc190 fix(get_stock_balance): validate inventory dimension fieldnames (backport #54587) (#54589)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix(`get_stock_balance`): validate inventory dimension fieldnames (#54587)
2026-04-28 11:35:16 +00:00
mergify[bot]
5289aa0ab3 fix(payment_entry): escape arguments on invoice and order fetching sql queries (backport #54582) (#54586)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix(payment_entry): escape arguments on invoice and order fetching sql queries (#54582)
2026-04-28 10:48:41 +00:00
ruthra kumar
185ef4e273 Merge pull request #54553 from frappe/mergify/bp/version-16-hotfix/pr-54509
fix: hide feature flag controlled fields on install (backport #54509)
2026-04-28 16:04:42 +05:30
ruthra kumar
45dc2c40fd fix: hide feature flag controlled fields on install
(cherry picked from commit 889fdf2f11)
2026-04-28 15:44:28 +05:30
mergify[bot]
386a373c9b chore(sidebar): moved Inactive Customers from CRM to Selling Workspace Sidebar (backport #54578) (#54581)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
2026-04-28 15:41:36 +05:30
mergify[bot]
134e4b7446 fix: update status of quotation in patch (backport #54577) (#54580)
fix: update status of quotation in patch (#54577)

(cherry picked from commit 2088a01c19)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-28 09:44:16 +00:00
Jatin3128
15b6633fc3 feat: add setting to hide Subscription references across doctypes (#54576) 2026-04-28 13:09:50 +05:30
mergify[bot]
f14751d538 fix(manufacturing): remove conversion factor for stock qty (backport #54525) (#54573)
fix(manufacturing): remove conversion factor for stock qty (#54525)

(cherry picked from commit 6f9089dd5b)

Co-authored-by: Sudharsanan Ashok <135326972+Sudharsanan11@users.noreply.github.com>
2026-04-28 05:38:29 +00:00
mergify[bot]
f7fa394aea fix: negative quantity check in validate_item_qty (backport #54559) (#54572)
fix: negative quantity check in validate_item_qty (#54559)

Fix negative quantity check in validate_item_qty

When saving a Blanket Order with a blank qty field in the items table, the following error is raised:

TypeError: '<' not supported between instances of 'NoneType' and 'int'

Root cause: The validate_item_qty method compares d.qty < 0 directly. When the qty field is left empty, its value is None, and Python cannot compare None with an integer.

Fix
Wrap d.qty with flt(), which safely converts None (and any non-numeric value) to 0.0 before the comparison.

# Before
if d.qty < 0:

# After
if flt(d.qty) < 0:

(cherry picked from commit 63edd5ddc6)

Co-authored-by: Vinay Mishra <39999379+vinaymishraofficial@users.noreply.github.com>
2026-04-28 05:33:55 +00:00
mergify[bot]
d9a9a5bcde fix: debit credit not equal in purchase transactions for multi currency (backport #54456) (#54564)
fix: debit credit not equal in purchase transactions for multi currency (#54456)

(cherry picked from commit 601581d6f8)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-27 15:23:05 +00:00
Mihir Kandoi
0df38a841e fix: correct display depends on condition (#54556) 2026-04-27 10:08:47 +00:00
mergify[bot]
d56df96f73 fix: make inv dimen reqd only in delivery note (backport #54546) (#54552)
fix: make inv dimen reqd only in delivery note (#54546)

(cherry picked from commit 0aadd1e3a5)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-27 15:10:44 +05:30
mergify[bot]
cc85370d54 fix(stock): remove validation for transfer_qty field (backport #54542) (#54545)
fix(stock): remove validation for transfer_qty field (#54542)

(cherry picked from commit 60a6b38c31)

Co-authored-by: Pandiyan P <pandiyanpalani37@gmail.com>
2026-04-27 07:20:16 +00:00
mergify[bot]
ac9aa7f154 refactor: quality inspection item query (backport #54511) (#54540)
* refactor: quality inspection item query (#54511)

(cherry picked from commit be2a4b7b2a)

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

* chore: resolve conflicts

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-27 05:50:37 +00:00
MochaMind
23cac0df83 chore: update POT file (#54535) 2026-04-26 18:55:31 +02:00
mergify[bot]
5c0d2cb474 feat: danish_bosnian_address_template (backport #54093) (#54516)
feat: danish_bosnian_address_template (#54093)

(cherry picked from commit e517eeaaa2)

Co-authored-by: mahsem <137205921+mahsem@users.noreply.github.com>
2026-04-26 21:06:52 +05:30
mergify[bot]
cabea2f288 fix(stock): set incoming rate as zero for outward sle (backport #54514) (#54533)
fix(stock): set incoming rate as zero for outward sle

(cherry picked from commit ce37530e70)

Co-authored-by: Sudharsanan11 <sudharsananashok1975@gmail.com>
2026-04-26 20:24:52 +05:30
rohitwaghchaure
4c95daaca5 Merge pull request #54531 from frappe/mergify/bp/version-16-hotfix/pr-54530
fix(stock): show item code in serial and batch selector dialog (backport #54530)
2026-04-26 10:25:51 +05:30
Sudharsanan11
62bbe28a72 fix(stock): add stock entry in batch master connection
(cherry picked from commit fee5bcadb2)
2026-04-26 04:35:42 +00:00
Sudharsanan11
85d1eb8379 fix(stock): show item code in serial and batch selector dialog
(cherry picked from commit f572bc51e1)
2026-04-26 04:35:42 +00:00
mergify[bot]
8de9ac4e34 refactor(UX): selling settings form (backport #54412) (#54527) 2026-04-25 18:01:07 +05:30
mergify[bot]
f3996fb971 fix(PCV): set correct filters of from_date and to_date on General Ledger Report on clicking Ledger button (backport #54522) (#54524)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix(PCV): set correct filters of `from_date` and `to_date` on General Ledger Report on clicking `Ledger` button (#54522)
2026-04-25 00:08:27 +05:30
mergify[bot]
764c775e19 refactor: tax witholding report (backport #54449) (backport #54477) (#54519)
* refactor: use consistent report column names

(cherry picked from commit 6dca96b423)
(cherry picked from commit 9276cd7343)

* refactor: how data is built

(cherry picked from commit c3e7f7f02f)
(cherry picked from commit be0e58fb23)

* refactor: better label for entity type

(cherry picked from commit 53666974a3)
(cherry picked from commit fffaf834fd)

* refactor: updated key for withholding_date

(cherry picked from commit 07b023a934)
(cherry picked from commit e6cfdb8e4d)

* test: None is better than zero, as no values exist

(cherry picked from commit b5550f747e)
(cherry picked from commit 40466be9ef)

* refactor: make report extensible by regional apps

(cherry picked from commit f0ea20e579)
(cherry picked from commit 6392126ca5)

* fix: add party type for dynamic link support

(cherry picked from commit b925469c4d)
(cherry picked from commit c6d4802857)

---------

Co-authored-by: Smit Vora <smitvora203@gmail.com>
2026-04-24 14:39:42 +00:00
Frappe PR Bot
66ec6a4d20 chore(release): Bumped to Version 16.15.1
## [16.15.1](https://github.com/frappe/erpnext/compare/v16.15.0...v16.15.1) (2026-04-24)

### Bug Fixes

* preserve inventory dimensions when raw materials are reset (backport [#54440](https://github.com/frappe/erpnext/issues/54440)) (backport [#54493](https://github.com/frappe/erpnext/issues/54493)) ([#54513](https://github.com/frappe/erpnext/issues/54513)) ([610735d](610735d1c5))
2026-04-24 12:35:07 +00:00
mergify[bot]
610735d1c5 fix: preserve inventory dimensions when raw materials are reset (backport #54440) (backport #54493) (#54513)
* fix: preserve inventory dimensions when raw materials are reset (backport #54440) (#54493)

fix: preserve inventory dimensions when raw materials are reset (#54440)

* fix: preserve inventory dimensions when raw materials are reset

* test: add test case

(cherry picked from commit 0e20e35842)

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

# Conflicts:
#	erpnext/patches.txt

* chore: resolve conflicts

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-24 12:33:34 +00:00
Khushi Rawat
8a5fa64e1d Merge pull request #54504 from frappe/mergify/bp/version-16-hotfix/pr-53314
fix: skip budget validation when cancelling GL entries (backport #53314)
2026-04-24 17:39:05 +05:30
Smit Vora
aecf2c1c0e Merge pull request #54505 from frappe/mergify/bp/version-16-hotfix/pr-54476
fix: ensure tax withholding entries respect date range of category (backport #54476)
2026-04-24 13:39:54 +05:30
ljain112
719d982a07 fix: ensure tax withholding entries respect date range of category
(cherry picked from commit 9ead8d4e3f)
2026-04-24 07:48:53 +00:00
nareshkannasln
1b146738c4 fix: skip BudgetValidation when cancelling GL entries
(cherry picked from commit fa34ebea94)
2026-04-24 06:45:16 +00:00
mergify[bot]
c4010b0581 ci: fix timezone for python mariadb tests (backport #54464) (#54465)
ci: fix timezone for python mariadb tests (#54464)

(cherry picked from commit 0d2da6d86c)

Co-authored-by: diptanilsaha <diptanil@frappe.io>
2026-04-23 22:31:16 +00:00
mergify[bot]
456e99b352 fix: preserve inventory dimensions when raw materials are reset (backport #54440) (#54493)
fix: preserve inventory dimensions when raw materials are reset (#54440)

* fix: preserve inventory dimensions when raw materials are reset

* test: add test case

(cherry picked from commit 0e20e35842)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-23 17:37:04 +00:00
mergify[bot]
2a244d162b fix(edi): restrict Code List imports to files and trusted backend URLs (backport #54137) (#54266)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
fix(edi): restrict Code List imports to files and trusted backend URLs (#54137)
fix(edi): hardcode "Code List" DocType in importer (#54488)
2026-04-23 15:36:35 +00:00
mergify[bot]
ddc9ea16cc ci: test correctness pattern (backport #54186) (#54473)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2026-04-23 13:29:15 +00:00
mergify[bot]
f7b87ed0e3 fix(stock): show available qty in warehouse link field (backport #54474) (#54484)
fix(stock): show available qty in warehouse link field (#54474)

(cherry picked from commit ab19b16fe2)

Co-authored-by: Sudharsanan Ashok <135326972+Sudharsanan11@users.noreply.github.com>
2026-04-23 18:19:28 +05:30
Smit Vora
01b22254e7 Merge pull request #54486 from frappe/mergify/bp/version-16-hotfix/pr-53190 2026-04-23 17:54:28 +05:30
Smit Vora
df3fbeded2 feat: Add XLSX styling support to custom financial report templates (backport #52612) (#54485)
Co-authored-by: Abdeali Chharchhodawala <99460106+Abdeali099@users.noreply.github.com>
2026-04-23 17:50:52 +05:30
Abdeali Chharchhodawala
96bab08ae0 feat: enhance account category with root type (#53190)
(cherry picked from commit f6639db0e9)
2026-04-23 12:05:07 +00:00
Abdeali Chharchhodawala
055ff56ce4 feat: Add XLSX styling support to custom financial report templates (#52612)
(cherry picked from commit c35221852a)
2026-04-23 11:46:01 +00:00
Smit Vora
4f8184ec70 Merge pull request #54477 from frappe/mergify/bp/version-16-hotfix/pr-54449 2026-04-23 15:18:46 +05:30
Smit Vora
c6d4802857 fix: add party type for dynamic link support
(cherry picked from commit b925469c4d)
2026-04-23 09:27:53 +00:00
Smit Vora
6392126ca5 refactor: make report extensible by regional apps
(cherry picked from commit f0ea20e579)
2026-04-23 09:27:53 +00:00
Smit Vora
40466be9ef test: None is better than zero, as no values exist
(cherry picked from commit b5550f747e)
2026-04-23 09:27:53 +00:00
Smit Vora
e6cfdb8e4d refactor: updated key for withholding_date
(cherry picked from commit 07b023a934)
2026-04-23 09:27:53 +00:00
Smit Vora
fffaf834fd refactor: better label for entity type
(cherry picked from commit 53666974a3)
2026-04-23 09:27:52 +00:00
Smit Vora
be0e58fb23 refactor: how data is built
(cherry picked from commit c3e7f7f02f)
2026-04-23 09:27:52 +00:00
Smit Vora
9276cd7343 refactor: use consistent report column names
(cherry picked from commit 6dca96b423)
2026-04-23 09:27:52 +00:00
rohitwaghchaure
dd2763aabc Merge pull request #54472 from frappe/mergify/bp/version-16-hotfix/pr-54471
fix: delivery schedule in the sales order (backport #54471)
2026-04-22 22:11:01 +05:30
Rohit Waghchaure
386f49978e fix: delivery schedule in the sales order
(cherry picked from commit 435db260ee)
2026-04-22 16:33:12 +00:00
mergify[bot]
090aab33fb fix: py error on stock ageing report (backport #54467) (#54469)
fix: py error on stock ageing report (#54467)

(cherry picked from commit f5357c233d)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-22 14:41:13 +00:00
ruthra kumar
99bc2c174b Merge pull request #54463 from frappe/mergify/bp/version-16-hotfix/pr-54447
refactor(test): remove explicit sql delete calls (backport #54447)
2026-04-22 11:34:10 +05:30
ruthra kumar
91a748d9bf refactor(test): remove explicit sql delete calls
(cherry picked from commit b16dd3f2dd)
2026-04-22 05:43:48 +00:00
Frappe PR Bot
c99b9e1b64 chore(release): Bumped to Version 16.15.0
# [16.15.0](https://github.com/frappe/erpnext/compare/v16.14.0...v16.15.0) (2026-04-22)

### Bug Fixes

* **accounts:** fetch project name from payment entry to journal entry (backport [#54307](https://github.com/frappe/erpnext/issues/54307)) ([#54453](https://github.com/frappe/erpnext/issues/54453)) ([62a9a76](62a9a761b7))
* add portal user ownership check to supplier quotation (backport [#54298](https://github.com/frappe/erpnext/issues/54298)) ([#54300](https://github.com/frappe/erpnext/issues/54300)) ([d7da5b0](d7da5b047d))
* add project filter to accounts payable and receivable reports (backport [#54344](https://github.com/frappe/erpnext/issues/54344)) ([#54442](https://github.com/frappe/erpnext/issues/54442)) ([57cd2a0](57cd2a06e8))
* append row level user remarks in gl map ([aa359ad](aa359aded4))
* changed qty validation from qty field to stock_qty (backport [#54352](https://github.com/frappe/erpnext/issues/54352)) ([#54357](https://github.com/frappe/erpnext/issues/54357)) ([fa76e8a](fa76e8ac7f))
* clear conditions table when calculate_based_on is set to Fixed ([7849733](78497336c7))
* clear shipping rule conditions for fixed shipping rule ([319d769](319d769c6f))
* **dashboard-trends:** set default fiscal year and company before val… (backport [#54339](https://github.com/frappe/erpnext/issues/54339)) ([#54400](https://github.com/frappe/erpnext/issues/54400)) ([b1825c0](b1825c0cbe))
* default company perms for HR manager ([47abaf7](47abaf70b2))
* default perm for HR manager & HR user ([95213fb](95213fb9b8))
* default perm for HR manager & HR user ([a7b1fec](a7b1fec21d))
* default permission for HR manager role ([534891a](534891aac4))
* default permission for HR User role ([0d6d64f](0d6d64ff05))
* Disallow negative rates in Purchase invoice (backport [#54254](https://github.com/frappe/erpnext/issues/54254)) ([#54393](https://github.com/frappe/erpnext/issues/54393)) ([cac9073](cac907383b))
* dropship logic should come above non stock logic in gross profit… (backport [#54383](https://github.com/frappe/erpnext/issues/54383)) ([#54385](https://github.com/frappe/erpnext/issues/54385)) ([78aaf6c](78aaf6c7e8))
* fetch item tax template from item group when creating item (backport [#54258](https://github.com/frappe/erpnext/issues/54258)) ([#54368](https://github.com/frappe/erpnext/issues/54368)) ([3914d5d](3914d5d1b7))
* hide operations field in bom creator if phantom (backport [#54336](https://github.com/frappe/erpnext/issues/54336)) ([#54337](https://github.com/frappe/erpnext/issues/54337)) ([b252ad4](b252ad49b7))
* make Target Warehouse mandatory on UI ([46f5de0](46f5de0b1c))
* **manufacturing:** handle empty list in query builder ([d2cc549](d2cc549696))
* move make_dimension_in_accounting_doctypes from after_insert to on_update ([f287edd](f287edd8c2))
* negative batch report showing same batch-warehouse multiple times ([493f36b](493f36b3ce))
* non-collapsible in customer quick entry ([101f68c](101f68c8e8))
* **pos_invoice_item:** fetch `grant_commission` from `item_code` (backport [#54413](https://github.com/frappe/erpnext/issues/54413)) ([#54418](https://github.com/frappe/erpnext/issues/54418)) ([dd6d4d1](dd6d4d1910))
* **purchase_register:** filter tax rows by parenttype in invoice tax map query (backport [#54272](https://github.com/frappe/erpnext/issues/54272)) ([#54444](https://github.com/frappe/erpnext/issues/54444)) ([01aff64](01aff6492c))
* recalculate operating costs if workstation type is changed (backport [#54390](https://github.com/frappe/erpnext/issues/54390)) ([#54398](https://github.com/frappe/erpnext/issues/54398)) ([cfcba1f](cfcba1fcf2))
* remove unwanted perm for HR user role ([4940aeb](4940aeb712))
* reset base_rounded_total when rounded_total resets (backport [#54241](https://github.com/frappe/erpnext/issues/54241)) ([#54304](https://github.com/frappe/erpnext/issues/54304)) ([45052ce](45052ce8a7))
* resolve conflict ([9e6300b](9e6300bf76))
* sales order is not valid when creating WO from MR from PP (backport [#54435](https://github.com/frappe/erpnext/issues/54435)) ([#54436](https://github.com/frappe/erpnext/issues/54436)) ([5397b7d](5397b7da25))
* Table row in dialog should not have delete row option ([5916e57](5916e570af))
* **taxes_and_totals:** apply conversion_rate to taxable_amount in get_itemised_tax ([d506e57](d506e574d2))
* **test:** missing repost allowed defaults ([d49c343](d49c34389b))
* use qty instead of stock qty dropship gross profit report (backport [#54389](https://github.com/frappe/erpnext/issues/54389)) ([#54391](https://github.com/frappe/erpnext/issues/54391)) ([7556550](7556550158))
* validate south africa company in vat audit report (backport [#54030](https://github.com/frappe/erpnext/issues/54030)) ([#54394](https://github.com/frappe/erpnext/issues/54394)) ([aa2cba9](aa2cba9780))
* zero valuation rate popup on SI (backport [#54376](https://github.com/frappe/erpnext/issues/54376)) ([#54377](https://github.com/frappe/erpnext/issues/54377)) ([104eac2](104eac21e8))

### Features

* add option to create production plan from sales order (backport [#53662](https://github.com/frappe/erpnext/issues/53662)) ([#54323](https://github.com/frappe/erpnext/issues/54323)) ([b487f69](b487f69b59))
* add support for 'not applicable' tax in item tax templates ([#50898](https://github.com/frappe/erpnext/issues/50898)) ([52a4ca9](52a4ca9c41))
* backflush based on in BOM ([2c73e37](2c73e37f80))
* make fg phantom-able in bom creator (backport [#54332](https://github.com/frappe/erpnext/issues/54332)) ([#54333](https://github.com/frappe/erpnext/issues/54333)) ([10dbfd3](10dbfd310f))
* use single remark field with custom remark toggle ([27c5dab](27c5dab7e4))
2026-04-22 00:21:02 +00:00
diptanilsaha
a9747213f5 Merge pull request #54437 from frappe/version-16-hotfix 2026-04-22 05:49:31 +05:30
mergify[bot]
5923618df3 refactor(test): move contact and address creation to bootstrap (backport #54406) (#54410)
Co-authored-by: ruthra kumar <ruthra@erpnext.com>
2026-04-22 00:24:36 +05:30
MochaMind
193a44f298 chore: update POT file (#54401) 2026-04-22 00:16:52 +05:30
Khushi Rawat
d9731d7c72 Merge pull request #54427 from frappe/mergify/bp/version-16-hotfix/pr-54131
feat: use single remark field with custom remark toggle (backport #54131)
2026-04-22 00:05:24 +05:30
mergify[bot]
457adcee95 refactor: fix test cases in tax withholding details report (backport #54422) (#54445)
Co-authored-by: ljain112 <ljain112@gmail.com>
2026-04-21 23:58:57 +05:30
mergify[bot]
01aff6492c fix(purchase_register): filter tax rows by parenttype in invoice tax map query (backport #54272) (#54444)
fix(purchase_register): filter tax rows by parenttype in invoice tax map query

(cherry picked from commit 3aeb7d6b01)

Co-authored-by: ljain112 <ljain112@gmail.com>
2026-04-21 23:58:25 +05:30
mergify[bot]
57cd2a06e8 fix: add project filter to accounts payable and receivable reports (backport #54344) (#54442)
Co-authored-by: ljain112 <ljain112@gmail.com>
2026-04-21 23:56:35 +05:30
mergify[bot]
62a9a761b7 fix(accounts): fetch project name from payment entry to journal entry (backport #54307) (#54453)
Co-authored-by: sarathibalamurugan <sarathigreen4@gmail.com>
2026-04-21 23:54:56 +05:30
Khushi Rawat
9e6300bf76 fix: resolve conflict 2026-04-21 16:15:21 +05:30
mergify[bot]
5397b7da25 fix: sales order is not valid when creating WO from MR from PP (backport #54435) (#54436)
fix: sales order is not valid when creating WO from MR from PP (#54435)

(cherry picked from commit e65b9fc2ae)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-21 15:44:26 +05:30
mergify[bot]
37d080bdb4 refactor: Sales Partner Commission Summary and Sales Partner Transaction Summary report (backport #54268) (#54431)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
2026-04-21 09:21:10 +05:30
khushi8112
aa359aded4 fix: append row level user remarks in gl map
(cherry picked from commit 84e5272f5d)
2026-04-20 19:16:59 +00:00
khushi8112
27c5dab7e4 feat: use single remark field with custom remark toggle
(cherry picked from commit 697f521e14)

# Conflicts:
#	erpnext/accounts/doctype/journal_entry/journal_entry.json
2026-04-20 19:16:58 +00:00
Ravibharathi
4e05277695 Merge pull request #54424 from frappe/mergify/bp/version-16-hotfix/pr-54415
fix: clear conditions table when calculate_based_on is set to Fixed (backport #54415)
2026-04-20 19:44:19 +05:30
ravibharathi656
319d769c6f fix: clear shipping rule conditions for fixed shipping rule
(cherry picked from commit d6bb0ae093)
2026-04-20 13:53:25 +00:00
sarathibalamurugan
78497336c7 fix: clear conditions table when calculate_based_on is set to Fixed
(cherry picked from commit d73920be12)
2026-04-20 13:53:25 +00:00
rohitwaghchaure
d5ea039e07 Merge pull request #54414 from frappe/mergify/bp/version-16-hotfix/pr-54350
feat: backflush based on in BOM (backport #54350)
2026-04-20 17:57:33 +05:30
mergify[bot]
4bb30a9157 test(BootStrapTestData): create sales_partner test data while bootstrapping (backport #54416) (#54421)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
2026-04-20 12:03:23 +00:00
mergify[bot]
dd6d4d1910 fix(pos_invoice_item): fetch grant_commission from item_code (backport #54413) (#54418)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix(pos_invoice_item): fetch `grant_commission` from `item_code` (#54413)
2026-04-20 11:47:15 +00:00
Rohit Waghchaure
2c73e37f80 feat: backflush based on in BOM
(cherry picked from commit 877d99c5a5)
2026-04-20 11:07:19 +00:00
Raheel Khan
3bee79b90d Merge pull request #54407 from frappe/mergify/bp/version-16-hotfix/pr-53756
fix(hrms): default permission for HR roles (backport #53756)
2026-04-20 12:21:31 +05:30
iamkhanraheel
47abaf70b2 fix: default company perms for HR manager
(cherry picked from commit 2018a90ad8)
2026-04-20 05:50:43 +00:00
iamkhanraheel
4940aeb712 fix: remove unwanted perm for HR user role
(cherry picked from commit d26cd69fe5)
2026-04-20 05:50:42 +00:00
iamkhanraheel
95213fb9b8 fix: default perm for HR manager & HR user
(cherry picked from commit 41103a0622)
2026-04-20 05:50:42 +00:00
iamkhanraheel
a7b1fec21d fix: default perm for HR manager & HR user
(cherry picked from commit f02b3b6166)
2026-04-20 05:50:42 +00:00
iamkhanraheel
534891aac4 fix: default permission for HR manager role
(cherry picked from commit 5ec66169a7)
2026-04-20 05:50:42 +00:00
iamkhanraheel
0d6d64ff05 fix: default permission for HR User role
(cherry picked from commit 7b0bfe76cc)
2026-04-20 05:50:41 +00:00
mergify[bot]
fa76e8ac7f fix: changed qty validation from qty field to stock_qty (backport #54352) (#54357)
fix: changed qty validation from qty field to stock_qty (#54352)

(cherry picked from commit ba01d66c24)

Co-authored-by: Jatin3128 <140256508+Jatin3128@users.noreply.github.com>
2026-04-20 10:54:04 +05:30
ruthra kumar
abed348121 Merge pull request #54366 from frappe/mergify/bp/version-16-hotfix/pr-50898
feat: add support for 'not applicable' tax in item tax templates (backport #50898)
2026-04-20 10:17:00 +05:30
mergify[bot]
b1825c0cbe fix(dashboard-trends): set default fiscal year and company before val… (backport #54339) (#54400)
* fix(dashboard-trends): set default fiscal year and company before val… (#54339)

* fix(dashboard-trends): set default fiscal year and company before validating filters Ensure  and  are populated with default values

* fix(dashboard-trends): ensure fiscal_year and company are properly set before validation to avoid empty filter issues

* Update erpnext/controllers/trends.py

---------

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

# Conflicts:
#	erpnext/controllers/trends.py

* chore: fix conflicts

---------

Co-authored-by: Ahmed AbuKhatwa <82771130+AhmedAbokhatwa@users.noreply.github.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-19 09:52:45 +00:00
mergify[bot]
cfcba1fcf2 fix: recalculate operating costs if workstation type is changed (backport #54390) (#54398)
fix: recalculate operating costs if workstation type is changed (#54390)

* fix: recalculate operating costs if workstation type is changed

* fix: do not overwrite op costs on every save

(cherry picked from commit 28f3429a54)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-19 08:06:09 +00:00
mergify[bot]
d542a72da5 Fix : None handling in pricing rule free item quantity calculation (backport #54375) (#54396)
Fix : None handling in pricing rule free item quantity calculation (#54375)

* fix(pricing_rule): handle None qty in transaction_qty calculation

* Update erpnext/accounts/doctype/pricing_rule/utils.py

---------



(cherry picked from commit 82438d6c72)

Co-authored-by: Jaganath-Tridots <jaganath@tridotstech.com>
Co-authored-by: Jagan <jagan@DESKTOP-HPDMQ06.localdomain>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-19 08:02:03 +00:00
mergify[bot]
aa2cba9780 fix: validate south africa company in vat audit report (backport #54030) (#54394)
fix: validate south africa company in vat audit report (#54030)

* fix: validate south africa company in vat audit report

* fix: use qb to get invoice data

* fix: validate company region in south africa vat settings

(cherry picked from commit 1c65cc1088)

Co-authored-by: Ravibharathi <131471282+ravibharathi656@users.noreply.github.com>
2026-04-19 07:57:13 +00:00
mergify[bot]
cac907383b fix: Disallow negative rates in Purchase invoice (backport #54254) (#54393)
fix: Disallow negative rates in Purchase invoice (#54254)

(cherry picked from commit 23768ae0a5)

Co-authored-by: Nishka Gosalia <58264710+nishkagosalia@users.noreply.github.com>
2026-04-19 07:46:21 +00:00
mergify[bot]
7556550158 fix: use qty instead of stock qty dropship gross profit report (backport #54389) (#54391)
fix: use qty instead of stock qty dropship gross profit report (#54389)

(cherry picked from commit d6b379b936)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-19 12:52:15 +05:30
mergify[bot]
78aaf6c7e8 fix: dropship logic should come above non stock logic in gross profit… (backport #54383) (#54385)
fix: dropship logic should come above non stock logic in gross profit… (#54383)

fix: dropship logic should come above non stock logic in gross profit report
(cherry picked from commit 40bcaa7bc3)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-18 16:37:43 +00:00
mergify[bot]
104eac21e8 fix: zero valuation rate popup on SI (backport #54376) (#54377)
fix: zero valuation rate popup on SI (#54376)

(cherry picked from commit 3ef6c24f07)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-18 12:05:36 +00:00
mergify[bot]
3914d5d1b7 fix: fetch item tax template from item group when creating item (backport #54258) (#54368)
fix: fetch item tax template from item group when creating item (#54258)

(cherry picked from commit b93f2350ee)

Co-authored-by: Pandiyan P <pandiyanpalani37@gmail.com>
2026-04-18 06:49:44 +00:00
Lakshit Jain
52a4ca9c41 feat: add support for 'not applicable' tax in item tax templates (#50898)
* feat: add support for 'not applicable' tax in item tax templates

* refactor: remove unused imports

* fix: import NOT_APPLICABLE_TAX in get_item_tax_map function

* fix: add item wise tax details for not applicable taxes

* test: added test case for `not_applicable`

* fix: do not create item wise tax details for not applicable tax

* fix: ensure tax rate is set to 0 for not applicable tax rows

* refactor: changes as per review

* test: update selling settings

* test: correct settings

* fix: return both net and current tax amounts for not applicable tax

(cherry picked from commit 453fe376ab)
2026-04-18 06:05:36 +00:00
rohitwaghchaure
de66fd0c58 Merge pull request #54361 from frappe/mergify/bp/version-16-hotfix/pr-54355
fix(manufacturing): handle empty list in query builder (backport #54355)
2026-04-17 21:43:14 +05:30
rohitwaghchaure
450b4c2f5f Merge pull request #54360 from frappe/mergify/bp/version-16-hotfix/pr-54354
fix: negative batch report showing same batch-warehouse multiple times (backport #54354)
2026-04-17 21:32:28 +05:30
Pandiyan37
d2cc549696 fix(manufacturing): handle empty list in query builder
(cherry picked from commit 9e5d94c1e6)
2026-04-17 15:52:18 +00:00
Rohit Waghchaure
493f36b3ce fix: negative batch report showing same batch-warehouse multiple times
(cherry picked from commit 700572980d)
2026-04-17 15:42:03 +00:00
Nishka Gosalia
cd605d35c5 Merge pull request #54348 from frappe/mergify/bp/version-16-hotfix/pr-54074
fix: Table row in dialog should not have delete row option (backport #54074)
2026-04-17 17:07:40 +05:30
nishkagosalia
5916e570af fix: Table row in dialog should not have delete row option
(cherry picked from commit eb89903dec)
2026-04-17 10:40:26 +00:00
Nishka Gosalia
4d300f7d34 Merge pull request #54347 from frappe/mergify/bp/version-16-hotfix/pr-54345 2026-04-17 16:08:41 +05:30
nishkagosalia
36cc39ddc6 refactor(UX): Batch Form Cleanup
(cherry picked from commit de747fe625)
2026-04-17 09:44:19 +00:00
rohitwaghchaure
afd25508d6 Merge pull request #54343 from frappe/mergify/bp/version-16-hotfix/pr-54342
fix: make Target Warehouse mandatory on UI for WO (backport #54342)
2026-04-17 13:27:35 +05:30
Rohit Waghchaure
46f5de0b1c fix: make Target Warehouse mandatory on UI
(cherry picked from commit 2a8267e10a)
2026-04-17 07:54:10 +00:00
mergify[bot]
b252ad49b7 fix: hide operations field in bom creator if phantom (backport #54336) (#54337) 2026-04-16 16:11:45 +00:00
mergify[bot]
10dbfd310f feat: make fg phantom-able in bom creator (backport #54332) (#54333) 2026-04-16 19:17:51 +05:30
ruthra kumar
07bcaab33b Merge pull request #54328 from frappe/mergify/bp/version-16-hotfix/pr-54327
fix(test): missing repost allowed defaults (backport #54327)
2026-04-16 17:20:04 +05:30
ruthra kumar
9d969d5af5 Merge pull request #54321 from frappe/mergify/bp/version-16-hotfix/pr-54301
refactor(ux): merge repost settings to accounts settings (backport #54301)
2026-04-16 17:19:48 +05:30
ruthra kumar
2e7c4776d4 refactor: delete redundent repost setting
(cherry picked from commit 6a04c159ca)
2026-04-16 16:55:38 +05:30
ruthra kumar
5a2933df8f refactor: limit reposting to only supported doctypes
(cherry picked from commit 940d3cfe0a)
2026-04-16 16:55:38 +05:30
ruthra kumar
fa5e4dee17 refactor: remove redundant field from filter
(cherry picked from commit ece85c770f)
2026-04-16 16:55:38 +05:30
ruthra kumar
3ba400a02b refactor(ux): better error message
(cherry picked from commit 3093409933)
2026-04-16 16:55:38 +05:30
ruthra kumar
5c064331cb refactor(test): use new source for repost setting
(cherry picked from commit b8207d5ed1)
2026-04-16 16:55:38 +05:30
ruthra kumar
151864079b refactor: move allowed doctypes to accounts settings
- dropped 'allowed' field

(cherry picked from commit d5c58277cb)
2026-04-16 16:55:37 +05:30
ruthra kumar
f785f36ad6 refactor: merge reposting settings to accounts settings
(cherry picked from commit 89ebf48544)
2026-04-16 16:55:26 +05:30
ruthra kumar
d49c34389b fix(test): missing repost allowed defaults
(cherry picked from commit 257865deb2)
2026-04-16 10:33:04 +00:00
mergify[bot]
ead7744f81 refactor: add category field to uom (backport #54290) (#54325)
* refactor: add category field to uom (#54290)

(cherry picked from commit e04a2e6da2)

# Conflicts:
#	erpnext/patches.txt

* chore: resolve conflicts

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-16 10:16:28 +00:00
mergify[bot]
b487f69b59 feat: add option to create production plan from sales order (backport #53662) (#54323)
Co-authored-by: sudarsan2001 <frankel9675@gmail.com>
Co-authored-by: Venkatesh <47534423+venkat102@users.noreply.github.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-16 15:16:34 +05:30
ruthra kumar
d74e632934 Merge pull request #54318 from frappe/mergify/bp/version-16-hotfix/pr-54172
fix: move make_dimension_in_accounting_doctypes from after_insert to on_update (backport #54172)
2026-04-16 11:29:50 +05:30
ruthra kumar
29ba701432 Merge pull request #54316 from frappe/mergify/bp/version-16-hotfix/pr-52923
fix(taxes_and_totals): apply conversion_rate to taxable_amount in get_itemised_tax (backport #52923)
2026-04-16 11:12:15 +05:30
Shllokkk
f287edd8c2 fix: move make_dimension_in_accounting_doctypes from after_insert to on_update
(cherry picked from commit ee067e6015)
2026-04-16 05:37:36 +00:00
Dharanidharan2813
d506e574d2 fix(taxes_and_totals): apply conversion_rate to taxable_amount in get_itemised_tax
(cherry picked from commit 2e577ed25b)
2026-04-16 05:22:40 +00:00
mergify[bot]
45052ce8a7 fix: reset base_rounded_total when rounded_total resets (backport #54241) (#54304)
* fix: reset base_rounded_total when rounded_total resets

(cherry picked from commit f8d278b733)

# Conflicts:
#	erpnext/controllers/tests/test_taxes_and_totals.py

* chore: spelling mistake

(cherry picked from commit e2ac476587)

* chore: resolve conflicts

---------

Co-authored-by: ljain112 <ljain112@gmail.com>
2026-04-16 10:39:17 +05:30
NaviN
4f9f90738a Merge pull request #54309 from frappe/mergify/bp/version-16-hotfix/pr-54306
fix: non-collapsible in customer quick entry (backport #54306)
2026-04-15 17:32:56 +05:30
PKSowmiya05
101f68c8e8 fix: non-collapsible in customer quick entry
(cherry picked from commit 53e120269d)
2026-04-15 11:56:54 +00:00
ruthra kumar
ffebb86846 refactor(company): don't force set service expense account on save (backport #54275) (#54305)
* refactor(company): don't force set service expense account on save

(cherry picked from commit 927f40b296)

* refactor(test): set dependant value in company master

(cherry picked from commit 299e141cee)

---------

Co-authored-by: ruthra kumar <ruthra@erpnext.com>
2026-04-15 15:55:53 +05:30
ruthra kumar
6cc560a579 refactor(test): set dependant value in company master
(cherry picked from commit 299e141cee)
2026-04-15 10:04:00 +00:00
ruthra kumar
47e78bd4b9 refactor(company): don't force set service expense account on save
(cherry picked from commit 927f40b296)
2026-04-15 10:03:59 +00:00
mergify[bot]
d7da5b047d fix: add portal user ownership check to supplier quotation (backport #54298) (#54300)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: add portal user ownership check to supplier quotation (#54298)
2026-04-15 06:13:11 +00:00
Frappe PR Bot
9312781dcd chore(release): Bumped to Version 16.14.0
# [16.14.0](https://github.com/frappe/erpnext/compare/v16.13.3...v16.14.0) (2026-04-14)

### Bug Fixes

* account change in warehouse (backport [#54182](https://github.com/frappe/erpnext/issues/54182)) ([#54205](https://github.com/frappe/erpnext/issues/54205)) ([b42e239](b42e23993d))
* add closing div tab ([7e5297a](7e5297a305))
* add drop ship logic in gross profit report (backport [#54220](https://github.com/frappe/erpnext/issues/54220)) ([#54277](https://github.com/frappe/erpnext/issues/54277)) ([bd6269b](bd6269b9e7))
* add permission validation when prompting company details for incomplete letterhead data ([f2450ea](f2450eaf60))
* add quotation print format in the list ([bb77018](bb77018f7b))
* banner to enable serial / batch feature ([dea2d21](dea2d21580))
* batch/serial should use parent's posting datetime for naming (backport [#54206](https://github.com/frappe/erpnext/issues/54206)) ([#54209](https://github.com/frappe/erpnext/issues/54209)) ([3bdac5c](3bdac5c30a))
* conflicting issue ([57e458c](57e458cc1e))
* conflicting issue ([29be73c](29be73c256))
* fetch correct expense account for operations in stock entry (backport [#54278](https://github.com/frappe/erpnext/issues/54278)) ([#54281](https://github.com/frappe/erpnext/issues/54281)) ([63ec36a](63ec36a6f9))
* handle multi uom conversion factor for manufacture entry (backport [#54285](https://github.com/frappe/erpnext/issues/54285)) ([#54286](https://github.com/frappe/erpnext/issues/54286)) ([d5143ed](d5143edcce))
* hardcoded precision causing decimal issues ([e361afb](e361afb6bc))
* inventory dimension patch (backport [#54141](https://github.com/frappe/erpnext/issues/54141)) ([#54146](https://github.com/frappe/erpnext/issues/54146)) ([f2b3ade](f2b3adec0f))
* inventory dimension patch (backport [#54147](https://github.com/frappe/erpnext/issues/54147)) ([#54149](https://github.com/frappe/erpnext/issues/54149)) ([943ddff](943ddff6aa))
* inventory dimensions should not be mandatory unnecesarily (backport [#54064](https://github.com/frappe/erpnext/issues/54064)) ([#54134](https://github.com/frappe/erpnext/issues/54134)) ([7b0d34e](7b0d34e979))
* last SLE not updated in the file ([60a1da0](60a1da0a1b))
* make operation mandatory when any sub operation row is added (backport [#54245](https://github.com/frappe/erpnext/issues/54245)) ([#54248](https://github.com/frappe/erpnext/issues/54248)) ([394eb93](394eb93677))
* **manufacturing:** check remaining qty to calculate operating cost (backport [#53983](https://github.com/frappe/erpnext/issues/53983)) ([#54128](https://github.com/frappe/erpnext/issues/54128)) ([856ba24](856ba24194))
* not able to submit the PO (backport [#54257](https://github.com/frappe/erpnext/issues/54257)) ([#54261](https://github.com/frappe/erpnext/issues/54261)) ([9d90fc4](9d90fc4a84))
* preserve asset movement field properties after save ([b7f1677](b7f1677eef))
* quality inspection item code fetch perm issue (backport [#54121](https://github.com/frappe/erpnext/issues/54121)) ([#54127](https://github.com/frappe/erpnext/issues/54127)) ([9d31712](9d317129f4))
* remove unneccessary function for serial no status updation (backport [#54191](https://github.com/frappe/erpnext/issues/54191)) ([#54197](https://github.com/frappe/erpnext/issues/54197)) ([4e828fd](4e828fd897))
* remove unused print format ([f5a9657](f5a9657a91))
* replace raw SQL with qb in get_against_jv to prevent SQL injection ([8f86a28](8f86a2879c))
* **sales invoice:** toggle Get Items From button based on is_return and POS view (backport [#52594](https://github.com/frappe/erpnext/issues/52594)) ([#54139](https://github.com/frappe/erpnext/issues/54139)) ([fe2161e](fe2161ea0c))
* **selling:** enable selling_settings creation through fixtures (backport [#54177](https://github.com/frappe/erpnext/issues/54177)) ([#54215](https://github.com/frappe/erpnext/issues/54215)) ([d2745f3](d2745f3ec9))
* set default posting time in RIV ([1086a72](1086a72373))
* Set remarks blank instead of No remarks in Sales/Purchase Invoices ([a71814a](a71814a483))
* **stock:** ignore delivery note on delivery trip on_cancel trigger (backport [#54120](https://github.com/frappe/erpnext/issues/54120)) ([#54123](https://github.com/frappe/erpnext/issues/54123)) ([864a7fd](864a7fdab5))
* **stock:** remove float precision to fix precision issue (backport [#54284](https://github.com/frappe/erpnext/issues/54284)) ([#54289](https://github.com/frappe/erpnext/issues/54289)) ([6e3549d](6e3549d185))
* **stock:** update bin to zero when no previous sle exists (backport [#54236](https://github.com/frappe/erpnext/issues/54236)) ([#54264](https://github.com/frappe/erpnext/issues/54264)) ([2c292f4](2c292f4770))
* **test:** Remove usage of No remark as remark in tests ([6993255](699325506f))
* timer not showing in job card (backport [#53839](https://github.com/frappe/erpnext/issues/53839)) ([#54212](https://github.com/frappe/erpnext/issues/54212)) ([7d8f59e](7d8f59eb0a))
* update return value in workstation list view indicator (backport [#54198](https://github.com/frappe/erpnext/issues/54198)) ([#54201](https://github.com/frappe/erpnext/issues/54201)) ([22774fd](22774fd810))
* update_nsm only in warehouse creation ([#54165](https://github.com/frappe/erpnext/issues/54165)) ([abb896e](abb896ecf1))
* wrong operation time calculation (backport [#53796](https://github.com/frappe/erpnext/issues/53796)) ([#54274](https://github.com/frappe/erpnext/issues/54274)) ([d0bff47](d0bff47272))

### Features

* Allowing operation level quality inspection check in BOM (backport [#53859](https://github.com/frappe/erpnext/issues/53859)) ([#54144](https://github.com/frappe/erpnext/issues/54144)) ([233dc7c](233dc7c07b))
* default print format for Quotation ([a8769bf](a8769bfb77))
2026-04-14 18:28:38 +00:00
diptanilsaha
e65596fc0f Merge pull request #54283 from frappe/version-16-hotfix 2026-04-14 23:57:09 +05:30
rohitwaghchaure
bd50a0f318 Merge pull request #54294 from frappe/mergify/bp/version-16-hotfix/pr-54279
fix: banner to enable serial / batch feature (backport #54279)
2026-04-14 23:37:38 +05:30
Rohit Waghchaure
dea2d21580 fix: banner to enable serial / batch feature
(cherry picked from commit 08e8cc8575)
2026-04-14 17:45:19 +00:00
mergify[bot]
2353bcc3fc Revert "fix: sync paid and received amount" (backport #54238) (#54293)
Co-authored-by: Vishnu Priya Baskaran <145791817+ervishnucs@users.noreply.github.com>
fix: sync paid and received amount" (#54238)
2026-04-14 22:27:15 +05:30
mergify[bot]
6e3549d185 fix(stock): remove float precision to fix precision issue (backport #54284) (#54289)
Co-authored-by: Sudharsanan Ashok <135326972+Sudharsanan11@users.noreply.github.com>
fix(stock): remove float precision to fix precision issue (#54284)
2026-04-14 11:36:24 +00:00
mergify[bot]
d5143edcce fix: handle multi uom conversion factor for manufacture entry (backport #54285) (#54286)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: handle multi uom conversion factor for manufacture entry (#54285)
2026-04-14 16:22:14 +05:30
mergify[bot]
63ec36a6f9 fix: fetch correct expense account for operations in stock entry (backport #54278) (#54281)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: fetch correct expense account for operations in stock entry (#54278)
2026-04-14 16:08:21 +05:30
mergify[bot]
bd6269b9e7 fix: add drop ship logic in gross profit report (backport #54220) (#54277)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: add drop ship logic in gross profit report (#54220)
2026-04-14 09:59:16 +00:00
mergify[bot]
d0bff47272 fix: wrong operation time calculation (backport #53796) (#54274)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: wrong operation time calculation (#53796)
2026-04-14 09:35:00 +00:00
mergify[bot]
9d90fc4a84 fix: not able to submit the PO (backport #54257) (#54261)
Co-authored-by: Rohit Waghchaure <rohitw1991@gmail.com>
2026-04-13 21:44:12 +05:30
mergify[bot]
2c292f4770 fix(stock): update bin to zero when no previous sle exists (backport #54236) (#54264)
Co-authored-by: Sudharsanan Ashok <135326972+Sudharsanan11@users.noreply.github.com>
fix(stock): update bin to zero when no previous sle exists (#54236)
2026-04-13 15:57:31 +00:00
mergify[bot]
394eb93677 fix: make operation mandatory when any sub operation row is added (backport #54245) (#54248)
Co-authored-by: Sudarshan <73628063+sudarsan2001@users.noreply.github.com>
fix: make operation mandatory when any sub operation row is added (#54245)
2026-04-13 21:06:01 +05:30
Khushi Rawat
fbb3ccbc28 Merge pull request #54251 from frappe/mergify/bp/version-16-hotfix/pr-54244
fix: replace raw SQL with qb in get_against_jv to prevent SQL injection (backport #54244)
2026-04-13 16:12:43 +05:30
Nishka Gosalia
708b59b519 Merge pull request #54252 from frappe/mergify/bp/version-16-hotfix/pr-54249 2026-04-13 16:10:39 +05:30
Khushi Rawat
de08a972b6 Merge pull request #53745 from frappe/mergify/bp/version-16-hotfix/pr-53588
feat: default print format for Quotation (backport #53588)
2026-04-13 16:04:20 +05:30
Khushi Rawat
512a35a0ab Merge pull request #54253 from frappe/mergify/bp/version-16-hotfix/pr-54190
fix: add permission validation when prompting company details for incomplete letterhead data (backport #54190)
2026-04-13 15:58:05 +05:30
Khushi Rawat
71a563428d Merge branch 'version-16-hotfix' into mergify/bp/version-16-hotfix/pr-53588 2026-04-13 15:41:39 +05:30
khushi8112
57e458cc1e fix: conflicting issue 2026-04-13 15:30:56 +05:30
khushi8112
f2450eaf60 fix: add permission validation when prompting company details for incomplete letterhead data
(cherry picked from commit 256a258b38)
2026-04-13 09:55:12 +00:00
nishkagosalia
847919bf4e refactor(UX): Stock ledger serial and batch number fields
(cherry picked from commit 3e2b40ad4a)
2026-04-13 09:51:46 +00:00
khushi8112
29be73c256 fix: conflicting issue 2026-04-13 15:21:39 +05:30
khushi8112
8f86a2879c fix: replace raw SQL with qb in get_against_jv to prevent SQL injection
(cherry picked from commit c133f7156d)

# Conflicts:
#	erpnext/accounts/doctype/journal_entry/journal_entry.py
2026-04-13 09:44:19 +00:00
ruthra kumar
eb80a3704a Merge pull request #54239 from frappe/mergify/bp/version-16-hotfix/pr-54237
refactor: boldface for group accounts in financial statements (backport #54237)
2026-04-13 12:02:19 +05:30
ruthra kumar
bfe58b2d68 refactor: boldface for group accounts in financial statements
(cherry picked from commit 545e9e069a)
2026-04-13 06:11:05 +00:00
MochaMind
39848ffb1e chore: update POT file (#54229) 2026-04-12 10:10:15 +00:00
mergify[bot]
d2745f3ec9 fix(selling): enable selling_settings creation through fixtures (backport #54177) (#54215)
Co-authored-by: mgicking-bmi <mgicking@bmi.com>
Fix(selling): enable selling_settings creation through fixtures (#54177)
2026-04-11 05:32:11 +00:00
mergify[bot]
3bdac5c30a fix: batch/serial should use parent's posting datetime for naming (backport #54206) (#54209) 2026-04-11 05:06:40 +00:00
Frappe PR Bot
a1c43ae913 chore(release): Bumped to Version 16.13.3
## [16.13.3](https://github.com/frappe/erpnext/compare/v16.13.2...v16.13.3) (2026-04-11)

### Bug Fixes

* timer not showing in job card (backport [#53839](https://github.com/frappe/erpnext/issues/53839)) (backport [#54212](https://github.com/frappe/erpnext/issues/54212)) ([#54213](https://github.com/frappe/erpnext/issues/54213)) ([93ede5b](93ede5b764))
2026-04-11 05:05:14 +00:00
mergify[bot]
93ede5b764 fix: timer not showing in job card (backport #53839) (backport #54212) (#54213)
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Rohit Waghchaure <rohitw1991@gmail.com>
fix: timer not showing in job card (backport #53839) (#54212)
2026-04-11 10:33:45 +05:30
mergify[bot]
7d8f59eb0a fix: timer not showing in job card (backport #53839) (#54212)
Co-authored-by: Rohit Waghchaure <rohitw1991@gmail.com>
2026-04-11 10:32:32 +05:30
mergify[bot]
66fdd061e7 Fix(bom): refetch the rate of item when 'source_from_supplier' is updated (backport #54187) (#54208)
Co-authored-by: Sambhav Saxena <76242518+sambhavsaxena@users.noreply.github.com>
Fix(bom): refetch the rate of item when 'source_from_supplier' is updated (#54187)
2026-04-10 23:44:42 +05:30
mergify[bot]
b42e23993d fix: account change in warehouse (backport #54182) (#54205)
Co-authored-by: nishkagosalia <nishka.gosalia@gmail.com>
2026-04-10 20:32:45 +05:30
mergify[bot]
22774fd810 fix: update return value in workstation list view indicator (backport #54198) (#54201)
Co-authored-by: Praveenkumar Dhanasekar <164200710+Praveenku-mar@users.noreply.github.com>
fix: update return value in workstation list view indicator (#54198)
2026-04-10 11:20:49 +00:00
mergify[bot]
4e828fd897 fix: remove unneccessary function for serial no status updation (backport #54191) (#54197)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: remove unneccessary function for serial no status updation (#54191)
2026-04-10 10:58:57 +00:00
Nishka Gosalia
3cf90e804d Merge pull request #54180 from frappe/revert-54171-mergify/bp/version-16-hotfix/pr-54165
fix: update_nsm only in warehouse creation (backport #54165)"
2026-04-09 18:31:39 +05:30
Khushi Rawat
1f5d0c58f2 Merge pull request #54166 from frappe/mergify/bp/version-16-hotfix/pr-54142
fix: Set remarks blank instead of No remarks in Sales/Purchase Invoices (backport #54142)
2026-04-09 18:16:04 +05:30
Nishka Gosalia
720a79588d Revert "fix: update_nsm only in warehouse creation (backport #54165)" 2026-04-09 18:13:39 +05:30
Nishka Gosalia
bc03f2399a Merge pull request #54171 from frappe/mergify/bp/version-16-hotfix/pr-54165
fix: update_nsm only in warehouse creation (backport #54165)
2026-04-09 16:29:24 +05:30
Nishka Gosalia
abb896ecf1 fix: update_nsm only in warehouse creation (#54165)
(cherry picked from commit b0e3fa3979)
2026-04-09 10:28:32 +00:00
Frappe PR Bot
c98ded52b2 chore(release): Bumped to Version 16.13.2
## [16.13.2](https://github.com/frappe/erpnext/compare/v16.13.1...v16.13.2) (2026-04-09)

### Bug Fixes

* set default posting time in RIV ([3ce6dcc](3ce6dcc7a7))
2026-04-09 09:59:33 +00:00
rohitwaghchaure
03474c0589 Merge pull request #54164 from frappe/mergify/bp/version-16/pr-54163
fix: set default posting time in RIV (backport #54161) (backport #54163)
2026-04-09 15:27:59 +05:30
khushi8112
699325506f fix(test): Remove usage of No remark as remark in tests
(cherry picked from commit 56416d18d3)
2026-04-09 09:24:51 +00:00
khushi8112
a71814a483 fix: Set remarks blank instead of No remarks in Sales/Purchase Invoices
(cherry picked from commit 2515bf3aff)
2026-04-09 09:24:50 +00:00
Rohit Waghchaure
3ce6dcc7a7 fix: set default posting time in RIV
(cherry picked from commit a7ece65536)
(cherry picked from commit 1086a72373)
2026-04-09 08:55:10 +00:00
rohitwaghchaure
93def4dd13 Merge pull request #54163 from frappe/mergify/bp/version-16-hotfix/pr-54161
fix: set default posting time in RIV (backport #54161)
2026-04-09 14:24:33 +05:30
Rohit Waghchaure
1086a72373 fix: set default posting time in RIV
(cherry picked from commit a7ece65536)
2026-04-09 08:27:15 +00:00
Aarol D'Souza
379a1da254 Merge pull request #54158 from frappe/mergify/bp/version-16-hotfix/pr-54129
refactor: update reset password method name (backport #54129)
2026-04-09 12:32:54 +05:30
mergify[bot]
6ec64216ce Merge branch 'version-16-hotfix' into mergify/bp/version-16-hotfix/pr-54129 2026-04-09 06:42:41 +00:00
mergify[bot]
fe2161ea0c fix(sales invoice): toggle Get Items From button based on is_return and POS view (backport #52594) (#54139)
Co-authored-by: NaviN <118178330+Navin-S-R@users.noreply.github.com>
Co-authored-by: Navin-S-R <navin@aerele.in>
fix(sales invoice): toggle Get Items From button based on is_return and POS view (#52594)
2026-04-09 11:58:02 +05:30
AarDG10
21cf83b915 refactor: update reset password method name
(cherry picked from commit c4d74483e1)
2026-04-09 06:23:58 +00:00
Frappe PR Bot
62448d98de chore(release): Bumped to Version 16.13.1
## [16.13.1](https://github.com/frappe/erpnext/compare/v16.13.0...v16.13.1) (2026-04-09)

### Bug Fixes

* last SLE not updated in the file ([96446ed](96446ed78d))
2026-04-09 04:50:03 +00:00
rohitwaghchaure
3eb58b8d36 Merge pull request #54152 from frappe/mergify/bp/version-16/pr-54151
fix: last SLE not updated in the file (backport #54132) (backport #54151)
2026-04-09 10:18:32 +05:30
mergify[bot]
943ddff6aa fix: inventory dimension patch (backport #54147) (#54149)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: inventory dimension patch (#54147)
2026-04-09 09:46:08 +05:30
Rohit Waghchaure
96446ed78d fix: last SLE not updated in the file
(cherry picked from commit 38ed425ee2)
(cherry picked from commit 60a1da0a1b)
2026-04-09 03:38:10 +00:00
rohitwaghchaure
5866fc6cb4 Merge pull request #54151 from frappe/mergify/bp/version-16-hotfix/pr-54132
fix: last SLE not updated in the file (backport #54132)
2026-04-09 09:07:02 +05:30
Rohit Waghchaure
60a1da0a1b fix: last SLE not updated in the file
(cherry picked from commit 38ed425ee2)
2026-04-09 02:53:27 +00:00
mergify[bot]
f2b3adec0f fix: inventory dimension patch (backport #54141) (#54146)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: inventory dimension patch (#54141)
2026-04-09 02:09:46 +00:00
mergify[bot]
233dc7c07b feat: Allowing operation level quality inspection check in BOM (backport #53859) (#54144)
Co-authored-by: Nishka Gosalia <58264710+nishkagosalia@users.noreply.github.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-09 02:02:35 +00:00
mergify[bot]
526c8d0418 refactor(lost_opportunity_report): replaced raw_sql with query builder (backport #54136) (#54140)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
2026-04-08 18:30:35 +00:00
mergify[bot]
7b0d34e979 fix: inventory dimensions should not be mandatory unnecesarily (backport #54064) (#54134)
* fix: inventory dimensions should not be mandatory unnecesarily (#54064)

(cherry picked from commit 6e44b8913e)

# Conflicts:
#	erpnext/patches.txt

* chore: resolve conflicts

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-04-08 14:43:01 +00:00
mergify[bot]
856ba24194 fix(manufacturing): check remaining qty to calculate operating cost (backport #53983) (#54128)
Co-authored-by: Sudharsanan Ashok <135326972+Sudharsanan11@users.noreply.github.com>
fix(manufacturing): check remaining qty to calculate operating cost (#53983)
2026-04-08 12:15:28 +00:00
mergify[bot]
9d317129f4 fix: quality inspection item code fetch perm issue (backport #54121) (#54127)
Co-authored-by: Nishka Gosalia <58264710+nishkagosalia@users.noreply.github.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: quality inspection item code fetch perm issue (#54121)
2026-04-08 12:14:41 +00:00
mergify[bot]
864a7fdab5 fix(stock): ignore delivery note on delivery trip on_cancel trigger (backport #54120) (#54123)
Co-authored-by: Sudharsanan Ashok <135326972+Sudharsanan11@users.noreply.github.com>
fix(stock): ignore delivery note on delivery trip on_cancel trigger (#54120)
2026-04-08 17:18:35 +05:30
rohitwaghchaure
0bdb7e7894 Merge pull request #54119 from frappe/mergify/bp/version-16-hotfix/pr-54102
fix: hardcoded precision causing decimal issues (backport #54102)
2026-04-08 14:04:23 +05:30
Rohit Waghchaure
e361afb6bc fix: hardcoded precision causing decimal issues
(cherry picked from commit 90fd6f2e40)
2026-04-08 06:50:17 +00:00
Khushi Rawat
7b154c3069 Merge pull request #54117 from frappe/mergify/bp/version-16-hotfix/pr-54103
fix: preserve asset movement field properties after save (backport #54103)
2026-04-08 12:15:55 +05:30
ravibharathi656
b7f1677eef fix: preserve asset movement field properties after save
(cherry picked from commit 4a004a2a82)
2026-04-08 06:28:27 +00:00
Frappe PR Bot
1134e25bb6 chore(release): Bumped to Version 16.13.0
# [16.13.0](https://github.com/frappe/erpnext/compare/v16.12.0...v16.13.0) (2026-04-07)

### Bug Fixes

* add support to fetch items based on manufacture stock entry; fix how it's done from work order ([4232640](4232640a8b))
* add tax_id handling in Tax Withholding Entry (backport [#53598](https://github.com/frappe/erpnext/issues/53598)) ([#54081](https://github.com/frappe/erpnext/issues/54081)) ([dc58754](dc58754a60))
* auto-set source_stock_entry ([eead8d6](eead8d6d8c))
* avg stock entries for disassembly from WO ([0ceb084](0ceb084104))
* conflicts ([66ee208](66ee208cb2))
* correct warehouse preference for disassemble ([919cbd5](919cbd5c02))
* create source_stock_entry to refer to original manufacturing entry ([b91af5b](b91af5b2b9))
* custom button to disassemble manufactured stock entry with work order ([84a063a](84a063a9bf))
* dif_inward_from_outward_workspace_sidebar (backport [#54083](https://github.com/frappe/erpnext/issues/54083)) ([#54088](https://github.com/frappe/erpnext/issues/54088)) ([e6722c8](e6722c84fa))
* disassembly prompt with source stock entry field ([c9d03d0](c9d03d049c))
* divide sub-assembly cost by qty to get per-unit rate in BOM Creator (backport [#54090](https://github.com/frappe/erpnext/issues/54090)) ([#54091](https://github.com/frappe/erpnext/issues/54091)) ([454271a](454271ad68))
* do not repost GL if no change in valuation ([89e3e3c](89e3e3c59e))
* do not show inv dimension unnecessarily in stock entry (backport [#53946](https://github.com/frappe/erpnext/issues/53946)) ([#53951](https://github.com/frappe/erpnext/issues/53951)) ([573a1a0](573a1a0dcb))
* dynamic labels on invoice type change ([4705f53](4705f53d2c))
* ensure accurate rounding for item-wise tax and taxable amounts ([c4c76cc](c4c76cc1b2))
* GL entries for different exchange rate in the purchase invoice ([5719992](5719992cda))
* handle disassembly for secondary / scrap items ([d50279b](d50279b718))
* hide fields related to track Semi-Finished Goods if feature has disabled ([5a7d0d2](5a7d0d2765))
* include rejected qty in tax (purchase receipt) (backport [#53624](https://github.com/frappe/erpnext/issues/53624)) ([#53972](https://github.com/frappe/erpnext/issues/53972)) ([e230f72](e230f72e0b))
* manufacture entry with group_by support ([31ac46a](31ac46ae4c))
* **manufacturing:** handle null cur_dialog in BOM work order dialog (backport [#54011](https://github.com/frappe/erpnext/issues/54011)) ([#54015](https://github.com/frappe/erpnext/issues/54015)) ([01610b2](01610b2fa7))
* Party Field only visibile when party type selected ([f42a1e8](f42a1e8a14))
* prevent selection of group type customer group in customer master ([04cced2](04cced2fb5))
* print hide unnecessary fields ([cd98312](cd98312083))
* process loss with bom path disassembly ([0a257ea](0a257ea63d))
* **promotional_scheme:** toggle enable state between Buying and Selli… (backport [#54110](https://github.com/frappe/erpnext/issues/54110)) ([#54112](https://github.com/frappe/erpnext/issues/54112)) ([4a6fe47](4a6fe477d4))
* rejected serial no field showing even if serial / batch feature not enabled ([2c81f79](2c81f79df7))
* remove null from link_filters ([21f36f5](21f36f5c21))
* remove reference in serial/batch when document is cancelled (backport [#53979](https://github.com/frappe/erpnext/issues/53979)) ([#53989](https://github.com/frappe/erpnext/issues/53989)) ([5aaca83](5aaca83fe4))
* remove title field from purchase receipt (backport [#54051](https://github.com/frappe/erpnext/issues/54051)) ([#54065](https://github.com/frappe/erpnext/issues/54065)) ([84382db](84382db5ca))
* remove unnecessary param, and use value from self ([7bef954](7bef9542d4))
* resolve user permission error on status change by updating user … (backport [#54033](https://github.com/frappe/erpnext/issues/54033)) ([#54060](https://github.com/frappe/erpnext/issues/54060)) ([62b83ca](62b83cacce))
* screen freezes if consumed qty set in SCR ([bd67ef8](bd67ef8d26))
* set bom details on disassembly; abs batch qty ([fb1d865](fb1d865e9b))
* set serial and batch from source stock entry - on disassemble ([ff104ed](ff104edf12))
* set_query for source stock entry ([5f67ef7](5f67ef70bb))
* show current stock qty in Stock Entry PDF (backport [#53761](https://github.com/frappe/erpnext/issues/53761)) ([#54032](https://github.com/frappe/erpnext/issues/54032)) ([ab08162](ab08162f34))
* skip discount amount validation when not saving ([8941699](8941699a34))
* skip validate_stock_accounts in Journal Entry when perpetual inventory is disabled (backport [#53554](https://github.com/frappe/erpnext/issues/53554)) ([#53558](https://github.com/frappe/erpnext/issues/53558)) ([7062b71](7062b7153e))
* **stock:** update stock queue in SABE for return entries ([fc5a04d](fc5a04db2e))
* support creating disassembly (without link of WO) ([1c4b2a7](1c4b2a7148))
* sync paid and received amount (backport [#53039](https://github.com/frappe/erpnext/issues/53039)) ([#54108](https://github.com/frappe/erpnext/issues/54108)) ([df3f242](df3f242331))
* task gantt popup text not visible in light theme (backport [#53882](https://github.com/frappe/erpnext/issues/53882)) ([#54094](https://github.com/frappe/erpnext/issues/54094)) ([995a29e](995a29e3e1))
* **taxes:** improve tax calculation accuracy and update test assertions ([6ad5e89](6ad5e89607))
* **taxes:** increase rounding threshold for tax breakup calculations ([3592637](3592637b5c))
* **test:** do not use is_group enabled customer group in test ([8674aaf](8674aafc86))
* **tests:** update item code and quantity in tax detail test case ([6689b17](6689b17b88))
* transactions where update stock is 0 should not create SLEs (backport [#54035](https://github.com/frappe/erpnext/issues/54035)) ([#54077](https://github.com/frappe/erpnext/issues/54077)) ([af81ed8](af81ed874b))
* update min date based on transaction_date (backport [#53803](https://github.com/frappe/erpnext/issues/53803)) ([#54025](https://github.com/frappe/erpnext/issues/54025)) ([bc86e2c](bc86e2c1f2))
* use get_value ([e4eb88d](e4eb88d80b))
* **ux:** refresh grid to correctly persist the state of fields ([273caa3](273caa38d9))
* validate qty that can be disassembled from source stock entry. ([1237f9a](1237f9a0b1))
* validate work order consistency in stock entry ([b030eea](b030eeafb8))
* **warehouse_capacity_dashboard:** removed `escape` from template (backport [#53907](https://github.com/frappe/erpnext/issues/53907)) ([#53909](https://github.com/frappe/erpnext/issues/53909)) ([a478fb7](a478fb7131))

### Features

* co product by product support ([#52979](https://github.com/frappe/erpnext/issues/52979)) ([#53975](https://github.com/frappe/erpnext/issues/53975)) ([8db397b](8db397bdae))
* croatian_address_template (backport [#53888](https://github.com/frappe/erpnext/issues/53888)) ([#54058](https://github.com/frappe/erpnext/issues/54058)) ([ff26265](ff262655bb))
* **Payment Request:** Added a toggle for using the payment schedule (backport [#53922](https://github.com/frappe/erpnext/issues/53922)) ([#53928](https://github.com/frappe/erpnext/issues/53928)) ([5ade905](5ade905ee8))

### Performance Improvements

* optimize account balance data fetching for Chart Of Accounts (backport [#53044](https://github.com/frappe/erpnext/issues/53044)) ([#53802](https://github.com/frappe/erpnext/issues/53802)) ([093ca87](093ca8745d))
2026-04-07 17:58:52 +00:00
diptanilsaha
aaea4dfcc1 Merge pull request #54100 from frappe/version-16-hotfix 2026-04-07 23:05:35 +05:30
mergify[bot]
7b91566435 refactor: financial report template enhancements (backport #52687) (#54113)
Co-authored-by: Abdeali Chharchhodawala <99460106+Abdeali099@users.noreply.github.com>
2026-04-07 17:10:42 +00:00
mergify[bot]
4a6fe477d4 fix(promotional_scheme): toggle enable state between Buying and Selli… (backport #54110) (#54112)
Co-authored-by: Ahmed AbuKhatwa <82771130+AhmedAbokhatwa@users.noreply.github.com>
Co-authored-by: AhmedAbukhatwa <Ahmedabukhatwa1@gmail.com>
fix(promotional_scheme): toggle enable state between Buying and Selli… (#54110)
2026-04-07 21:55:18 +05:30
mergify[bot]
df3f242331 fix: sync paid and received amount (backport #53039) (#54108)
Co-authored-by: Vishnu Priya Baskaran <145791817+ervishnucs@users.noreply.github.com>
fix: sync paid and received amount (#53039)
2026-04-07 13:06:39 +00:00
mergify[bot]
7062b7153e fix: skip validate_stock_accounts in Journal Entry when perpetual inventory is disabled (backport #53554) (#53558)
Co-authored-by: Saeed Kola <mohammedsaeedk@gmail.com>
Co-authored-by: diptanilsaha <diptanil@frappe.io>
2026-04-07 12:05:33 +00:00
mergify[bot]
093ca8745d perf: optimize account balance data fetching for Chart Of Accounts (backport #53044) (#53802)
Co-authored-by: Shllokkk <140623894+Shllokkk@users.noreply.github.com>
2026-04-07 16:20:17 +05:30
Smit Vora
52ac36ef02 Merge pull request #54098 from frappe/mergify/bp/version-16-hotfix/pr-53964
fix: consistently disassemble based on source  > SE / WO / BOM (backport #53964)
2026-04-07 15:20:29 +05:30
Smit Vora
9e83badbf5 chore: resolve conflicts 2026-04-07 14:57:56 +05:30
Smit Vora
7bef9542d4 fix: remove unnecessary param, and use value from self
(cherry picked from commit 98dfd64f63)
2026-04-07 08:48:19 +00:00
Smit Vora
6cebea314d test: enhance tests as per review comments
(cherry picked from commit f13d37fbf9)
2026-04-07 08:48:19 +00:00
Smit Vora
d4fde552f4 test: maintain sufficient stock for scrap item
(cherry picked from commit b892139342)
2026-04-07 08:48:19 +00:00
Smit Vora
fb1d865e9b fix: set bom details on disassembly; abs batch qty
(cherry picked from commit ab1fc22431)
2026-04-07 08:48:18 +00:00
Smit Vora
0a257ea63d fix: process loss with bom path disassembly
(cherry picked from commit 93ad48bc1b)
2026-04-07 08:48:18 +00:00
Smit Vora
b030eeafb8 fix: validate work order consistency in stock entry
(cherry picked from commit ea392b2009)
2026-04-07 08:48:18 +00:00
vorasmit
e4eb88d80b fix: use get_value
(cherry picked from commit a71e8bb116)
2026-04-07 08:48:17 +00:00
vorasmit
0ceb084104 fix: avg stock entries for disassembly from WO
(cherry picked from commit 71fd18bdf9)
2026-04-07 08:48:17 +00:00
vorasmit
31ac46ae4c fix: manufacture entry with group_by support
(cherry picked from commit 3cf1ce8360)
2026-04-07 08:48:16 +00:00
Smit Vora
901e626729 test: disassembly for scrap / secondary item
(cherry picked from commit a6d41151ff)
2026-04-07 08:48:16 +00:00
Smit Vora
d50279b718 fix: handle disassembly for secondary / scrap items
(cherry picked from commit 2be8313819)
2026-04-07 08:48:16 +00:00
Smit Vora
e1a4d9fab4 test: disassembly of items with batch and serial numbers
(cherry picked from commit 1693698fed)
2026-04-07 08:48:15 +00:00
Smit Vora
8444778f74 test: additional items in stock entry considered with disassembly
(cherry picked from commit d32977e3a9)
2026-04-07 08:48:15 +00:00
Smit Vora
4c0ebee15b test: disassemble with source stock entry reference
(cherry picked from commit 6988e2cbbc)
2026-04-07 08:48:15 +00:00
Smit Vora
195a10efb3 test: disassembly from wo
(cherry picked from commit 342a14d340)
2026-04-07 08:48:14 +00:00
Smit Vora
ff104edf12 fix: set serial and batch from source stock entry - on disassemble
(cherry picked from commit 13b019ab8e)
2026-04-07 08:48:14 +00:00
Smit Vora
919cbd5c02 fix: correct warehouse preference for disassemble
(cherry picked from commit d3d6b5c660)
2026-04-07 08:48:14 +00:00
Smit Vora
eead8d6d8c fix: auto-set source_stock_entry
(cherry picked from commit 2e4e8bcaa7)
2026-04-07 08:48:13 +00:00
Smit Vora
4232640a8b fix: add support to fetch items based on manufacture stock entry; fix how it's done from work order
(cherry picked from commit 1ed0124ad7)
2026-04-07 08:48:13 +00:00
Smit Vora
1237f9a0b1 fix: validate qty that can be disassembled from source stock entry.
(cherry picked from commit 6394dead72)

# Conflicts:
#	erpnext/manufacturing/doctype/work_order/work_order.py
2026-04-07 08:48:13 +00:00
Smit Vora
1c4b2a7148 fix: support creating disassembly (without link of WO)
(cherry picked from commit dba82720b6)
2026-04-07 08:48:13 +00:00
Smit Vora
84a063a9bf fix: custom button to disassemble manufactured stock entry with work order
(cherry picked from commit b64f86148c)
2026-04-07 08:48:12 +00:00
Smit Vora
5f67ef70bb fix: set_query for source stock entry
(cherry picked from commit b47dfacb3e)
2026-04-07 08:48:12 +00:00
Smit Vora
c9d03d049c fix: disassembly prompt with source stock entry field
(cherry picked from commit 68e97808c5)

# Conflicts:
#	erpnext/manufacturing/doctype/work_order/work_order.py
2026-04-07 08:48:12 +00:00
Smit Vora
b91af5b2b9 fix: create source_stock_entry to refer to original manufacturing entry
(cherry picked from commit d4baa9a74a)
2026-04-07 08:48:11 +00:00
Khushi Rawat
ae89407840 Merge pull request #54095 from frappe/mergify/bp/version-16-hotfix/pr-53394
fix: remove null from link_filters (backport #53394)
2026-04-07 12:57:04 +05:30
ervishnucs
21f36f5c21 fix: remove null from link_filters
(cherry picked from commit a518a735f3)
2026-04-07 07:00:44 +00:00
mergify[bot]
995a29e3e1 fix: task gantt popup text not visible in light theme (backport #53882) (#54094)
Co-authored-by: Sakthivel Murugan S <129778327+ssakthivelmurugan@users.noreply.github.com>
fix: task gantt popup text not visible in light theme (#53882)
2026-04-07 06:40:45 +00:00
mergify[bot]
454271ad68 fix: divide sub-assembly cost by qty to get per-unit rate in BOM Creator (backport #54090) (#54091) 2026-04-07 05:55:55 +00:00
mergify[bot]
ff262655bb feat: croatian_address_template (backport #53888) (#54058)
Co-authored-by: mahsem <137205921+mahsem@users.noreply.github.com>
2026-04-07 10:25:44 +05:30
mergify[bot]
62b83cacce fix: resolve user permission error on status change by updating user … (backport #54033) (#54060)
Co-authored-by: Krishna Shirsath <shirsathkrishna19@gmail.com>
2026-04-07 10:25:13 +05:30
mergify[bot]
e6722c84fa fix: dif_inward_from_outward_workspace_sidebar (backport #54083) (#54088)
Co-authored-by: mahsem <137205921+mahsem@users.noreply.github.com>
fix: dif_inward_from_outward_workspace_sidebar (#54083)
2026-04-07 04:14:45 +00:00
mergify[bot]
dc58754a60 fix: add tax_id handling in Tax Withholding Entry (backport #53598) (#54081)
Co-authored-by: Lakshit Jain <ljain112@gmail.com>
fix: add tax_id handling in Tax Withholding Entry (#53598)
2026-04-06 17:18:45 +00:00
mergify[bot]
af81ed874b fix: transactions where update stock is 0 should not create SLEs (backport #54035) (#54077)
Co-authored-by: Nishka Gosalia <58264710+nishkagosalia@users.noreply.github.com>
fix: transactions where update stock is 0 should not create SLEs (#54035)
2026-04-06 15:17:11 +00:00
Smit Vora
14868ab98f Merge pull request #54070 from frappe/mergify/bp/version-16-hotfix/pr-53973
fix(ux): refresh grid to correctly persist the state of fields (backport #53973)
2026-04-06 19:38:55 +05:30
rohitwaghchaure
957a5e1a65 Merge pull request #54069 from frappe/mergify/bp/version-16-hotfix/pr-54050
fix: GL entries for different exchange rate in the purchase invoice (backport #54050)
2026-04-06 17:48:45 +05:30
mergify[bot]
84382db5ca fix: remove title field from purchase receipt (backport #54051) (#54065)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: remove title field from purchase receipt (#54051)
2026-04-06 12:00:04 +00:00
Smit Vora
273caa38d9 fix(ux): refresh grid to correctly persist the state of fields
(cherry picked from commit da778edf48)
2026-04-06 11:56:42 +00:00
Rohit Waghchaure
5719992cda fix: GL entries for different exchange rate in the purchase invoice
(cherry picked from commit a953709640)
2026-04-06 11:53:06 +00:00
Khushi Rawat
2de51be5ae Merge pull request #54062 from frappe/mergify/bp/version-16-hotfix/pr-54052
fix: print hide unnecessary fields (backport #54052)
2026-04-06 16:59:08 +05:30
Khushi Rawat
66ee208cb2 fix: conflicts 2026-04-06 16:19:53 +05:30
khushi8112
cd98312083 fix: print hide unnecessary fields
(cherry picked from commit 8f83616b60)

# Conflicts:
#	erpnext/selling/doctype/sales_order_item/sales_order_item.json
2026-04-06 10:43:49 +00:00
diptanilsaha
7c34cb1134 Merge pull request #54047 from frappe/mergify/bp/version-16-hotfix/pr-54042
fix: skip discount amount validation when not saving (backport #54042)
2026-04-06 13:44:31 +05:30
Sagar Vora
9bc0e3b2ce test: add test for discount amount on partial purchase receipt
Co-authored-by: ravibharathi656 <131471282+ravibharathi656@users.noreply.github.com>
(cherry picked from commit 135cb5fd67)
2026-04-06 07:31:09 +00:00
Sagar Vora
8941699a34 fix: skip discount amount validation when not saving
(cherry picked from commit 0975583388)
2026-04-06 07:31:08 +00:00
rohitwaghchaure
fe6a7ee7ff Merge pull request #54029 from frappe/mergify/bp/version-16-hotfix/pr-54004
fix: do not repost GL if no change in valuation (backport #54004)
2026-04-06 11:47:35 +05:30
mergify[bot]
ab08162f34 fix: show current stock qty in Stock Entry PDF (backport #53761) (#54032) 2026-04-06 05:42:53 +00:00
Rohit Waghchaure
89e3e3c59e fix: do not repost GL if no change in valuation
(cherry picked from commit bb53cce228)
2026-04-06 03:38:41 +00:00
rohitwaghchaure
5c3daee1bb Merge pull request #54010 from frappe/mergify/bp/version-16-hotfix/pr-53994
fix(stock): update stock queue in SABE for return entries (backport #53994)
2026-04-06 09:07:08 +05:30
rohitwaghchaure
baa714b00f Merge pull request #54016 from frappe/mergify/bp/version-16-hotfix/pr-54005
fix: screen freezes if consumed qty set in SCR (backport #54005)
2026-04-05 22:55:44 +05:30
mergify[bot]
bc86e2c1f2 fix: update min date based on transaction_date (backport #53803) (#54025)
Co-authored-by: Vishnu Priya Baskaran <145791817+ervishnucs@users.noreply.github.com>
fix: update min date based on transaction_date (#53803)
2026-04-05 21:16:31 +05:30
MochaMind
1c0956c6e2 chore: update POT file (#54017) 2026-04-05 16:02:11 +02:00
Rohit Waghchaure
bd67ef8d26 fix: screen freezes if consumed qty set in SCR
(cherry picked from commit dd7be2b370)
2026-04-05 07:50:38 +00:00
mergify[bot]
01610b2fa7 fix(manufacturing): handle null cur_dialog in BOM work order dialog (backport #54011) (#54015) 2026-04-05 07:19:23 +00:00
kavin-114
d3f1bfc628 test(stock): add unit test to update stock queue for return
(cherry picked from commit e537896df8)
2026-04-04 21:17:30 +00:00
kavin-114
fc5a04db2e fix(stock): update stock queue in SABE for return entries
(cherry picked from commit 0af8077bcc)
2026-04-04 21:17:30 +00:00
rohitwaghchaure
fddf9f381b Merge pull request #53980 from frappe/mergify/bp/version-16-hotfix/pr-53963
fix: hide fields related to track Semi-Finished Goods if feature has disabled (backport #53963)
2026-04-02 18:03:35 +05:30
mergify[bot]
5aaca83fe4 fix: remove reference in serial/batch when document is cancelled (backport #53979) (#53989) 2026-04-02 08:11:20 +00:00
Rohit Waghchaure
5a7d0d2765 fix: hide fields related to track Semi-Finished Goods if feature has disabled
(cherry picked from commit 399faf0ced)
2026-04-01 11:08:10 +00:00
Lakshit Jain
53fc0beae5 Merge pull request #53969 from frappe/mergify/bp/version-16-hotfix/pr-53961
fix: ensure accurate rounding for item-wise tax and taxable amounts (backport #53961)
2026-04-01 14:43:15 +05:30
Mihir Kandoi
8db397bdae feat: co product by product support (#52979) (#53975) 2026-04-01 07:41:39 +00:00
mergify[bot]
e230f72e0b fix: include rejected qty in tax (purchase receipt) (backport #53624) (#53972)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: include rejected qty in tax (purchase receipt) (#53624)
2026-03-31 15:51:58 +00:00
ljain112
9386c1328a test: improve test case
(cherry picked from commit b73b161cbe)
2026-03-31 14:21:12 +00:00
ljain112
c4c76cc1b2 fix: ensure accurate rounding for item-wise tax and taxable amounts
(cherry picked from commit 9b37f2d95c)
2026-03-31 14:21:12 +00:00
Khushi Rawat
240d27274b Merge pull request #53957 from frappe/mergify/bp/version-16-hotfix/pr-53811
fix: prevent selection of group type customer group in customer master (backport #53811)
2026-03-31 18:13:29 +05:30
Nishka Gosalia
e55d0ce1f8 Merge pull request #53966 from frappe/mergify/bp/version-16-hotfix/pr-53965
fix: Party Field only visibile when party type selected (backport #53965)
2026-03-31 18:10:00 +05:30
nishkagosalia
f42a1e8a14 fix: Party Field only visibile when party type selected
(cherry picked from commit e9e510a76e)
2026-03-31 12:38:31 +00:00
khushi8112
8674aafc86 fix(test): do not use is_group enabled customer group in test
(cherry picked from commit 75fa2b2277)
2026-03-31 11:17:17 +00:00
khushi8112
04cced2fb5 fix: prevent selection of group type customer group in customer master
(cherry picked from commit 6068dc959f)
2026-03-31 11:17:17 +00:00
Khushi Rawat
16bd04dd97 Merge pull request #53943 from frappe/mergify/bp/version-16-hotfix/pr-53939
fix: dynamic labels on invoice type change (backport #53939)
2026-03-31 16:47:02 +05:30
ruthra kumar
d129e5f5bc Merge pull request #53948 from frappe/mergify/bp/version-16-hotfix/pr-53795
refactor(test): enforce ERPNextTestSuite across repo (backport #53795)
2026-03-31 16:30:56 +05:30
mergify[bot]
573a1a0dcb fix: do not show inv dimension unnecessarily in stock entry (backport #53946) (#53951)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: do not show inv dimension unnecessarily in stock entry (#53946)
2026-03-31 16:29:29 +05:30
rohitwaghchaure
7c503b33f8 Merge pull request #53954 from frappe/mergify/bp/version-16-hotfix/pr-53953
fix: rejected serial no field showing even if serial / batch feature disabled (backport #53953)
2026-03-31 16:20:56 +05:30
Rohit Waghchaure
2c81f79df7 fix: rejected serial no field showing even if serial / batch feature not enabled
(cherry picked from commit c2f419ac3d)
2026-03-31 10:41:44 +00:00
ruthra kumar
05f47bbf6e refactor(test): remove AccountsTestMixin from Sales Order
(cherry picked from commit 2aecf0103a)
2026-03-31 15:05:19 +05:30
ruthra kumar
ee61d79631 refactor(test): remove AccountsTestMixin from reactivity
(cherry picked from commit d2ee967383)
2026-03-31 15:05:17 +05:30
ruthra kumar
85b08e4706 refactor(test): remove AccountsTestMixin from distributed discount
(cherry picked from commit 0b6546ea06)
2026-03-31 09:32:44 +00:00
ruthra kumar
013aea6b7e refactor(test): move logic from AccountsTestMixin to ERPNextTestSuite
(cherry picked from commit 2b37d7514d)
2026-03-31 09:32:44 +00:00
ruthra kumar
a8d0fb5ac9 refactor(test): erpnext testsuite should be primary superclass
(cherry picked from commit f3148e052c)
2026-03-31 09:32:44 +00:00
Lakshit Jain
924983794b Merge pull request #53933 from frappe/mergify/bp/version-16-hotfix/pr-53925
fix(taxes): increase rounding threshold for tax breakup calculations (backport #53925)
2026-03-31 12:34:33 +05:30
mergify[bot]
5ade905ee8 feat(Payment Request): Added a toggle for using the payment schedule (backport #53922) (#53928)
* feat(Payment Request): Added a toggle for using the payment schedule

(cherry picked from commit 8ec15b537e)

---------

Co-authored-by: Jatin3128 <jatinsarna8@gmail.com>
Co-authored-by: Jatin3128 <140256508+Jatin3128@users.noreply.github.com>
2026-03-31 12:26:29 +05:30
khushi8112
4705f53d2c fix: dynamic labels on invoice type change
(cherry picked from commit 820bd15e1e)
2026-03-31 06:37:19 +00:00
mergify[bot]
8be7793f89 chore: remove inter warehouse transfer settings (backport #53860) (#53941)
Co-authored-by: Nishka Gosalia <58264710+nishkagosalia@users.noreply.github.com>
2026-03-31 06:09:44 +00:00
ljain112
0dcacad793 chore: resolve conflicts 2026-03-31 11:05:46 +05:30
mergify[bot]
a478fb7131 fix(warehouse_capacity_dashboard): removed escape from template (backport #53907) (#53909)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix(warehouse_capacity_dashboard): removed `escape` from template (#53907)
2026-03-30 23:33:22 +05:30
Frappe PR Bot
ddef35c333 chore(release): Bumped to Version 16.12.0
# [16.12.0](https://github.com/frappe/erpnext/compare/v16.11.0...v16.12.0) (2026-03-30)

### Bug Fixes

* **accounts:** set supplier name as title field in Purchase Invoice ([#53710](https://github.com/frappe/erpnext/issues/53710)) ([f2195fa](f2195fa67d))
* add missing type hints to whitelisted function arguments ([b115913](b115913fc9))
* avoid setting unnecessary fields ([3023302](3023302700))
* **bank_account:** added validation to fetch bank account details using `get_bank_account_details` (backport [#53926](https://github.com/frappe/erpnext/issues/53926)) ([#53930](https://github.com/frappe/erpnext/issues/53930)) ([8cb8f66](8cb8f66b22))
* change in functionality ([6d92792](6d92792634))
* change shipment parcel dimension fields from Int to Float (backport [#53867](https://github.com/frappe/erpnext/issues/53867)) ([#53873](https://github.com/frappe/erpnext/issues/53873)) ([2907c41](2907c411f3))
* **contract_template:** restrict `create`, `write` and `delete` access only to `System Manager` (backport [#53787](https://github.com/frappe/erpnext/issues/53787)) ([#53789](https://github.com/frappe/erpnext/issues/53789)) ([737cb37](737cb371d7))
* correct item valuation when "Deduct" is used in Purchase Invoice and Receipt. ([c6fe5be](c6fe5be95a))
* corrected logic to retry reposting if timeout occurs after dependent SLE processing ([8fbb86d](8fbb86d53e))
* do not check for sub assembly reference for rm of fg (backport [#53758](https://github.com/frappe/erpnext/issues/53758)) ([#53759](https://github.com/frappe/erpnext/issues/53759)) ([1872dcc](1872dccb0a))
* **email_campaign:** prevent unsubscribing entire campaign when email group member unsubscribes ([00bb07a](00bb07aaa3))
* employee user creation ([1ddadb7](1ddadb72b7))
* **employee:** add 'set_only_once' property to 'Create User Automatically' field ([eadf78d](eadf78d694))
* fallback to Personal Email for user creation just like client-side ([553bc87](553bc87ac7))
* flaky currency exchange test (backport [#53813](https://github.com/frappe/erpnext/issues/53813)) ([#53817](https://github.com/frappe/erpnext/issues/53817)) ([3d79dce](3d79dce8b3))
* hide Create User Automatically checkbox if user is already selected ([c12ad79](c12ad7910a))
* invalid dynamic link filter for address doctype (backport [#53849](https://github.com/frappe/erpnext/issues/53849)) ([#53852](https://github.com/frappe/erpnext/issues/53852)) ([1c1369f](1c1369fea8))
* **item_dashboard:** escaping `warehouse`, `item_code`, `stock_uom` and `item_name` on `get_data` (backport [#53904](https://github.com/frappe/erpnext/issues/53904)) ([#53914](https://github.com/frappe/erpnext/issues/53914)) ([4ac6347](4ac6347cc5))
* item-wh reposting, code cleanup ([8d2c4da](8d2c4da931))
* keep from and to time blank until added explicitly (backport [#53798](https://github.com/frappe/erpnext/issues/53798)) ([#53801](https://github.com/frappe/erpnext/issues/53801)) ([09a4f63](09a4f630e1))
* maintain state during reposting ([544c914](544c91441b))
* **manufacturing:** apply work order status filter in job card (backport [#53766](https://github.com/frappe/erpnext/issues/53766)) ([#53768](https://github.com/frappe/erpnext/issues/53768)) ([37b68a0](37b68a07aa))
* **manufacturing:** close work order status when stock reservation is… (backport [#53714](https://github.com/frappe/erpnext/issues/53714)) ([#53721](https://github.com/frappe/erpnext/issues/53721)) ([c36f9e9](c36f9e9b1b))
* **manufacturing:** update condition for base hour rate calculation (backport [#53753](https://github.com/frappe/erpnext/issues/53753)) ([#53771](https://github.com/frappe/erpnext/issues/53771)) ([a93d715](a93d715916))
* **manufacturing:** update the qty precision (backport [#53874](https://github.com/frappe/erpnext/issues/53874)) ([#53885](https://github.com/frappe/erpnext/issues/53885)) ([f6fa972](f6fa9726f9))
* move Joining section before Exit, relabel Employee Exit -> Exit ([7414a9a](7414a9a694))
* only validate auto user creation before insert ([2f13b33](2f13b33e3d))
* **opening_invoice_creation_tool:** sanitize summary content for dashboard (backport [#53917](https://github.com/frappe/erpnext/issues/53917)) ([#53924](https://github.com/frappe/erpnext/issues/53924)) ([8c35a93](8c35a939cb))
* party name not updating correctly ([a205733](a2057331e3))
* **Payment Entry:** split orders as per the schedules in the refrence table ([2693ffe](2693ffe680))
* pick correct dependant sle during reposting ([15739b5](15739b5d81))
* purchase invoice for internal transfers should not require PO (backport [#53791](https://github.com/frappe/erpnext/issues/53791)) ([#53793](https://github.com/frappe/erpnext/issues/53793)) ([72efbc2](72efbc2b42))
* purchase invoice missing item ([bfb5132](bfb51326ed))
* Removed quick access link from selling workspace ([25fa66f](25fa66f90c))
* reset employee listview empty state, add import btn instead ([341bfb0](341bfb0bd9))
* reset User ID and make it read-only if 'Create User Automatically' is set ([af94ed8](af94ed865a))
* resolve POS crash and correct is_return typo in TransactionBase ([adc2960](adc2960f5b))
* sanitize genericode import inputs and secure XML parser ([d7902d0](d7902d0477))
* set create user perm to 1 by default + persist option while saving employee ([e8ca394](e8ca394e8b))
* set default print format for when downlod pdf ([a5250f8](a5250f8827))
* skip overwriting existing asset fields with accounting dimensions ([a35a3e9](a35a3e9627))
* **stock:** add warehouse filter to pick work order raw materials (backport [#53748](https://github.com/frappe/erpnext/issues/53748)) ([#53898](https://github.com/frappe/erpnext/issues/53898)) ([ad3c1e5](ad3c1e520e))
* **stock:** handle legacy single sle recon entries ([dd0613a](dd0613a4a8))
* **stock:** ignore qty validation for pick list (backport [#53871](https://github.com/frappe/erpnext/issues/53871)) ([#53892](https://github.com/frappe/erpnext/issues/53892)) ([319ba31](319ba31b77))
* **stock:** update company validation for expense account in lcv ([9d46d81](9d46d8151a))
* support translated search in get_party_type and refactor raw sql to qb (backport [#53191](https://github.com/frappe/erpnext/issues/53191)) ([#53832](https://github.com/frappe/erpnext/issues/53832)) ([675b94b](675b94b7a2))
* **templates:** escape attachment `file_url` and `file_name` in `order.html` and `projects.html` ([38bc5d6](38bc5d69cd))
* **templates:** using correct syntax of `include` in `projects.html` ([c3cb9cc](c3cb9cc003))
* test case ([5039f89](5039f896bf))
* test file deletion ([3a8e1e3](3a8e1e3faa))
* **test:** enable perpetual inventory ([ad96646](ad966468b1))
* uncollapse User Details section in new form ([d093b71](d093b71946))
* **UX:** improve party selection UX with party name field ([f80b974](f80b974d6f))
* validate if quantity greater than 0 in item dashboard (backport [#53846](https://github.com/frappe/erpnext/issues/53846)) ([#53848](https://github.com/frappe/erpnext/issues/53848)) ([9a2851f](9a2851f221))
* **warehouse_capacity_dashboard:** escaping `warehouse`, `item_code` and `company` on `get_data` (backport [#53894](https://github.com/frappe/erpnext/issues/53894)) ([#53900](https://github.com/frappe/erpnext/issues/53900)) ([f01f7e7](f01f7e7974))

### Features

* Bom stock analysis report ([8a5e2cc](8a5e2cc0a6))
* default print format for Request for Quotation ([ab0e215](ab0e215290))
* **employee:** Add automatic user creation feature and related validations. Create User on Import. ([8f8b487](8f8b48746b))
* **employee:** Add birthdays and work anniversaries indicator in form ,list view enhancements and new empty state. ([0b3c912](0b3c9120c3))
* **employee:** Create User button and form. ([cd0a25c](cd0a25ca17))
* **report:** add service start/end date and amount with roll-ups in deferred revenue/expense report ([407c3cd](407c3cd575))
2026-03-30 18:03:06 +00:00
diptanilsaha
f3a5afc11f Merge pull request #53915 from frappe/version-16-hotfix 2026-03-30 23:31:28 +05:30
mergify[bot]
8cb8f66b22 fix(bank_account): added validation to fetch bank account details using get_bank_account_details (backport #53926) (#53930)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix(bank_account): added validation to fetch bank account details using `get_bank_account_details` (#53926)
2026-03-30 20:56:31 +05:30
ljain112
5922d25210 test: update item-wise tax detail test for high conversion rates
(cherry picked from commit fc8437c499)

# Conflicts:
#	erpnext/controllers/tests/test_item_wise_tax_details.py
2026-03-30 15:17:09 +00:00
Smit Vora
6ad5e89607 fix(taxes): improve tax calculation accuracy and update test assertions
(cherry picked from commit a18196f584)
2026-03-30 15:17:09 +00:00
ljain112
6689b17b88 fix(tests): update item code and quantity in tax detail test case
(cherry picked from commit 3449ab063a)
2026-03-30 15:17:09 +00:00
ljain112
3592637b5c fix(taxes): increase rounding threshold for tax breakup calculations
(cherry picked from commit 7f87a5e5c6)
2026-03-30 15:17:08 +00:00
Lakshit Jain
63828dfc00 Merge pull request #53932 from frappe/mergify/bp/version-16-hotfix/pr-53406
fix: correct item valuation when "Deduct" is used in Purchase Invoice and Receipt. (backport #53406)
2026-03-30 20:37:24 +05:30
ljain112
c6fe5be95a fix: correct item valuation when "Deduct" is used in Purchase Invoice and Receipt.
(cherry picked from commit e68f149d3a)
2026-03-30 14:24:46 +00:00
mergify[bot]
8c35a939cb fix(opening_invoice_creation_tool): sanitize summary content for dashboard (backport #53917) (#53924)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix(opening_invoice_creation_tool): sanitize summary content for dashboard (#53917)
2026-03-30 12:47:25 +00:00
mergify[bot]
4ac6347cc5 fix(item_dashboard): escaping warehouse, item_code, stock_uom and item_name on get_data (backport #53904) (#53914)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix(item_dashboard): escaping `warehouse`, `item_code`, `stock_uom` and `item_name` on `get_data` (#53904)
2026-03-30 09:52:17 +00:00
rohitwaghchaure
e85919478e Merge pull request #53911 from frappe/mergify/bp/version-16-hotfix/pr-53906
fix: purchase invoice missing item (backport #53906)
2026-03-30 15:08:56 +05:30
rohitwaghchaure
6ffd716ee2 Merge pull request #53896 from frappe/mergify/bp/version-16-hotfix/pr-53799
fix(stock): update company validation for expense account in lcv (backport #53799)
2026-03-30 14:45:49 +05:30
Rohit Waghchaure
bfb51326ed fix: purchase invoice missing item
(cherry picked from commit af994c1a22)
2026-03-30 09:15:18 +00:00
rohitwaghchaure
3af5b67e43 Merge pull request #53905 from frappe/mergify/bp/version-16-hotfix/pr-53902
fix: item-wh reposting, code cleanup (backport #53902)
2026-03-30 14:22:35 +05:30
Rohit Waghchaure
8d2c4da931 fix: item-wh reposting, code cleanup
(cherry picked from commit e0ca34ae39)
2026-03-30 08:31:48 +00:00
mergify[bot]
f01f7e7974 fix(warehouse_capacity_dashboard): escaping warehouse, item_code and company on get_data (backport #53894) (#53900)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix(warehouse_capacity_dashboard): escaping `warehouse`, `item_code` and `company` on `get_data` (#53894)
2026-03-30 13:48:25 +05:30
mergify[bot]
ad3c1e520e fix(stock): add warehouse filter to pick work order raw materials (backport #53748) (#53898)
Co-authored-by: Sudharsanan Ashok <135326972+Sudharsanan11@users.noreply.github.com>
fix(stock): add warehouse filter to pick work order raw materials (#53748)
2026-03-30 08:12:48 +00:00
Sudharsanan11
ad966468b1 fix(test): enable perpetual inventory
(cherry picked from commit 875a2e4947)
2026-03-30 07:34:51 +00:00
Sudharsanan11
9d46d8151a fix(stock): update company validation for expense account in lcv
(cherry picked from commit 913168e8b6)
2026-03-30 07:34:51 +00:00
mergify[bot]
319ba31b77 fix(stock): ignore qty validation for pick list (backport #53871) (#53892)
Co-authored-by: Sudharsanan Ashok <135326972+Sudharsanan11@users.noreply.github.com>
fix(stock): ignore qty validation for pick list (#53871)
2026-03-30 06:59:29 +00:00
rohitwaghchaure
68d93a2dae Merge pull request #53810 from frappe/mergify/bp/version-16-hotfix/pr-53216
fix(stock): handle legacy single sle recon entries (backport #53216)
2026-03-30 11:34:36 +05:30
mergify[bot]
b2cba0286e refactor: setup wizard stages and demo data creation (backport #53866) (#53868)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
2026-03-29 17:05:36 +00:00
mergify[bot]
f6fa9726f9 fix(manufacturing): update the qty precision (backport #53874) (#53885)
Co-authored-by: Sudharsanan Ashok <135326972+Sudharsanan11@users.noreply.github.com>
fix(manufacturing): update the qty precision (#53874)
2026-03-29 16:43:26 +00:00
MochaMind
83cac15755 chore: update POT file (#53875) 2026-03-29 14:55:38 +02:00
rohitwaghchaure
e3f144cb28 Merge pull request #53880 from frappe/mergify/bp/version-16-hotfix/pr-53878
fix: maintain state during reposting (backport #53878)
2026-03-29 16:32:07 +05:30
Rohit Waghchaure
544c91441b fix: maintain state during reposting
(cherry picked from commit f8738a791b)
2026-03-29 10:43:06 +00:00
mergify[bot]
2907c411f3 fix: change shipment parcel dimension fields from Int to Float (backport #53867) (#53873)
Co-authored-by: Kaushal Shriwas <64089478+kaulith@users.noreply.github.com>
fix: change shipment parcel dimension fields from Int to Float (#53867)
2026-03-29 07:10:14 +00:00
rohitwaghchaure
0b324b2892 Merge pull request #53856 from frappe/mergify/bp/version-16-hotfix/pr-53853
fix: corrected logic to retry reposting if timeout occurs after dependant SLE processing  (backport #53853)
2026-03-27 22:35:42 +05:30
Rohit Waghchaure
8fbb86d53e fix: corrected logic to retry reposting if timeout occurs after dependent SLE processing
(cherry picked from commit 90b9ab0bc8)
2026-03-27 15:56:46 +00:00
mergify[bot]
1c1369fea8 fix: invalid dynamic link filter for address doctype (backport #53849) (#53852) 2026-03-27 12:45:50 +00:00
mergify[bot]
9a2851f221 fix: validate if quantity greater than 0 in item dashboard (backport #53846) (#53848)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: validate if quantity greater than 0 in item dashboard (#53846)
2026-03-27 10:34:18 +00:00
mergify[bot]
c9953580b2 ci: semgrep to prevent test regression (backport #53837) (#53840)
ci: semgrep to prevent test regression

(cherry picked from commit be4496e4ab)

Co-authored-by: ruthra kumar <ruthra@erpnext.com>
2026-03-27 08:32:29 +00:00
mergify[bot]
675b94b7a2 fix: support translated search in get_party_type and refactor raw sql to qb (backport #53191) (#53832)
* fix: support translated search in get_party_type and refactor raw sql to qb

(cherry picked from commit d987688058)

# Conflicts:
#	erpnext/setup/doctype/party_type/party_type.py

* fix: resolve merge conflicts in party_type.py

---------

Co-authored-by: Shllokkk <140623894+Shllokkk@users.noreply.github.com>
2026-03-27 13:42:46 +05:30
rohitwaghchaure
bec83c1944 Merge pull request #53805 from frappe/mergify/bp/version-16-hotfix/pr-52152
Refactor reposting feature (backport #52152)
2026-03-27 12:36:22 +05:30
Nishka Gosalia
fbd72ff232 Merge pull request #53835 from frappe/mergify/bp/version-16-hotfix/pr-53704 2026-03-27 12:27:28 +05:30
Rohit Waghchaure
15739b5d81 fix: pick correct dependant sle during reposting 2026-03-27 12:10:45 +05:30
Rohit Waghchaure
f663f9b27e refactor: storing of current status of reposting
(cherry picked from commit daa2420996)
2026-03-27 12:10:45 +05:30
Rohit Waghchaure
5bbecbf7c4 refactor: reposting for better peformance
(cherry picked from commit 20787ef5da)
2026-03-27 12:10:45 +05:30
nishkagosalia
3a8e1e3faa fix: test file deletion 2026-03-27 12:03:20 +05:30
Ravibharathi
c78a5af073 Merge pull request #53820 from frappe/mergify/bp/version-16-hotfix/pr-53710
fix(accounts): set supplier name as title field in Purchase Invoice (backport #53710)
2026-03-27 11:59:39 +05:30
kavin-114
dd0613a4a8 fix(stock): handle legacy single sle recon entries
(cherry picked from commit 7e6bbcc3fb)
2026-03-27 11:49:45 +05:30
nishkagosalia
5039f896bf fix: test case
(cherry picked from commit 3a78af7f42)
2026-03-27 06:09:18 +00:00
nishkagosalia
d1a3571918 chore: Dropping bom stock report and bom stock calculated report
(cherry picked from commit 3bedc6cf7e)

# Conflicts:
#	erpnext/manufacturing/report/bom_stock_calculated/test_bom_stock_calculated.py
2026-03-27 06:09:17 +00:00
nishkagosalia
6d92792634 fix: change in functionality
(cherry picked from commit c1874cb7d5)
2026-03-27 06:09:17 +00:00
nishkagosalia
8a5e2cc0a6 feat: Bom stock analysis report
(cherry picked from commit 5d088350dc)
2026-03-27 06:09:17 +00:00
ravibharathi656
d12b54c50a chore: resolve conflict 2026-03-27 11:24:35 +05:30
rohitwaghchaure
d7237519a2 Merge pull request #53826 from rohitwaghchaure/fixed-test-case-for-process-loss
test: fixed test case
2026-03-27 11:17:13 +05:30
ruthra kumar
f1af745932 Merge pull request #53830 from frappe/mergify/bp/version-16-hotfix/pr-53429
feat(report): add service start/end date and amount with roll-ups in deferred revenue/expense report (backport #53429)
2026-03-27 10:59:54 +05:30
ruthra kumar
610052d487 Merge pull request #53828 from frappe/mergify/bp/version-16-hotfix/pr-53343
fix(email_campaign): prevent unsubscribing entire campaign when email group member unsubscribes (backport #53343)
2026-03-27 10:48:46 +05:30
Shllokkk
407c3cd575 feat(report): add service start/end date and amount with roll-ups in deferred revenue/expense report
(cherry picked from commit 8e5692d8a3)
2026-03-27 05:00:50 +00:00
Shllokkk
00bb07aaa3 fix(email_campaign): prevent unsubscribing entire campaign when email group member unsubscribes
(cherry picked from commit 56f597f5ad)
2026-03-27 04:57:50 +00:00
Rohit Waghchaure
10f58112ae test: fixed test case 2026-03-27 10:04:55 +05:30
mergify[bot]
3d79dce8b3 fix: flaky currency exchange test (backport #53813) (#53817) 2026-03-26 15:09:13 +00:00
Pandiyan P
f2195fa67d fix(accounts): set supplier name as title field in Purchase Invoice (#53710)
fix(accounts): update title field in purchase order and purchase invoice

(cherry picked from commit 5b1fa81451)

# Conflicts:
#	erpnext/buying/doctype/purchase_order/purchase_order.json
2026-03-26 13:30:44 +00:00
mergify[bot]
09a4f630e1 fix: keep from and to time blank until added explicitly (backport #53798) (#53801)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: keep from and to time blank until added explicitly (#53798)
2026-03-26 07:42:54 +00:00
mergify[bot]
72efbc2b42 fix: purchase invoice for internal transfers should not require PO (backport #53791) (#53793)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: purchase invoice for internal transfers should not require PO (#53791)
2026-03-26 04:24:43 +05:30
mergify[bot]
737cb371d7 fix(contract_template): restrict create, write and delete access only to System Manager (backport #53787) (#53789)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix(contract_template): restrict `create`, `write` and `delete` access only to `System Manager` (#53787)
2026-03-25 15:26:34 +00:00
Khushi Rawat
b072dd4497 Merge pull request #53728 from frappe/mergify/bp/version-16-hotfix/pr-53646
feat: default print format for Request for Quotation (backport #53646)
2026-03-25 17:32:17 +05:30
diptanilsaha
62dc3ce6d8 Merge pull request #53781 from frappe/mergify/bp/version-16-hotfix/pr-53779
fix(template): escape attachment `file_url` and `file_name` and jinja syntax (backport #53779)
2026-03-25 15:20:20 +05:30
diptanilsaha
c3cb9cc003 fix(templates): using correct syntax of include in projects.html
(cherry picked from commit bc6561cdd0)
2026-03-25 09:28:37 +00:00
diptanilsaha
38bc5d69cd fix(templates): escape attachment file_url and file_name in order.html and projects.html
(cherry picked from commit d9760bbf4f)
2026-03-25 09:28:36 +00:00
mergify[bot]
a93d715916 fix(manufacturing): update condition for base hour rate calculation (backport #53753) (#53771)
Co-authored-by: Sudharsanan Ashok <135326972+Sudharsanan11@users.noreply.github.com>
fix(manufacturing): update condition for base hour rate calculation (#53753)
2026-03-25 06:29:08 +00:00
mergify[bot]
37b68a07aa fix(manufacturing): apply work order status filter in job card (backport #53766) (#53768)
Co-authored-by: Pandiyan P <pandiyanpalani37@gmail.com>
fix(manufacturing): apply work order status filter in job card (#53766)
2026-03-25 05:52:27 +00:00
mergify[bot]
1872dccb0a fix: do not check for sub assembly reference for rm of fg (backport #53758) (#53759)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: do not check for sub assembly reference for rm of fg (#53758)
2026-03-25 11:10:16 +05:30
ruthra kumar
47438a44d3 Merge pull request #53752 from frappe/mergify/bp/version-16-hotfix/pr-53657
refactor(test): move remaining commits inside test guard (backport #53657)
2026-03-24 18:24:58 +05:30
ruthra kumar
e91cbd94b4 refactor(test): process statement of acc remove commit
(cherry picked from commit bc2b8da597)
2026-03-24 17:52:41 +05:30
ruthra kumar
7f29245eb6 refactor(test): move location creation to bootstrap in asset movement
(cherry picked from commit fd2b76a4d2)
2026-03-24 17:52:41 +05:30
ruthra kumar
f0aa82cc6d refactor(test): make stock entry deterministic
(cherry picked from commit 8fd65d7afa)
2026-03-24 17:52:41 +05:30
ruthra kumar
37ad0665c6 refactor(test): make asset capitalization deterministic
(cherry picked from commit 2c53cf3902)
2026-03-24 17:52:41 +05:30
ruthra kumar
8ea9133caa refactor(test): make ledger merge deterministic
(cherry picked from commit d3cf8cb851)
2026-03-24 17:52:41 +05:30
ruthra kumar
0ba03ce851 refactor(test): SLA move company creation to bootstrap
(cherry picked from commit 77f41e120d)
2026-03-24 17:52:41 +05:30
ruthra kumar
ad2cf0624f refactor(test): move webform custom dt creation to boostrap
(cherry picked from commit 426b7db3c8)
2026-03-24 17:52:41 +05:30
ruthra kumar
cdc77caf6a refactor(test): move custom doctype data setup to bootstrap
(cherry picked from commit 934740205a)
2026-03-24 17:52:41 +05:30
ruthra kumar
d41e7098bd refactor(test): move tax category custom field creation to bootstrap
(cherry picked from commit 4454af8efd)
2026-03-24 17:52:41 +05:30
ruthra kumar
ebe45add4c refactor(test): move trial company creation to bootstrap
(cherry picked from commit 11fb00c21d)
2026-03-24 17:52:41 +05:30
ruthra kumar
bb42d3ddbe refactor(test): move purchase invoice dimension setup to bootstrap
(cherry picked from commit 31ce09204f)
2026-03-24 17:52:41 +05:30
ruthra kumar
ee72ed94d5 refactor(test): move company setup to bootstrap
(cherry picked from commit 9ed072ac83)
2026-03-24 17:52:41 +05:30
ruthra kumar
941375877e refactor(test): move dimension setup to test data bootstrap
and remove create_dimension() and disable_dimension()

(cherry picked from commit 342ce65401)
2026-03-24 17:52:37 +05:30
ruthra kumar
4148d7d414 Merge pull request #53750 from frappe/mergify/bp/version-16-hotfix/pr-52285
fix(Payment Entry): split orders as per the schedules in the reference table (backport #52285)
2026-03-24 17:49:48 +05:30
ruthra kumar
9669a2c56f refactor(test): move commits inside test guard clause
(cherry picked from commit ed76d6699a)
2026-03-24 12:14:03 +00:00
Jatin3128
2693ffe680 fix(Payment Entry): split orders as per the schedules in the refrence table
(cherry picked from commit a9e52833fe)
2026-03-24 11:59:33 +00:00
Nishka Gosalia
f9bbf7bee4 Merge pull request #53747 from frappe/mergify/bp/version-16-hotfix/pr-53738 2026-03-24 16:48:34 +05:30
nishkagosalia
0571830720 refactor: item master ux improvements
(cherry picked from commit be55082751)
2026-03-24 10:59:06 +00:00
khushi8112
bb77018f7b fix: add quotation print format in the list
(cherry picked from commit da41057cd6)
2026-03-24 10:06:58 +00:00
khushi8112
f5a9657a91 fix: remove unused print format
(cherry picked from commit b9083411cc)
2026-03-24 10:06:58 +00:00
khushi8112
7e5297a305 fix: add closing div tab
(cherry picked from commit c99cec1071)
2026-03-24 10:06:58 +00:00
khushi8112
a8769bfb77 feat: default print format for Quotation
(cherry picked from commit 4307cd5b1c)

# Conflicts:
#	erpnext/controllers/accounts_controller.py
#	erpnext/public/js/print.js
#	erpnext/setup/install.py
2026-03-24 10:06:57 +00:00
Khushi Rawat
6239e336ae Merge pull request #53729 from frappe/mergify/bp/version-16-hotfix/pr-53680
fix(UX): improve party selection UX with party name field (backport #53680)
2026-03-24 12:03:37 +05:30
ruthra kumar
2291a0539b Merge pull request #53740 from frappe/mergify/bp/version-16-hotfix/pr-52802
fix: Removed quick access link from selling workspace (backport #52802)
2026-03-24 11:50:42 +05:30
ruthra kumar
70984763a1 Merge pull request #53739 from frappe/mergify/bp/version-16-hotfix/pr-53302
fix: sanitize genericode import inputs and secure XML parser (backport #53302)
2026-03-24 11:47:45 +05:30
Nabin Hait
25fa66f90c fix: Removed quick access link from selling workspace
(cherry picked from commit d7c48d645a)
2026-03-24 06:01:15 +00:00
Shllokkk
d7902d0477 fix: sanitize genericode import inputs and secure XML parser
(cherry picked from commit 17eb983c40)
2026-03-24 05:57:53 +00:00
ruthra kumar
e78386f49a Merge pull request #53737 from frappe/mergify/bp/version-16-hotfix/pr-53730
fix: skip overwriting existing asset fields with accounting dimensions (backport #53730)
2026-03-24 11:25:09 +05:30
Rucha Mahabal
0a8e4675dc Merge pull request #53711 from frappe/mergify/bp/version-16-hotfix/pr-52726
feat(employee): Create User button and form. (backport #52726)
2026-03-24 11:06:15 +05:30
khushi8112
a35a3e9627 fix: skip overwriting existing asset fields with accounting dimensions
(cherry picked from commit 2859a143f2)
2026-03-24 05:35:26 +00:00
ruthra kumar
645308fc05 Merge pull request #53725 from Raghav0201/backport-52654
fix: resolve POS crash and correct is_return typo in TransactionBase
2026-03-24 10:59:00 +05:30
khushi8112
a2057331e3 fix: party name not updating correctly
(cherry picked from commit 469bb0ba4e)
2026-03-23 20:06:32 +00:00
khushi8112
f80b974d6f fix(UX): improve party selection UX with party name field
(cherry picked from commit 8fd9b88cd9)
2026-03-23 20:06:31 +00:00
khushi8112
a5250f8827 fix: set default print format for when downlod pdf
(cherry picked from commit 6b9fb77772)
2026-03-23 20:04:45 +00:00
khushi8112
ab0e215290 feat: default print format for Request for Quotation
(cherry picked from commit 2af0d9cf6c)
2026-03-23 20:04:45 +00:00
Raghav0201
adc2960f5b fix: resolve POS crash and correct is_return typo in TransactionBase 2026-03-23 22:13:29 +05:30
Frappe PR Bot
372fc96f0c chore(release): Bumped to Version 16.11.0
# [16.11.0](https://github.com/frappe/erpnext/compare/v16.10.1...v16.11.0) (2026-03-23)

### Bug Fixes

* Adding validation for operation time in BOM ([c38b252](c38b252289))
* batch validation for subcontracting receipt ([604739d](604739d1dc))
* check for `submit` permissions instead of `write` permissions when updating status (backport [#53697](https://github.com/frappe/erpnext/issues/53697)) ([#53703](https://github.com/frappe/erpnext/issues/53703)) ([cd1dfee](cd1dfeeab3))
* check posting_date in args (backport [#53303](https://github.com/frappe/erpnext/issues/53303)) ([#53612](https://github.com/frappe/erpnext/issues/53612)) ([f394ead](f394ead878))
* consider returned qty in subcontracting report (backport [#53616](https://github.com/frappe/erpnext/issues/53616)) ([#53621](https://github.com/frappe/erpnext/issues/53621)) ([7edcef1](7edcef1248))
* deadlock issue for SLE ([de41aba](de41abaaf2))
* do not overwrite expense account in stock entry (backport [#53658](https://github.com/frappe/erpnext/issues/53658)) ([#53661](https://github.com/frappe/erpnext/issues/53661)) ([077f397](077f39721a))
* do not update float precision on setup ([0af4cd9](0af4cd9098))
* ignore cost center (backport [#53063](https://github.com/frappe/erpnext/issues/53063)) ([#53614](https://github.com/frappe/erpnext/issues/53614)) ([2ccac6c](2ccac6c479))
* incorrect sle calculation when doc has project ([#53599](https://github.com/frappe/erpnext/issues/53599)) ([55bad49](55bad49cf0))
* **manufacturing:** update non-stock item dict (backport [#53689](https://github.com/frappe/erpnext/issues/53689)) ([#53699](https://github.com/frappe/erpnext/issues/53699)) ([0d9af60](0d9af60f8a))
* merge conflict ([f1c93d4](f1c93d4b98))
* **payment_schedule:** using `show_alert` instead of `msgprint` for non-selection of payment schedule (backport [#53623](https://github.com/frappe/erpnext/issues/53623)) ([#53631](https://github.com/frappe/erpnext/issues/53631)) ([a94bf6d](a94bf6db06))
* PO should not be required for internal transfers (backport [#53681](https://github.com/frappe/erpnext/issues/53681)) ([#53684](https://github.com/frappe/erpnext/issues/53684)) ([5f9533f](5f9533f089))
* python error in manufacture entry if transfer against is job card (backport [#53615](https://github.com/frappe/erpnext/issues/53615)) ([#53618](https://github.com/frappe/erpnext/issues/53618)) ([10a40a6](10a40a6d9b))
* set customer details on customer creation at login (backport [#53509](https://github.com/frappe/erpnext/issues/53509)) ([#53629](https://github.com/frappe/erpnext/issues/53629)) ([5b4e3e9](5b4e3e92df))
* shipping rule applied twice on non stock items (backport [#53655](https://github.com/frappe/erpnext/issues/53655)) ([#53687](https://github.com/frappe/erpnext/issues/53687)) ([9805745](9805745a66))
* stock queue for SABB ([f570a4c](f570a4cb5d))
* **stock:** add company filter while fetching batches (backport [#53369](https://github.com/frappe/erpnext/issues/53369)) ([#53581](https://github.com/frappe/erpnext/issues/53581)) ([91ee45a](91ee45a698))
* **stock:** fix email error message (backport [#53606](https://github.com/frappe/erpnext/issues/53606)) ([#53633](https://github.com/frappe/erpnext/issues/53633)) ([48e8944](48e8944a86))
* **stock:** handle NoneType error (backport [#53593](https://github.com/frappe/erpnext/issues/53593)) ([#53627](https://github.com/frappe/erpnext/issues/53627)) ([2d1dd03](2d1dd03483))
* test case ([aac60b4](aac60b4c13))
* **test:** Use the system-configured float precision ([dd7cc56](dd7cc56dfe))
* **trends:** added validation for `period_based_on` filter (backport [#53690](https://github.com/frappe/erpnext/issues/53690)) ([#53692](https://github.com/frappe/erpnext/issues/53692)) ([9787777](9787777cbd))
* use correct test class ([1efbc60](1efbc60df1))
* validate permission before updating status (backport [#53651](https://github.com/frappe/erpnext/issues/53651)) ([#53653](https://github.com/frappe/erpnext/issues/53653)) ([7ebed91](7ebed912cf))

### Features

* add cost center field to the stock entry accounting dimension tab ([50da693](50da6937e1))
2026-03-23 16:35:10 +00:00
mergify[bot]
c36f9e9b1b fix(manufacturing): close work order status when stock reservation is… (backport #53714) (#53721)
Co-authored-by: Pandiyan P <pandiyanpalani37@gmail.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix(manufacturing): close work order status when stock reservation is… (#53714)
2026-03-23 22:03:54 +05:30
diptanilsaha
a7dde4f26c Merge pull request #53701 from frappe/version-16-hotfix 2026-03-23 22:03:34 +05:30
mergify[bot]
d16adb1579 chore(test_item_group): removed unused function _print_tree (backport #53716) (#53719)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
2026-03-23 16:14:22 +00:00
mergify[bot]
638373e180 chore: skip semgrep check for db.commit in BootStrapTestData (backport #53715) (#53717)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
2026-03-23 15:59:49 +00:00
rohitwaghchaure
2a514b5038 Merge pull request #53707 from frappe/mergify/bp/version-16-hotfix/pr-53705
fix: batch validation for subcontracting receipt (backport #53705)
2026-03-23 18:52:30 +05:30
Rucha Mahabal
03510d96be chore: fix conflicts 2026-03-23 17:57:30 +05:30
Rucha Mahabal
33d868f415 test(fix): set company in employee
(cherry picked from commit a14f834589)

# Conflicts:
#	erpnext/setup/doctype/employee/test_employee.py
2026-03-23 12:18:18 +00:00
Rucha Mahabal
dfd9aa56be test: Create User Automatically
(cherry picked from commit d4ecede3c3)

# Conflicts:
#	erpnext/setup/doctype/employee/test_employee.py
2026-03-23 12:18:17 +00:00
Rucha Mahabal
af94ed865a fix: reset User ID and make it read-only if 'Create User Automatically' is set
(cherry picked from commit 2be6bb694f)
2026-03-23 12:18:17 +00:00
Rucha Mahabal
553bc87ac7 fix: fallback to Personal Email for user creation just like client-side
(cherry picked from commit 31af13a5e6)
2026-03-23 12:18:17 +00:00
Rucha Mahabal
3023302700 fix: avoid setting unnecessary fields
(cherry picked from commit 97bb100010)
2026-03-23 12:18:16 +00:00
Rucha Mahabal
e8ca394e8b fix: set create user perm to 1 by default + persist option while saving employee
(cherry picked from commit 091899d0df)
2026-03-23 12:18:16 +00:00
Rucha Mahabal
c12ad7910a fix: hide Create User Automatically checkbox if user is already selected
(cherry picked from commit ec3302d1c1)
2026-03-23 12:18:15 +00:00
Rucha Mahabal
d093b71946 fix: uncollapse User Details section in new form
(cherry picked from commit 1466df91bd)
2026-03-23 12:18:15 +00:00
Rucha Mahabal
2f13b33e3d fix: only validate auto user creation before insert
(cherry picked from commit ee1aa10328)
2026-03-23 12:18:14 +00:00
Rucha Mahabal
1ddadb72b7 fix: employee user creation
- consider prefered email as default in employee creation

- remove unused user parameter from `create_user` API

- remove unnecessary validations on user ID, already checked by user doctype hooks

- set company email only if empty

(cherry picked from commit 613d36a139)
2026-03-23 12:18:14 +00:00
Rucha Mahabal
341bfb0bd9 fix: reset employee listview empty state, add import btn instead
(cherry picked from commit d99d16423a)
2026-03-23 12:18:13 +00:00
Rucha Mahabal
7414a9a694 fix: move Joining section before Exit, relabel Employee Exit -> Exit
(cherry picked from commit 000b5b72d5)
2026-03-23 12:18:13 +00:00
Krishna Shirsath
c33cd5ce15 refactor(employee): remove anniversary indicator logic from employee form
(cherry picked from commit 1f19175fef)
2026-03-23 12:18:13 +00:00
Krishna Shirsath
eadf78d694 fix(employee): add 'set_only_once' property to 'Create User Automatically' field
(cherry picked from commit 053242d5bd)
2026-03-23 12:18:13 +00:00
Krishna Shirsath
b115913fc9 fix: add missing type hints to whitelisted function arguments
(cherry picked from commit 124ec4d3c2)
2026-03-23 12:18:13 +00:00
Krishna Shirsath
0b3c9120c3 feat(employee): Add birthdays and work anniversaries indicator in form ,list view enhancements and new empty state.
(cherry picked from commit 4f43f655cf)
2026-03-23 12:18:12 +00:00
Krishna Shirsath
b0145512ed refactor(employee): reorganize joining and employee exit tabs at the end.
(cherry picked from commit 870254b710)
2026-03-23 12:18:12 +00:00
Krishna Shirsath
f2c4a8b1c4 refactor(employee): create user function -removed useless function calls
(cherry picked from commit 6513185cb7)
2026-03-23 12:18:11 +00:00
Krishna Shirsath
8f8b48746b feat(employee): Add automatic user creation feature and related validations. Create User on Import.
(cherry picked from commit 57f3048d27)
2026-03-23 12:18:11 +00:00
Krishna Shirsath
cd0a25ca17 feat(employee): Create User button and form.
(cherry picked from commit 3b521b74ea)
2026-03-23 12:18:11 +00:00
Rohit Waghchaure
604739d1dc fix: batch validation for subcontracting receipt
(cherry picked from commit b8d201658a)
2026-03-23 11:33:00 +00:00
mergify[bot]
cd1dfeeab3 fix: check for submit permissions instead of write permissions when updating status (backport #53697) (#53703)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix: check for `submit` permissions instead of `write` permissions when updating status (#53697)
2026-03-23 10:56:15 +00:00
mergify[bot]
0d9af60f8a fix(manufacturing): update non-stock item dict (backport #53689) (#53699)
Co-authored-by: Sudharsanan Ashok <135326972+Sudharsanan11@users.noreply.github.com>
fix(manufacturing): update non-stock item dict (#53689)
2026-03-23 10:14:52 +00:00
Nishka Gosalia
e2b9538e85 Merge pull request #53694 from frappe/mergify/bp/version-16-hotfix/pr-53649 2026-03-23 14:52:10 +05:30
mergify[bot]
9787777cbd fix(trends): added validation for period_based_on filter (backport #53690) (#53692)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix(trends): added validation for `period_based_on` filter (#53690)
2026-03-23 09:15:08 +00:00
mergify[bot]
9805745a66 fix: shipping rule applied twice on non stock items (backport #53655) (#53687)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: shipping rule applied twice on non stock items (#53655)
2026-03-23 14:38:07 +05:30
nishkagosalia
2a47197859 chore: Adding new argument in status updater to skip qty validation
(cherry picked from commit dcd0509089)
2026-03-23 08:57:51 +00:00
mergify[bot]
5f9533f089 fix: PO should not be required for internal transfers (backport #53681) (#53684)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: PO should not be required for internal transfers (#53681)
2026-03-23 06:52:45 +00:00
MochaMind
eee1c36263 chore: update POT file (#53676) 2026-03-22 14:45:56 +01:00
rohitwaghchaure
543e374978 Merge pull request #53675 from frappe/mergify/bp/version-16-hotfix/pr-53673
fix: stock queue for SABB (backport #53673)
2026-03-22 13:20:18 +05:30
Rohit Waghchaure
f570a4cb5d fix: stock queue for SABB
(cherry picked from commit 3fcf308ed8)
2026-03-22 07:30:57 +00:00
rohitwaghchaure
18eb7bb4f4 Merge pull request #53670 from frappe/mergify/bp/version-16-hotfix/pr-53638
fix: deadlock issue for SLE (backport #53638)
2026-03-21 14:40:46 +05:30
Rohit Waghchaure
de41abaaf2 fix: deadlock issue for SLE
(cherry picked from commit f48b03c6ec)
2026-03-21 08:34:41 +00:00
mergify[bot]
077f39721a fix: do not overwrite expense account in stock entry (backport #53658) (#53661)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: do not overwrite expense account in stock entry (#53658)
2026-03-20 14:56:44 +05:30
Nishka Gosalia
3923dd1e3a Merge pull request #53648 from frappe/mergify/bp/version-16-hotfix/pr-53645
fix: Adding validation for operation time in BOM (backport #53645)
2026-03-19 22:27:07 +05:30
nishkagosalia
aac60b4c13 fix: test case 2026-03-19 22:05:58 +05:30
nishkagosalia
f1c93d4b98 fix: merge conflict 2026-03-19 21:02:53 +05:30
mergify[bot]
7ebed912cf fix: validate permission before updating status (backport #53651) (#53653)
* fix: validate permission before updating status (#53651)

(cherry picked from commit 8e17c722fb)

# Conflicts:
#	erpnext/buying/doctype/purchase_order/purchase_order.py
#	erpnext/selling/doctype/sales_order/sales_order.py
#	erpnext/stock/doctype/purchase_receipt/purchase_receipt.py

* chore: resolve conflicts

---------

Co-authored-by: diptanilsaha <diptanil@frappe.io>
2026-03-19 15:28:01 +00:00
nishkagosalia
c38b252289 fix: Adding validation for operation time in BOM
(cherry picked from commit 7f70e62c30)

# Conflicts:
#	erpnext/manufacturing/doctype/job_card/test_job_card.py
2026-03-19 13:00:32 +00:00
ruthra kumar
ee19765c96 Merge pull request #53608 from ruthra-kumar/ci_lightmode_runner_v16
refactor(test): repo wide test suite refactor (backport #47910)
2026-03-19 13:35:08 +05:30
mergify[bot]
48e8944a86 fix(stock): fix email error message (backport #53606) (#53633)
Co-authored-by: Sudharsanan Ashok <135326972+Sudharsanan11@users.noreply.github.com>
fix(stock): fix email error message (#53606)
2026-03-19 07:42:44 +00:00
mergify[bot]
a94bf6db06 fix(payment_schedule): using show_alert instead of msgprint for non-selection of payment schedule (backport #53623) (#53631)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix(payment_schedule): using `show_alert` instead of `msgprint` for non-selection of payment schedule (#53623)
2026-03-19 12:57:45 +05:30
ruthra kumar
35f6bc5d30 refactor(test): remove all remaining reference to integration test 2026-03-19 12:57:12 +05:30
ruthra kumar
08ee50a902 refactor(test): cleanup; remove redundant attribute 2026-03-19 12:57:12 +05:30
ruthra kumar
3f35db5db1 refactor(test): make pick list deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
1c96348064 refactor(test): make item wise sales register deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
37d6978190 refactor(test): make purchase order deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
e3e4dae3bb refactor(test): make sales invoice deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
af614bd195 refactor(test): make location determinisitic 2026-03-19 12:57:12 +05:30
ruthra kumar
037fdd6882 refactor(test): make bank clearance deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
7cb662a54c refactor(test): make sales invoice deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
021789baf1 refactor(test): hardcoded names over dynamic 2026-03-19 12:57:12 +05:30
ruthra kumar
9f3afea27f refactor(test): use JSON for company master 2026-03-19 12:57:12 +05:30
ruthra kumar
7d0779c73c refactor(test): remove explicit call to master data setup 2026-03-19 12:57:12 +05:30
ruthra kumar
495e585ab6 refactor(test): hardcoded names over dynamic ones
Much faster bootstrap without those get_doc calls
2026-03-19 12:57:12 +05:30
ruthra kumar
41de44f905 refactor: move test bootstrap to module 2026-03-19 12:57:12 +05:30
ruthra kumar
5934670e99 refactor(test): speed up setup 2026-03-19 12:57:12 +05:30
ruthra kumar
5f56f61f86 refactor(test): make stock entry deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
e451b68619 refactor(test): remove redundant before_tests 2026-03-19 12:57:12 +05:30
ruthra kumar
aec5ba1864 refactor(test): make process deferred accounting deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
9e11b6cfb3 refactor(test): make bom deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
71ce7ff8ce refactor(test): make customer deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
fe8064c3e6 refactor(test): tax rule; removed setUpClass, tearDownClass 2026-03-19 12:57:12 +05:30
ruthra kumar
16bd107583 refactor(test): common make function 2026-03-19 12:57:12 +05:30
ruthra kumar
3f0dbbc17c refactor(test): make bom stock calculated deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
2bfd371526 refactor(test): make pos profile deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
78b0db7988 refactor(test): make pos opening entry deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
dba530bb47 refactor(test): make pos invoice merge log deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
61b40fdccc refactor(test): make pos closing deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
46a81bc7c4 refactor(test): make stock test_utils deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
ed9470387e refactor(test): make currency exchange deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
6426f63798 refactor(test): make sales partner target variance deterministic 2026-03-19 12:57:12 +05:30
ruthra kumar
1cc4b67098 refactor(test): make sales order analysis deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
87de91e5d0 refactor(test): make uae vat audit deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
67bb6a2d6a refactor(test): make uae vat 201 deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
35339fcc0e refactor(test): make job card deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
0c2a538491 refactor(test): make opportunity summary by sales stage deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
bfffbcfee9 refactor(test): make queries deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
b680aeb62c refactor(test): make item wise details deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
da85534118 refactor(test): make accounts controller deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
d69b9d1a54 refactor(test): make subcontracting controller deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
6c9b32287c refactor(test): make test mapper deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
a58ba3e7d4 refactor(test): make item wise inventory account deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
c96f5e3d8c refactor(test): make distributed discount deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
35d35a0588 refactor(test): make requested items order and receive deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
a1aff71ca5 refactor(test): make accounts/test/test_utils.py deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
40bb5c6ed0 refactor(test): make gross profit deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
34c3490227 refactor(test): make sales payment summary deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
b98899a6ac refactor(test): make consolidated trial balance report deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
63908ad6dc refactor(test): remove redundant tearDown, tearDownClass and rollback 2026-03-19 12:57:11 +05:30
ruthra kumar
b3507a569a refactor(test): make inventory dimension deterministic
fixed flaky test 'test_inventory_dimension'

use '3' precision for test_opening_balnace
2026-03-19 12:57:11 +05:30
ruthra kumar
e24c4fcb15 refactor(test): make item group deterministic
'Item Group C' follows 'Item Group B'. So `lft` will increase while
`rgt` stays the same.
2026-03-19 12:57:11 +05:30
ruthra kumar
dc5fa0f5e1 refactor(test): make packed item deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
cbc2eb33a5 chore: typo 2026-03-19 12:57:11 +05:30
ruthra kumar
b23570c1b3 refactor(test): remove redundant create_asset_category 2026-03-19 12:57:11 +05:30
ruthra kumar
3afd39ce03 refactor(test): make sales invoice deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
9bf9068df7 refactor(test): make item group deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
a5defce696 refactor(test): make timesheet deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
f6ccef2935 refactor(test): make task deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
dde6731545 refactor(test): make project deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
0d367fa25f refactor(test): make maintenance schedule deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
c91c169f40 refactor(test): make leads deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
678841c77e refactor(test): make purchase order deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
55ba1fa9aa refactor(test): make asset repair deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
6737ccac95 refactor(test): make asset deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
9cd52c245b refactor(test): make loyalty point entry deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
a0d928871d refactor(test): make dunning deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
21acafae79 refactor(test): make budget deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
b5b28f2e89 refactor(test): make auto match party deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
09b8ee869a refactor(test): make bank clearance deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
3c45a0ca44 refactor(test): remove explicit commit and dead code 2026-03-19 12:57:11 +05:30
ruthra kumar
fad451d6c2 refactor(test): rollback on tearDown 2026-03-19 12:57:11 +05:30
ruthra kumar
b8c68be0cb refactor(test): make irs supplier test deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
a110b20350 refactor(test): make party specific item deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
83d1f53eb1 refactor(test): make subcontracting receipt deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
4b9ae6b0cd refactor(test): make purchase receipt deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
20353e70a1 refactor(test): make stock reconciliation deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
020e28235a refactor(test): make subcontracting order deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
05e78848e3 refactor(test): make purchase receipt deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
d2f1962c2d refactor(test): make material request deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
d54f3c8c24 refactor(test): make stock ledger entry deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
40909af128 refactor(test): make item deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
b3fec97a83 refactor(test): make work order deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
52dfc32dba refactor(test): make purchase receipt deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
8867a7015c refactor: fix logical bug and make stock settings test deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
ac6621b0e8 refactor(test): make stock entry deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
f939d0d3d6 refactor(test): make serial no deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
820e0f88d3 refactor(test): make serial and batch bundle deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
12470c3145 refactor(test): make pick list deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
c437bfcd28 refactor(test): make packed item deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
dee513fa87 refactor(test): make material request deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
499213cafd refactor(test): make LCV deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
61745b9371 refactor(test): make item price deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
8a7f193334 refactor(test): make delivery trip deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
fd31c34581 refactor(test): make delivery note deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
671235d13c refactor(test): make transaction deletion record deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
bd5dcc04f0 refactor(test): make item group deterministic 2026-03-19 12:57:11 +05:30
ruthra kumar
2699ad15d2 refactor(test): make employee deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
2a6b497c06 refactor(test): make department deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
dd240c1070 refactor(test): make currency exchange deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
ec3a39c961 refactor(test): make test deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
381e0a65d1 refactor(test): make project deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
6824f3274a refactor(test): make sales order deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
3d4f145b16 refactor(test): make quotation deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
6b5f39d41b refactor(test): make production plan deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
4531902024 refactor(test): make job card tests deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
3ea14fc9be refactor(test): make bom tests deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
6a16c76bbc refactor(test): make bom update tool tests deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
bc82e67f27 refactor(test): make plaid settings deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
985ab09309 refactor(test): make financial reports deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
ef3736e582 refactor(test): make sales invoice deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
ad8d8e6541 refactor(test): make pos invoice deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
478473a295 refactor(test): better setup for loyalty point and POS Invoice 2026-03-19 12:57:10 +05:30
ruthra kumar
36e578e848 refactor(test): pos invoice tests are almost deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
a158fd1a78 refactor(test): make timesheet and activity type deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
44a10ea50d refactor(test): make maintenance schedule deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
8e0c8e1c80 refactor(test): make prospect deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
61cd154f0f refactor(test): make opportunity deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
10de2e348b refactor(test): remove empty IntegrationTestCase 2026-03-19 12:57:10 +05:30
ruthra kumar
2832aeb592 refactor(test): make tax withholding tests deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
d7840b5c45 refactor(test): ensure new bankers rounding method is set 2026-03-19 12:57:10 +05:30
ruthra kumar
98d43f5933 refactor(test): set precision in class setup 2026-03-19 12:57:10 +05:30
ruthra kumar
3fcb860d6d refactor(test): make sales invoice tests deterministic
- allow_negative_stock is required for test_taxes_merging_from_delivery_note
2026-03-19 12:57:10 +05:30
ruthra kumar
1e08962eb4 refactor(test): make purchase invoice tests deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
607f0789cc refactor: avoid name clash 2026-03-19 12:57:10 +05:30
ruthra kumar
9dd6cf2cb7 refactor(test): handle setup of Workstation Operation Component 2026-03-19 12:57:10 +05:30
ruthra kumar
eb31298f58 refactor(tests): make asset maintenance tests deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
e5d9d3cf7f refactor(test): incorrect fieldname for abbrevation 2026-03-19 12:57:10 +05:30
ruthra kumar
2c526ae856 refactor(test): make asset repair tests deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
b0d44847ac refactor(test): make supplier quotation deterministic 2026-03-19 12:57:10 +05:30
ruthra kumar
a434b89173 refactor(test): install supplier scorecard presets 2026-03-19 12:57:10 +05:30
ruthra kumar
25c8735298 chore: remove default templated test case 2026-03-19 12:57:10 +05:30
ruthra kumar
32c98d2a3e refactor(test): set_user utility method 2026-03-19 12:57:10 +05:30
ruthra kumar
29cf028f9a refactor: replace all IntegrationTestCase -> ERPNextTestSuite 2026-03-19 12:57:10 +05:30
ruthra kumar
4cdf5f542e refactor: utility to return default supplier scorecards 2026-03-19 12:57:10 +05:30
ruthra kumar
523007ecde refactor(test): flaky test in lead 2026-03-19 12:57:10 +05:30
ruthra kumar
400d6b5b62 refactor(test): flaky tax rule testsuite
- Make Sales Stage preset
2026-03-19 12:57:10 +05:30
ruthra kumar
602b30ecaf refactor(test): load shipping rule records 2026-03-19 12:57:10 +05:30
ruthra kumar
5928e289d1 refactor(test): fix flaky shareholder test 2026-03-19 12:57:10 +05:30
ruthra kumar
19fd69bda7 refactor(test): fix flaky process deferred accounting tests 2026-03-19 12:57:10 +05:30
ruthra kumar
1cee2a0917 refactor(test): flaky pricing rule tests 2026-03-19 12:57:10 +05:30
ruthra kumar
02475d4efa refactor(test): flaky stock entry; load records json 2026-03-19 12:57:10 +05:30
ruthra kumar
84250d0245 refactor(test): flaky pos invoice merge log test 2026-03-19 12:57:10 +05:30
ruthra kumar
978ac5ff31 refactor(test): flaky post invoice test 2026-03-19 12:57:10 +05:30
ruthra kumar
7ab253a905 refactor(test): flaky pos invoice test; load stock entry json 2026-03-19 12:57:10 +05:30
ruthra kumar
62d1336c43 refactor(test): flaky PE test; load currency exchange record 2026-03-19 12:57:10 +05:30
ruthra kumar
f79a3e0217 refactor: load journal entry test records and make holiday list 2026-03-19 12:57:10 +05:30
ruthra kumar
9a0c59df73 refactor: utility to load JSON records 2026-03-19 12:57:10 +05:30
ruthra kumar
6f8ac1ba28 refactor(test): update system settings in super() 2026-03-19 12:57:10 +05:30
ruthra kumar
0b7b4d9244 refactor(test): flaky test setup in pos closing entry 2026-03-19 12:57:10 +05:30
ruthra kumar
442dc6d3d0 refactor(test): fix flaky test setup for opening invoice creation 2026-03-19 12:57:10 +05:30
ruthra kumar
e939927bc3 refactor(test): flaky test setup in Exchange Rate Revaluation 2026-03-19 12:57:10 +05:30
ruthra kumar
8c1057088d refactor(test): flaky test data setup for coupon code 2026-03-19 12:57:10 +05:30
ruthra kumar
f0834cb2e8 refactor(test): make price list - more test records 2026-03-19 12:57:10 +05:30
ruthra kumar
04e2ffb966 refactor(test): flaky test data in bank reconciliation tool 2026-03-19 12:57:10 +05:30
ruthra kumar
015cf6fcb9 refactor(test): call super() method first 2026-03-19 12:57:10 +05:30
ruthra kumar
f31d2e74bc refactor(test): make customer 2026-03-19 12:57:10 +05:30
ruthra kumar
6fbca354ea refactor(test): make price list and update selling settings 2026-03-19 12:57:10 +05:30
ruthra kumar
1dbaa8d91f refactor(test): make item attribute 2026-03-19 12:57:10 +05:30
ruthra kumar
f526022302 refactor(test): make test accounts 2026-03-19 12:57:10 +05:30
ruthra kumar
8cbe0d2d35 refactor(test): make item tax template 2026-03-19 12:57:10 +05:30
ruthra kumar
ceca3299e7 refactor(test): make uom 2026-03-19 12:57:10 +05:30
ruthra kumar
654ebd3776 refactor(test): make item group 2026-03-19 12:57:10 +05:30
ruthra kumar
aa0f9219c8 refactor(test): make item 2026-03-19 12:57:10 +05:30
ruthra kumar
c041a94cc0 refactor(test): make warehouse 2026-03-19 12:57:10 +05:30
ruthra kumar
1e13426715 chore: typo in setup method 2026-03-19 12:57:10 +05:30
ruthra kumar
01f2d3699e refactor(test): make persistent location 2026-03-19 12:57:10 +05:30
ruthra kumar
348bb95268 refactor(test): setup fiscal years without any gap 2026-03-19 12:57:10 +05:30
ruthra kumar
2554750a59 refactor(test): make cost center 2026-03-19 12:57:10 +05:30
ruthra kumar
b5558d411b refactor: suppress welcome mail 2026-03-19 12:57:10 +05:30
ruthra kumar
f0b4b02358 refactor(test): even more master data setup 2026-03-19 12:57:10 +05:30
ruthra kumar
fbd2a181bd refactor(test): make all presets in setupclass 2026-03-19 12:57:10 +05:30
ruthra kumar
3aef8ffa24 refactor: temporary standing decorator for change_settings 2026-03-19 12:57:10 +05:30
ruthra kumar
f1dfac417d refactor: replace IntegrationTestCase with ERPNextTestCase repo-wide
- import ERPNextTestSuite
 - use it on test class
2026-03-19 12:57:07 +05:30
mergify[bot]
5b4e3e92df fix: set customer details on customer creation at login (backport #53509) (#53629)
Co-authored-by: Sakthivel Murugan S <129778327+ssakthivelmurugan@users.noreply.github.com>
fix: set customer details on customer creation at login (#53509)
2026-03-19 07:11:25 +00:00
mergify[bot]
2d1dd03483 fix(stock): handle NoneType error (backport #53593) (#53627)
Co-authored-by: Pandiyan P <pandiyanpalani37@gmail.com>
fix(stock): handle NoneType error (#53593)
2026-03-19 07:03:03 +00:00
mergify[bot]
077bf2d0ce refactor: remove test file import in stock ageing report (backport #53619) (#53626)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-03-19 06:55:47 +00:00
mergify[bot]
7edcef1248 fix: consider returned qty in subcontracting report (backport #53616) (#53621)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: consider returned qty in subcontracting report (#53616)
2026-03-19 11:52:24 +05:30
ruthra kumar
0fdc961a4b refactor(test): bare bones presets for company 2026-03-19 11:33:34 +05:30
ruthra kumar
88c6f61632 refactor(test): make persistent company records
'test_coa_based_on_country_template' made deterministic
2026-03-19 11:33:34 +05:30
ruthra kumar
b86954119f refactor(test): IntegraionTestCase -> python's built-in TestCase 2026-03-19 11:33:34 +05:30
ruthra kumar
018257096b chore: drop dead hook 2026-03-19 11:33:34 +05:30
ruthra kumar
fbf3373a87 chore: remove global dependencies 2026-03-19 11:33:34 +05:30
ruthra kumar
c2504760dd chore: remove IGNORE_TEST_RECORD_DEPENDENCIES 2026-03-19 11:33:34 +05:30
ruthra kumar
de34cf227a chore: remove EXTRA_TEST_RECORD_DEPENDENCIES 2026-03-19 11:33:34 +05:30
ruthra kumar
f7e4d07a7e chore: delete all test_records.json 2026-03-19 11:33:34 +05:30
ruthra kumar
1a6e96818d ci: run parallel test in lightmode
- modify individual test CI. let it be dormat for now.

Acked-by: ruthra kumar <ruthra@erpnext.com>
2026-03-19 11:33:34 +05:30
ruthra kumar
3704df04ab Merge pull request #53622 from frappe/mergify/bp/version-16-hotfix/pr-51509
fix: use system configured float precision for depreciation rate  (backport #51509)
2026-03-19 11:32:31 +05:30
khushi8112
b000224a93 test: set up float precision
(cherry picked from commit c0a85faa68)
2026-03-19 05:47:07 +00:00
khushi8112
0af4cd9098 fix: do not update float precision on setup
(cherry picked from commit 825e3717ca)
2026-03-19 05:47:07 +00:00
khushi8112
b855f30600 refactor: modify test cases to handle float precision rounded to 2 decimals
(cherry picked from commit 007258d657)
2026-03-19 05:47:06 +00:00
khushi8112
1efbc60df1 fix: use correct test class
(cherry picked from commit 8d186d6b3f)
2026-03-19 05:47:06 +00:00
khushi8112
dd7cc56dfe fix(test): Use the system-configured float precision
(cherry picked from commit 1296829b9c)
2026-03-19 05:47:06 +00:00
ruthra kumar
ba102e13c5 Merge pull request #53609 from frappe/mergify/bp/version-16-hotfix/pr-53011
refactor: use cache decorator in accounting dimensions (backport #53011)
2026-03-19 10:51:43 +05:30
ruthra kumar
38ba559d6e Merge pull request #53610 from frappe/mergify/bp/version-16-hotfix/pr-53027
refactor: remove frappe.flags from accounting dimensions filter (backport #53027)
2026-03-19 10:49:39 +05:30
mergify[bot]
10a40a6d9b fix: python error in manufacture entry if transfer against is job card (backport #53615) (#53618)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: python error in manufacture entry if transfer against is job card (#53615)
2026-03-19 05:15:51 +00:00
mergify[bot]
f394ead878 fix: check posting_date in args (backport #53303) (#53612)
Co-authored-by: Vishnu Priya Baskaran <145791817+ervishnucs@users.noreply.github.com>
fix: check posting_date in args (#53303)
2026-03-19 05:01:34 +00:00
mergify[bot]
2ccac6c479 fix: ignore cost center (backport #53063) (#53614)
Co-authored-by: Sowmya <106989392+SowmyaArunachalam@users.noreply.github.com>
fix: ignore cost center (#53063)
2026-03-19 04:46:51 +00:00
ruthra kumar
dbf795e810 refactor: remove frappe.flags from accounting dimensions filter
(cherry picked from commit 290f979fd3)
2026-03-19 01:43:35 +00:00
ruthra kumar
9889ef2455 refactor: remove frappe.flags and make use of cache decorator
(cherry picked from commit 565542879e)
2026-03-19 01:43:09 +00:00
Frappe PR Bot
8b10311a9b chore(release): Bumped to Version 16.10.1
## [16.10.1](https://github.com/frappe/erpnext/compare/v16.10.0...v16.10.1) (2026-03-18)

### Bug Fixes

* incorrect sle calculation when doc has project ([#53599](https://github.com/frappe/erpnext/issues/53599)) ([9a46aa3](9a46aa3106))
2026-03-18 13:42:27 +00:00
rohitwaghchaure
9a8f61e21f Merge pull request #53603 from frappe/mergify/bp/version-16/pr-53601
fix: incorrect sle calculation when doc has project (backport #53599) (backport #53601)
2026-03-18 19:10:58 +05:30
Mihir Kandoi
9a46aa3106 fix: incorrect sle calculation when doc has project (#53599)
(cherry picked from commit 6cb6a52ded)
(cherry picked from commit 55bad49cf0)
2026-03-18 13:38:39 +00:00
rohitwaghchaure
17f8aa9e2d Merge pull request #53601 from frappe/mergify/bp/version-16-hotfix/pr-53599
fix: incorrect sle calculation when doc has project (backport #53599)
2026-03-18 19:07:40 +05:30
Mihir Kandoi
55bad49cf0 fix: incorrect sle calculation when doc has project (#53599)
(cherry picked from commit 6cb6a52ded)
2026-03-18 13:20:32 +00:00
rohitwaghchaure
29c923a1f4 Merge pull request #53586 from frappe/mergify/bp/version-16-hotfix/pr-53246
feat: add cost center field to the stock entry accounting dimension tab (backport #53246)
2026-03-18 16:32:35 +05:30
mergify[bot]
91ee45a698 fix(stock): add company filter while fetching batches (backport #53369) (#53581)
Co-authored-by: Sudharsanan Ashok <135326972+Sudharsanan11@users.noreply.github.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix(stock): add company filter while fetching batches (#53369)
2026-03-18 13:30:29 +05:30
sudarshan-g
50da6937e1 feat: add cost center field to the stock entry accounting dimension tab
(cherry picked from commit 47772f4e77)
2026-03-18 06:20:28 +00:00
Frappe PR Bot
955f98cfe9 chore(release): Bumped to Version 16.10.0
# [16.10.0](https://github.com/frappe/erpnext/compare/v16.9.1...v16.10.0) (2026-03-18)

### Bug Fixes

* add icon in clear demo data ([0c9ce93](0c9ce9306f))
* add item_name to quick entry fields in Item doctype (backport [#53530](https://github.com/frappe/erpnext/issues/53530)) ([#53533](https://github.com/frappe/erpnext/issues/53533)) ([a695a11](a695a11130))
* add validation in bom creator function (backport [#53364](https://github.com/frappe/erpnext/issues/53364)) ([#53368](https://github.com/frappe/erpnext/issues/53368)) ([4af54a7](4af54a7ac7))
* Append existing ignored doctypes in Journal Entry on_cancel instead of overwriting ([875114d](875114d33c))
* **banking:** include paid purchase invoices in reports and bank clearance ([#52675](https://github.com/frappe/erpnext/issues/52675)) ([c9efcb7](c9efcb7822))
* broke cost center filter in get outstanding reference docs ([60a9c08](60a9c08f0d))
* change "Date" label to "Posting Date" in Sales Invoice and Purchase Invoice (backport [#53503](https://github.com/frappe/erpnext/issues/53503)) ([#53517](https://github.com/frappe/erpnext/issues/53517)) ([e72f398](e72f398b7c))
* correct overlap detection in JobCard.has_overlap (backport [#53473](https://github.com/frappe/erpnext/issues/53473)) ([#53523](https://github.com/frappe/erpnext/issues/53523)) ([c8bb55f](c8bb55f35b))
* correctly group RMs of same phantom from different FG ([efce145](efce145dad))
* Creating new item price incase of changes in expired item price (backport [#53534](https://github.com/frappe/erpnext/issues/53534)) ([#53545](https://github.com/frappe/erpnext/issues/53545)) ([e2a34ab](e2a34ab3fe))
* **delivery note:** avoid maintaining si_detail on return delivery note (backport [#52456](https://github.com/frappe/erpnext/issues/52456)) ([#53353](https://github.com/frappe/erpnext/issues/53353)) ([82b97ab](82b97abbad))
* do not modify rate in the child item merely for comparison (backport [#53301](https://github.com/frappe/erpnext/issues/53301)) ([#53376](https://github.com/frappe/erpnext/issues/53376)) ([42cfbae](42cfbae782))
* do not set valuation rate for invoice without update stock ([7af4aca](7af4acab29))
* enable logs to track changes in doctype. (backport [#53491](https://github.com/frappe/erpnext/issues/53491)) ([#53524](https://github.com/frappe/erpnext/issues/53524)) ([afe8e3a](afe8e3a023))
* handle NoneType error while creating a item (backport [#53313](https://github.com/frappe/erpnext/issues/53313)) ([#53351](https://github.com/frappe/erpnext/issues/53351)) ([4a7fdd1](4a7fdd1f91))
* initialize all tax columns to resolve Key error in `item_wise_sales_register` and `item_wise_purchase_register` reports (backport [#53323](https://github.com/frappe/erpnext/issues/53323)) ([#53582](https://github.com/frappe/erpnext/issues/53582)) ([573a402](573a402ee5))
* **italy:** fix e-invoice ScontoMaggiorazione structure and included_in_print_rate support (backport [#53334](https://github.com/frappe/erpnext/issues/53334)) ([#53569](https://github.com/frappe/erpnext/issues/53569)) ([535543d](535543d406))
* **manufacturing:** update working hours validation (backport [#53559](https://github.com/frappe/erpnext/issues/53559)) ([#53567](https://github.com/frappe/erpnext/issues/53567)) ([49ac166](49ac166f9e))
* move show_general_ledger to Asset Repair form events ([0a5fe99](0a5fe99d4a))
* NoneType error when template description is to be copied to variant (backport [#53358](https://github.com/frappe/erpnext/issues/53358)) ([#53366](https://github.com/frappe/erpnext/issues/53366)) ([24910cf](24910cf2d2))
* **p&l_statement:** disable accumulated value filter by default (backport [#53488](https://github.com/frappe/erpnext/issues/53488)) ([#53490](https://github.com/frappe/erpnext/issues/53490)) ([1ecc04c](1ecc04c7a2))
* precision issue in production plan (backport [#53370](https://github.com/frappe/erpnext/issues/53370)) ([#53374](https://github.com/frappe/erpnext/issues/53374)) ([6660e64](6660e643bb))
* re-calculate taxes and totals after resetting bundle item rate (backport [#53342](https://github.com/frappe/erpnext/issues/53342)) ([#53350](https://github.com/frappe/erpnext/issues/53350)) ([541bfb6](541bfb664b))
* **regional:** rename duplicate Customer fields in Italy setup (backport [#50921](https://github.com/frappe/erpnext/issues/50921)) ([#53398](https://github.com/frappe/erpnext/issues/53398)) ([41bcf96](41bcf96601))
* remove payables and receivables workspace ([c48a886](c48a8868c2))
* remove redundant pos print format ([#53348](https://github.com/frappe/erpnext/issues/53348)) ([270a294](270a294e81))
* remove supplier selection dialog when creating Purchase Order from Material Request (backport [#53391](https://github.com/frappe/erpnext/issues/53391)) ([#53476](https://github.com/frappe/erpnext/issues/53476)) ([3603048](36030483e5))
* remove workspace sidebar for payables and receivables ([4e5703c](4e5703c223))
* sales order indicator should be based on available qty rather th… (backport [#53456](https://github.com/frappe/erpnext/issues/53456)) ([#53458](https://github.com/frappe/erpnext/issues/53458)) ([ab8fe14](ab8fe146ab))
* **sales_invoice:** reset payment methods on `pos_profile` change (backport [#53514](https://github.com/frappe/erpnext/issues/53514)) ([#53561](https://github.com/frappe/erpnext/issues/53561)) ([4d197b1](4d197b1b7c))
* **serial_and_batch_bundle_selector:** handle CSV attachment properly (backport [#53460](https://github.com/frappe/erpnext/issues/53460)) ([#53462](https://github.com/frappe/erpnext/issues/53462)) ([3b2ae7b](3b2ae7ba4f))
* stock adjustment entry ([cecdcff](cecdcffce8))
* **stock:** fix the property setter (backport [#53422](https://github.com/frappe/erpnext/issues/53422)) ([#53574](https://github.com/frappe/erpnext/issues/53574)) ([9ccafd3](9ccafd30be))
* **support-settings:** disable the auto-close tickets feature if `close_issue_after_days` is set to 0 (backport [#53499](https://github.com/frappe/erpnext/issues/53499)) ([#53505](https://github.com/frappe/erpnext/issues/53505)) ([b7400b9](b7400b9b35))
* update child item schedule_date and prevent past dates (backport [#53298](https://github.com/frappe/erpnext/issues/53298)) ([#53346](https://github.com/frappe/erpnext/issues/53346)) ([a4d2c34](a4d2c34dde))
* update item description in Production Plan Assembly Items table ([d43c04d](d43c04df88))
* update label on company change ([bb98acb](bb98acb0c0))
* use bom source warehouse in WO created from PP (backport [#53478](https://github.com/frappe/erpnext/issues/53478)) ([#53480](https://github.com/frappe/erpnext/issues/53480)) ([31ab757](31ab75787e))
* use correct filter to get the composite assets ([82eb200](82eb200c73))
* use qb to prevent incorrect sql due to user permissions ([236f1bb](236f1bbfdb))
* use same label ([10cb6f8](10cb6f8306))
* valuation rate for no Use Batch wise Valuation batches ([8f31b0d](8f31b0dccd))

### Features

* Adding requested qty in packed item (backport [#53486](https://github.com/frappe/erpnext/issues/53486)) ([#53521](https://github.com/frappe/erpnext/issues/53521)) ([8753ed9](8753ed9992))
* show subsidiary companies value in purchase analytics ([c8afc04](c8afc04957))
* **stock:** implement fallback logic for Delivery Trip address mapping (backport [#53260](https://github.com/frappe/erpnext/issues/53260)) ([#53444](https://github.com/frappe/erpnext/issues/53444)) ([6ca5f35](6ca5f355bf))
2026-03-18 04:58:22 +00:00
diptanilsaha
bd16af46b6 Merge pull request #53576 from frappe/version-16-hotfix 2026-03-18 10:26:47 +05:30
mergify[bot]
dd0013e844 chore: make supplier data expanded by default in PI (backport #53565) (#53579)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-03-18 10:08:46 +05:30
mergify[bot]
573a402ee5 fix: initialize all tax columns to resolve Key error in item_wise_sales_register and item_wise_purchase_register reports (backport #53323) (#53582)
Co-authored-by: Lakshit Jain <ljain112@gmail.com>
fix: initialize all tax columns to resolve Key error in `item_wise_sales_register` and `item_wise_purchase_register` reports (#53323)
2026-03-18 09:00:33 +05:30
Khushi Rawat
0089f7a1d5 Merge pull request #53572 from frappe/mergify/bp/version-16-hotfix/pr-53446
fix: fetch accounting dimensions from child row in asset creation (backport #53446)
2026-03-18 00:14:49 +05:30
mergify[bot]
4d197b1b7c fix(sales_invoice): reset payment methods on pos_profile change (backport #53514) (#53561)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix(sales_invoice): reset payment methods on `pos_profile` change (#53514)
2026-03-17 17:21:11 +00:00
mergify[bot]
535543d406 fix(italy): fix e-invoice ScontoMaggiorazione structure and included_in_print_rate support (backport #53334) (#53569)
Co-authored-by: Arturo <tamburro92@users.noreply.github.com>
fix(italy): fix e-invoice ScontoMaggiorazione structure and included_in_print_rate support (#53334)
2026-03-17 22:09:25 +05:30
mergify[bot]
49ac166f9e fix(manufacturing): update working hours validation (backport #53559) (#53567)
Co-authored-by: Sudharsanan Ashok <135326972+Sudharsanan11@users.noreply.github.com>
fix(manufacturing): update working hours validation (#53559)
2026-03-17 22:08:44 +05:30
mergify[bot]
9ccafd30be fix(stock): fix the property setter (backport #53422) (#53574)
Co-authored-by: Sudharsanan Ashok <135326972+Sudharsanan11@users.noreply.github.com>
fix(stock): fix the property setter (#53422)
2026-03-17 22:07:43 +05:30
mergify[bot]
5515346e24 chore: add documentation link in valuation method field (backport #53564) (#53571)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-03-17 22:01:00 +05:30
[Kesavan-001]
2df491bf22 Fix:Cost center mapping issue
(cherry picked from commit e0fb31f81e)
2026-03-17 16:08:34 +00:00
[Kesavan-001]
3e75d4ea60 Fix:Cost center mapping issue
(cherry picked from commit a084feba96)
2026-03-17 16:08:34 +00:00
[Kesavan-001]
748467f27f Fix:Cost center mapping issue
(cherry picked from commit 10fe8580d5)
2026-03-17 16:08:34 +00:00
diptanilsaha
a8bf6ada89 Merge branch 'version-16' into version-16-hotfix 2026-03-17 20:20:04 +05:30
ruthra kumar
75c9512e38 Merge pull request #53552 from frappe/mergify/bp/version-16-hotfix/pr-53535
fix: remove payables and receivables workspace (backport #53535)
2026-03-17 18:40:36 +05:30
ravibharathi656
4e5703c223 fix: remove workspace sidebar for payables and receivables 2026-03-17 18:23:40 +05:30
ruthra kumar
46d492df65 Merge pull request #53553 from frappe/mergify/bp/version-16-hotfix/pr-53322
fix: add icon in clear demo data (backport #53322)
2026-03-17 17:45:08 +05:30
ruthra kumar
f7a8e64818 Merge pull request #53550 from frappe/mergify/bp/version-16-hotfix/pr-53548
fix: incorrect user perms in queries (backport #53548)
2026-03-17 17:13:52 +05:30
ravibharathi656
c48a8868c2 fix: remove payables and receivables workspace
(cherry picked from commit 26a9646407)

# Conflicts:
#	erpnext/patches.txt
2026-03-17 17:08:45 +05:30
sokumon
10cb6f8306 fix: use same label
(cherry picked from commit ed3444de5a)
2026-03-17 11:36:20 +00:00
sokumon
0c9ce9306f fix: add icon in clear demo data
(cherry picked from commit 413b119ec6)
2026-03-17 11:36:19 +00:00
ruthra kumar
1786c04298 Merge pull request #53529 from frappe/mergify/bp/version-16-hotfix/pr-52675
fix(banking): include paid purchase invoices in reports and bank clearance (backport #52675)
2026-03-17 17:00:59 +05:30
ruthra kumar
236f1bbfdb fix: use qb to prevent incorrect sql due to user permissions
(cherry picked from commit 04b967bd6d)
2026-03-17 16:44:02 +05:30
ruthra kumar
d352322688 chore: remove incorrect import
(cherry picked from commit fc2edfbded)

# Conflicts:
#	erpnext/controllers/queries.py
2026-03-17 11:02:54 +00:00
mergify[bot]
e2a34ab3fe fix: Creating new item price incase of changes in expired item price (backport #53534) (#53545)
Co-authored-by: Nishka Gosalia <58264710+nishkagosalia@users.noreply.github.com>
Co-authored-by: Nishka Gosalia <nishkagosalia@Nishkas-MacBook-Air.local>
fix: Creating new item price incase of changes in expired item price (#53534)
2026-03-17 10:24:35 +00:00
rohitwaghchaure
ccecc2bd70 Merge pull request #53538 from frappe/mergify/bp/version-16-hotfix/pr-53500
fix: valuation rate for no Use Batch wise Valuation batches (backport #53500)
2026-03-17 15:04:29 +05:30
Rohit Waghchaure
8f31b0dccd fix: valuation rate for no Use Batch wise Valuation batches
(cherry picked from commit 4befa15198)
2026-03-17 08:43:27 +00:00
Nikhil Kothari
427d5cf502 chore: remove conflicts 2026-03-17 11:26:28 +05:30
Nikhil Kothari
a8e7d82746 Merge branch 'version-16-hotfix' into mergify/bp/version-16-hotfix/pr-52675 2026-03-17 11:25:06 +05:30
rohitwaghchaure
b2d14bd947 Merge pull request #53519 from frappe/mergify/bp/version-16-hotfix/pr-53513
fix: do not set valuation rate for invoice without update stock (backport #53513)
2026-03-17 11:23:39 +05:30
mergify[bot]
a695a11130 fix: add item_name to quick entry fields in Item doctype (backport #53530) (#53533)
Co-authored-by: Abdus Samad <120767334+Samad-11@users.noreply.github.com>
fix: add item_name to quick entry fields in Item doctype (#53530)
2026-03-17 05:43:50 +00:00
mergify[bot]
afe8e3a023 fix: enable logs to track changes in doctype. (backport #53491) (#53524)
* fix: enable logs to track changes in doctype. (#53491)

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

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

* chore: resolve conflicts

---------

Co-authored-by: Jeraldin P J <113301032+jeraldin2003@users.noreply.github.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-03-17 05:32:00 +00:00
mergify[bot]
c8bb55f35b fix: correct overlap detection in JobCard.has_overlap (backport #53473) (#53523)
Co-authored-by: Sanjesh-Raju <sanjesh@tridotstech.com>
Co-authored-by: Sanjesh <rsanjesh64@gmail.com>
Co-authored-by: Tridots Tech <info@tridotstech.com>
fix: correct overlap detection in JobCard.has_overlap (#53473)
2026-03-17 10:42:37 +05:30
Nikhil Kothari
c9efcb7822 fix(banking): include paid purchase invoices in reports and bank clearance (#52675)
* fix(banking): include paid purchase invoices in reports and bank clearance

* fix: condition for amounts not reflected in system

* fix: set Sales Invoice to be the payment document in bank rec

* fix: add additional filter for `is_paid`

* fix: added is_paid

* fix: added invoice number in bank clearance tool

* chore: make requested changes

* fix: exclude opening JEs

* fix: bring back banking icon in desktop

(cherry picked from commit ef32622166)

# Conflicts:
#	erpnext/accounts/doctype/bank_clearance/bank_clearance.py
2026-03-17 04:48:44 +00:00
mergify[bot]
8753ed9992 feat: Adding requested qty in packed item (backport #53486) (#53521)
* feat: Adding requested qty in packed item (#53486)

* feat: Adding requested qty in packed item

* fix: correct import path

---------

Co-authored-by: Nishka Gosalia <nishkagosalia@Nishkas-MacBook-Air.local>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
(cherry picked from commit 953f089c06)

# Conflicts:
#	erpnext/patches.txt

* chore: resolve conflicts

---------

Co-authored-by: Nishka Gosalia <58264710+nishkagosalia@users.noreply.github.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-03-16 18:51:35 +00:00
mergify[bot]
e72f398b7c fix: change "Date" label to "Posting Date" in Sales Invoice and Purchase Invoice (backport #53503) (#53517)
Co-authored-by: Abdus Samad <120767334+Samad-11@users.noreply.github.com>
fix: change "Date" label to "Posting Date" in Sales Invoice and Purchase Invoice (#53503)
2026-03-16 18:26:52 +00:00
Rohit Waghchaure
7af4acab29 fix: do not set valuation rate for invoice without update stock
(cherry picked from commit bec9e48435)
2026-03-16 18:03:55 +00:00
rohitwaghchaure
60163f3df6 Merge pull request #53498 from frappe/mergify/bp/version-16-hotfix/pr-53495
fix: stock adjustment entry (backport #53495)
2026-03-16 18:06:57 +05:30
mergify[bot]
b7400b9b35 fix(support-settings): disable the auto-close tickets feature if close_issue_after_days is set to 0 (backport #53499) (#53505)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix(support-settings): disable the auto-close tickets feature if `close_issue_after_days` is set to 0 (#53499)
2026-03-16 12:10:19 +00:00
Rohit Waghchaure
cecdcffce8 fix: stock adjustment entry
(cherry picked from commit af3067ee23)
2026-03-16 09:48:16 +00:00
mergify[bot]
1ecc04c7a2 fix(p&l_statement): disable accumulated value filter by default (backport #53488) (#53490)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix(p&l_statement): disable accumulated value filter by default (#53488)
2026-03-16 12:53:48 +05:30
mergify[bot]
31ab75787e fix: use bom source warehouse in WO created from PP (backport #53478) (#53480)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-03-16 11:05:11 +05:30
ruthra kumar
e1d9598075 Merge pull request #53419 from frappe/mergify/bp/version-16-hotfix/pr-53415
fix: broke cost center filter in get outstanding reference docs (backport #53415)
2026-03-16 10:08:57 +05:30
mergify[bot]
36030483e5 fix: remove supplier selection dialog when creating Purchase Order from Material Request (backport #53391) (#53476)
Co-authored-by: jeraldin2003 <jeraldin2003>
Co-authored-by: Nikhil Kothari <nik.kothari22@live.com>
Co-authored-by: Jeraldin P J <113301032+jeraldin2003@users.noreply.github.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: remove supplier selection dialog when creating Purchase Order from Material Request (#53391)
2026-03-16 04:33:36 +00:00
mergify[bot]
9e40f87339 chore: add docs to project URLs (backport #53467) (#53469)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2026-03-15 15:06:59 +01:00
MochaMind
a5e92785b7 chore: update POT file (#53465) 2026-03-15 14:32:05 +01:00
Frappe PR Bot
99a81db4d9 chore(release): Bumped to Version 16.9.1
## [16.9.1](https://github.com/frappe/erpnext/compare/v16.9.0...v16.9.1) (2026-03-15)

### Bug Fixes

* add validation in bom creator function (backport [#53364](https://github.com/frappe/erpnext/issues/53364)) ([#53463](https://github.com/frappe/erpnext/issues/53463)) ([253e7a9](253e7a9398))
2026-03-15 08:22:01 +00:00
mergify[bot]
253e7a9398 fix: add validation in bom creator function (backport #53364) (#53463)
* fix: add validation in bom creator function (#53364)

(cherry picked from commit 9c0c39381f)

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

* chore: resolve conflict

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
Co-authored-by: diptanilsaha <diptanil@frappe.io>
2026-03-15 13:50:34 +05:30
mergify[bot]
3b2ae7ba4f fix(serial_and_batch_bundle_selector): handle CSV attachment properly (backport #53460) (#53462)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
fix(serial_and_batch_bundle_selector): handle CSV attachment properly (#53460)
2026-03-15 07:44:59 +00:00
mergify[bot]
ab8fe146ab fix: sales order indicator should be based on available qty rather th… (backport #53456) (#53458) 2026-03-15 09:45:54 +05:30
mergify[bot]
6ca5f355bf feat(stock): implement fallback logic for Delivery Trip address mapping (backport #53260) (#53444) 2026-03-14 05:58:04 +00:00
ruthra kumar
c73a05356b Merge pull request #53426 from frappe/mergify/bp/version-16-hotfix/pr-53423
refactor: disable total row in trends report (backport #53423)
2026-03-13 18:20:47 +05:30
ruthra kumar
5fac73c920 refactor: disable total row in trends report
(cherry picked from commit 4dbc72b301)
2026-03-13 12:33:15 +00:00
ruthra kumar
60a9c08f0d fix: broke cost center filter in get outstanding reference docs
(cherry picked from commit 7dfe36fdce)
2026-03-13 09:55:42 +00:00
Khushi Rawat
966eaae3a0 Merge pull request #53417 from frappe/mergify/bp/version-16-hotfix/pr-53416
feat: show subsidiary companies value in purchase analytics (backport #53416)
2026-03-13 14:48:55 +05:30
khushi8112
c8afc04957 feat: show subsidiary companies value in purchase analytics
(cherry picked from commit 9f755ad65a)
2026-03-13 09:12:35 +00:00
mergify[bot]
41c59ac165 Revert "fix(regional): rename duplicate Customer fields in Italy setup" (backport #53409) (#53411)
* Revert "fix(regional): rename duplicate Customer fields in Italy setup" (#53409)

(cherry picked from commit bd87a7e612)

# Conflicts:
#	erpnext/patches.txt

* chore: resolve conflicts

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-03-13 07:48:28 +00:00
Khushi Rawat
9ac52f0b03 Merge pull request #53401 from frappe/mergify/bp/version-16-hotfix/pr-53390
refactor: show company currency in purchase amount label (backport #53390)
2026-03-13 11:40:25 +05:30
Smit Vora
8dcd89b455 Merge pull request #53404 from frappe/mergify/bp/version-16-hotfix/pr-53396
fix: correctly group RMs of same phantom from different FG (backport #53396)
2026-03-13 10:04:35 +05:30
Smit Vora
89b7e11381 chore: phantom qty unused in sub_assembly_items
(cherry picked from commit b1e1c65774)
2026-03-13 04:15:07 +00:00
Smit Vora
f508f4149f test: ensure phantom BOM explosion across all items
(cherry picked from commit 1975ae4486)
2026-03-13 04:15:07 +00:00
Smit Vora
efce145dad fix: correctly group RMs of same phantom from different FG
(cherry picked from commit e57de4311c)
2026-03-13 04:15:06 +00:00
khushi8112
bb98acb0c0 fix: update label on company change
(cherry picked from commit 6219a9e6f0)
2026-03-12 19:19:15 +00:00
khushi8112
abc463bfb8 refactor: show company currency in purchase amount label
(cherry picked from commit b4c82c0f1a)
2026-03-12 19:19:14 +00:00
mergify[bot]
41bcf96601 fix(regional): rename duplicate Customer fields in Italy setup (backport #50921) (#53398)
* fix(regional): rename duplicate Customer fields in Italy setup (#50921)

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
(cherry picked from commit c6efc403cd)

# Conflicts:
#	erpnext/patches.txt

* chore: resolve conflicts

---------

Co-authored-by: Solede <lorenzo.caldara@gmail.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-03-12 15:22:22 +00:00
Khushi Rawat
0685c0b9ff Merge pull request #53380 from frappe/mergify/bp/version-16-hotfix/pr-53379
fix: use correct filter to get the composite assets (backport #53379)
2026-03-12 15:16:57 +05:30
khushi8112
82eb200c73 fix: use correct filter to get the composite assets
(cherry picked from commit f5a3227349)
2026-03-12 09:40:56 +00:00
mergify[bot]
4af54a7ac7 fix: add validation in bom creator function (backport #53364) (#53368)
* fix: add validation in bom creator function (#53364)

(cherry picked from commit 9c0c39381f)

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

* chore: resolve conflicts

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-03-12 09:35:19 +00:00
mergify[bot]
42cfbae782 fix: do not modify rate in the child item merely for comparison (backport #53301) (#53376)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: do not modify rate in the child item merely for comparison (#53301)
2026-03-12 09:27:04 +00:00
mergify[bot]
6660e643bb fix: precision issue in production plan (backport #53370) (#53374)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: precision issue in production plan (#53370)
2026-03-12 09:14:50 +00:00
Khushi Rawat
9a92fc117a Merge pull request #53372 from frappe/mergify/bp/version-16-hotfix/pr-53371
fix: move show_general_ledger to Asset Repair form events (backport #53371)
2026-03-12 14:11:48 +05:30
khushi8112
0a5fe99d4a fix: move show_general_ledger to Asset Repair form events
(cherry picked from commit ac124bdc7e)
2026-03-12 08:35:55 +00:00
Ejaaz Khan
d1d1efdcd1 Merge pull request #53360 from frappe/mergify/bp/version-16-hotfix/pr-53348
fix: remove redundant pos print format (backport #53348)
2026-03-12 12:53:10 +05:30
mergify[bot]
24910cf2d2 fix: NoneType error when template description is to be copied to variant (backport #53358) (#53366)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
fix: NoneType error when template description is to be copied to variant (#53358)
2026-03-12 06:50:55 +00:00
mergify[bot]
ac9ec7e34a refactor: supplier quotation comparision report button should start f… (backport #53361) (#53363)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-03-12 06:19:40 +00:00
Ejaaz Khan
270a294e81 fix: remove redundant pos print format (#53348)
(cherry picked from commit e4d79c6246)
2026-03-12 06:02:51 +00:00
mergify[bot]
4a7fdd1f91 fix: handle NoneType error while creating a item (backport #53313) (#53351)
Co-authored-by: Pandiyan P <pandiyanpalani37@gmail.com>
fix: handle NoneType error while creating a item (#53313)
2026-03-12 05:51:46 +00:00
mergify[bot]
09279f08e3 Feat/shipment default contact (backport #53029) (#53355)
Co-authored-by: David <52141166+sdavidbastos@users.noreply.github.com>
2026-03-12 05:47:32 +00:00
mergify[bot]
82b97abbad fix(delivery note): avoid maintaining si_detail on return delivery note (backport #52456) (#53353)
Co-authored-by: NaviN <118178330+Navin-S-R@users.noreply.github.com>
fix(delivery note): avoid maintaining si_detail on return delivery note (#52456)
2026-03-12 05:26:02 +00:00
mergify[bot]
541bfb664b fix: re-calculate taxes and totals after resetting bundle item rate (backport #53342) (#53350)
Co-authored-by: V Shankar <shankarv292002@gmail.com>
fix: re-calculate taxes and totals after resetting bundle item rate (#53342)
2026-03-12 05:22:27 +00:00
mergify[bot]
a4d2c34dde fix: update child item schedule_date and prevent past dates (backport #53298) (#53346)
Co-authored-by: Pandiyan P <pandiyanpalani37@gmail.com>
fix: update child item schedule_date and prevent past dates (#53298)
2026-03-12 10:30:15 +05:30
Nihantra C. Patel
a857f0b5c2 Merge pull request #53336 from frappe/mergify/bp/version-16-hotfix/pr-53327
fix: Append existing ignored doctypes in Journal Entry on_cancel instead of overwriting (backport #53327)
2026-03-11 16:29:01 +05:30
Nihantra Patel
875114d33c fix: Append existing ignored doctypes in Journal Entry on_cancel instead of overwriting
(cherry picked from commit 39e10c4ab0)
2026-03-11 10:41:48 +00:00
ruthra kumar
4f8b948b91 Merge pull request #53330 from frappe/mergify/bp/version-16-hotfix/pr-53326
refactor: make cost center editable in payment entry deduction (backport #53326)
2026-03-11 15:10:32 +05:30
ruthra kumar
bdc3b0666d refactor: make cost center editable in payment entry deduction
(cherry picked from commit 078b22d985)
2026-03-11 09:23:30 +00:00
Mihir Kandoi
b7b7ec1fba Merge pull request #53325 from frappe/mergify/bp/version-16-hotfix/pr-53312
fix: update item description in Production Plan Assembly Items table (backport #53312)
2026-03-11 14:52:02 +05:30
Parameshwari Palanisamy
b9b551f248 Update production_plan.py
(cherry picked from commit 39e68a9ce7)
2026-03-11 08:49:28 +00:00
creative-paramu
d43c04df88 fix: update item description in Production Plan Assembly Items table
(cherry picked from commit 19533551f4)
2026-03-11 08:49:28 +00:00
Frappe PR Bot
c791d2853a chore(release): Bumped to Version 16.9.0
# [16.9.0](https://github.com/frappe/erpnext/compare/v16.8.3...v16.9.0) (2026-03-10)

### Bug Fixes

* add clear demo data in sidebar ([8e8a7b2](8e8a7b2686))
* add clear demo data in sidebar (backport [#53177](https://github.com/frappe/erpnext/issues/53177)) ([#53197](https://github.com/frappe/erpnext/issues/53197)) ([12ccc38](12ccc3881b))
* allow payment_request to be created in draft ([29d565b](29d565b9de))
* allow user to make QI after submission not working ([6fdb5d4](6fdb5d486a))
* balance qty for inv dimension ([fb17a00](fb17a00fb6))
* better validation message for Purchase Invoice with Update Stock ([839f5f6](839f5f6a29))
* bom UX issues ([733191e](733191eae2))
* consider payment term only when enabled ([1470a79](1470a79a1b))
* disallow all actions on job card if work order is closed ([57aab56](57aab56baa))
* do not update fg_completed_qty when changing qty of fg line item ([8463cf8](8463cf88df))
* fetch payment terms from quotation ([b2f6953](b2f695310c))
* **gross-profit:** apply precision-based rounding to grouped totals ([c6e01aa](c6e01aa1eb))
* handle payment terms template when disabled ([80c2053](80c20531aa))
* **help:** escape query (backport [#53192](https://github.com/frappe/erpnext/issues/53192)) ([#53195](https://github.com/frappe/erpnext/issues/53195)) ([83f2fad](83f2fadbcf))
* HRMS test cases failing due to validation in item ([10538d5](10538d58ad))
* implement coderabbit suggested changes ([b619f6d](b619f6d906))
* **manufacturing:** show returned qty in progress bar ([f853ef9](f853ef9fec))
* migration patch ([7b44e41](7b44e412d9))
* patch failing ([1a62d32](1a62d324fd))
* patch to migrate checkbox data into select ([4d0e28a](4d0e28a608))
* **project template:** clear subject when task is empty ([c8560fa](c8560fa0d3))
* removed non existent patch ([77ec678](77ec67869c))
* **selling:** update delivery date in line items ([6b42a7e](6b42a7e454))
* set default list view columns and filters for sales, purchase and accounts module ([f9a3869](f9a38696b6))
* set default to 1 ([3b7410f](3b7410f2d3))
* skip asset sale processing for internal transfer invoices ([12cfd8e](12cfd8e052))
* stock balance report qty ([699a683](699a683b8e))
* **task:** allow is_template field in quick entry ([2ccf8d0](2ccf8d050f))
* test case ([27c3c1d](27c3c1dee0))
* test cases fixes related to new select box change ([3f11d0b](3f11d0b8ad))
* **UI:** improve asset action buttons group ([78074c0](78074c0cdd))
* **UI:** reposition fields for better UX ([6c23d5b](6c23d5b682))
* update user status depends on employee status ([c7da8e2](c7da8e2471))
* updating costing based on employee change in timesheet ([d251c94](d251c94ea3))
* validation for cancellation ([8f02184](8f02184c80))
* WO produced qty should be calculated using finished item child table transfer qty ([78fa2c5](78fa2c5477))

### Features

* allowing rate modification in update item in quotation ([69b2170](69b217065c))
* **manufacturing:** show disassembled qty in progress bar ([38e5d29](38e5d295c7))
* option to enable serial / batch features ([93a5974](93a597410e))
* organization desktop icon ([e89aaca](e89aaca870))
* **selling-settings:** add checkbox to recalculate payment date ([f7dd730](f7dd730bc3))
2026-03-10 14:59:58 +00:00
ruthra kumar
95ef5b513e Merge pull request #53292 from frappe/version-16-hotfix
chore: release v16
2026-03-10 20:19:47 +05:30
ruthra kumar
46d8028fcc Merge pull request #53300 from frappe/mergify/bp/version-16-hotfix/pr-53256
fix: set default list view columns and filters for sales, purchase and accounts module (backport #53256)
2026-03-10 18:15:32 +05:30
ruthra kumar
c7da21812a chore: resolve conflicts 2026-03-10 17:58:37 +05:30
Nabin Hait
f9a38696b6 fix: set default list view columns and filters for sales, purchase and accounts module
(cherry picked from commit 9cf529215f)

# Conflicts:
#	erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
#	erpnext/buying/doctype/supplier/supplier.json
#	erpnext/stock/doctype/delivery_note/delivery_note.json
2026-03-10 12:22:40 +00:00
ruthra kumar
8f4a6d08d4 Merge pull request #53299 from frappe/mergify/bp/version-16-hotfix/pr-52636
refactor: enhance chart of accounts for India with account categories (backport #52636)
2026-03-10 17:52:39 +05:30
Abdeali Chharchhodawala
edf2f53082 Merge pull request #52636 from Abdeali099/Abdeali/india-coa
refactor: enhance chart of accounts for India with account categories
(cherry picked from commit 0d42faac2e)
2026-03-10 11:51:57 +00:00
ruthra kumar
cc2be4be39 Merge pull request #53297 from frappe/mergify/bp/version-16-hotfix/pr-53071
fix(gross-profit): apply precision-based rounding to grouped totals (backport #53071)
2026-03-10 16:57:25 +05:30
Navin-S-R
c6e01aa1eb fix(gross-profit): apply precision-based rounding to grouped totals
(cherry picked from commit 52dd7665e7)
2026-03-10 11:08:25 +00:00
rohitwaghchaure
0fde990c9e Merge pull request #53289 from frappe/mergify/bp/version-16-hotfix/pr-53283
fix: removed non existent patch (backport #53283)
2026-03-10 14:52:25 +05:30
Mihir Kandoi
4f646a2f2d Merge pull request #53287 from frappe/mergify/bp/version-16-hotfix/pr-53282
fix: allow user to make QI after submission not working (backport #53282)
2026-03-10 14:36:50 +05:30
rohitwaghchaure
0116d4c789 Merge pull request #53285 from frappe/mergify/bp/version-16-hotfix/pr-53281
fix: better validation message for Purchase Invoice with Update Stock (backport #53281)
2026-03-10 14:28:45 +05:30
Rohit Waghchaure
77ec67869c fix: removed non existent patch
(cherry picked from commit c4b3080eae)
2026-03-10 08:56:34 +00:00
Mihir Kandoi
6fdb5d486a fix: allow user to make QI after submission not working
(cherry picked from commit 9f62ec5192)
2026-03-10 08:46:12 +00:00
Rohit Waghchaure
839f5f6a29 fix: better validation message for Purchase Invoice with Update Stock
(cherry picked from commit cfb06cf247)
2026-03-10 08:34:14 +00:00
Mihir Kandoi
005ff0d6a8 Merge pull request #53280 from frappe/mergify/bp/version-16-hotfix/pr-53203
fix: update user status depends on employee status (backport #53203)
2026-03-10 13:25:59 +05:30
Poovitha Palanivelu
c7da8e2471 fix: update user status depends on employee status
(cherry picked from commit 194d060f13)
2026-03-10 07:40:18 +00:00
Mihir Kandoi
1a46a8fec0 Merge pull request #53277 from frappe/mergify/bp/version-16-hotfix/pr-53235
fix: update item row delivery dates when header delivery date changes in sales order (backport #53235)
2026-03-10 13:09:41 +05:30
Pandiyan37
6b42a7e454 fix(selling): update delivery date in line items
(cherry picked from commit 77367b5517)
2026-03-10 07:24:01 +00:00
Frappe PR Bot
a7eb24488e chore(release): Bumped to Version 16.8.3
## [16.8.3](https://github.com/frappe/erpnext/compare/v16.8.2...v16.8.3) (2026-03-10)

### Bug Fixes

* patch failing ([7149630](7149630eff))
2026-03-10 06:45:58 +00:00
rohitwaghchaure
0b30967556 Merge pull request #53274 from frappe/mergify/bp/version-16/pr-53273
fix: patch failing (backport #53272) (backport #53273)
2026-03-10 12:14:29 +05:30
Rohit Waghchaure
7149630eff fix: patch failing
(cherry picked from commit 6024c4a077)
(cherry picked from commit 1a62d324fd)
2026-03-10 06:42:47 +00:00
rohitwaghchaure
da617fdc11 Merge pull request #53273 from frappe/mergify/bp/version-16-hotfix/pr-53272
fix: patch failing (backport #53272)
2026-03-10 12:12:25 +05:30
Rohit Waghchaure
1a62d324fd fix: patch failing
(cherry picked from commit 6024c4a077)
2026-03-10 06:32:40 +00:00
rohitwaghchaure
db841dde4c Merge pull request #53259 from frappe/mergify/bp/version-16-hotfix/pr-53254
fix: bom UX issues (backport #53254)
2026-03-10 03:34:39 +05:30
ruthra kumar
e3d7a94307 Merge pull request #53261 from frappe/mergify/bp/version-16-hotfix/pr-53160
fix: allow payment_request to be created in draft (backport #53160)
2026-03-09 20:32:51 +05:30
ervishnucs
29d565b9de fix: allow payment_request to be created in draft
(cherry picked from commit 24825a16e0)
2026-03-09 14:54:36 +00:00
Rohit Waghchaure
733191eae2 fix: bom UX issues
(cherry picked from commit 32447b8204)
2026-03-09 12:48:17 +00:00
Khushi Rawat
572c3cdc74 Merge pull request #53248 from frappe/mergify/bp/version-16-hotfix/pr-53242
refactor: replace raw SQL with query builder in asset depreciation and balances report (backport #53242)
2026-03-09 16:01:13 +05:30
Mihir Kandoi
b55bf7d660 Merge pull request #53250 from frappe/mergify/bp/version-16-hotfix/pr-53249
fix :buttons not visible on purchase and sales order (backport #53249)
2026-03-09 15:24:01 +05:30
Nishka Gosalia
76a32686a5 fix :buttons not visible on purchase and sales order
(cherry picked from commit 829dbbe12b)
2026-03-09 09:36:06 +00:00
khushi8112
73354356e1 refactor: more functions in same file
(cherry picked from commit f496995415)
2026-03-09 09:28:32 +00:00
khushi8112
c6000c0522 refactor: replace raw SQL with query builder in asset depreciation and balannces report
(cherry picked from commit 314c882f3b)
2026-03-09 09:28:32 +00:00
rohitwaghchaure
b0fc21b8ed Merge pull request #53244 from frappe/mergify/bp/version-16-hotfix/pr-53239
fix: validation for cancellation (backport #53239)
2026-03-09 13:40:52 +05:30
Rohit Waghchaure
8f02184c80 fix: validation for cancellation
(cherry picked from commit 8de272a8a1)
2026-03-09 07:49:38 +00:00
Mihir Kandoi
ddb441359e Merge pull request #53241 from frappe/mergify/bp/version-16-hotfix/pr-53234
fix(manufacturing): show returned qty in progress bar (backport #53234)
2026-03-09 12:42:16 +05:30
Sudharsanan11
38e5d295c7 feat(manufacturing): show disassembled qty in progress bar
(cherry picked from commit ae9ff767fa)
2026-03-09 07:04:47 +00:00
Sudharsanan11
f853ef9fec fix(manufacturing): show returned qty in progress bar
(cherry picked from commit 8027f5aafd)
2026-03-09 07:04:47 +00:00
MochaMind
1131313d20 chore: update POT file (#53232) 2026-03-08 19:43:22 +01:00
ruthra kumar
1a52fa2a03 Merge pull request #53229 from frappe/mergify/bp/version-16-hotfix/pr-53227
refactor: party type and party filter for comparison report (backport #53227)
2026-03-08 05:50:03 +05:30
ruthra kumar
42b4fe2f68 refactor: party type and party filter for comparison report
(cherry picked from commit b6f9c0844e)
2026-03-07 12:50:03 +00:00
rohitwaghchaure
aaa29a3ce8 Merge pull request #53219 from frappe/mergify/bp/version-16-hotfix/pr-53218
fix: HRMS test cases failing due to validation in item (backport #53218)
2026-03-06 18:51:07 +05:30
Rohit Waghchaure
10538d58ad fix: HRMS test cases failing due to validation in item
(cherry picked from commit 6702506f58)
2026-03-06 12:24:59 +00:00
Khushi Rawat
716645ea1d Merge pull request #52999 from khushi8112/pr-52968
refactor: assets module form cleanup (backport #52393)
2026-03-06 15:09:26 +05:30
Khushi Rawat
3aeee125a4 Merge branch 'version-16-hotfix' into pr-52968 2026-03-06 14:46:32 +05:30
ruthra kumar
12ccc3881b fix: add clear demo data in sidebar (backport #53177) (#53197)
fix: add clear demo data in sidebar

(cherry picked from commit 6603005822)

Co-authored-by: sokumon <sohamkulkarns9@gmail.com>
2026-03-06 14:12:42 +05:30
Frappe PR Bot
c39ee76946 chore(release): Bumped to Version 16.8.2
## [16.8.2](https://github.com/frappe/erpnext/compare/v16.8.1...v16.8.2) (2026-03-06)

### Bug Fixes

* stock balance report qty ([9e185b7](9e185b7ea9))
2026-03-06 08:35:12 +00:00
rohitwaghchaure
94a02b05fa Merge pull request #53211 from frappe/mergify/bp/version-16/pr-53208
fix: stock balance report qty (backport #53200) (backport #53208)
2026-03-06 14:03:44 +05:30
Rohit Waghchaure
9e185b7ea9 fix: stock balance report qty
(cherry picked from commit a15e5fdc4e)
(cherry picked from commit 699a683b8e)
2026-03-06 07:45:18 +00:00
rohitwaghchaure
b510f78510 Merge pull request #53208 from frappe/mergify/bp/version-16-hotfix/pr-53200
fix: stock balance report qty (backport #53200)
2026-03-06 13:14:55 +05:30
rohitwaghchaure
a02aa9eb05 Merge pull request #53204 from frappe/mergify/bp/version-16-hotfix/pr-52549
feat: option to enable serial / batch feature (backport #52549)
2026-03-06 13:07:31 +05:30
Rohit Waghchaure
699a683b8e fix: stock balance report qty
(cherry picked from commit a15e5fdc4e)
2026-03-06 07:15:46 +00:00
rohitwaghchaure
0685a9241e chore: fix conflicts
Remove merge conflict markers and update patch list.
2026-03-06 12:44:55 +05:30
Rohit Waghchaure
93a597410e feat: option to enable serial / batch features
(cherry picked from commit 82c3da5b1e)

# Conflicts:
#	erpnext/patches.txt
2026-03-06 06:48:17 +00:00
sokumon
8e8a7b2686 fix: add clear demo data in sidebar
(cherry picked from commit 6603005822)
2026-03-05 18:14:18 +00:00
mergify[bot]
83f2fadbcf fix(help): escape query (backport #53192) (#53195)
fix(help): escape query (#53192)


(cherry picked from commit 702adda000)

Signed-off-by: Akhil Narang <me@akhilnarang.dev>
Co-authored-by: Akhil Narang <me@akhilnarang.dev>
2026-03-05 18:40:54 +05:30
Frappe PR Bot
0ab7a6e904 chore(release): Bumped to Version 16.8.1
## [16.8.1](https://github.com/frappe/erpnext/compare/v16.8.0...v16.8.1) (2026-03-05)

### Bug Fixes

* balance qty for inv dimension ([354723d](354723d3d5))
2026-03-05 11:58:55 +00:00
rohitwaghchaure
519657fe3e Merge pull request #53188 from frappe/mergify/bp/version-16/pr-53181
fix: balance qty for inv dimension (backport #52745) (backport #53181)
2026-03-05 17:27:21 +05:30
Rohit Waghchaure
354723d3d5 fix: balance qty for inv dimension
(cherry picked from commit a3eafe5b18)
(cherry picked from commit fb17a00fb6)
2026-03-05 11:40:41 +00:00
rohitwaghchaure
fff9750f48 Merge pull request #53181 from frappe/mergify/bp/version-16-hotfix/pr-52745
fix: balance qty for inv dimension (backport #52745)
2026-03-05 14:26:49 +05:30
rohitwaghchaure
fdf0d6611d Merge pull request #53182 from frappe/mergify/bp/version-16-hotfix/pr-52956
feat: organization desktop icon (backport #52956)
2026-03-05 14:26:35 +05:30
Rohit Waghchaure
e89aaca870 feat: organization desktop icon
(cherry picked from commit 4e9a2a327f)
2026-03-05 08:36:29 +00:00
Rohit Waghchaure
fb17a00fb6 fix: balance qty for inv dimension
(cherry picked from commit a3eafe5b18)
2026-03-05 08:20:20 +00:00
rohitwaghchaure
96f7eb1194 Merge pull request #53178 from frappe/mergify/bp/version-16-hotfix/pr-53170
chore: New org icon (backport #53170)
2026-03-05 13:49:12 +05:30
jacob-salvi
1938a56164 chore: new organisation icon
(cherry picked from commit 6f93210b9b)
2026-03-05 08:10:14 +00:00
jacob-salvi
f97e0f8c9c chore: new accounting icons
(cherry picked from commit 728c678cf9)
2026-03-05 08:10:14 +00:00
Nishka Gosalia
f410bfcea6 Merge pull request #53175 from frappe/mergify/bp/version-16-hotfix/pr-52924 2026-03-05 12:17:40 +05:30
Jatin3128
6793c1455c Merge pull request #53174 from frappe/mergify/bp/version-16-hotfix/pr-52138
feat(selling-settings): add checkbox to fetch payment terms (backport #52138)
2026-03-05 12:12:08 +05:30
Nishka Gosalia
4386af1df7 refactor: project module form cleanup
(cherry picked from commit 3c9f520e68)
2026-03-05 06:28:05 +00:00
SowmyaArunachalam
92003df7f9 test: test payment terms with backdated entries
(cherry picked from commit 8aae46a25e)
2026-03-05 06:20:47 +00:00
SowmyaArunachalam
b2f695310c fix: fetch payment terms from quotation
(cherry picked from commit 99ed1c34f3)
2026-03-05 06:20:47 +00:00
SowmyaArunachalam
3b7410f2d3 fix: set default to 1
(cherry picked from commit 8b9e02fd44)
2026-03-05 06:20:47 +00:00
SowmyaArunachalam
80c20531aa fix: handle payment terms template when disabled
(cherry picked from commit f23dc07914)
2026-03-05 06:20:46 +00:00
SowmyaArunachalam
8f26168a55 test: enable automatically_fetch_payment_terms_from_quotation
(cherry picked from commit 5611e9168e)
2026-03-05 06:20:46 +00:00
SowmyaArunachalam
1470a79a1b fix: consider payment term only when enabled
(cherry picked from commit b1149fe950)
2026-03-05 06:20:46 +00:00
SowmyaArunachalam
f7dd730bc3 feat(selling-settings): add checkbox to recalculate payment date
(cherry picked from commit 70b401e610)
2026-03-05 06:20:46 +00:00
Nishka Gosalia
f428663f0d Merge pull request #53171 from frappe/mergify/bp/version-16-hotfix/pr-52415
fix(project template): clear subject when task is empty (backport #52415)
2026-03-05 11:49:59 +05:30
ravibharathi656
2ccf8d050f fix(task): allow is_template field in quick entry
(cherry picked from commit 7801dd5353)
2026-03-05 06:01:44 +00:00
ravibharathi656
c8560fa0d3 fix(project template): clear subject when task is empty
(cherry picked from commit c1431105f4)
2026-03-05 06:01:43 +00:00
Mihir Kandoi
c3d8918ee4 Merge pull request #53167 from frappe/mergify/bp/version-16-hotfix/pr-53166
fix: WO produced qty should be calculated using finished item child t… (backport #53166)
2026-03-04 20:50:06 +05:30
Mihir Kandoi
78fa2c5477 fix: WO produced qty should be calculated using finished item child table transfer qty
(cherry picked from commit 5fead1d17a)
2026-03-04 15:04:39 +00:00
Mihir Kandoi
0aa63e0ae9 Merge pull request #53165 from frappe/mergify/bp/version-16-hotfix/pr-53157
fix: disallow all actions on job card if work order is closed (backport #53157)
2026-03-04 17:11:10 +05:30
Khushi Rawat
b984f5f1b0 Merge pull request #53163 from frappe/mergify/bp/version-16-hotfix/pr-53154
fix: skip asset sale processing for internal transfer invoices (backport #53154)
2026-03-04 17:01:07 +05:30
Mihir Kandoi
57aab56baa fix: disallow all actions on job card if work order is closed
(cherry picked from commit ee19c32c3a)
2026-03-04 11:21:53 +00:00
khushi8112
12cfd8e052 fix: skip asset sale processing for internal transfer invoices
(cherry picked from commit 9cb3dad079)
2026-03-04 11:07:25 +00:00
Nishka Gosalia
0361ee0444 Merge pull request #53159 from frappe/mergify/bp/version-16-hotfix/pr-53156
fix: updating costing based on employee change in timesheet (backport #53156)
2026-03-04 16:35:18 +05:30
Nishka Gosalia
d251c94ea3 fix: updating costing based on employee change in timesheet
(cherry picked from commit e37d4a6f7c)
2026-03-04 10:43:09 +00:00
mergify[bot]
76a6ff9026 Merge pull request #53096 from frappe/mergify/bp/version-16-hotfix/pr-52838
fix: correct fields being updated on material request and purchase or… (backport #52838)
2026-03-04 07:23:39 +00:00
Nishka Gosalia
bf774527fb Merge pull request #53151 from frappe/mergify/bp/version-16-hotfix/pr-53147 2026-03-04 12:34:31 +05:30
Nishka Gosalia
69b217065c feat: allowing rate modification in update item in quotation
(cherry picked from commit 2ec02e477f)
2026-03-04 06:50:13 +00:00
Mihir Kandoi
e5a9bc8193 Merge pull request #53149 from frappe/mergify/bp/version-16-hotfix/pr-53148
fix: do not update fg_completed_qty when changing qty of fg line item (backport #53148)
2026-03-04 12:11:17 +05:30
Mihir Kandoi
8463cf88df fix: do not update fg_completed_qty when changing qty of fg line item
(cherry picked from commit 2d83069b82)
2026-03-04 06:40:12 +00:00
Khushi Rawat
aac26aa19c Merge pull request #53030 from frappe/mergify/bp/version-16-hotfix/pr-53004
refactor: use query builder for Tax Rule validation query (backport #53004)
2026-03-04 11:32:54 +05:30
Frappe PR Bot
78aa4cf9f9 chore(release): Bumped to Version 16.8.0
# [16.8.0](https://github.com/frappe/erpnext/compare/v16.7.3...v16.8.0) (2026-03-03)

### Bug Fixes

* `Trial Balance` and `Consolidated Trial Balance` total row calculation (backport [#53014](https://github.com/frappe/erpnext/issues/53014)) ([#53015](https://github.com/frappe/erpnext/issues/53015)) ([8658956](865895649e))
* **accounts receivable:** include invoice payment terms template (backport [#51940](https://github.com/frappe/erpnext/issues/51940)) ([#53106](https://github.com/frappe/erpnext/issues/53106)) ([7e09bf3](7e09bf306a))
* **accounts:** add transaction time field ([2526876](2526876eaa))
* **accounts:** compute tax net_amount in JS controller ([429bd24](429bd245d1))
* **accounts:** round and convert net_amount to company currency in JS tax controller ([3f284f0](3f284f0c55))
* **accounts:** set posting time to get incoming rate ([8b3c5ba](8b3c5baa9e))
* allow allowed roles to bypass over billing validation ([c274b7c](c274b7cc2e))
* avoid circular dependency ([#53109](https://github.com/frappe/erpnext/issues/53109)) ([7d950f7](7d950f71da))
* broekn link of docs in asset onboarding ([5c48f74](5c48f74d4c))
* **budget-variance-report:** validate 'budget_against' filter ([f2ff0de](f2ff0de296))
* correct sle voucher_type comparison in get_ref_doctype ([788cd82](788cd82b4b))
* ensure cache is cleared on fiscal year update and trash ([2495cb8](2495cb8b2a))
* ensure contacts are processed only if present in create_prospect_against_crm_deal ([58fbb2f](58fbb2f4d7))
* handle html email template separately in RFQ to avoid jinja context error ([3178736](317873621a))
* **manufacturing:** ignore sales order validation for subassembly item ([2daf9f4](2daf9f4ce7))
* old stock reco entries causing issue in the stock balance report ([ea5ad31](ea5ad3179c))
* opening qty in stock balance ([1f2342c](1f2342cf4b))
* pass company in test case using make_quality_inspections ([417e8a4](417e8a4371))
* patch to complete onboarding stpes for existing records ([941a78e](941a78e1a8))
* **payment entry:** round unallocated amount ([b76e0c6](b76e0c645b))
* **payment_entry:** fix precision for `total_allocated_amount` and `base_total_allocated_amount` ([c61c748](c61c748cbd))
* populate mr owner and set po owner as fallback ([acdb8f2](acdb8f2b78))
* **postgres:** avoid UNSIGNED cast in customer autoname ([d922213](d922213dd7))
* **pricing_rule:** strict validation of `transaction_type` ([396727e](396727e26f))
* remove read-only property from Sales Invoice Timesheet Table ([f632c5c](f632c5c796))
* reposting creation slow for GL entries ([ab7e33f](ab7e33f83d))
* same reposting entry picked by multiple rq jobs ([c28568f](c28568f4fd))
* **selling:** handle selling price validation for FG item ([c7928a0](c7928a0749))
* serial no status for Disassemble entry ([dc0592a](dc0592a905))
* set company based expense account ([25c134d](25c134d11c))
* **stock:** pass company to avoid document naming rule issue in QI ([d61ad3b](d61ad3bd95))
* **stock:** validate company for receipt documents and expense accounts ([c6e0eb6](c6e0eb6d17))
* use conversion factor when creating stock entry from pick list ([f939e98](f939e980a6))
* use stock qty instead of qty when creating stock entry from MR ([1e44787](1e4478765a))
* use the correct precision value in stock reco ([c92fd26](c92fd26e1b))
* validate warehouse of SABB for draft entry ([b8de82f](b8de82f0e4))
* voucher detail no in SABB ([744d7a2](744d7a2793))

### Features

* UOM query filter for opportunity items ([6727c86](6727c86d0a))

### Performance Improvements

* add index on reference_purchase_receipt column ([664f1f1](664f1f1675))
2026-03-03 17:57:53 +00:00
diptanilsaha
28c5fbdb78 Merge pull request #53116 from frappe/version-16-hotfix 2026-03-03 23:26:23 +05:30
Mihir Kandoi
282d8b1b28 Merge pull request #53138 from frappe/mergify/bp/version-16-hotfix/pr-52784
fix(stock): validate company for receipt documents and expense accounts (backport #52784)
2026-03-03 21:41:25 +05:30
Mihir Kandoi
6eed4df7d9 Merge pull request #53136 from frappe/mergify/bp/version-16-hotfix/pr-53132
fix(selling): handle selling price validation for FG item  (backport #53132)
2026-03-03 21:41:03 +05:30
Mihir Kandoi
e2824e1dc5 Merge pull request #53134 from frappe/mergify/bp/version-16-hotfix/pr-53070
fix: handle html email template separately in RFQ to avoid jinja cont… (backport #53070)
2026-03-03 21:25:04 +05:30
Sudharsanan11
4350c6b9e3 test(stock): add test to validate company for receipts and expense accounts
(cherry picked from commit d58171987c)
2026-03-03 15:47:20 +00:00
Sudharsanan11
25c134d11c fix: set company based expense account
(cherry picked from commit d54d0c25a2)
2026-03-03 15:47:20 +00:00
Sudharsanan11
c6e0eb6d17 fix(stock): validate company for receipt documents and expense accounts
(cherry picked from commit 15dfc08a31)
2026-03-03 15:47:19 +00:00
Mihir Kandoi
41b9566dec Merge pull request #53125 from frappe/mergify/bp/version-16-hotfix/pr-53123
fix: serial no status for Disassemble entry (backport #53123)
2026-03-03 21:12:42 +05:30
Mihir Kandoi
8a13522590 Merge pull request #53131 from frappe/mergify/bp/version-16-hotfix/pr-53084
fix(manufacturing): ignore sales order validation for subassembly item (backport #53084)
2026-03-03 21:11:52 +05:30
kavin-114
7713d25b7e test: add unit test for FG Item selling price validation
(cherry picked from commit 723993fdf6)
2026-03-03 15:40:48 +00:00
kavin-114
c7928a0749 fix(selling): handle selling price validation for FG item
System checks valuation rate in incoming_rate field, since SO has it in valuation_rate field of item row,
need to handle the field name dynamically based upon the doctype name in Selling Controller.

(cherry picked from commit 4335318482)
2026-03-03 15:40:48 +00:00
Mihir Kandoi
bffb7cfef3 Merge pull request #53129 from frappe/mergify/bp/version-16-hotfix/pr-53037
fix(stock): pass company to avoid document naming rule issue in QI (backport #53037)
2026-03-03 21:08:14 +05:30
Pugazhendhi Velu
317873621a fix: handle html email template separately in RFQ to avoid jinja context error
(cherry picked from commit 49d363b174)
2026-03-03 15:36:53 +00:00
Mihir Kandoi
a399b8522d Merge pull request #53127 from frappe/mergify/bp/version-16-hotfix/pr-53099
fix: populate mr owner and set po owner as fallback (backport #53099)
2026-03-03 20:55:54 +05:30
Mihir Kandoi
3e8ebf8c14 chore: resolve conflicts 2026-03-03 20:44:40 +05:30
Sudharsanan11
2daf9f4ce7 fix(manufacturing): ignore sales order validation for subassembly item
(cherry picked from commit 6b1aac4aee)
2026-03-03 15:11:58 +00:00
kavin-114
417e8a4371 fix: pass company in test case using make_quality_inspections
(cherry picked from commit 397de1274f)
2026-03-03 15:10:48 +00:00
kavin-114
3844982824 test: add unit test to handle company condition in naming rule
(cherry picked from commit 4c39cf2d65)
2026-03-03 15:10:47 +00:00
kavin-114
d61ad3bd95 fix(stock): pass company to avoid document naming rule issue in QI
When a Document Naming Rule is configured in QI with a condition based on the company,
the system was not passing the company value properly. As a result, the naming rule
condition was skipped and the document name was generated using the default series.

This fix ensures that the company is passed correctly so that the configured
Document Naming Rule is evaluated and applied as expected.

(cherry picked from commit 74def423ed)

# Conflicts:
#	erpnext/controllers/stock_controller.py
2026-03-03 15:10:47 +00:00
kavin-114
acdb8f2b78 fix: populate mr owner and set po owner as fallback
(cherry picked from commit bdf4e51da3)
2026-03-03 15:09:33 +00:00
Rohit Waghchaure
dc0592a905 fix: serial no status for Disassemble entry
(cherry picked from commit 81acefa8ad)
2026-03-03 13:24:22 +00:00
Shariq Ansari
d74833d9fc Merge pull request #53122 from frappe/mergify/bp/version-16-hotfix/pr-53119
fix: do not create contact if not passed from crm (backport #53119)
2026-03-03 03:59:41 -08:00
shariquerik
58fbb2f4d7 fix: ensure contacts are processed only if present in create_prospect_against_crm_deal
(cherry picked from commit 800810d23d)
2026-03-03 11:43:45 +00:00
diptanilsaha
3217defaf5 Merge pull request #53055 from frappe/pot_version-16-hotfix_2026-03-01
chore: update POT file
2026-03-03 16:08:53 +05:30
diptanilsaha
e6704f4b73 Merge pull request #52998 from frappe/mergify/bp/version-16-hotfix/pr-52997
fix(payment_entry): set precision for `total_allocated_amount` and `base_total_allocated_amount` (backport #52997)
2026-03-03 15:48:16 +05:30
diptanilsaha
32c33631a6 chore: fix onboarding doctype merge conflicts (#53118) 2026-03-03 10:16:34 +00:00
diptanilsaha
0787c62cbc Merge branch 'version-16' into version-16-hotfix 2026-03-03 15:24:26 +05:30
diptanilsaha
a35521c14d Merge pull request #53114 from frappe/mergify/bp/version-16-hotfix/pr-53110
fix(pricing_rule): strict validation of `transaction_type` (backport #53110)
2026-03-03 15:19:54 +05:30
diptanilsaha
e4ce6e4e6f refactor: renamed args to pricing_ctx in set_transaction_type for clarity
(cherry picked from commit 6342e78305)
2026-03-03 09:30:51 +00:00
diptanilsaha
396727e26f fix(pricing_rule): strict validation of transaction_type
(cherry picked from commit 7ec0354a79)
2026-03-03 09:30:50 +00:00
diptanilsaha
ad3411ba01 Merge pull request #53111 from frappe/mergify/bp/version-16-hotfix/pr-53109
fix: avoid circular dependency (backport #53109)
2026-03-03 15:00:44 +05:30
Vishnu Priya Baskaran
7d950f71da fix: avoid circular dependency (#53109)
(cherry picked from commit d2e04750b5)
2026-03-03 09:03:25 +00:00
mergify[bot]
7e09bf306a fix(accounts receivable): include invoice payment terms template (backport #51940) (#53106)
Co-authored-by: Ravibharathi <131471282+ravibharathi656@users.noreply.github.com>
2026-03-03 12:07:57 +05:30
rohitwaghchaure
109433f37a Merge pull request #53086 from frappe/mergify/bp/version-16-hotfix/pr-53072
fix(accounts): set posting time to get incoming rate (backport #53072)
2026-03-02 21:58:09 +05:30
rohitwaghchaure
35336350ca Merge pull request #53098 from frappe/mergify/bp/version-16-hotfix/pr-53093
fix: opening qty in stock balance (backport #53093)
2026-03-02 21:43:29 +05:30
rohitwaghchaure
97f6b3a3b5 Merge pull request #53092 from frappe/mergify/bp/version-16-hotfix/pr-53087
perf: add index on reference_purchase_receipt column (backport #53087)
2026-03-02 21:38:02 +05:30
Rohit Waghchaure
1f2342cf4b fix: opening qty in stock balance
(cherry picked from commit d7fdab99cb)
2026-03-02 15:19:56 +00:00
rohitwaghchaure
3ec3cd512c Merge pull request #53090 from frappe/mergify/bp/version-16-hotfix/pr-53082
fix: validate warehouse of SABB for draft entry (backport #53082)
2026-03-02 17:43:51 +05:30
rohitwaghchaure
bf44f466ad chore: fix conflicts 2026-03-02 14:38:55 +05:30
kavin-114
664f1f1675 perf: add index on reference_purchase_receipt column
(cherry picked from commit 8c94396ad9)
2026-03-02 09:08:44 +00:00
rohitwaghchaure
b4a5bbc7e2 chore: fix conflicts 2026-03-02 14:38:28 +05:30
Rohit Waghchaure
b8de82f0e4 fix: validate warehouse of SABB for draft entry
(cherry picked from commit 9b8f685c82)
2026-03-02 08:53:09 +00:00
Sudharsanan11
8b3c5baa9e fix(accounts): set posting time to get incoming rate
(cherry picked from commit c5b3673a30)
2026-03-02 08:16:32 +00:00
Sudharsanan11
2526876eaa fix(accounts): add transaction time field
(cherry picked from commit 9538a9870c)

# Conflicts:
#	erpnext/buying/doctype/purchase_order/purchase_order.json
#	erpnext/selling/doctype/sales_order/sales_order.json
2026-03-02 08:16:32 +00:00
Diptanil Saha
fe721f48fc Merge pull request #53081 from frappe/mergify/bp/version-16-hotfix/pr-53079
fix(budget-variance-report): validate 'budget_against' filter (backport #53079)
2026-03-02 12:17:52 +05:30
rohitwaghchaure
11b22d4d95 Merge pull request #53077 from frappe/mergify/bp/version-16-hotfix/pr-53050
fix: voucher detail no in SABB (backport #53050)
2026-03-02 12:09:34 +05:30
diptanilsaha
f2ff0de296 fix(budget-variance-report): validate 'budget_against' filter
(cherry picked from commit 79d0708ea7)
2026-03-02 06:31:35 +00:00
Mihir Kandoi
2ed795bc9c Merge pull request #53078 from frappe/mergify/bp/version-16-hotfix/pr-53047
fix: remove read-only property from Sales Invoice Timesheet Table (backport #53047)
2026-03-02 11:37:32 +05:30
trustedcomputer
f632c5c796 fix: remove read-only property from Sales Invoice Timesheet Table
(cherry picked from commit b9d95711a2)
2026-03-02 05:25:05 +00:00
Rohit Waghchaure
744d7a2793 fix: voucher detail no in SABB
(cherry picked from commit c37a56ec89)
2026-03-02 04:24:00 +00:00
Mihir Kandoi
88b4699025 Merge pull request #53069 from frappe/mergify/bp/version-16-hotfix/pr-53067
fix: use the correct precision value in stock reco (backport #53067)
2026-03-01 21:37:18 +05:30
Mihir Kandoi
c92fd26e1b fix: use the correct precision value in stock reco
(cherry picked from commit 36726b0f7b)
2026-03-01 15:52:17 +00:00
Mihir Kandoi
746ca73006 Merge pull request #53066 from frappe/mergify/bp/version-16-hotfix/pr-53062
fix: correct sle voucher_type comparison in get_ref_doctype (backport #53062)
2026-03-01 21:03:52 +05:30
Sanjesh
788cd82b4b fix: correct sle voucher_type comparison in get_ref_doctype
(cherry picked from commit cffb59ae73)
2026-03-01 15:16:44 +00:00
Mihir Kandoi
8ed2d45729 Merge pull request #53061 from frappe/mergify/bp/version-16-hotfix/pr-53057
fix: allow allowed roles to bypass over billing validation (backport #53057)
2026-03-01 16:03:42 +05:30
Mihir Kandoi
8752b2f767 Merge pull request #53059 from frappe/mergify/bp/version-16-hotfix/pr-53052
fix: use stock qty instead of qty when creating stock entry from MR (backport #53052)
2026-03-01 15:50:24 +05:30
Mihir Kandoi
c274b7cc2e fix: allow allowed roles to bypass over billing validation
(cherry picked from commit 04127019f9)
2026-03-01 10:18:22 +00:00
Mihir Kandoi
1c4e20f5ed Merge pull request #53054 from frappe/mergify/bp/version-16-hotfix/pr-53051
fix: use conversion factor when creating stock entry from pick list (backport #53051)
2026-03-01 15:26:44 +05:30
Mihir Kandoi
1e4478765a fix: use stock qty instead of qty when creating stock entry from MR
(cherry picked from commit 30c3ff2efe)
2026-03-01 09:51:54 +00:00
frappe-pr-bot
b26631d8b1 chore: update POT file 2026-03-01 09:43:26 +00:00
Mihir Kandoi
f939e980a6 fix: use conversion factor when creating stock entry from pick list
(cherry picked from commit 5f12b0db3f)
2026-03-01 09:40:37 +00:00
rohitwaghchaure
31a28ed570 Merge pull request #53034 from frappe/mergify/bp/version-16-hotfix/pr-52988
fix: same reposting entry picked by multiple rq jobs (backport #52988)
2026-02-28 09:04:49 +05:30
Rohit Waghchaure
c28568f4fd fix: same reposting entry picked by multiple rq jobs
(cherry picked from commit 4dfbacfd92)
2026-02-28 02:06:33 +00:00
khushi8112
e2800e343e refactor: use query builder for Tax Rule validation query
(cherry picked from commit 235e3adbcb)
2026-02-27 18:24:47 +00:00
rohitwaghchaure
8b7692db57 Merge pull request #53021 from frappe/mergify/bp/version-16-hotfix/pr-53013
fix: old stock reco entries causing issue in the stock balance report (backport #53013)
2026-02-27 15:31:32 +05:30
Rohit Waghchaure
ea5ad3179c fix: old stock reco entries causing issue in the stock balance report
(cherry picked from commit 0874cbc268)
2026-02-27 09:27:00 +00:00
Mihir Kandoi
41ff3191f5 Merge pull request #53018 from frappe/mergify/bp/version-16-hotfix/pr-53012 2026-02-27 13:59:07 +05:30
Thomas antony
6727c86d0a feat: UOM query filter for opportunity items
Add UOM query filter based on item code in opportunity form.

(cherry picked from commit b33f06701c)
2026-02-27 08:23:48 +00:00
mergify[bot]
865895649e fix: Trial Balance and Consolidated Trial Balance total row calculation (backport #53014) (#53015)
Co-authored-by: diptanilsaha <diptanil@frappe.io>
2026-02-27 07:40:41 +00:00
khushi8112
7b44e412d9 fix: migration patch 2026-02-26 16:35:24 +05:30
khushi8112
7f6b8a3e40 chore: linters check
(cherry picked from commit 4f59d580c4)
2026-02-26 15:34:32 +05:30
khushi8112
b619f6d906 fix: implement coderabbit suggested changes
(cherry picked from commit d1b81b96a5)
2026-02-26 15:34:32 +05:30
khushi8112
194b158e18 refactor: asset repair UI changes
(cherry picked from commit 9f7bfc0e36)
2026-02-26 15:34:32 +05:30
khushi8112
f9b6336dd5 refactor: asset capitalization form cleanup
(cherry picked from commit eb7932ed73)
2026-02-26 15:34:32 +05:30
khushi8112
3f11d0b8ad fix: test cases fixes related to new select box change
(cherry picked from commit e8e8d233ab)
2026-02-26 15:34:32 +05:30
khushi8112
27c3c1dee0 fix: test case
(cherry picked from commit f2f509234b)
2026-02-26 15:34:31 +05:30
khushi8112
78074c0cdd fix(UI): improve asset action buttons group
(cherry picked from commit e90a3b5a56)
2026-02-26 15:34:31 +05:30
khushi8112
4d0e28a608 fix: patch to migrate checkbox data into select
(cherry picked from commit c36fa5bdb6)
2026-02-26 15:34:25 +05:30
khushi8112
87a7bc6f49 refactor: use selectbox instead of checkboxes for asset type
(cherry picked from commit f7b9221324)
2026-02-26 15:33:34 +05:30
khushi8112
6c23d5b682 fix(UI): reposition fields for better UX
(cherry picked from commit 4e7794bfc3)
2026-02-26 15:33:34 +05:30
diptanilsaha
c61c748cbd fix(payment_entry): fix precision for total_allocated_amount and base_total_allocated_amount
Co-authored-by: Ahuahuachi <Ahuahuachi@users.noreply.github.com>
(cherry picked from commit d82a0a9455)
2026-02-26 09:25:01 +00:00
ruthra kumar
862659e396 Merge pull request #52996 from frappe/mergify/bp/version-16-hotfix/pr-52630
fix(account): compute tax net_amount in JS controller (backport #52630)
2026-02-26 14:00:06 +05:30
Frappe PR Bot
e671f5a3ac chore(release): Bumped to Version 16.7.3
## [16.7.3](https://github.com/frappe/erpnext/compare/v16.7.2...v16.7.3) (2026-02-26)

### Bug Fixes

* **payment entry:** round unallocated amount ([e7e5285](e7e52851d6))
2026-02-26 08:29:46 +00:00
ruthra kumar
0d0014c872 Merge pull request #52994 from frappe/mergify/bp/version-16/pr-52188
fix(payment entry): round unallocated amount (backport #52188)
2026-02-26 13:58:15 +05:30
Luis Mendoza
3f284f0c55 fix(accounts): round and convert net_amount to company currency in JS tax controller
(cherry picked from commit b10b205394)
2026-02-26 08:18:12 +00:00
Luis Mendoza
adb4023ba4 style: prettier formatting
(cherry picked from commit 485166b668)
2026-02-26 08:18:12 +00:00
Luis Mendoza
429bd245d1 fix(accounts): compute tax net_amount in JS controller
(cherry picked from commit 153ad99f85)
2026-02-26 08:18:11 +00:00
ravibharathi656
e7e52851d6 fix(payment entry): round unallocated amount
(cherry picked from commit b0d6751777)
2026-02-26 08:06:09 +00:00
ruthra kumar
fc7d9de979 Merge pull request #52993 from frappe/mergify/bp/version-16-hotfix/pr-52188
fix(payment entry): round unallocated amount (backport #52188)
2026-02-26 13:25:03 +05:30
ravibharathi656
b76e0c645b fix(payment entry): round unallocated amount
(cherry picked from commit b0d6751777)
2026-02-26 07:38:22 +00:00
Frappe PR Bot
e1782901e4 chore(release): Bumped to Version 16.7.2
## [16.7.2](https://github.com/frappe/erpnext/compare/v16.7.1...v16.7.2) (2026-02-26)

### Bug Fixes

* broekn link of docs in asset onboarding ([5d2822d](5d2822df97))
2026-02-26 06:48:40 +00:00
rohitwaghchaure
7c8e071d24 Merge pull request #52986 from frappe/mergify/bp/version-16/pr-52985
fix: broken link of docs in asset onboarding (backport #52983) (backport #52985)
2026-02-26 12:16:36 +05:30
Frappe PR Bot
5d86e9697a chore(release): Bumped to Version 16.7.1
## [16.7.1](https://github.com/frappe/erpnext/compare/v16.7.0...v16.7.1) (2026-02-26)

### Bug Fixes

* patch to complete onboarding stpes for existing records ([c3700f1](c3700f1b31))
2026-02-26 06:03:21 +00:00
rohitwaghchaure
19143bfe9b Merge branch 'version-16' into mergify/bp/version-16/pr-52985 2026-02-26 11:33:03 +05:30
rohitwaghchaure
2b664387d7 Merge pull request #52984 from frappe/mergify/bp/version-16/pr-52969
fix: patch to complete onboarding stpes for existing records (backport #52967) (backport #52969)
2026-02-26 11:31:45 +05:30
rohitwaghchaure
38c49dfed6 chore: fix conflicts
Updated the modified date in learn_asset.json.
2026-02-26 11:31:16 +05:30
rohitwaghchaure
6bebf51087 chore: fix conflicts 2026-02-26 11:30:57 +05:30
Rohit Waghchaure
5d2822df97 fix: broekn link of docs in asset onboarding
(cherry picked from commit 1cdf439e38)
(cherry picked from commit 5c48f74d4c)

# Conflicts:
#	erpnext/assets/module_onboarding/asset_onboarding/asset_onboarding.json
#	erpnext/assets/onboarding_step/learn_asset/learn_asset.json
2026-02-26 05:54:16 +00:00
rohitwaghchaure
72a5528b56 Merge pull request #52985 from frappe/mergify/bp/version-16-hotfix/pr-52983
fix: broken link of docs in asset onboarding (backport #52983)
2026-02-26 11:24:00 +05:30
Rohit Waghchaure
5c48f74d4c fix: broekn link of docs in asset onboarding
(cherry picked from commit 1cdf439e38)
2026-02-26 05:36:06 +00:00
rohitwaghchaure
76d27877c2 chore: fix conflicts
(cherry picked from commit 8f922382e4)
2026-02-26 05:21:53 +00:00
Rohit Waghchaure
c3700f1b31 fix: patch to complete onboarding stpes for existing records
(cherry picked from commit d90ec49241)

# Conflicts:
#	erpnext/patches.txt
(cherry picked from commit 941a78e1a8)
2026-02-26 05:21:53 +00:00
rohitwaghchaure
44c9fccd34 Merge pull request #52969 from frappe/mergify/bp/version-16-hotfix/pr-52967
fix: patch to complete onboarding stpes for existing records (backport #52967)
2026-02-26 10:51:05 +05:30
ruthra kumar
0732f741cc Merge pull request #52975 from frappe/mergify/bp/version-16-hotfix/pr-52973
fix: ensure cache is cleared on fiscal year update and trash (backport #52973)
2026-02-26 10:00:19 +05:30
mergify[bot]
2349ebbb29 Merge pull request #52977 from frappe/mergify/bp/version-16-hotfix/pr-52952
fix: customer field made mandatory for sales invoice (backport #52952)
2026-02-25 15:47:17 +00:00
ljain112
2495cb8b2a fix: ensure cache is cleared on fiscal year update and trash
(cherry picked from commit 39b0e3522a)
2026-02-25 14:36:08 +00:00
rohitwaghchaure
8f922382e4 chore: fix conflicts 2026-02-25 18:13:42 +05:30
rohitwaghchaure
a864ca5c17 Merge pull request #52962 from frappe/mergify/bp/version-16-hotfix/pr-52957
fix: reposting creation slow for GL entries (backport #52957)
2026-02-25 18:09:10 +05:30
Rohit Waghchaure
941a78e1a8 fix: patch to complete onboarding stpes for existing records
(cherry picked from commit d90ec49241)

# Conflicts:
#	erpnext/patches.txt
2026-02-25 12:30:24 +00:00
ruthra kumar
cd465e1dbd refactor: Journal Entry form cleanup (backport #52780) (#52961)
refactor: Journal Entry form cleanup

(cherry picked from commit 73d5aa35a1)

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

Co-authored-by: ruthra kumar <ruthra@erpnext.com>
2026-02-25 16:27:03 +05:30
Rohit Waghchaure
ab7e33f83d fix: reposting creation slow for GL entries
(cherry picked from commit d9ac198bad)
2026-02-25 10:34:25 +00:00
ruthra kumar
0f59da89cf refactor: Journal Entry form cleanup
(cherry picked from commit 73d5aa35a1)

# Conflicts:
#	erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json
2026-02-25 15:51:58 +05:30
ruthra kumar
5cc95a32c2 Merge pull request #52959 from frappe/mergify/bp/version-16-hotfix/pr-51558
fix(postgres): avoid UNSIGNED cast in customer autoname (backport #51558)
2026-02-25 15:10:50 +05:30
ruthra kumar
c98263cd77 Merge pull request #52950 from frappe/mergify/bp/version-16-hotfix/pr-52507
refactor: toggle for UTM parameters (backport #52507)
2026-02-25 15:10:30 +05:30
Matt Howard
d922213dd7 fix(postgres): avoid UNSIGNED cast in customer autoname
(cherry picked from commit 323636b396)
2026-02-25 09:21:10 +00:00
ruthra kumar
270b09f936 chore: resolve conflicts 2026-02-25 14:42:52 +05:30
ruthra kumar
4acf404ae5 refactor: better description on toggle
(cherry picked from commit 20af546b26)
2026-02-25 06:54:16 +00:00
ruthra kumar
0433f73b03 refactor: utm analytics section delivery note
(cherry picked from commit 578783af8e)

# Conflicts:
#	erpnext/stock/doctype/delivery_note/delivery_note.json
2026-02-25 06:54:16 +00:00
ruthra kumar
2bb8c7c74e refactor: utm section in opportunity
(cherry picked from commit 223d560b32)
2026-02-25 06:54:16 +00:00
ruthra kumar
3a8967b2a7 refactor: utm analytics section in lead
(cherry picked from commit 71e8941285)
2026-02-25 06:54:16 +00:00
ruthra kumar
fc0a07b3b1 refactor: utm analytics section in pos profile
(cherry picked from commit 7de0ca164d)

# Conflicts:
#	erpnext/accounts/doctype/pos_profile/pos_profile.json
2026-02-25 06:54:15 +00:00
ruthra kumar
08df2a755e refactor: utm section pos invoice
(cherry picked from commit 0bafa347a5)
2026-02-25 06:54:15 +00:00
ruthra kumar
964d75bd3e refactor: utm section in sales invoice
(cherry picked from commit 678d261f40)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/sales_invoice.json
2026-02-25 06:54:15 +00:00
ruthra kumar
774aa2b78f refactor: utm section in sales order
(cherry picked from commit c00bf7df6a)

# Conflicts:
#	erpnext/selling/doctype/sales_order/sales_order.json
2026-02-25 06:54:14 +00:00
ruthra kumar
6539e443a5 refactor: hide UTM parameters
(cherry picked from commit aaf5f923b0)

# Conflicts:
#	erpnext/selling/doctype/quotation/quotation.json
2026-02-25 06:54:14 +00:00
Frappe PR Bot
ca9f9de39f chore(release): Bumped to Version 16.7.0
# [16.7.0](https://github.com/frappe/erpnext/compare/v16.6.1...v16.7.0) (2026-02-25)

### Bug Fixes

* **`fiscal_year_company`:** made `company` field mandatory ([54bed64](54bed64356))
* **`fiscal_year`:** `Fiscal Year` auto-generation and notification ([92c2c7b](92c2c7bf82))
* Add handling for Sales Invoice Item quantity field ([f6a1ea8](f6a1ea804a))
* add missing property_type ([dd41f2c](dd41f2ceb7))
* add purchase invoice as well ([2d864bb](2d864bb599))
* addresses portal (backport [#52712](https://github.com/frappe/erpnext/issues/52712)) ([#52786](https://github.com/frappe/erpnext/issues/52786)) ([d7b61b9](d7b61b945f))
* **asset:** handle partial asset sales by splitting remaining quantity (backport [#51363](https://github.com/frappe/erpnext/issues/51363)) ([#52394](https://github.com/frappe/erpnext/issues/52394)) ([10be8f1](10be8f19e2))
* avoid duplicate taxes and charges rows in payment entry (backport [#52178](https://github.com/frappe/erpnext/issues/52178)) ([#52319](https://github.com/frappe/erpnext/issues/52319)) ([e6f7a7e](e6f7a7e979))
* better permissions on make payment request ([a5c83dd](a5c83dd11e))
* bug with comparison regarding `None` values and empty string ([66d1b7c](66d1b7c837))
* check gl account of an associated bank account in bank transaction ([746b5d9](746b5d96de))
* enfore permission on make_payment_request ([8184599](81845992a6))
* fiscal year notification subject ([e8c5d57](e8c5d5710d))
* get employee email with priority if preferred is not set ([116361c](116361c1dc))
* ignore permissions instead of saving parent ([715dbc0](715dbc0093))
* inconsistent label name between parent and child ([b56c444](b56c444f18))
* item code shows undefined ([0fd9fc4](0fd9fc48f3))
* link field displays incorrect value when empty ([b67d42e](b67d42ee58))
* **manufacturing:** remove delete query of job card & batch and serial no  ([#52840](https://github.com/frappe/erpnext/issues/52840)) ([9ff924e](9ff924e831))
* **manufacturing:** set pick list purpose while creating it from work order ([131e279](131e279a0c))
* **manufacturing:** update status for work order before calculating planned qty ([61d339c](61d339cfa7))
* material request on receive notification condition ([785773b](785773b0ac))
* permission issue for quotation item during update item ([bccca6f](bccca6f58e))
* populate doctypes to be ignored table in validate ([237e458](237e4583e2))
* prevent precision errors in  discount distribution with inclusive tax ([0e2e89c](0e2e89c355))
* **Purchase Receipt:** copy project from first row when adding items ([77da330](77da3306b5))
* remove form tour for sales and purchase order ([aac7fc3](aac7fc30d5))
* remove supplier invoice date/posting date validation ([cfad7e1](cfad7e17f1))
* reservation based on field should be read only in SRE ([a499b7e](a499b7e046))
* sales and purchase modules forms clean-up (backport [#52875](https://github.com/frappe/erpnext/issues/52875)) ([#52911](https://github.com/frappe/erpnext/issues/52911)) ([2177098](217709836b))
* **sales-order:** update quotation status while cancelling sales order ([#52822](https://github.com/frappe/erpnext/issues/52822)) ([3a0f90c](3a0f90c433))
* sensible insufficient stock message in pick list ([dbe2a87](dbe2a87a84))
* setup fails to set abbr to departments ([b15db05](b15db05ef8))
* skip empty dimension values in exchange gain loss ([780b626](780b626ae5))
* standalone sales invoice return should not fallback to item master for valuation rate ([6e1a808](6e1a8083a5))
* supplier_type appears multiple times ([9a2eb91](9a2eb91eec))
* test cases related to default letterhead change ([1e64dea](1e64dea6a0))
* typo ([d0c2cc8](d0c2cc848c))
* typo ([0c4b9ea](0c4b9ea9ca))
* unable to submit subcontracting order if created from material request ([c5bc92d](c5bc92d50e))
* unhide book_advance_payments_in_separate_party_account check field in Payment Entry doctype ([13d153c](13d153c196))
* update items fetches wrong item code ([3355c60](3355c60c79))
* update modified timestamp in json ([74a3965](74a3965a12))
* use stock qty instead of qty when updating transferred qty in WO ([90e61ab](90e61abff4))
* user permission on reports (backport [#52709](https://github.com/frappe/erpnext/issues/52709)) ([#52757](https://github.com/frappe/erpnext/issues/52757)) ([893683a](893683a512))
* **work_order:** update returned qty ([c4ba3c9](c4ba3c9c4b))

### Features

* default letterhead and print format ([4adcc1c](4adcc1c521))
* **Journal Entry Account:** add Bank Transaction as Reference Type (backport [#52760](https://github.com/frappe/erpnext/issues/52760)) ([#52816](https://github.com/frappe/erpnext/issues/52816)) ([2c5bdef](2c5bdefd13))
* module onboarding ([858119f](858119f907))
* **payment request:** create payment request as per payment schedules ([751a081](751a081253))
* **payment_request:** add option to calculate request amount using payment schedule ([298ea33](298ea33922))
* retrieve employee basic contact information ([f701407](f701407e23))
* retrieve employee contact details ([94f9f8b](94f9f8b30a))
* standard print format for Sales Order and Purchase Invoice ([222f51b](222f51b4d0))
2026-02-25 06:34:28 +00:00
ruthra kumar
44b935b845 Merge pull request #52925 from frappe/version-16-hotfix
chore: release v16
2026-02-25 12:01:35 +05:30
Mihir Kandoi
16e29d8571 Merge pull request #52944 from frappe/mergify/bp/version-16-hotfix/pr-52942 2026-02-25 11:04:43 +05:30
Mihir Kandoi
5db413d802 Merge pull request #52946 from frappe/mergify/bp/version-16-hotfix/pr-52945
fix: item code shows undefined (backport #52945)
2026-02-25 10:49:46 +05:30
Mihir Kandoi
0fd9fc48f3 fix: item code shows undefined
(cherry picked from commit 9ef7f05712)
2026-02-25 04:55:59 +00:00
Mihir Kandoi
265342d40a chore: clearer description for internal transfer at arms length
(cherry picked from commit bd9e5e97d7)
2026-02-25 04:43:22 +00:00
Khushi Rawat
cc604d4921 Merge pull request #52938 from frappe/mergify/bp/version-16-hotfix/pr-52889
feat: default letterhead and print format (backport #52889)
2026-02-25 00:39:54 +05:30
Khushi Rawat
1311664f52 Merge pull request #52939 from frappe/mergify/bp/version-16-hotfix/pr-52861
feat: standard print format for Sales Order and Purchase Invoice (backport #52861)
2026-02-25 00:37:37 +05:30
khushi8112
f4ec356dfb refactor: add translation and fix typo
(cherry picked from commit cbea4493c1)
2026-02-24 15:53:41 +00:00
khushi8112
222f51b4d0 feat: standard print format for Sales Order and Purchase Invoice
(cherry picked from commit 371efce88a)
2026-02-24 15:53:41 +00:00
khushi8112
1e64dea6a0 fix: test cases related to default letterhead change
(cherry picked from commit 8a2cb96c2a)
2026-02-24 15:52:54 +00:00
khushi8112
b21acec711 test: debugging the issue
(cherry picked from commit 570f574758)
2026-02-24 15:52:54 +00:00
khushi8112
dd41f2ceb7 fix: add missing property_type
(cherry picked from commit fbf5529ddd)
2026-02-24 15:52:54 +00:00
khushi8112
4adcc1c521 feat: default letterhead and print format
(cherry picked from commit 0ea22f9796)
2026-02-24 15:52:53 +00:00
Mihir Kandoi
6975fa185c Merge pull request #52937 from frappe/mergify/bp/version-16-hotfix/pr-52724 2026-02-24 20:57:08 +05:30
ljain112
6902fd6b33 refactor: use postprocess in mapped_doc to update items in subcontracting controller
(cherry picked from commit 1d3d09f48c)
2026-02-24 15:07:59 +00:00
ruthra kumar
9336f1f9a4 Merge pull request #52934 from frappe/mergify/bp/version-16-hotfix/pr-51777
feat: making payment requests based on payment schedule (backport #51777)
2026-02-24 18:55:13 +05:30
ruthra kumar
aaba93bd03 Merge pull request #52933 from frappe/mergify/bp/version-16-hotfix/pr-52824
refactor: separate construction of chart related data from `get_columns()` (backport #52824)
2026-02-24 18:46:27 +05:30
Jatin3128
751a081253 feat(payment request): create payment request as per payment schedules
(cherry picked from commit e476dff842)
2026-02-24 13:09:27 +00:00
Jatin3128
298ea33922 feat(payment_request): add option to calculate request amount using payment schedule
(cherry picked from commit 60108590b0)
2026-02-24 13:09:26 +00:00
ruthra kumar
807463e90c Merge pull request #52929 from frappe/mergify/bp/version-16-hotfix/pr-52029
fix: prevent precision errors in  discount distribution with inclusive tax (backport #52029)
2026-02-24 18:39:16 +05:30
Harsh Patadia
27c03fee1c refactor: separate construction of chart related data from get_columns() (#52824)
* fix: avoid hardcoded column slicing for Profit & Loss chart data

* refactor: improve parameter naming and reduce code repetion by using same function get_period_columns()

* refactor: improved parameter naming in get_data() and get_chart_data()

(cherry picked from commit bdcb2c1512)
2026-02-24 12:37:51 +00:00
rohitwaghchaure
ffe77ba1e7 Merge pull request #52931 from frappe/mergify/bp/version-16-hotfix/pr-52930
fix: remove form tour for sales and purchase order (backport #52930)
2026-02-24 17:45:33 +05:30
Rohit Waghchaure
aac7fc30d5 fix: remove form tour for sales and purchase order
(cherry picked from commit ed7315d78e)
2026-02-24 11:53:56 +00:00
ljain112
0e2e89c355 fix: prevent precision errors in discount distribution with inclusive tax
(cherry picked from commit 2068299766)
2026-02-24 11:29:05 +00:00
rohitwaghchaure
d8f6a007a0 Merge pull request #52922 from frappe/mergify/bp/version-16-hotfix/pr-52839
feat: module onboarding (backport #52839)
2026-02-24 16:09:40 +05:30
Rohit Waghchaure
858119f907 feat: module onboarding
(cherry picked from commit 792a1a7ab7)
2026-02-24 07:20:09 +00:00
ruthra kumar
033c9fc57d Merge pull request #52920 from frappe/mergify/bp/version-16-hotfix/pr-52363
fix: unhide book_advance_payments_in_separate_party_account check fie… (backport #52363)
2026-02-24 12:21:48 +05:30
ruthra kumar
d743ee9e1c Merge pull request #52919 from frappe/mergify/bp/version-16-hotfix/pr-52822
fix(sales-order): update quotation status while cancelling sales order (backport #52822)
2026-02-24 12:11:58 +05:30
Shllokkk
13d153c196 fix: unhide book_advance_payments_in_separate_party_account check field in Payment Entry doctype
(cherry picked from commit 5793322c30)
2026-02-24 06:26:55 +00:00
Sowmya
3a0f90c433 fix(sales-order): update quotation status while cancelling sales order (#52822)
* fix(sales-order): update quotation status while cancelling sales order

* test: validate quotation status

* chore: remove submit

(cherry picked from commit d638f3e033)
2026-02-24 06:18:37 +00:00
mergify[bot]
217709836b fix: sales and purchase modules forms clean-up (backport #52875) (#52911)
* fix: sales and purchase modules forms clean-up

(cherry picked from commit 0e356dc2e3)

# Conflicts:
#	erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
#	erpnext/accounts/doctype/sales_invoice/sales_invoice.json
#	erpnext/buying/doctype/purchase_order/purchase_order.json
#	erpnext/selling/doctype/sales_order/sales_order.json
#	erpnext/stock/doctype/delivery_note/delivery_note.json

* chore: fix conflicts

* chore: fix conflicts

Removed unnecessary fields and updated the modified date.

* chore: fix conflicts

* chore: fix conflicts

* chore: fix conflicts

Removed UTM Analytics section and column break from delivery note JSON configuration. Updated the modified timestamp.

---------

Co-authored-by: Rohit Waghchaure <rohitw1991@gmail.com>
2026-02-24 11:28:34 +05:30
ruthra kumar
3663fc4f64 Merge pull request #52908 from frappe/mergify/bp/version-16-hotfix/pr-52896
fix: skip empty dimension values in exchange gain loss (backport #52896)
2026-02-23 21:24:31 +05:30
ravibharathi656
780b626ae5 fix: skip empty dimension values in exchange gain loss
(cherry picked from commit 7df9d951c6)
2026-02-23 15:36:47 +00:00
Mihir Kandoi
bbf1a94024 Merge pull request #52906 from frappe/mergify/bp/version-16-hotfix/pr-52544
fix(stock): improve error message when serial no is reserved via SRE (backport #52544)
2026-02-23 21:03:12 +05:30
Mihir Kandoi
8a44638939 Merge pull request #52904 from frappe/mergify/bp/version-16-hotfix/pr-52764
fix: populate doctypes to be ignored table in validate (backport #52764)
2026-02-23 20:45:09 +05:30
Imesha Sudasingha
fb8f085885 Merge pull request #52544 from one-highflyer/fix/improve-reserved-serial-no-error-message
fix(stock): improve error message when serial no is reserved via SRE

(cherry picked from commit 71248ff40b)
2026-02-23 15:13:17 +00:00
l0gesh29
237e4583e2 fix: populate doctypes to be ignored table in validate
(cherry picked from commit 60d2f2d304)
2026-02-23 14:51:15 +00:00
Diptanil Saha
d71a0d76e6 Merge pull request #52902 from frappe/mergify/bp/version-16-hotfix/pr-52891
fix: notifications (backport #52891)
2026-02-23 19:53:07 +05:30
diptanilsaha
e8c5d5710d fix: fiscal year notification subject
(cherry picked from commit 3e87059939)
2026-02-23 14:08:13 +00:00
diptanilsaha
785773b0ac fix: material request on receive notification condition
(cherry picked from commit 96aa37eff5)
2026-02-23 14:08:13 +00:00
Mihir Kandoi
c51bc69d58 Merge pull request #52901 from frappe/mergify/bp/version-16-hotfix/pr-52892
fix: link field displays incorrect value when empty (backport #52892)
2026-02-23 19:11:48 +05:30
Mihir Kandoi
b67d42ee58 fix: link field displays incorrect value when empty
(cherry picked from commit db00860662)
2026-02-23 13:37:44 +00:00
Mihir Kandoi
62f587318c Merge pull request #52898 from frappe/mergify/bp/version-16-hotfix/pr-52878
fix: standalone sales invoice return should not fallback to item mast… (backport #52878)
2026-02-23 19:07:01 +05:30
Mihir Kandoi
6e1a8083a5 fix: standalone sales invoice return should not fallback to item master for valuation rate
(cherry picked from commit a85a0aef52)
2026-02-23 13:19:55 +00:00
ruthra kumar
407bf7ec2e Merge pull request #52895 from frappe/mergify/bp/version-16-hotfix/pr-52812
fix: bank account mismatch error on reverse transaction reconciliation (backport #52812)
2026-02-23 18:28:38 +05:30
Diptanil Saha
4ac4292de4 Merge pull request #52893 from frappe/mergify/bp/version-16-hotfix/pr-50301
refactor:  fetch employee contact details in realtime in Payment Entry (backport #50301)
2026-02-23 18:11:21 +05:30
ervishnucs
746b5d96de fix: check gl account of an associated bank account in bank transaction
(cherry picked from commit 8fe0bf4ba3)
2026-02-23 12:36:45 +00:00
Abdeali Chharchhoda
5c9f9517d6 refactor: method to get employee contact without permission check
(cherry picked from commit 58cdb9503b)
2026-02-23 12:22:57 +00:00
Abdeali Chharchhoda
63975c8c00 refactor: use common method to get employee contacts
(cherry picked from commit ec1eb6d222)
2026-02-23 12:22:57 +00:00
Abdeali Chharchhoda
116361c1dc fix: get employee email with priority if preferred is not set
(cherry picked from commit 7b89c12470)
2026-02-23 12:22:57 +00:00
Abdeali Chharchhoda
0f8f8c2066 refactor: add validation for missing employee parameter
(cherry picked from commit b8e06b9636)
2026-02-23 12:22:56 +00:00
Abdeali Chharchhoda
123b7191fc refactor: fetch employee contact details in realtime
(cherry picked from commit 2ea6508fa5)
2026-02-23 12:22:56 +00:00
Abdeali Chharchhoda
94f9f8b30a feat: retrieve employee contact details
(cherry picked from commit a41297d841)
2026-02-23 12:22:56 +00:00
Abdeali Chharchhoda
f701407e23 feat: retrieve employee basic contact information
(cherry picked from commit 4ad1474e32)
2026-02-23 12:22:56 +00:00
Abdeali Chharchhoda
2b9af6a641 chore: Removing unused import
(cherry picked from commit 87c59f471c)
2026-02-23 12:22:55 +00:00
ruthra kumar
79cf614118 Merge pull request #52887 from frappe/mergify/bp/version-16-hotfix/pr-52840
fix(manufacturing): remove delete query of job card & batch and serial no  (backport #52840)
2026-02-23 17:39:28 +05:30
Sudharsanan Ashok
9ff924e831 fix(manufacturing): remove delete query of job card & batch and serial no (#52840)
* fix(manufacturing): remove delete query of batch and serial no

* fix(manufacturing): remove delete query of job card

* fix: remove delete function call for work order

(cherry picked from commit 8b2a971019)
2026-02-23 11:29:36 +00:00
mergify[bot]
8437355072 Merge pull request #52876 from frappe/mergify/bp/version-16-hotfix/pr-52399
refactor: Better organizing of the fields in various doctypes (backport #52399)
2026-02-23 16:54:54 +05:30
Khushi Rawat
1f82be4383 Merge pull request #52881 from frappe/mergify/bp/version-16-hotfix/pr-52879
fix: typo (backport #52879)
2026-02-23 16:04:05 +05:30
mergify[bot]
e6f7a7e979 fix: avoid duplicate taxes and charges rows in payment entry (backport #52178) (#52319)
Co-authored-by: Dharanidharan S <dharanidharans1328@gmail.com>
fix: avoid duplicate taxes and charges rows in payment entry (#52178)
2026-02-23 10:21:06 +00:00
Mihir Kandoi
c2666bbcac Merge pull request #52883 from frappe/mergify/bp/version-16-hotfix/pr-52880
fix(work_order): update returned qty on work order (backport #52880)
2026-02-23 15:49:48 +05:30
Khushi Rawat
74a3965a12 fix: update modified timestamp in json 2026-02-23 15:44:59 +05:30
Pandiyan37
c4ba3c9c4b fix(work_order): update returned qty
(cherry picked from commit b7f45e6963)
2026-02-23 10:04:09 +00:00
mahsem
d0c2cc848c fix: typo
(cherry picked from commit 2b72aab671)
2026-02-23 09:54:15 +00:00
Mihir Kandoi
af4c626238 Merge pull request #52874 from frappe/mergify/bp/version-16-hotfix/pr-52871
fix: use stock qty instead of qty when updating transferred qty in WO (backport #52871)
2026-02-23 14:55:47 +05:30
rohitwaghchaure
aab7759afc Merge pull request #52872 from frappe/mergify/bp/version-16-hotfix/pr-52504
refactor: form cleanup for sales order (backport #52504)
2026-02-23 14:01:39 +05:30
Mihir Kandoi
90e61abff4 fix: use stock qty instead of qty when updating transferred qty in WO
(cherry picked from commit 8e14249335)
2026-02-23 07:53:20 +00:00
ruthra kumar
d1c142cce8 refactor: form cleanup for sales order
(cherry picked from commit 93d1716eb5)
2026-02-23 07:49:58 +00:00
rohitwaghchaure
54e2fa0231 Merge pull request #52868 from frappe/mergify/bp/version-16-hotfix/pr-52534
refactor: supplier form cleanup (backport #52534)
2026-02-23 12:12:57 +05:30
rohitwaghchaure
ddfdc1a4e7 Merge pull request #52867 from frappe/mergify/bp/version-16-hotfix/pr-52508
refactor: form cleanup for stock and manufacturing doctypes (backport #52508)
2026-02-23 12:12:43 +05:30
rohitwaghchaure
4b0d2558d7 chore: fix conflicts
Refactor purchase order JSON structure by cleaning up field order and removing unnecessary fields.
2026-02-23 11:30:53 +05:30
rohitwaghchaure
7223acf266 Merge pull request #52866 from frappe/mergify/bp/version-16-hotfix/pr-52469
refactor: form cleanup for master doctypes related to stock module (backport #52469)
2026-02-23 11:27:27 +05:30
rohitwaghchaure
5b30e6e96b Merge pull request #52865 from frappe/mergify/bp/version-16-hotfix/pr-52392
refactor: Cleanup buying module related doctypes (backport #52392)
2026-02-23 11:26:51 +05:30
rohitwaghchaure
8cd12e37cd chore: fix conflicts 2026-02-23 11:26:31 +05:30
rohitwaghchaure
9a2eb91eec fix: supplier_type appears multiple times 2026-02-23 11:24:13 +05:30
rohitwaghchaure
7a680e6070 chore: fix conflicts
Refactored supplier form by reorganizing field order and removing unnecessary fields.
2026-02-23 11:05:07 +05:30
rohitwaghchaure
5e31eb3d77 chore: fix conflicts 2026-02-23 10:58:12 +05:30
Rohit Waghchaure
3eb838a6a2 refactor: supplier form cleanup
(cherry picked from commit bd521d9089)

# Conflicts:
#	erpnext/buying/doctype/supplier/supplier.json
2026-02-23 05:28:09 +00:00
Rohit Waghchaure
575fd4988b refactor: form cleanup for stock and manufacturing doctypes
(cherry picked from commit bf20ecca60)

# Conflicts:
#	erpnext/buying/doctype/purchase_order/purchase_order.json
2026-02-23 05:27:39 +00:00
Rohit Waghchaure
24fbd8add9 refactor: form cleanup for master doctypes related to stock module
(cherry picked from commit 6c49d5dc7d)
2026-02-23 05:27:10 +00:00
Rohit Waghchaure
91e9867fb1 refactor: Cleanup buying module forms
(cherry picked from commit f3ea1863ae)

# Conflicts:
#	erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
2026-02-23 05:26:46 +00:00
Mihir Kandoi
069d6d5269 Merge pull request #52863 from frappe/mergify/bp/version-16-hotfix/pr-52803
fix(manufacturing): update closed status for current work order before calculating planned qty (backport #52803)
2026-02-23 07:47:08 +05:30
Sudharsanan11
d9d76fceeb test(manufacturing): add test to validate the planned qty
(cherry picked from commit cfbdfcf515)
2026-02-23 02:01:42 +00:00
Sudharsanan11
61d339cfa7 fix(manufacturing): update status for work order before calculating planned qty
(cherry picked from commit 4d40c84a31)
2026-02-23 02:01:41 +00:00
MochaMind
843c0d4acf chore: update POT file (#52858) 2026-02-22 13:19:38 +01:00
mergify[bot]
2c5bdefd13 feat(Journal Entry Account): add Bank Transaction as Reference Type (backport #52760) (#52816)
* feat: add Bank Transaction as Reference Type to Journal Entry Account (#52760)

* feat: add Bank Transaction as Reference Type to Journal Entry Account

* fix: take care of existing property setters

* fix: cancelling Bank Transactions should still be possible

* fix: handle blank options in patch

* fix: hide Reference Due Date for Bank Transaction

(cherry picked from commit 387fb1b202)

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

* chore: resolve conflicts

---------

Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2026-02-21 15:43:47 +01:00
Diptanil Saha
a4ee85e89c Merge pull request #52848 from frappe/mergify/bp/version-16-hotfix/pr-52842
refactor: `Fiscal Year` cleanup (backport #52842)
2026-02-21 13:00:22 +05:30
diptanilsaha
92c2c7bf82 fix(fiscal_year): Fiscal Year auto-generation and notification
(cherry picked from commit 4c76786ce4)
2026-02-21 07:13:05 +00:00
diptanilsaha
54bed64356 fix(fiscal_year_company): made company field mandatory
(cherry picked from commit 94fb7e11b4)
2026-02-21 07:13:05 +00:00
diptanilsaha
82170dfd07 refactor: Fiscal Year DocType cleanup
(cherry picked from commit 74ac28fc70)
2026-02-21 07:13:04 +00:00
Mihir Kandoi
595b5e7dae Merge pull request #52847 from frappe/mergify/bp/version-16-hotfix/pr-52845 2026-02-21 12:41:15 +05:30
Mihir Kandoi
cfad7e17f1 fix: remove supplier invoice date/posting date validation
(cherry picked from commit 7cff0ba626)
2026-02-21 06:55:30 +00:00
Mihir Kandoi
00ebeec94e Merge pull request #52837 from frappe/mergify/bp/version-16-hotfix/pr-52835
fix: inconsistent label name between parent and child (backport #52835)
2026-02-20 17:17:01 +05:30
Mihir Kandoi
b56c444f18 fix: inconsistent label name between parent and child
(cherry picked from commit d6e1ca0f10)
2026-02-20 11:28:53 +00:00
Mihir Kandoi
9d2ccd7246 Merge pull request #52827 from frappe/mergify/bp/version-16-hotfix/pr-52821
fix: sensible insufficient stock message in pick list (backport #52821)
2026-02-20 14:40:55 +05:30
Mihir Kandoi
d06e611c72 Merge pull request #52829 from frappe/mergify/bp/version-16-hotfix/pr-52825
fix: update items fetches wrong item code (backport #52825)
2026-02-20 14:27:47 +05:30
Mihir Kandoi
3355c60c79 fix: update items fetches wrong item code
(cherry picked from commit ba96d37c11)
2026-02-20 08:54:31 +00:00
Mihir Kandoi
dbe2a87a84 fix: sensible insufficient stock message in pick list
(cherry picked from commit 1352dc79bb)
2026-02-20 08:53:52 +00:00
Mihir Kandoi
f78317a79a Merge pull request #52819 from frappe/mergify/bp/version-16-hotfix/pr-52811
fix: permission issue for quotation item during update item (backport #52811)
2026-02-19 23:22:37 +05:30
Mihir Kandoi
0c4b9ea9ca fix: typo
(cherry picked from commit 732c98b72f)
2026-02-19 17:28:53 +00:00
Mihir Kandoi
715dbc0093 fix: ignore permissions instead of saving parent
(cherry picked from commit 6342e9a3e2)
2026-02-19 17:28:53 +00:00
Nishka Gosalia
bccca6f58e fix: permission issue for quotation item during update item
(cherry picked from commit 58b8af0fa8)
2026-02-19 17:28:53 +00:00
Mihir Kandoi
72a0d82147 Merge pull request #52806 from frappe/mergify/bp/version-16-hotfix/pr-52804
fix(Purchase Receipt): copy project from first row when adding items (backport #52804)
2026-02-19 14:03:27 +05:30
Marc Ramser
77da3306b5 fix(Purchase Receipt): copy project from first row when adding items
Adds `items_add` method to copy expense_account, cost_center and project from first row to newly added items, matching Purchase Invoice behavior.

(cherry picked from commit 21423676c9)
2026-02-19 08:32:20 +00:00
Mihir Kandoi
636414c0e4 Merge pull request #52798 from frappe/mergify/bp/version-16-hotfix/pr-52792
fix: unable to submit subcontracting order if created from material r… (backport #52792)
2026-02-19 13:59:24 +05:30
Mihir Kandoi
c5bc92d50e fix: unable to submit subcontracting order if created from material request
(cherry picked from commit 37323480dd)
2026-02-19 13:44:30 +05:30
Mihir Kandoi
c669387b82 Merge pull request #52796 from frappe/mergify/bp/version-16-hotfix/pr-52794
fix: reservation based on field should be read only in SRE (backport #52794)
2026-02-19 12:57:07 +05:30
Mihir Kandoi
a499b7e046 fix: reservation based on field should be read only in SRE
(cherry picked from commit 21452b4c6e)
2026-02-19 05:10:44 +00:00
Frappe PR Bot
9a0b54c649 chore(release): Bumped to Version 16.6.1
## [16.6.1](https://github.com/frappe/erpnext/compare/v16.6.0...v16.6.1) (2026-02-19)

### Bug Fixes

* better permissions on make payment request ([78fc942](78fc9424d9))
2026-02-19 05:04:10 +00:00
ruthra kumar
1f78a9fa6c Merge pull request #52790 from frappe/mergify/bp/version-16/pr-52763
fix: better permissions on make payment request (backport #52763)
2026-02-19 10:32:36 +05:30
Mihir Kandoi
17062e0154 Merge pull request #52788 from frappe/mergify/bp/version-16-hotfix/pr-52490
fix: Add handling for Sales Invoice Item quantity field (backport #52490)
2026-02-19 10:15:48 +05:30
ruthra kumar
78fc9424d9 fix: better permissions on make payment request
(cherry picked from commit f36962fc58)
2026-02-19 04:32:31 +00:00
Mihir Kandoi
2d864bb599 fix: add purchase invoice as well
(cherry picked from commit 1fc2eddf6f)
2026-02-19 04:13:06 +00:00
Thomas antony
f6a1ea804a fix: Add handling for Sales Invoice Item quantity field
Add handling for Sales Invoice Item quantity field

(cherry picked from commit edfcaee99b)
2026-02-19 04:13:05 +00:00
mergify[bot]
d7b61b945f fix: addresses portal (backport #52712) (#52786)
* fix: addresses portal

(cherry picked from commit e317ab1479)

# Conflicts:
#	erpnext/patches.txt

* chore: resolve conflicts

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-02-19 04:11:04 +00:00
Mihir Kandoi
b6a2284003 Merge pull request #52775 from frappe/mergify/bp/version-16-hotfix/pr-52628
fix(manufacturing): set pick list purpose while creating it from work order (backport #52628)
2026-02-18 15:32:12 +05:30
Sudharsanan11
131e279a0c fix(manufacturing): set pick list purpose while creating it from work order
(cherry picked from commit 23ccc2a8c5)
2026-02-18 09:46:02 +00:00
ruthra kumar
cc7de7e66e Merge pull request #52768 from frappe/mergify/bp/version-16-hotfix/pr-52763
fix: better permissions on make payment request (backport #52763)
2026-02-18 12:46:20 +05:30
ruthra kumar
a5c83dd11e fix: better permissions on make payment request
(cherry picked from commit f36962fc58)
2026-02-18 06:58:42 +00:00
ruthra kumar
f5fa1ba02b Merge pull request #52766 from frappe/mergify/bp/version-16-hotfix/pr-52419
fix: enfore permission on make_payment_request (backport #52419)
2026-02-18 12:26:45 +05:30
ruthra kumar
81845992a6 fix: enfore permission on make_payment_request
(cherry picked from commit b755ca12ca)
2026-02-18 06:32:44 +00:00
mergify[bot]
893683a512 fix: user permission on reports (backport #52709) (#52757)
* fix: user permission on reports (#52709)

(cherry picked from commit c6a292f6a9)

# Conflicts:
#	erpnext/accounts/report/purchase_register/purchase_register.py
#	erpnext/accounts/report/sales_register/sales_register.py

* chore: resolve conflict

---------

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2026-02-17 23:07:41 +05:30
Mihir Kandoi
59e2dbb435 Merge pull request #52754 from frappe/mergify/bp/version-16-hotfix/pr-52750
fix: setup fails to set abbr to departments (backport #52750)
2026-02-17 21:50:51 +05:30
Mihir Kandoi
35e9ca64ce Merge pull request #52752 from frappe/mergify/bp/version-16-hotfix/pr-52743
bug: fix comparison regarding `None` values (backport #52743)
2026-02-17 21:39:33 +05:30
Mihir Kandoi
b15db05ef8 fix: setup fails to set abbr to departments
(cherry picked from commit debe868950)
2026-02-17 15:57:50 +00:00
Markus Lobedann
66d1b7c837 fix: bug with comparison regarding None values and empty string
In their default state, the fields can be `None`. When a user enters something and deletes it afterwards, the fields contain an empty string.

This fixes the comparison.

(cherry picked from commit 3fd5a0f100)
2026-02-17 15:52:09 +00:00
mergify[bot]
10be8f19e2 fix(asset): handle partial asset sales by splitting remaining quantity (backport #51363) (#52394)
* fix(asset): handle partial asset sales by splitting remaining quantity

(cherry picked from commit 9a2710b9d7)

* fix: refactor older testcases

(cherry picked from commit a88fe2ecab)

* test: validate asset partial sales

(cherry picked from commit 9eeccb765d)

# Conflicts:
#	erpnext/assets/doctype/asset/test_asset.py

* fix(asset): skip purchase document validation while splitting existing asset

(cherry picked from commit e7e6567792)

* fix(asset): handle same asset being sold in multiple line items in sales invoice

(cherry picked from commit 23b094f151)

* test: validate asset split for auto created asset from purchase voucher

(cherry picked from commit 4adeaedfde)

# Conflicts:
#	erpnext/assets/doctype/asset/test_asset.py

* fix: use new_asset instead of asset_doc when checking values after splitting

(cherry picked from commit ca97f34092)

* fix: remove the redundant purchase receipt submit

(cherry picked from commit eeb6d0e9bf)

* chore: fix conflict

---------

Co-authored-by: Navin-S-R <navin@aerele.in>
2026-02-17 14:32:08 +00:00
Frappe PR Bot
372b0119bb chore(release): Bumped to Version 16.6.0
# [16.6.0](https://github.com/frappe/erpnext/compare/v16.5.0...v16.6.0) (2026-02-17)

### Bug Fixes

* allow non-stock items while updating items ([e2183eb](e2183ebde9))
* allow sequence id edit in BOM if routing is not set ([6f812cc](6f812ccaf5))
* better validation for negative batch ([e46e874](e46e8741b4))
* cancel SABB if SLE cancelled from LCV ([ac90975](ac90975f43))
* consider sle for negative stock validation ([ca8f324](ca8f324b51))
* consider table multiselect in delete transaction ([38679d6](38679d6d14))
* correct typos in marketing campaign custom fields function ([531bdbc](531bdbc727))
* do not allow plant floor company and warehouse to be updated ([a039c17](a039c176c8))
* ensure layout has Bootstrap row and column (backport [#52649](https://github.com/frappe/erpnext/issues/52649)) ([#52719](https://github.com/frappe/erpnext/issues/52719)) ([53e400c](53e400cca1))
* log changes made to accounts settings ([2200b9a](2200b9aa67))
* **manufacturing:** add sales order fields in subassembly child table ([605c0db](605c0db976))
* **manufacturing:** set sales order references in subassembly child table ([f4b0e64](f4b0e646b4))
* **pos_invoice:** add correct depends on condition ([#52689](https://github.com/frappe/erpnext/issues/52689)) ([28592d0](28592d0180))
* prevent rows from being added to sub_assembly_items and mr_items ([80c98cd](80c98cdcf4))
* production plan status ([62ea18f](62ea18f1cc))
* removed lost reason detail ([3c33a19](3c33a19634))
* **selling-workspace-sidebar:** changed order of pos profile ([1820c35](1820c35880))
* standalone credit/debit notes should not fetch any serial or batch by default ([dd4e186](dd4e1867f5))
* **stock:** remove hardcoded letter_head from report ([1d444e5](1d444e53eb)), closes [#52569](https://github.com/frappe/erpnext/issues/52569)
* total weight does not update when updating items ([46b5884](46b5884420))
* wrong display_depends_on condition for item group and brand child tables ([6ae1b18](6ae1b18616))

### Features

* Negative Batch report ([8649543](8649543ae0))
* show formatted currency symbol on ledger preview ([b844afe](b844afe0ec))
2026-02-17 14:10:20 +00:00
ruthra kumar
7a46fad6e7 Merge pull request #52731 from frappe/version-16-hotfix
chore: release v16
2026-02-17 19:38:48 +05:30
rohitwaghchaure
2ccb8c839d Merge pull request #52740 from frappe/mergify/bp/version-16-hotfix/pr-52729
feat: Negative Batch report (backport #52729)
2026-02-17 17:23:50 +05:30
Rohit Waghchaure
8649543ae0 feat: Negative Batch report
(cherry picked from commit 34edbed00b)
2026-02-17 11:04:33 +00:00
Mihir Kandoi
bed2c83272 Merge pull request #52736 from frappe/mergify/bp/version-16-hotfix/pr-52733
fix: allow sequence ID edit in BOM if routing is not set (backport #52733)
2026-02-17 16:28:39 +05:30
Mihir Kandoi
5461945d00 Merge pull request #52738 from frappe/mergify/bp/version-16-hotfix/pr-52677
fix: standalone credit/debit notes should not fetch any serial or bat… (backport #52677)
2026-02-17 16:25:36 +05:30
Mihir Kandoi
dd4e1867f5 fix: standalone credit/debit notes should not fetch any serial or batch by default
(cherry picked from commit 2017edca88)
2026-02-17 10:40:32 +00:00
Mihir Kandoi
6f812ccaf5 fix: allow sequence id edit in BOM if routing is not set
(cherry picked from commit 08529964b4)
2026-02-17 10:36:17 +00:00
ruthra kumar
6c4bba3992 Merge pull request #52727 from frappe/mergify/bp/version-16-hotfix/pr-52679
fix: log changes made to accounts settings (backport #52679)
2026-02-17 14:15:25 +05:30
ruthra kumar
eda479a917 Merge pull request #52725 from frappe/mergify/bp/version-16-hotfix/pr-52648
fix: correct typos in marketing campaign custom fields function (backport #52648)
2026-02-17 13:59:19 +05:30
AarDG10
2200b9aa67 fix: log changes made to accounts settings
(cherry picked from commit 45febbabd7)
2026-02-17 08:25:47 +00:00
Mihir Kandoi
af15050acc Merge pull request #52723 from frappe/mergify/bp/version-16-hotfix/pr-52720
fix: wrong display_depends_on condition for item group and brand chil… (backport #52720)
2026-02-17 13:43:00 +05:30
Abdeali Chharchhoda
531bdbc727 fix: correct typos in marketing campaign custom fields function
(cherry picked from commit 6b7fed7f59)
2026-02-17 08:12:00 +00:00
ruthra kumar
53e400cca1 fix: ensure layout has Bootstrap row and column (backport #52649) (#52719)
Merge pull request #52649 from aerele/fix-sales-funnel-layout

fix: ensure layout has Bootstrap row and column
(cherry picked from commit ae0be7f6ce)

Co-authored-by: Vishnu Priya Baskaran <145791817+ervishnucs@users.noreply.github.com>
2026-02-17 13:04:21 +05:30
Shllokkk
6ae1b18616 fix: wrong display_depends_on condition for item group and brand child tables
(cherry picked from commit de2843d9f1)
2026-02-17 07:30:21 +00:00
Mihir Kandoi
a8f21dbc07 Merge pull request #52718 from frappe/mergify/bp/version-16-hotfix/pr-52716
fix: do not allow plant floor company and warehouse to be updated (backport #52716)
2026-02-17 12:32:45 +05:30
Vishnu Priya Baskaran
1dd471fb18 Merge pull request #52649 from aerele/fix-sales-funnel-layout
fix: ensure layout has Bootstrap row and column
(cherry picked from commit ae0be7f6ce)
2026-02-17 06:55:51 +00:00
Mihir Kandoi
a039c176c8 fix: do not allow plant floor company and warehouse to be updated
(cherry picked from commit fd72132743)
2026-02-17 06:42:33 +00:00
Mihir Kandoi
cf141045ba Merge pull request #52715 from frappe/mergify/bp/version-16-hotfix/pr-52713
fix: production plan status (backport #52713)
2026-02-17 11:41:43 +05:30
Mihir Kandoi
62ea18f1cc fix: production plan status
(cherry picked from commit b3e6b304e4)
2026-02-17 05:54:10 +00:00
Mihir Kandoi
302ae382f1 Merge pull request #52697 from frappe/mergify/bp/version-16-hotfix/pr-52678
chore: do not show stock details if update stock is disabled (backport #52678)
2026-02-17 10:55:49 +05:30
Mihir Kandoi
98ff54a871 chore: resolve conflicts 2026-02-17 10:40:34 +05:30
rohitwaghchaure
41b089ab51 Merge pull request #52705 from frappe/mergify/bp/version-16-hotfix/pr-52620
fix: prevent rows from being added to sub_assembly_items and mr_items (backport #52620)
2026-02-17 10:16:09 +05:30
Diptanil Saha
46acd328a9 Merge pull request #52707 from frappe/mergify/bp/version-16-hotfix/pr-52706
fix(selling-workspace-sidebar): changed order of pos profile (backport #52706)
2026-02-17 00:55:44 +05:30
diptanilsaha
1820c35880 fix(selling-workspace-sidebar): changed order of pos profile
(cherry picked from commit 72f4fd08ee)
2026-02-16 19:11:27 +00:00
Shllokkk
80c98cdcf4 fix: prevent rows from being added to sub_assembly_items and mr_items
(cherry picked from commit 25f979a825)
2026-02-16 18:43:01 +00:00
Mihir Kandoi
4a8363e7da Merge pull request #52703 from frappe/mergify/bp/version-16-hotfix/pr-52626
fix(manufacturing): add sales order fields in subassembly child table (backport #52626)
2026-02-16 23:58:13 +05:30
rohitwaghchaure
dcbc1e1303 Merge pull request #52701 from frappe/mergify/bp/version-16-hotfix/pr-52699
fix: consider sle for negative stock validation (backport #52699)
2026-02-16 23:56:30 +05:30
Sudharsanan11
ecfd193002 test(manufacturing): add test to validate the sales order references for sub assembly items
(cherry picked from commit 341dc4be7a)
2026-02-16 18:11:53 +00:00
Sudharsanan11
f4b0e646b4 fix(manufacturing): set sales order references in subassembly child table
(cherry picked from commit 0f2ed28ab7)
2026-02-16 18:11:52 +00:00
Sudharsanan11
605c0db976 fix(manufacturing): add sales order fields in subassembly child table
(cherry picked from commit c2282eaf08)
2026-02-16 18:11:52 +00:00
Rohit Waghchaure
ca8f324b51 fix: consider sle for negative stock validation
(cherry picked from commit 38f35acffe)
2026-02-16 17:56:51 +00:00
Mihir Kandoi
7677b2f573 chore: do not show serial batch selector if not needed
(cherry picked from commit cdc62e7327)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json
2026-02-16 17:01:48 +00:00
Mihir Kandoi
f08964683a chore: do not show stock details if update stock is disabled
(cherry picked from commit 4499e974a0)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json
2026-02-16 17:01:48 +00:00
rohitwaghchaure
d2eabcbf74 Merge pull request #52696 from frappe/mergify/bp/version-16-hotfix/pr-52691
fix: cancel SABB if SLE cancelled from LCV (backport #52691)
2026-02-16 21:52:33 +05:30
Diptanil Saha
7d8bbac5fd Merge pull request #52694 from frappe/mergify/bp/version-16-hotfix/pr-52689
fix(pos_invoice): add correct depends on condition (backport #52689)
2026-02-16 21:23:24 +05:30
Rohit Waghchaure
ac90975f43 fix: cancel SABB if SLE cancelled from LCV
(cherry picked from commit f23a49a25e)
2026-02-16 15:42:23 +00:00
Soham Kulkarni
28592d0180 fix(pos_invoice): add correct depends on condition (#52689)
* fix(pos_invoice): add correct depends on condition

* fix: show field in sales order

* refactor: eval condition

(cherry picked from commit 219cf6bc57)
2026-02-16 15:37:25 +00:00
rohitwaghchaure
de5e8a6e6b Merge pull request #52684 from frappe/mergify/bp/version-16-hotfix/pr-52681
fix: better validation for negative batch (backport #52681)
2026-02-16 16:02:55 +05:30
Rohit Waghchaure
e46e8741b4 fix: better validation for negative batch
(cherry picked from commit a8636e4f59)
2026-02-16 09:47:05 +00:00
MochaMind
4a4e9956e2 chore: update POT file (#52674) 2026-02-15 14:00:35 +01:00
Mihir Kandoi
8ec83f2080 Merge pull request #52672 from frappe/mergify/bp/version-16-hotfix/pr-52670 2026-02-15 14:30:52 +05:30
Mihir Kandoi
46b5884420 fix: total weight does not update when updating items
(cherry picked from commit 63323a2611)
2026-02-15 08:45:19 +00:00
Mihir Kandoi
3548073a07 Merge pull request #52669 from frappe/mergify/bp/version-16-hotfix/pr-52658
fix: allow non-stock items while updating items (backport #52658)
2026-02-15 13:07:37 +05:30
ervishnucs
e2183ebde9 fix: allow non-stock items while updating items
(cherry picked from commit 07db5941aa)
2026-02-15 07:28:48 +00:00
Mihir Kandoi
37f740caa6 Merge pull request #52668 from frappe/revert-52578-mergify/bp/version-16-hotfix/pr-51594
Revert "fix: Workspace sidebar links for Debit/Credit Notes (backport #51594)"
2026-02-15 12:44:37 +05:30
Mihir Kandoi
485c1b025a Revert "fix: Workspace sidebar links for Debit/Credit Notes (backport #51594)" 2026-02-15 12:29:28 +05:30
ruthra kumar
880cc50ae4 Merge pull request #52659 from frappe/mergify/bp/version-16-hotfix/pr-52643
fix: consider table multiselect in delete transaction (backport #52643)
2026-02-13 15:12:54 +05:30
SowmyaArunachalam
3c33a19634 fix: removed lost reason detail
(cherry picked from commit 9bb60405e7)

# Conflicts:
#	erpnext/patches.txt
2026-02-13 14:11:58 +05:30
SowmyaArunachalam
38679d6d14 fix: consider table multiselect in delete transaction
(cherry picked from commit be3d2422a7)
2026-02-13 08:37:46 +00:00
ruthra kumar
3744c32950 Merge pull request #52646 from frappe/mergify/bp/version-16-hotfix/pr-52644
refactor: use query builder for profitability analysis (backport #52644)
2026-02-12 14:40:46 +05:30
ruthra kumar
543e0131b5 refactor: use query builder for profitability analysis
(cherry picked from commit 5e34325604)
2026-02-12 08:55:03 +00:00
ruthra kumar
eb5ffcdc88 Merge pull request #52642 from frappe/mergify/bp/version-16-hotfix/pr-52640
refactor: use query builder for sales person commission summary (backport #52640)
2026-02-12 12:53:24 +05:30
ruthra kumar
f98e53692e refactor: use query builder for sales person commission summary
(cherry picked from commit 7105e3fb69)
2026-02-12 07:07:42 +00:00
ruthra kumar
e778eabcb0 Merge pull request #52639 from frappe/mergify/bp/version-16-hotfix/pr-52571
fix(stock): remove hardcoded letter_head from report (backport #52571)
2026-02-12 12:04:57 +05:30
Roxxane
1d444e53eb fix(stock): remove hardcoded letter_head from report
The 'Incorrect Serial and Batch Bundle' report had a hardcoded
letter_head value of 'Test', preventing users from deleting a
Letter Head named 'Test' due to link check.

Standard reports should not reference specific Letter Head names.

Fixes #52569

(cherry picked from commit 99cd29d88f)
2026-02-12 06:19:37 +00:00
ruthra kumar
3bf9aff67e Merge pull request #52638 from frappe/mergify/bp/version-16-hotfix/pr-52619
feat: show formatted currency symbol on ledger preview (backport #52619)
2026-02-12 11:48:49 +05:30
Navin-S-R
b844afe0ec feat: show formatted currency symbol on ledger preview
(cherry picked from commit 5c8cb1e7ec)
2026-02-12 05:59:06 +00:00
Frappe PR Bot
6e7e219f71 chore(release): Bumped to Version 16.5.0
# [16.5.0](https://github.com/frappe/erpnext/compare/v16.4.1...v16.5.0) (2026-02-11)

### Bug Fixes

* Added a missing option to the currency field (backport [#52528](https://github.com/frappe/erpnext/issues/52528)) ([#52587](https://github.com/frappe/erpnext/issues/52587)) ([1c3fe00](1c3fe000ba))
* Added validation for quality inspection in job card ([a1ec68c](a1ec68cd1e))
* apply composite asset logic only in draft ([d2387a3](d2387a3af8))
* **balance sheet:** removed the extra labels from the chart ([6a9a28b](6a9a28b4ae))
* **buying:** add supplier group link filters in field level ([9886b46](9886b46cb4))
* correctly calculate running balances for financial report ([7df18af](7df18af799))
* do not show update stock flag unneccessarily ([c0c6cc5](c0c6cc58ed))
* email campaign timeout issue (backport [#51994](https://github.com/frappe/erpnext/issues/51994)) ([#52556](https://github.com/frappe/erpnext/issues/52556)) ([e753df8](e753df8ff0))
* enabling skip delivery option for order type maintenance ([7a78e97](7a78e9705c))
* **gross profit report:** translate column Sales Invoice ([6ff8820](6ff8820732))
* **gross-profit:** handle item group filters ([0d02bbb](0d02bbb01a))
* **gross-profit:** handle returns outside sale period ([9b32c84](9b32c84462))
* handle gross profit and percentage for return invoices ([d081a26](d081a26608))
* item code is tuple with operation id ([9d14c0b](9d14c0b60e))
* **manufacturing:** fix chart period keys ([b99ca48](b99ca486d7))
* **manufacturing:** handle None value for actual_end_date ([b1b75ec](b1b75eca3d))
* **map_current_doc:** prevent mutation of query args in get_query (backport [#52202](https://github.com/frappe/erpnext/issues/52202)) ([#52584](https://github.com/frappe/erpnext/issues/52584)) ([b8256e5](b8256e5f31))
* move company field to first position in sales invoice, purchase invoice, sales order, purchase order and journal entry ([e53ccd0](e53ccd0745))
* not able to complete job card ([c5ff534](c5ff534d58))
* operation status and bom validation ([1122265](11222653ce))
* Period Closing Voucher doesn't exist for GL Entry ([921584c](921584c769))
* process loss error incorrectly thrown even when semi FG BOM does not have any process loss ([4a7ffce](4a7ffce320))
* **quotation:** ignore zero ordered_qty ([cf7c127](cf7c127dc6))
* rate comparison in stock reco ([1f78f45](1f78f45aee))
* remove customer_pos_id reference ([#52396](https://github.com/frappe/erpnext/issues/52396)) ([ab59f73](ab59f73064))
* remove incorrect validation from email digest throwing spurious error (backport [#51827](https://github.com/frappe/erpnext/issues/51827)) ([#52579](https://github.com/frappe/erpnext/issues/52579)) ([dffb6ac](dffb6ac4cf))
* return None instead of 0 if valuation rate is falsy ([64a7956](64a7956a4a))
* stock balance report issue ([62616ad](62616ad9e1))
* stock reservation created against job card ([305483e](305483e074))
* **stock:** add is group filter for warehouse fields ([23a26b5](23a26b540b))
* **stock:** ignore pos reserved batches for stock levels ([e2c1204](e2c12043ae))
* **stock:** inward stock for pick list test record ([801a26a](801a26ae67))
* **stock:** set source warehouse for issue type ([53e512c](53e512ceaf))
* **stock:** update target field attribute ([96dfecf](96dfecf0d5))
* test cases ([ece8d00](ece8d00415))
* validate asset movement transaction date ([#52340](https://github.com/frappe/erpnext/issues/52340)) ([898d2e3](898d2e3c9a))
* Workspace sidebar links for Debit/Credit Notes ([29d33b3](29d33b3139))

### Features

* **accounts:** expand Journal Entry Template to support dimensions and party ([#51621](https://github.com/frappe/erpnext/issues/51621)) ([d06a46a](d06a46ae85))
* allow negative stock for the batch item ([b6afe7f](b6afe7f4da))

### Reverts

* "fix: allow sales invoice to be renamed" ([abef910](abef9109b0))
2026-02-11 06:03:37 +00:00
ruthra kumar
ce225d87f3 Merge pull request #52597 from frappe/version-16-hotfix
chore: release v16
2026-02-11 11:32:00 +05:30
ruthra kumar
0d831aad41 Merge pull request #52605 from frappe/mergify/bp/version-16-hotfix/pr-52593
refactor: update labels for tax withholding reports columns to improve clarity (backport #52593)
2026-02-10 18:30:52 +05:30
ruthra kumar
00caebe90c Merge pull request #52397 from frappe/mergify/bp/version-16-hotfix/pr-52396
fix: remove customer_pos_id reference (backport #52396)
2026-02-10 18:28:49 +05:30
ruthra kumar
0ee97ffbbf Merge pull request #52414 from frappe/mergify/bp/version-16-hotfix/pr-51745
fix(gross profit report): translate column Sales Invoice (backport #51745)
2026-02-10 18:27:54 +05:30
ruthra kumar
4a6c428848 Merge pull request #52604 from frappe/mergify/bp/version-16-hotfix/pr-52017
fix(gross-profit): handle returns outside the given sale period (backport #52017)
2026-02-10 18:27:38 +05:30
Kavin
3e3daa50b1 Merge pull request #52542 from frappe/mergify/bp/version-16-hotfix/pr-52516
fix(stock): ignore pos reserved batches for stock levels (backport #52516)
2026-02-10 18:21:37 +05:30
ljain112
ac7a25fff9 refactor: update labels for tax withholding reports columns to improve clarity
(cherry picked from commit 2cfdcc1af4)
2026-02-10 12:43:06 +00:00
Navin-S-R
0d02bbb01a fix(gross-profit): handle item group filters
(cherry picked from commit 047b278791)
2026-02-10 12:41:30 +00:00
Navin-S-R
d01ea27f2f test: fix test assertions to use index-based totals
(cherry picked from commit fdfa7bc963)
2026-02-10 12:41:29 +00:00
Navin-S-R
345d25bdf1 test: validate sales person wise gross profit
(cherry picked from commit 3ab978ab46)
2026-02-10 12:41:29 +00:00
Navin-S-R
e8eaae4120 test: validate return invoice profit and profit percentage
(cherry picked from commit 4da3d43013)
2026-02-10 12:41:29 +00:00
Navin-S-R
d081a26608 fix: handle gross profit and percentage for return invoices
(cherry picked from commit 51709f032f)
2026-02-10 12:41:29 +00:00
Navin-S-R
9b32c84462 fix(gross-profit): handle returns outside sale period
(cherry picked from commit 67d8223f73)
2026-02-10 12:41:28 +00:00
Diptanil Saha
22c9b26a24 Merge pull request #52450 from frappe/mergify/bp/version-16-hotfix/pr-52360
fix: correctly calculate running balances for financial report (backport #52360)
2026-02-10 02:37:22 +05:30
mergify[bot]
1c3fe000ba fix: Added a missing option to the currency field (backport #52528) (#52587)
fix: Added a missing option to the currency field (#52528)

(cherry picked from commit da07f84e44)

Co-authored-by: El-Shafei H. <el.shafei.developer@gmail.com>
2026-02-09 21:01:04 +00:00
mergify[bot]
ffd9b248f6 refactor: drop usages of db_query (backport #52559) (#52565)
refactor: drop usages of db_query


(cherry picked from commit 1e45195ef9)

Signed-off-by: Akhil Narang <me@akhilnarang.dev>
Co-authored-by: Akhil Narang <me@akhilnarang.dev>
2026-02-10 01:47:17 +05:30
mergify[bot]
b8256e5f31 fix(map_current_doc): prevent mutation of query args in get_query (backport #52202) (#52584)
fix(map_current_doc): prevent mutation of query args in get_query (#52202)

(cherry picked from commit 23a73c9cdb)

Co-authored-by: V Shankar <shankarv292002@gmail.com>
2026-02-10 01:26:00 +05:30
Trusted Computer
dffb6ac4cf fix: remove incorrect validation from email digest throwing spurious error (backport #51827) (#52579) 2026-02-09 18:26:57 +00:00
mergify[bot]
e753df8ff0 fix: email campaign timeout issue (backport #51994) (#52556)
fix: email campaign timeout issue (#51994)

* fix: email campaign timeout issue

* refactor: email campaign backend logic

* refactor: use sendmail instead of manually batching

(cherry picked from commit 22123dd955)

Co-authored-by: Pratik Badhe <badhepd@gmail.com>
2026-02-09 23:45:02 +05:30
Mihir Kandoi
560fd2e0d1 Merge pull request #52581 from frappe/mergify/bp/version-16-hotfix/pr-52527
fix(stock): correct warehouse mapping for material issue (backport #52527)
2026-02-09 21:22:27 +05:30
Mihir Kandoi
327719a0fd Merge pull request #52578 from frappe/mergify/bp/version-16-hotfix/pr-51594
fix: Workspace sidebar links for Debit/Credit Notes (backport #51594)
2026-02-09 21:19:00 +05:30
Pandiyan37
801a26ae67 fix(stock): inward stock for pick list test record
(cherry picked from commit f22b9e297b)
2026-02-09 15:36:44 +00:00
Pandiyan37
8c4a9040b7 test(stock): add test to check from warehouse for issue type
(cherry picked from commit da0322e994)
2026-02-09 15:36:44 +00:00
Pandiyan37
53e512ceaf fix(stock): set source warehouse for issue type
(cherry picked from commit a34e8c99cd)
2026-02-09 15:36:43 +00:00
Mihir Kandoi
e9212c6a32 chore: resolve conflicts 2026-02-09 21:03:37 +05:30
Nabin Hait
29d33b3139 fix: Workspace sidebar links for Debit/Credit Notes
(cherry picked from commit 8acf373e68)

# Conflicts:
#	erpnext/workspace_sidebar/invoicing.json
2026-02-09 15:32:25 +00:00
rohitwaghchaure
7e0dc2ff86 Merge pull request #52561 from frappe/mergify/bp/version-16-hotfix/pr-52340
fix: validate asset movement transaction date (backport #52340)
2026-02-09 19:52:15 +05:30
Poojashree T R
898d2e3c9a fix: validate asset movement transaction date (#52340)
* fix: validate asset transaction date

* fix: validate asset transaction date

* fix: add translation in validate_transaction_date

* test: test_movement_transaction_date

* fix: to ensure test reliability

(cherry picked from commit e98b68c38f)
2026-02-09 11:52:19 +00:00
rohitwaghchaure
4c562b2903 Merge pull request #52558 from frappe/mergify/bp/version-16-hotfix/pr-52550
feat: allow negative stock for the batch item (backport #52550)
2026-02-09 16:40:12 +05:30
Mihir Kandoi
04d6273713 Merge pull request #52554 from frappe/mergify/bp/version-16-hotfix/pr-52501
fix(quotation): ignore zero ordered_qty (backport #52501)
2026-02-09 16:25:45 +05:30
Rohit Waghchaure
b6afe7f4da feat: allow negative stock for the batch item
(cherry picked from commit 376ab0e346)
2026-02-09 10:50:46 +00:00
ravibharathi656
cf7c127dc6 fix(quotation): ignore zero ordered_qty
(cherry picked from commit 32ea37035e)
2026-02-09 10:39:04 +00:00
Sudharsanan11
59f6012c57 test(stock): add test to ignore pos reserved batches for stock levels
(cherry picked from commit 47ac67f7a2)
2026-02-09 06:28:58 +00:00
Sudharsanan11
e2c12043ae fix(stock): ignore pos reserved batches for stock levels
(cherry picked from commit 277ba9cb79)
2026-02-09 06:28:58 +00:00
Mihir Kandoi
3e0a7f2400 Merge pull request #52539 from frappe/mergify/bp/version-16-hotfix/pr-52538
revert: "fix: allow sales invoice to be renamed" (backport #52538)
2026-02-09 10:47:42 +05:30
Mihir Kandoi
abef9109b0 revert: "fix: allow sales invoice to be renamed"
This reverts commit 95fdbe55f9.

(cherry picked from commit 2660907ac8)
2026-02-09 05:00:36 +00:00
MochaMind
9766361c07 chore: update POT file (#52530) 2026-02-08 17:49:45 +01:00
Mihir Kandoi
6bcd311214 Merge pull request #52524 from frappe/mergify/bp/version-16-hotfix/pr-52497
fix: add is_group filter for supplier_group and warehouse fields (backport #52497)
2026-02-07 21:58:58 +05:30
Mihir Kandoi
dd45bb5664 chore: resolve conflicts 2026-02-07 21:44:42 +05:30
Sudharsanan11
23a26b540b fix(stock): add is group filter for warehouse fields
(cherry picked from commit a9829f5f7b)
2026-02-07 16:11:32 +00:00
Sudharsanan11
9886b46cb4 fix(buying): add supplier group link filters in field level
(cherry picked from commit cfdc554a19)

# Conflicts:
#	erpnext/buying/doctype/supplier/supplier.json
2026-02-07 16:11:32 +00:00
Mihir Kandoi
32d5cedafc Merge pull request #52486 from frappe/mergify/bp/version-16-hotfix/pr-52000
fix: Added validation for quality inspection in job card (backport #52000)
2026-02-06 14:49:10 +05:30
Nishka Gosalia
ece8d00415 fix: test cases 2026-02-06 14:34:08 +05:30
Khushi Rawat
c171b9a184 Merge pull request #52492 from frappe/mergify/bp/version-16-hotfix/pr-52491
fix: apply composite asset logic only in draft (backport #52491)
2026-02-06 13:10:24 +05:30
khushi8112
d2387a3af8 fix: apply composite asset logic only in draft
(cherry picked from commit ee501e884a)
2026-02-06 07:36:31 +00:00
rohitwaghchaure
79e0e07446 Merge pull request #52482 from frappe/mergify/bp/version-16-hotfix/pr-52476
fix: stock reservation created against job card (backport #52476)
2026-02-06 12:52:43 +05:30
Mihir Kandoi
4caca08b90 Merge pull request #52488 from frappe/mergify/bp/version-16-hotfix/pr-52219
fix: enabling skip delivery option for order type maintenance (backport #52219)
2026-02-06 12:44:47 +05:30
Mihir Kandoi
738cb6847e Merge pull request #52484 from frappe/mergify/bp/version-16-hotfix/pr-52475
fix: do not show update stock flag unneccessarily (backport #52475)
2026-02-06 12:28:36 +05:30
Nishka Gosalia
7a78e9705c fix: enabling skip delivery option for order type maintenance
(cherry picked from commit 1a22e3cb61)
2026-02-06 06:40:03 +00:00
Nishka Gosalia
a1ec68cd1e fix: Added validation for quality inspection in job card
(cherry picked from commit 46b4cf3add)
2026-02-06 06:38:32 +00:00
Mihir Kandoi
4847a76cb8 chore: resolve conflicts 2026-02-06 12:00:47 +05:30
Mihir Kandoi
f56c6f93a1 chore: resolve conflicts 2026-02-06 12:00:23 +05:30
Mihir Kandoi
c0c6cc58ed fix: do not show update stock flag unneccessarily
(cherry picked from commit 5fb5b7b30e)

# Conflicts:
#	erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json
#	erpnext/accounts/doctype/sales_invoice/sales_invoice.json
2026-02-06 06:27:46 +00:00
rohitwaghchaure
8c372faf50 chore: fix linter issue
Removed duplicate import of get_bom_items_as_dict from BOM module.
2026-02-06 11:29:45 +05:30
Diptanil Saha
ae4cf27f4f Merge pull request #52471 from frappe/mergify/bp/version-16-hotfix/pr-51621
feat(accounts): expand Journal Entry Template to support dimensions and party (backport #51621)
2026-02-06 11:07:27 +05:30
Rohit Waghchaure
305483e074 fix: stock reservation created against job card
(cherry picked from commit dca2cfd009)
2026-02-05 23:05:19 +00:00
rohitwaghchaure
86dd2e786c Merge pull request #52474 from frappe/mergify/bp/version-16-hotfix/pr-52467
fix: operation status and bom validation (backport #52467)
2026-02-05 21:06:23 +05:30
Rohit Waghchaure
11222653ce fix: operation status and bom validation
(cherry picked from commit 95baf953a8)
2026-02-05 14:16:38 +00:00
Nikhil Kothari
d06a46ae85 feat(accounts): expand Journal Entry Template to support dimensions and party (#51621)
* feat(accounts): expand Journal Entry Template to support dimensions and party

* fix: do not update standard row values

(cherry picked from commit ef44528ba5)
2026-02-05 12:55:13 +00:00
rohitwaghchaure
8c536df5f2 Merge pull request #52428 from frappe/mergify/bp/version-16-hotfix/pr-52422
fix: not able to complete job card (backport #52422)
2026-02-05 17:05:16 +05:30
Frappe PR Bot
d74a649016 chore(release): Bumped to Version 16.4.1
## [16.4.1](https://github.com/frappe/erpnext/compare/v16.4.0...v16.4.1) (2026-02-05)

### Bug Fixes

* stock balance report issue ([e009319](e0093199b1))
2026-02-05 10:52:48 +00:00
rohitwaghchaure
bc9928b32b Merge pull request #52464 from frappe/mergify/bp/version-16/pr-52461
fix: stock balance report issue (backport #52459) (backport #52461)
2026-02-05 16:20:53 +05:30
rohitwaghchaure
4305415ed9 chore: fix issue
(cherry picked from commit 1d24abf5dd)
2026-02-05 10:20:46 +00:00
Rohit Waghchaure
e0093199b1 fix: stock balance report issue
(cherry picked from commit 7e584dd84a)
(cherry picked from commit 62616ad9e1)
2026-02-05 10:20:45 +00:00
rohitwaghchaure
4dec567421 Merge pull request #52461 from frappe/mergify/bp/version-16-hotfix/pr-52459
fix: stock balance report issue (backport #52459)
2026-02-05 15:49:58 +05:30
rohitwaghchaure
1d24abf5dd chore: fix issue 2026-02-05 15:02:47 +05:30
Rohit Waghchaure
62616ad9e1 fix: stock balance report issue
(cherry picked from commit 7e584dd84a)
2026-02-05 09:20:01 +00:00
Jatin3128
6bffdbce56 Merge pull request #52455 from frappe/mergify/bp/version-16-hotfix/pr-52438
fix(balance sheet): removed the extra labels from the chart (backport #52438)
2026-02-05 13:39:41 +05:30
Jatin3128
6a9a28b4ae fix(balance sheet): removed the extra labels from the chart
(cherry picked from commit a64b5f2c5d)
2026-02-05 07:54:14 +00:00
Mihir Kandoi
66d0ab6380 Merge pull request #52454 from frappe/mergify/bp/version-16-hotfix/pr-52452
fix: process loss error incorrectly thrown even when semi FG BOM does… (backport #52452)
2026-02-05 13:15:53 +05:30
ruthra kumar
5913d5f14e Merge pull request #52351 from frappe/mergify/bp/version-16-hotfix/pr-52346
fix: move company field to first position in sales invoice, purchase … (backport #52346)
2026-02-05 13:11:28 +05:30
Mihir Kandoi
4a7ffce320 fix: process loss error incorrectly thrown even when semi FG BOM does not have any process loss
(cherry picked from commit 99ddc36c26)
2026-02-05 07:27:41 +00:00
Smit Vora
2994ba1b41 test: further tests for query builder
(cherry picked from commit 12f8bb2937)
2026-02-05 06:53:30 +00:00
Smit Vora
55eb631116 test: correct error message
(cherry picked from commit a29710dc07)
2026-02-05 06:53:30 +00:00
Smit Vora
77693b12a4 test: revert original pcv setting
(cherry picked from commit f45a5a63a7)
2026-02-05 06:53:29 +00:00
Smit Vora
8caf609f8d test: add tests for query builder
(cherry picked from commit 61d8308e81)
2026-02-05 06:53:29 +00:00
Smit Vora
921584c769 fix: Period Closing Voucher doesn't exist for GL Entry
(cherry picked from commit b41c1858a3)
2026-02-05 06:53:29 +00:00
Smit Vora
7df18af799 fix: correctly calculate running balances for financial report
(cherry picked from commit ee2f8d8ebc)
2026-02-05 06:53:29 +00:00
Mihir Kandoi
64d82a811f Merge pull request #52446 from frappe/mergify/bp/version-16-hotfix/pr-52445
fix: item code is tuple with operation id (backport #52445)
2026-02-05 12:12:35 +05:30
Mihir Kandoi
9d14c0b60e fix: item code is tuple with operation id
(cherry picked from commit 481deee4b2)
2026-02-05 06:29:11 +00:00
ruthra kumar
0a285523a8 Merge pull request #52426 from frappe/mergify/bp/version-16-hotfix/pr-51990
refactor: use https over http while saving website link (backport #51990)
2026-02-05 11:30:16 +05:30
ruthra kumar
ce695ebdd0 refactor: patch partner_website for old data
(cherry picked from commit 8db29b0a81)

# Conflicts:
#	erpnext/patches.txt
2026-02-05 11:00:58 +05:30
Mihir Kandoi
9f31910226 Merge pull request #52441 from frappe/mergify/bp/version-16-hotfix/pr-52416
fix(stock): update target field attribute (backport #52416)
2026-02-05 10:40:29 +05:30
Pandiyan37
f8405e4ca4 test(stock): testcase for different inventory dimension
(cherry picked from commit 21d0ee8db1)
2026-02-05 04:54:39 +00:00
Pandiyan37
96dfecf0d5 fix(stock): update target field attribute
(cherry picked from commit 7e08154217)
2026-02-05 04:54:38 +00:00
Mihir Kandoi
b5b8032ce0 Merge pull request #52430 from frappe/mergify/bp/version-16-hotfix/pr-52427 2026-02-04 20:17:43 +05:30
archielister
5298e26a11 fix for obtaining bom_no
(cherry picked from commit e4df0a393a)
2026-02-04 14:33:24 +00:00
Rohit Waghchaure
c5ff534d58 fix: not able to complete job card
(cherry picked from commit 175fe9279c)
2026-02-04 13:13:27 +00:00
Mihir Kandoi
1dc44691db Merge pull request #52421 from frappe/mergify/bp/version-16-hotfix/pr-51773
fix(manufacturing): refactor production analytics report (backport #51773)
2026-02-04 18:06:40 +05:30
ruthra kumar
91043de352 refactor: scrub http and use https in sales partner
(cherry picked from commit 8cf31548f2)
2026-02-04 12:32:42 +00:00
Sudharsanan11
b99ca486d7 fix(manufacturing): fix chart period keys
(cherry picked from commit 27091e5168)
2026-02-04 17:51:53 +05:30
Sudharsanan11
b1b75eca3d fix(manufacturing): handle None value for actual_end_date
(cherry picked from commit 16f09141da)
2026-02-04 17:51:53 +05:30
Mihir Kandoi
33305550b7 Merge pull request #52408 from frappe/mergify/bp/version-16-hotfix/pr-52383
fix: rate comparison in stock reco (backport #52383)
2026-02-04 17:42:06 +05:30
Mihir Kandoi
e86ab97b7e chore: add line in the end so linter check passes 2026-02-04 17:26:01 +05:30
elshafei-developer
6ff8820732 fix(gross profit report): translate column Sales Invoice
(cherry picked from commit 3e39d13172)
2026-02-04 09:18:31 +00:00
Mihir Kandoi
64a7956a4a fix: return None instead of 0 if valuation rate is falsy
(cherry picked from commit e8d1e9d946)
2026-02-04 06:48:33 +00:00
Mihir Kandoi
1f78f45aee fix: rate comparison in stock reco
(cherry picked from commit f1b4fe12a2)
2026-02-04 06:48:32 +00:00
Diptanil Saha
ab59f73064 fix: remove customer_pos_id reference (#52396)
(cherry picked from commit 036f64013d)
2026-02-04 05:18:56 +00:00
Frappe PR Bot
0312d58dca chore(release): Bumped to Version 16.4.0
# [16.4.0](https://github.com/frappe/erpnext/compare/v16.3.0...v16.4.0) (2026-02-04)

### Bug Fixes

* add precision to rejected batch no qty calculation ([b365444](b365444027))
* allow sales invoice to be renamed ([f7b915d](f7b915dfe6))
* **barcode:** failing request when item has both batch and serial ([e4cdd97](e4cdd971c8))
* batch selector not working if Use Legacy (Client side) Reactivity disabled ([2a3642b](2a3642b55a))
* better fix for aac39b2671 ([b8ab55f](b8ab55fee8))
* correct exchange gain loss in ppr ([e09406d](e09406d085))
* correct Sales Tax Template sidebar link to proper DocType ([4c14e74](4c14e74a12))
* correct spelling of Payment Reconciliation in Accounting ([c80b554](c80b554cd7))
* **credit-note:** set incoming rate as zero for expired batch ([0f9bf08](0f9bf08685))
* **demo:** removed toolbar eventlistener (backport [#52171](https://github.com/frappe/erpnext/issues/52171)) ([#52172](https://github.com/frappe/erpnext/issues/52172)) ([6608601](66086010fc))
* duplicate account number (Indonesia COA) (backport [#52080](https://github.com/frappe/erpnext/issues/52080)) ([#52317](https://github.com/frappe/erpnext/issues/52317)) ([81e6575](81e65757ee))
* failing test cases ([136b2cf](136b2cfba5))
* group item wise tax details by tax row ([45e4c04](45e4c04830))
* hide close button on WO if WO is completed ([0d1c30f](0d1c30f3f0))
* hide item_wise_tax_details table from print ([c619be9](c619be989b))
* include credit notes in project gross margin calculation ([e755a4a](e755a4ad98))
* item code not showing in report view ([af167f9](af167f91fe))
* journal auditing voucher print date to use posting_date ([7e5eab2](7e5eab261c))
* **journal-entry:** normalize exchange rate to float ([3f0032d](3f0032d793))
* js error if user does not have write permission for date field ([3944dfd](3944dfde31))
* lead time calculation for FG item ([5595602](5595602f24))
* make item name editable in RFQ ([dbe5846](dbe5846908))
* merge taxes in purchase receipt when get items from multiple purchase invoices ([#51422](https://github.com/frappe/erpnext/issues/51422)) ([d80c8d1](d80c8d14b0))
* missing depr_series causing error on jv creation (backport [#52085](https://github.com/frappe/erpnext/issues/52085)) ([#52206](https://github.com/frappe/erpnext/issues/52206)) ([78c4f01](78c4f01733))
* negative stock for purchase return ([220a528](220a528d7f))
* populate contact fields when creating quotation from customer ([55129e6](55129e697d))
* production plan not considering planning datetime when creating WO ([7e7b16b](7e7b16b23e))
* **profit and loss statement:** exclude non period columns ([28e8c40](28e8c40bfc))
* reset incoming rate in selling controller if there are changes in item ([024e7b0](024e7b01ac))
* **RFQ:** render email templates for preview and sending ([687a80d](687a80d74c))
* **stock:** add stock recon opening stock condition ([f9a8fc1](f9a8fc1f2d))
* **stock:** fetch batch wise valuation rate in get_items ([b132e3f](b132e3f22a))
* **stock:** ignore packing slip while cancelling the sales invoice ([f425f89](f425f89a26))
* **stock:** include subcontracting order qty while calculating the bin qty ([de244e0](de244e0af7))
* **stock:** remove is_return condition on pos batch qty calculation ([9dcaf38](9dcaf38142))
* **stock:** set incoming_rate with lcv rate for internal purchase ([f462639](f462639aa0))
* **subcontracting:** include item bom in supplied items grouping key ([95c4b8d](95c4b8de06))
* test cases ([e74389f](e74389f01c))
* validate over ordering of quotation ([e7ace8e](e7ace8e620))
* validation when more than one FG items in repack stock entry ([a2d302b](a2d302b3fa))
* zero valuation rate if returning from different warehouse ([8ce51b2](8ce51b2f80))

### Features

* clear demo data from desktop screen (backport [#52128](https://github.com/frappe/erpnext/issues/52128)) ([#52147](https://github.com/frappe/erpnext/issues/52147)) ([05e30dc](05e30dc011))
* **credit-note:** add checkbox to set valuation rate as zero for expired batch ([b84fd46](b84fd46841))
* **delivery-note:** add status indicator when document is partially billed ([6048add](6048add4c0))
* document naming rule will now use posting date of the document ([b03494b](b03494bb67))
* **Transaction Deletion Record:** Editable "DocTypes To Delete" List with CSV import/export ([#50592](https://github.com/frappe/erpnext/issues/50592)) ([4963261](4963261dc8))
2026-02-04 04:29:22 +00:00
ruthra kumar
e8e9fb25fe Merge pull request #52347 from frappe/version-16-hotfix
chore: release v16
2026-02-04 09:57:57 +05:30
rohitwaghchaure
4a7e2742ec Merge pull request #52388 from frappe/mergify/bp/version-16-hotfix/pr-51422
fix: merge taxes in purchase receipt when get items from multiple purchase invoices (backport #51422)
2026-02-03 22:53:40 +05:30
rohitwaghchaure
55d5d6535b Merge pull request #52391 from frappe/mergify/bp/version-16-hotfix/pr-51898
fix: group item wise tax details by tax row (backport #51898)
2026-02-03 22:52:37 +05:30
rohitwaghchaure
b8ac04fb54 Merge branch 'version-16' into version-16-hotfix 2026-02-03 22:50:07 +05:30
ravibharathi656
45e4c04830 fix: group item wise tax details by tax row
(cherry picked from commit 57bd1facf5)
2026-02-03 15:38:48 +00:00
NaviN
d80c8d14b0 fix: merge taxes in purchase receipt when get items from multiple purchase invoices (#51422)
* fix: merge taxes in purchase receipt when get items from multiple purchase invoices

* fix: make merge tax configurable

* chore: follow standard merge taxes method

* chore: follow standard merge taxes method

(cherry picked from commit 6fde0a6261)
2026-02-03 15:34:03 +00:00
mergify[bot]
66e47f5651 Merge pull request #52380 from frappe/mergify/bp/version-16-hotfix/pr-52278 2026-02-03 15:32:58 +00:00
ruthra kumar
a3e8af19a6 Merge pull request #52379 from frappe/mergify/bp/version-16-hotfix/pr-51651
fix: correct exchange gain loss in ppr (backport #51651)
2026-02-03 20:59:41 +05:30
Mihir Kandoi
9b498a8da8 Merge pull request #52385 from frappe/mergify/bp/version-16-hotfix/pr-52259
fix(stock): include subcontracting order qty while calculating the bin qty (backport #52259)
2026-02-03 20:48:37 +05:30
Mihir Kandoi
25389be340 Merge pull request #52382 from frappe/mergify/bp/version-16-hotfix/pr-52374
fix(stock): fetch batch wise valuation rate in get_items (backport #52374)
2026-02-03 20:34:37 +05:30
Sudharsanan11
de244e0af7 fix(stock): include subcontracting order qty while calculating the bin qty
(cherry picked from commit de8f8ef9f4)
2026-02-03 14:55:27 +00:00
kavin-114
b132e3f22a fix(stock): fetch batch wise valuation rate in get_items
(cherry picked from commit c5df570262)
2026-02-03 14:47:52 +00:00
ruthra kumar
670fd79e38 Merge pull request #52377 from frappe/mergify/bp/version-16-hotfix/pr-52314
fix(journal-entry): normalize exchange rate to float (backport #52314)
2026-02-03 20:10:03 +05:30
ravibharathi656
e09406d085 fix: correct exchange gain loss in ppr
(cherry picked from commit 02e96039ac)
2026-02-03 14:35:58 +00:00
rohitwaghchaure
3bc348d6f0 Merge pull request #52376 from frappe/mergify/bp/version-16-hotfix/pr-52375
fix: zero valuation rate if returning from different warehouse (backport #52369) (backport #52375)
2026-02-03 20:04:39 +05:30
Dharanidharan2813
3f0032d793 fix(journal-entry): normalize exchange rate to float
(cherry picked from commit be0040ddc7)
2026-02-03 14:17:24 +00:00
ruthra kumar
163b848455 Merge pull request #52368 from frappe/mergify/bp/version-16-hotfix/pr-52320
fix: correct Sales Tax Template sidebar link to proper DocType (backport #52320)
2026-02-03 19:44:26 +05:30
Rohit Waghchaure
8ce51b2f80 fix: zero valuation rate if returning from different warehouse
(cherry picked from commit 28929df0e8)
(cherry picked from commit eb2119e292)
2026-02-03 13:59:59 +00:00
ruthra kumar
422b37332e Merge pull request #52367 from frappe/mergify/bp/version-16-hotfix/pr-52279
fix(profit and loss statement): exclude non period columns (backport #52279)
2026-02-03 17:47:37 +05:30
Luis Mendoza
4c14e74a12 fix: correct Sales Tax Template sidebar link to proper DocType
(cherry picked from commit 06a7c85c93)
2026-02-03 12:05:37 +00:00
ravibharathi656
28e8c40bfc fix(profit and loss statement): exclude non period columns
(cherry picked from commit 6180e5eb53)
2026-02-03 12:00:00 +00:00
ruthra kumar
660fc8f76a Merge pull request #52365 from frappe/mergify/bp/version-16-hotfix/pr-52160
fix(stock): remove is_return condition on pos batch qty calculation (backport #52160)
2026-02-03 17:19:50 +05:30
ruthra kumar
22456a5857 Merge pull request #52362 from frappe/mergify/bp/version-16-hotfix/pr-51997
Add partially billed status indicator (backport #51997)
2026-02-03 17:19:31 +05:30
kavin-114
76e0eb00a5 test: add unit test case for pos reserved with return qty
(cherry picked from commit 12ec997027)
2026-02-03 11:11:50 +00:00
kavin-114
9dcaf38142 fix(stock): remove is_return condition on pos batch qty calculation
(cherry picked from commit 2c19c1fd06)
2026-02-03 11:11:50 +00:00
Dharanidharan2813
6048add4c0 feat(delivery-note): add status indicator when document is partially billed
(cherry picked from commit 7767000ccf)
2026-02-03 10:59:20 +00:00
rohitwaghchaure
0552b48328 Merge pull request #52356 from frappe/mergify/bp/version-16-hotfix/pr-52338
fix: negative stock for purchase return (backport #52338)
2026-02-03 16:16:28 +05:30
ruthra kumar
193b29d5fc Merge pull request #52350 from frappe/mergify/bp/version-16-hotfix/pr-52339
chore: rename icons (backport #52339)
2026-02-03 16:13:06 +05:30
Rohit Waghchaure
220a528d7f fix: negative stock for purchase return
(cherry picked from commit 77893933a2)
2026-02-03 10:25:10 +00:00
ruthra kumar
e087a8b179 Merge pull request #52353 from frappe/mergify/bp/version-16-hotfix/pr-52345
ci: skip svg (backport #52345)
2026-02-03 15:41:53 +05:30
ruthra kumar
d7067f6b7a ci: skip svg
(cherry picked from commit e565d2283e)
2026-02-03 10:11:12 +00:00
Shllokkk
e53ccd0745 fix: move company field to first position in sales invoice, purchase invoice, sales order, purchase order and journal entry
(cherry picked from commit 8e9365eb3b)
2026-02-03 10:04:56 +00:00
sokumon
e264d8e2d6 chore: rename icons
(cherry picked from commit 2d312bcfe8)
2026-02-03 10:02:54 +00:00
ruthra kumar
8b2559ab0c Merge pull request #52337 from frappe/mergify/bp/version-16-hotfix/pr-52280
fix(stock): ignore packing slip while cancelling the sales invoice (backport #52280)
2026-02-03 13:58:59 +05:30
Sudharsanan11
f425f89a26 fix(stock): ignore packing slip while cancelling the sales invoice
(cherry picked from commit c58887b44a)
2026-02-03 08:25:04 +00:00
ruthra kumar
e3bf84c572 Merge pull request #52321 from frappe/mergify/bp/version-16-hotfix/pr-50592
feat(Transaction Deletion Record): Editable "DocTypes To Delete" List with CSV import/export (backport #50592)
2026-02-03 13:50:00 +05:30
ruthra kumar
e2b88218ec Merge pull request #52330 from frappe/mergify/bp/version-16-hotfix/pr-51655
fix: include credit notes in project gross margin calculation (backport #51655)
2026-02-03 12:19:28 +05:30
ravibharathi656
e755a4ad98 fix: include credit notes in project gross margin calculation
(cherry picked from commit a378fee8e0)
2026-02-03 06:07:49 +00:00
ruthra kumar
d2ea428030 chore: resolve conflict 2026-02-03 10:38:39 +05:30
Mihir Kandoi
496956f08f Merge pull request #52324 from frappe/mergify/bp/version-16-hotfix/pr-52184
fix(subcontracting): include item bom in supplied items grouping key (backport #52184)
2026-02-03 09:24:00 +05:30
Sudharsanan11
a3190dd556 test(subcontracting): add test for consumed_qty calculation with similar finished goods
(cherry picked from commit 4d9412181c)
2026-02-03 03:40:18 +00:00
Sudharsanan11
95c4b8de06 fix(subcontracting): include item bom in supplied items grouping key
(cherry picked from commit 0d372a62a1)
2026-02-03 03:40:18 +00:00
Henning Wendtland
4963261dc8 feat(Transaction Deletion Record): Editable "DocTypes To Delete" List with CSV import/export (#50592)
* feat: add editable DocTypes To Delete list with import/export

Add user control over transaction deletion with reviewable and reusable deletion templates.

- New "DocTypes To Delete" table allows users to review and customize what will be deleted before submission
- Import/Export CSV templates for reusability across environments
- Company field rule: only filter by company if field is specifically named "company", otherwise delete all records
- Child tables (istable=1) automatically excluded from selection
- "Remove Zero Counts" helper button to clean up list
- Backward compatible with existing deletion records

* refactor: improve Transaction Deletion Record code quality

- Remove unnecessary chatty comments from AI-generated code
- Add concise docstrings to all new methods
- Remove redundant @frappe.whitelist() decorators from internal methods
- Improve CSV import validation (header check, child table filtering)
- Add better error feedback with consolidated skip messages
- Reorder form fields: To Delete list now appears before Excluded list
- Add conditional visibility for Summary table (legacy records only)
- Improve architectural clarity: single API entry point per feature

Technical improvements:
- export_to_delete_template_method and import_to_delete_template_method
  are now internal helpers without whitelist decorators
- CSV import now validates format and provides detailed skip reasons
- Summary table only shows for submitted records without To Delete list
- Maintains backward compatibility for existing deletion records

* fix: field order

* test: fix broken tests and add new ones

* fix: adapt create_transaction_deletion_request

* test: fix assertRaises trigger

* fix: conditionally execute Transaction Deletion pre-tasks based on selected DocTypes

* refactor: replace boolean task flags with status fields

* fix: remove UI comment

* fix: don't allow virtual doctype selection and improve protected Doctype List

* fix: replace outdated frappe.db.sql by frappe.qb

* feat: add support for multiple company fields

* fix: autofill comapny field, add docstrings, filter for company_field

* fix: add edge case handling for update_naming_series and add tests for prefix extraction

* fix: use redis for running deletion validation, check per doctype instead of company

(cherry picked from commit 0fb37ad792)

# Conflicts:
#	erpnext/patches.txt
2026-02-03 00:49:04 +00:00
mergify[bot]
81e65757ee fix: duplicate account number (Indonesia COA) (backport #52080) (#52317)
Co-authored-by: Apriliansyah Idris <apriliansyahidris@gmail.com>
fix: duplicate account number (Indonesia COA) (#52080)
2026-02-02 19:09:22 +00:00
rohitwaghchaure
78e581154b Merge pull request #52312 from frappe/mergify/bp/version-16-hotfix/pr-52303
fix: batch selector not working if Use Legacy (Client side) Reactivity disabled (backport #52303)
2026-02-02 23:32:40 +05:30
Rohit Waghchaure
2a3642b55a fix: batch selector not working if Use Legacy (Client side) Reactivity disabled
(cherry picked from commit d1cba1073f)
2026-02-02 16:32:18 +00:00
Mihir Kandoi
beaa76ca16 Merge pull request #52311 from frappe/mergify/bp/version-16-hotfix/pr-52246 2026-02-02 21:01:34 +05:30
Mihir Kandoi
9997185071 Merge pull request #52246 from mihir-kandoi/st58765
(cherry picked from commit 135a433018)
2026-02-02 15:15:38 +00:00
Mihir Kandoi
681c0b5917 Merge pull request #52308 from frappe/mergify/bp/version-16-hotfix/pr-52304
fix: populate contact fields when creating quotation from customer (backport #52304)
2026-02-02 20:36:19 +05:30
Mihir Kandoi
4a0e04ee20 Merge pull request #52306 from frappe/mergify/bp/version-16-hotfix/pr-52281
fix(stock): add stock recon opening stock condition (backport #52281)
2026-02-02 20:24:00 +05:30
Mihir Kandoi
55129e697d fix: populate contact fields when creating quotation from customer
(cherry picked from commit 75b2c2c83d)
2026-02-02 14:46:36 +00:00
kavin-114
f9a8fc1f2d fix(stock): add stock recon opening stock condition
(cherry picked from commit f3eb6c7078)
2026-02-02 14:37:36 +00:00
Mihir Kandoi
091ff81ae5 Merge pull request #52302 from frappe/mergify/bp/version-16-hotfix/pr-52286
fix: reset incoming rate in selling controller if there are changes i… (backport #52286)
2026-02-02 20:05:37 +05:30
Mihir Kandoi
024e7b01ac fix: reset incoming rate in selling controller if there are changes in item
(cherry picked from commit 2d6b43fd54)
2026-02-02 14:18:20 +00:00
ruthra kumar
a0156b61b8 Merge pull request #52284 from frappe/mergify/bp/version-16-hotfix/pr-52200
fix(accounts): correct date in Journal Auditing Voucher print format (backport #52200)
2026-02-02 12:55:41 +05:30
Tamal Majumdar
7e5eab261c fix: journal auditing voucher print date to use posting_date
(cherry picked from commit 43e2495df8)
2026-02-02 07:21:36 +00:00
ruthra kumar
63782e6355 Merge pull request #52282 from frappe/mergify/bp/version-16-hotfix/pr-51692
fix: correct spelling of Payment Reconciliation in Accounting (backport #51692)
2026-02-02 12:43:17 +05:30
nivithamerlin
c80b554cd7 fix: correct spelling of Payment Reconciliation in Accounting
(cherry picked from commit 35e53d28df)
2026-02-02 07:09:54 +00:00
Mihir Kandoi
7db88b210e Merge pull request #52276 from frappe/mergify/bp/version-16-hotfix/pr-52274 2026-02-02 10:24:07 +05:30
Mihir Kandoi
42d873f1d9 test: over ordering of quotation items
(cherry picked from commit 53e58f6678)
2026-02-02 04:38:13 +00:00
MochaMind
19c1dcc3dd chore: update POT file (#52264) 2026-02-01 15:07:28 +01:00
Mihir Kandoi
23e027b6be Merge pull request #52230 from frappe/mergify/bp/version-16-hotfix/pr-52222
fix: validate over ordering of quotation (backport #52222)
2026-01-31 20:26:44 +05:30
Mihir Kandoi
d91cfa76e6 Merge pull request #52257 from frappe/mergify/bp/version-16-hotfix/pr-52253 2026-01-31 20:19:18 +05:30
Mihir Kandoi
a29df7be67 chore: resolve conflicts 2026-01-31 20:13:26 +05:30
Mihir Kandoi
dbe5846908 fix: make item name editable in RFQ
(cherry picked from commit d9998a977c)
2026-01-31 14:34:24 +00:00
Mihir Kandoi
83fcb5d2d8 Merge pull request #52255 from frappe/mergify/bp/version-16-hotfix/pr-52252
fix: better fix for #51495 (backport #52252)
2026-01-31 19:52:45 +05:30
Mihir Kandoi
b8ab55fee8 fix: better fix for aac39b2671
(cherry picked from commit b24ae5e9a2)
2026-01-31 14:21:27 +00:00
rohitwaghchaure
4d03f4ebaa Merge pull request #52240 from frappe/mergify/bp/version-16-hotfix/pr-52232
fix: validation when more than one FG items in repack stock entry (backport #52232)
2026-01-31 17:54:08 +05:30
Rohit Waghchaure
a2d302b3fa fix: validation when more than one FG items in repack stock entry
(cherry picked from commit 6423ce2fa7)
2026-01-31 07:16:45 +00:00
Mihir Kandoi
b5321d42a3 Merge pull request #52234 from frappe/mergify/bp/version-16-hotfix/pr-52231
fix: item code not showing in report view (backport #52231)
2026-01-30 22:17:26 +05:30
UmakanthKaspa
af167f91fe fix: item code not showing in report view
(cherry picked from commit b20f57321f)
2026-01-30 16:46:26 +00:00
Mihir Kandoi
e74389f01c fix: test cases
(cherry picked from commit 36f1e3572c)
2026-01-30 14:00:52 +00:00
Mihir Kandoi
e7ace8e620 fix: validate over ordering of quotation
(cherry picked from commit 4cc306d2d8)

# Conflicts:
#	erpnext/patches.txt
2026-01-30 14:00:52 +00:00
Mihir Kandoi
e23e9b5d66 Merge pull request #52227 from frappe/mergify/bp/version-16-hotfix/pr-52226 2026-01-30 18:03:40 +05:30
Mihir Kandoi
136b2cfba5 fix: failing test cases
(cherry picked from commit d3f44a425c)
2026-01-30 12:18:10 +00:00
Mihir Kandoi
3b3738577d Merge pull request #52225 from frappe/mergify/bp/version-16-hotfix/pr-51433 2026-01-30 17:30:01 +05:30
Mihir Kandoi
1e646bd0ed Merge pull request #52224 from frappe/mergify/bp/version-16-hotfix/pr-52223
fix: allow sales invoice to be renamed (backport #52223)
2026-01-30 17:19:10 +05:30
Mihir Kandoi
02e6c49130 test: add test case
(cherry picked from commit e2c3d0fa94)
2026-01-30 11:41:46 +00:00
Mihir Kandoi
e9fa725030 chore: make feature opt in
(cherry picked from commit b8d4522ea1)
2026-01-30 11:41:46 +00:00
Mihir Kandoi
b03494bb67 feat: document naming rule will now use posting date of the document
(cherry picked from commit 22fd1a1cfd)
2026-01-30 11:41:45 +00:00
Mihir Kandoi
f7b915dfe6 fix: allow sales invoice to be renamed
(cherry picked from commit 95fdbe55f9)
2026-01-30 11:33:20 +00:00
Mihir Kandoi
0a5aac9ce7 Merge pull request #52218 from frappe/mergify/bp/version-16-hotfix/pr-52209
fix: add precision to rejected batch no qty calculation (backport #52209)
2026-01-30 12:21:50 +05:30
Mihir Kandoi
e3c62070d1 Merge pull request #52215 from frappe/mergify/bp/version-16-hotfix/pr-52213
fix: hide close button on WO if WO is completed (backport #52213)
2026-01-30 12:06:39 +05:30
Mihir Kandoi
b365444027 fix: add precision to rejected batch no qty calculation
(cherry picked from commit 838d245215)
2026-01-30 06:35:59 +00:00
Mihir Kandoi
0d1c30f3f0 fix: hide close button on WO if WO is completed
(cherry picked from commit 6e17ccf499)
2026-01-30 06:29:32 +00:00
Mihir Kandoi
d0b553dca3 Merge pull request #52212 from frappe/mergify/bp/version-16-hotfix/pr-52210
fix(barcode): failing request when item has both batch and serial (backport #52210)
2026-01-30 11:52:49 +05:30
Mihir Kandoi
e4cdd971c8 fix(barcode): failing request when item has both batch and serial
(cherry picked from commit 89f6f0f46f)
2026-01-30 06:17:41 +00:00
mergify[bot]
78c4f01733 fix: missing depr_series causing error on jv creation (backport #52085) (#52206)
fix: missing depr_series causing error on jv creation (#52085)

(cherry picked from commit b565dd3da8)

Co-authored-by: Dany Robert <rtdany10@gmail.com>
2026-01-29 23:30:29 +05:30
Mihir Kandoi
eac4978278 Merge pull request #52203 from frappe/mergify/bp/version-16-hotfix/pr-52201
fix: hide item_wise_tax_details table from print (backport #52201)
2026-01-29 21:58:37 +05:30
Mihir Kandoi
c619be989b fix: hide item_wise_tax_details table from print
(cherry picked from commit c38f884095)
2026-01-29 16:12:55 +00:00
rohitwaghchaure
64921fc1b5 Merge pull request #52197 from frappe/mergify/bp/version-16-hotfix/pr-52190
fix: lead time calculation for FG item (backport #52190)
2026-01-29 19:06:53 +05:30
rohitwaghchaure
6d8d502bbf Merge pull request #52192 from frappe/mergify/bp/version-16-hotfix/pr-52158
Add Landed Cost Voucher Amount in Internal Purchase Receipt (backport #52158)
2026-01-29 18:07:46 +05:30
Rohit Waghchaure
5595602f24 fix: lead time calculation for FG item
(cherry picked from commit 646688c291)
2026-01-29 12:29:39 +00:00
kavin-114
7042f2b8fb test: add unit test to check internal purchase with lcv
(cherry picked from commit dd4fd89ef8)
2026-01-29 12:02:50 +00:00
kavin-114
f462639aa0 fix(stock): set incoming_rate with lcv rate for internal purchase
(cherry picked from commit f0dccc3cd7)
2026-01-29 12:02:49 +00:00
Mihir Kandoi
14ba0f1cae Merge pull request #52183 from frappe/mergify/bp/version-16-hotfix/pr-52181
fix: js error if user does not have write permission for date field (backport #52181)
2026-01-29 15:42:29 +05:30
Mihir Kandoi
3944dfde31 fix: js error if user does not have write permission for date field
(cherry picked from commit 7f6f39f5e7)
2026-01-29 10:01:33 +00:00
ruthra kumar
16cc2b0a25 Merge pull request #52177 from frappe/mergify/bp/version-16-hotfix/pr-52173
New accounting icons (backport #52173)
2026-01-29 14:51:36 +05:30
Jacob Salvi
3394e1a126 refactor: new accounting icons (#52173)
* chore: new icons share-management

* chore: new accounting icons

* chore: trigger CI

---------

Co-authored-by: Soham Kulkarni <77533095+sokumon@users.noreply.github.com>
Co-authored-by: ruthra kumar <ruthra@erpnext.com>
(cherry picked from commit cdcf3fa593)
2026-01-29 09:13:39 +00:00
mergify[bot]
66086010fc fix(demo): removed toolbar eventlistener (backport #52171) (#52172)
Co-authored-by: Diptanil Saha <diptanil@frappe.io>
fix(demo): removed toolbar eventlistener (#52171)
2026-01-29 11:29:59 +05:30
Mihir Kandoi
195a2f3e74 Merge pull request #52168 from frappe/mergify/bp/version-16-hotfix/pr-52166
fix: production plan not considering planning datetime when creating WO (backport #52166)
2026-01-29 11:06:50 +05:30
Mihir Kandoi
7e7b16b23e fix: production plan not considering planning datetime when creating WO
(cherry picked from commit 4e19c7e8bd)
2026-01-29 05:20:59 +00:00
Aarol D'Souza
f4beb41df2 Merge pull request #52164 from frappe/mergify/bp/version-16-hotfix/pr-52092
fix(RFQ): render email templates for preview and sending (backport #52092)
2026-01-29 09:23:39 +05:30
AarDG10
4c4aa9bbdf ci: minor text correction
(cherry picked from commit 37cdae2f34)
2026-01-29 03:38:02 +00:00
AarDG10
687a80d74c fix(RFQ): render email templates for preview and sending
(cherry picked from commit 525b3960e1)
2026-01-29 03:38:01 +00:00
rohitwaghchaure
f01e0576b9 Merge pull request #52141 from frappe/mergify/bp/version-16-hotfix/pr-52007
Fix: Set Zero Rate for Standalone Credit Note with Expired Batch (backport #52007)
2026-01-28 19:46:10 +05:30
Frappe PR Bot
83a0d957ef chore(release): Bumped to Version 16.3.0
# [16.3.0](https://github.com/frappe/erpnext/compare/v16.2.0...v16.3.0) (2026-01-28)

### Features

* clear demo data from desktop screen (backport [#52128](https://github.com/frappe/erpnext/issues/52128))  ([#52150](https://github.com/frappe/erpnext/issues/52150)) ([554aeb9](554aeb94fd))
2026-01-28 12:51:32 +00:00
mergify[bot]
554aeb94fd feat: clear demo data from desktop screen (backport #52128) (#52150)
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Soham Kulkarni <77533095+sokumon@users.noreply.github.com>
2026-01-28 18:19:41 +05:30
mergify[bot]
05e30dc011 feat: clear demo data from desktop screen (backport #52128) (#52147)
Co-authored-by: Soham Kulkarni <77533095+sokumon@users.noreply.github.com>
2026-01-28 17:36:04 +05:30
kavin-114
40a3dabd30 test(credit-note): add unit test for zero valuation rate on expired batch
(cherry picked from commit 3460a7efb5)
2026-01-28 10:43:58 +00:00
kavin-114
0f9bf08685 fix(credit-note): set incoming rate as zero for expired batch
(cherry picked from commit e78c750b4e)
2026-01-28 10:43:58 +00:00
kavin-114
b84fd46841 feat(credit-note): add checkbox to set valuation rate as zero for expired batch
(cherry picked from commit 04cdf88715)
2026-01-28 10:43:58 +00:00
Frappe PR Bot
6209d633c2 chore(release): Bumped to Version 16.2.0
# [16.2.0](https://github.com/frappe/erpnext/compare/v16.1.0...v16.2.0) (2026-01-28)

### Bug Fixes

* **accounts:** correct base grand total and rounded total mismatch (backport [#51739](https://github.com/frappe/erpnext/issues/51739)) ([#52101](https://github.com/frappe/erpnext/issues/52101)) ([6115f8f](6115f8fb9a))
* **asset capitalization:** update total_asset_cost on asset capitalisation submission (backport [#52077](https://github.com/frappe/erpnext/issues/52077)) ([#52115](https://github.com/frappe/erpnext/issues/52115)) ([4f16956](4f1695616a))
* autofill warehouse for packed items ([881562f](881562fc37))
* Bin reserved qty for production for extra material transfer ([bf53133](bf53133f94))
* calculate weighted average rate for customer provided items in subcontracting inward order ([7120fbd](7120fbd14b))
* check the payment ledger entry has the dimension ([#51823](https://github.com/frappe/erpnext/issues/51823)) ([7342b25](7342b2551b))
* check the payment ledger entry has the dimension (backport [#51823](https://github.com/frappe/erpnext/issues/51823)) ([#52108](https://github.com/frappe/erpnext/issues/52108)) ([1927adb](1927adbd2e))
* create DN btn should not be shown if it cannot be created ([30e6b5d](30e6b5daac))
* **customer:** add customer group filters ([b1716bf](b1716bfeef))
* disable asset repair when status is fully depreciated ([13e4849](13e4849c43))
* Ensure paid_amount is always numeric before calling allocate_amount_to_references (backport [#50935](https://github.com/frappe/erpnext/issues/50935)) ([#52036](https://github.com/frappe/erpnext/issues/52036)) ([e9f3f0f](e9f3f0f445))
* force user to enter batch or serial for serial/batch items ([91199ea](91199ea9c9))
* handle parent level project change ([0b7684e](0b7684eccd))
* handle undefined bank_transaction_mapping in quick entry ([22a8d48](22a8d483e1))
* job cards should not be deleted on close of WO ([7c2bbe0](7c2bbe0d82))
* **journal-entry:** prevent submit failure due to double background queuing (backport [#52083](https://github.com/frappe/erpnext/issues/52083)) ([#52087](https://github.com/frappe/erpnext/issues/52087)) ([46e6096](46e6096fe3))
* negative stock for purchae return ([fb3fb8c](fb3fb8ca5e))
* not able to complete the job card ([f486071](f486071cf6))
* **payment entry:** update currency symbol (backport [#51956](https://github.com/frappe/erpnext/issues/51956)) ([#52094](https://github.com/frappe/erpnext/issues/52094)) ([b1b1f25](b1b1f25bb1))
* **project:** add missing counter to project update naming series ([37a237d](37a237dbb7))
* rejected qty in PR doesn't consider conversion factor ([c7c7a55](c7c7a55a58))
* **sales order:** set project at item level from parent ([27fe754](27fe754a7d))
* **shipment:** user contact validation to use full name ([0a56647](0a56647a61))
* show everything else besides other party specific item ([7575861](75758610dd))
* show message if image is removed from item description (backport [#52088](https://github.com/frappe/erpnext/issues/52088)) ([#52097](https://github.com/frappe/erpnext/issues/52097)) ([53b7375](53b73757ed))
* **stock:** use purchase UOM in Supplier Quotation items ([f97b850](f97b850077))
* strip whitespace in customer_name ([41e6687](41e6687b35))
* swedish_address_template ([cff09b7](cff09b71cc))
* tests ([6fa60d2](6fa60d2f1a))
* throw if item order field is not set in subcontracting controller ([264855e](264855e5e1))
* unable to split asset from capitalization (backport [#52020](https://github.com/frappe/erpnext/issues/52020)) ([#52114](https://github.com/frappe/erpnext/issues/52114)) ([c1cc1db](c1cc1dbd27)), closes [#52016](https://github.com/frappe/erpnext/issues/52016) [#52016](https://github.com/frappe/erpnext/issues/52016)
* UOM of item not fetching in BOM ([1b9a93f](1b9a93f90e))
* update country_wise_tax.json for Algerian Taxes (backport [#51878](https://github.com/frappe/erpnext/issues/51878)) ([#52038](https://github.com/frappe/erpnext/issues/52038)) ([8946f12](8946f12677))
* validation to check at-least one raw material for manufacture entry ([d067e37](d067e37ab6))
* warehouse permissions in MR incorrectly ignored ([504c84e](504c84e28a))

### Features

* **accounts:** retain filters when switching between financial statements (backport [#51668](https://github.com/frappe/erpnext/issues/51668)) ([#52117](https://github.com/frappe/erpnext/issues/52117)) ([9ed3801](9ed3801d06))
2026-01-28 04:15:59 +00:00
ruthra kumar
095fe65bef Merge pull request #52103 from frappe/version-16-hotfix
chore: release v16
2026-01-28 09:44:30 +05:30
Mihir Kandoi
b285548a46 Merge pull request #52124 from frappe/mergify/bp/version-16-hotfix/pr-51961
fix(sales order): set project at item level from parent (backport #51961)
2026-01-27 21:55:49 +05:30
SowmyaArunachalam
0b7684eccd fix: handle parent level project change
(cherry picked from commit 543b6e51c0)
2026-01-27 16:24:22 +00:00
SowmyaArunachalam
574460c009 chore: use frappe.model.set_value
(cherry picked from commit 3b27f49d79)
2026-01-27 16:24:22 +00:00
SowmyaArunachalam
27fe754a7d fix(sales order): set project at item level from parent
(cherry picked from commit 9e51701e2a)
2026-01-27 16:24:22 +00:00
Mihir Kandoi
531fe59a24 Merge pull request #52122 from frappe/mergify/bp/version-16-hotfix/pr-52084
fix(shipment): user contact validation to use full name (backport #52084)
2026-01-27 21:29:22 +05:30
harrishragavan
0a56647a61 fix(shipment): user contact validation to use full name
(cherry picked from commit 3c6eb9a531)
2026-01-27 15:57:22 +00:00
Soham Kulkarni
c2f666b7a3 Merge pull request #52120 from frappe/mergify/bp/version-16-hotfix/pr-52119 2026-01-27 21:11:42 +05:30
sokumon
c1bbe1104e chore: change color of icons in accounting folders
(cherry picked from commit 6f9cd8c261)
2026-01-27 15:15:16 +00:00
ruthra kumar
2c86327c7e Merge pull request #52112 from frappe/mergify/bp/version-16-hotfix/pr-52106
fix: show everything else besides other party specific item (backport #52106)
2026-01-27 20:08:54 +05:30
ruthra kumar
31385a1f91 Merge pull request #52118 from frappe/mergify/bp/version-16-hotfix/pr-51894
refactor: accounting workspace (backport #51894)
2026-01-27 20:08:29 +05:30
mergify[bot]
4f1695616a fix(asset capitalization): update total_asset_cost on asset capitalisation submission (backport #52077) (#52115)
fix(asset capitalization): update total_asset_cost on asset capitalisation submission (#52077)

fix(asset capitalization): update total_asset_cost on asset capitalization submission

(cherry picked from commit ec41f1b0f5)

Co-authored-by: NaviN <118178330+Navin-S-R@users.noreply.github.com>
2026-01-27 19:31:52 +05:30
mergify[bot]
9ed3801d06 feat(accounts): retain filters when switching between financial statements (backport #51668) (#52117) 2026-01-27 19:03:44 +05:30
ruthra kumar
61ad67ec29 refactor: reuse icon for invoicing
(cherry picked from commit f0332c4dc7)
2026-01-27 13:15:37 +00:00
ruthra kumar
735b9da6b1 refactor: rename Accounts to Accounting
(cherry picked from commit fb9656b975)
2026-01-27 13:15:36 +00:00
ruthra kumar
fe7a797156 refactor: link payments dashboard to sidebar
(cherry picked from commit f7abf9c1da)
2026-01-27 13:15:36 +00:00
ruthra kumar
f951dd180a refactor: payments dashboard
(cherry picked from commit 99406ccc15)
2026-01-27 13:15:36 +00:00
ruthra kumar
8e871796d4 refactor: shed duplicates from invoicing sidebar
(cherry picked from commit 1295d7aa30)
2026-01-27 13:15:36 +00:00
ruthra kumar
c88ee50c34 refactor: reorder accounts setup sidebar
(cherry picked from commit 5a680d5037)
2026-01-27 13:15:35 +00:00
ruthra kumar
e49f6f4f09 refactor: introduce setup icon and reorder
(cherry picked from commit 7528d42187)
2026-01-27 13:15:35 +00:00
ruthra kumar
72942e6b8c refactor: payments sidebar and icon
(cherry picked from commit cbdc945287)
2026-01-27 13:15:35 +00:00
ruthra kumar
fdcf037f1b chore: rename accounting to invoicing
(cherry picked from commit faf0dcb102)
2026-01-27 13:15:35 +00:00
ruthra kumar
9e0c606b95 chore: remove accounting icon
(cherry picked from commit 5e02b4009e)
2026-01-27 13:15:34 +00:00
ruthra kumar
6b9f2ddf83 refactor: invoicing icon
(cherry picked from commit 8125f9035c)
2026-01-27 13:15:34 +00:00
mergify[bot]
c1cc1dbd27 fix: unable to split asset from capitalization (backport #52020) (#52114)
fix: unable to split asset from capitalization (#52020)

* fix: Allow split asset from capitalized composite asset (fixes #52016)

* test: Add test case for splitting asset created via capitalization (fixes #52016)

* docs: Add docstring to before_submit method

* fix: Remove unused variable and fix UTF-8 encoding in asset files

* fix: Remove UTF-8 BOM from asset.py to fix linting

* fix: Fix test_split_asset_created_via_capitalization test parameters

* fix: Remove unused import create_item

* chore: remove unnecessary comments

Removed validation comments for composite asset capitalization in before_submit method.

---------


(cherry picked from commit 7e9647f3f0)

Co-authored-by: madelyngamble2 <madelyngamble2@gmail.com>
Co-authored-by: Khushi Rawat <142375893+khushi8112@users.noreply.github.com>
2026-01-27 18:04:19 +05:30
Mihir Kandoi
de584e2e8d test: fix tests
(cherry picked from commit 5eeebbde7f)
2026-01-27 10:57:40 +00:00
Mihir Kandoi
75758610dd fix: show everything else besides other party specific item
(cherry picked from commit 71371b0ba5)
2026-01-27 10:57:40 +00:00
ruthra kumar
1927adbd2e fix: check the payment ledger entry has the dimension (backport #51823) (#52108)
fix: check the payment ledger entry has the dimension (#51823)

* fix: check the payment ledger entry has the dimension

* fix: add project in payment ledger entry

(cherry picked from commit efa3973b77)

Co-authored-by: Vishnu Priya Baskaran <145791817+ervishnucs@users.noreply.github.com>
2026-01-27 16:25:33 +05:30
Vishnu Priya Baskaran
7342b2551b fix: check the payment ledger entry has the dimension (#51823)
* fix: check the payment ledger entry has the dimension

* fix: add project in payment ledger entry

(cherry picked from commit efa3973b77)
2026-01-27 10:27:23 +00:00
mergify[bot]
6115f8fb9a fix(accounts): correct base grand total and rounded total mismatch (backport #51739) (#52101)
Co-authored-by: Dharanidharan S <dharanidharans1328@gmail.com>
fix(accounts): correct base grand total and rounded total mismatch (#51739)
2026-01-27 14:23:10 +05:30
mergify[bot]
53b73757ed fix: show message if image is removed from item description (backport #52088) (#52097)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-01-27 14:09:02 +05:30
rohitwaghchaure
dee3357da2 Merge pull request #52075 from frappe/mergify/bp/version-16-hotfix/pr-52062
fix: not able to complete the job card (backport #52062)
2026-01-27 13:03:43 +05:30
mergify[bot]
b1b1f25bb1 fix(payment entry): update currency symbol (backport #51956) (#52094)
Co-authored-by: NaviN <118178330+Navin-S-R@users.noreply.github.com>
fix(payment entry): update currency symbol (#51956)
2026-01-27 06:34:19 +00:00
mergify[bot]
46e6096fe3 fix(journal-entry): prevent submit failure due to double background queuing (backport #52083) (#52087)
Co-authored-by: V Shankar <shankarv292002@gmail.com>
fix(journal-entry): prevent submit failure due to double background queuing (#52083)
2026-01-27 05:53:05 +00:00
Rohit Waghchaure
f486071cf6 fix: not able to complete the job card
(cherry picked from commit 696ea68f86)
2026-01-26 17:45:21 +00:00
Mihir Kandoi
b541fbbd60 Merge pull request #52066 from frappe/mergify/bp/version-16-hotfix/pr-52064
fix: strip whitespace in customer_name (backport #52064)
2026-01-26 15:32:27 +05:30
Shankarv19bcr
41e6687b35 fix: strip whitespace in customer_name
(cherry picked from commit e5ba0e6401)
2026-01-26 09:47:06 +00:00
MochaMind
55ce40de37 chore: update POT file (#52058) 2026-01-25 20:37:09 +01:00
ruthra kumar
6f21ab5d9a Merge pull request #52040 from frappe/mergify/bp/version-16-hotfix/pr-51670
fix: handle undefined bank_transaction_mapping in quick entry (backport #51670)
2026-01-25 13:11:28 +05:30
ruthra kumar
7c81672b36 Merge pull request #52041 from frappe/mergify/bp/version-16-hotfix/pr-51691
refactor: not warn when filter field is missing in FS reports (backport #51691)
2026-01-25 13:10:02 +05:30
ruthra kumar
d0faff09cb Merge pull request #52055 from frappe/mergify/bp/version-16-hotfix/pr-52050
fix: swedish_address_template (backport #52050)
2026-01-25 13:08:42 +05:30
mahsem
cff09b71cc fix: swedish_address_template
(cherry picked from commit 334e8ada30)
2026-01-25 05:22:41 +00:00
rohitwaghchaure
b180e3b78c Merge pull request #52053 from frappe/mergify/bp/version-16-hotfix/pr-52043
fix: UOM of item not fetching in BOM (backport #52043)
2026-01-25 10:50:38 +05:30
rohitwaghchaure
6ba2795043 Merge pull request #51905 from frappe/mergify/bp/version-16-hotfix/pr-51900
fix: validation to check at-least one raw material for manufacture entry (backport #51900)
2026-01-25 10:45:11 +05:30
Rohit Waghchaure
1b9a93f90e fix: UOM of item not fetching in BOM
(cherry picked from commit ba8eadda52)
2026-01-25 05:15:05 +00:00
rohitwaghchaure
1f1428f00a Merge branch 'version-16-hotfix' into mergify/bp/version-16-hotfix/pr-51900 2026-01-24 13:49:24 +05:30
Abdeali Chharchhoda
606ac2a91a refactor: not warn when filter field is missing in FS reports
(cherry picked from commit d905f78984)
2026-01-24 07:08:08 +00:00
Abdeali Chharchhoda
9a175757ac refactor: use console.error for error logging in Plaid integration
(cherry picked from commit 9322095786)
2026-01-24 07:07:48 +00:00
Abdeali Chharchhoda
22a8d483e1 fix: handle undefined bank_transaction_mapping in quick entry
(cherry picked from commit 8a1b8259bd)
2026-01-24 07:07:47 +00:00
Abdeali Chharchhoda
7abaaed957 refactor: remove redundant onload function for bank mapping table
(cherry picked from commit 7c7ba0154a)
2026-01-24 07:07:47 +00:00
mergify[bot]
8946f12677 fix: update country_wise_tax.json for Algerian Taxes (backport #51878) (#52038)
fix: update country_wise_tax.json for Algerian Taxes (#51878)

* Algeria chart of accounts

Algeria chart of accounts

* Update Algeria Chart Of Account

* Algeria chart of account

* Algeria Chart of Account

Algeria Chart of Account

* Modify Algeria tax entries in country_wise_tax.json

Updated tax rates and account names for Algeria.

* Rename account for Algeria tax from VAT to TVA

Rename account for Algeria tax from VAT to TVA

(cherry picked from commit e810cd8440)

Co-authored-by: HALFWARE <contact@half-ware.com>
2026-01-24 06:48:16 +00:00
mergify[bot]
e9f3f0f445 fix: Ensure paid_amount is always numeric before calling allocate_amount_to_references (backport #50935) (#52036)
fix: Ensure paid_amount is always numeric before calling allocate_amount_to_references (#50935)

fix: ensure paid_amount is not null in allocate_party_amount_against_ref_docs
(cherry picked from commit 50b3396064)

Co-authored-by: El-Shafei H. <el.shafei.developer@gmail.com>
2026-01-24 12:03:34 +05:30
ruthra kumar
ba38bc3eaf Merge pull request #52026 from frappe/mergify/bp/version-16-hotfix/pr-51756
fix: disable asset repair when status is fully depreciated (backport #51756)
2026-01-24 09:46:53 +05:30
rohitwaghchaure
b4572978f9 Merge pull request #52031 from frappe/mergify/bp/version-16-hotfix/pr-52024
fix: Bin reserved qty for production for extra material transfer (backport #52024)
2026-01-24 08:47:44 +05:30
Rohit Waghchaure
bf53133f94 fix: Bin reserved qty for production for extra material transfer
(cherry picked from commit f5378b6573)
2026-01-23 15:45:46 +00:00
Mihir Kandoi
23c902c317 Merge pull request #52022 from frappe/mergify/bp/version-16-hotfix/pr-51999
fix(stock): use purchase UOM in Supplier Quotation items (backport #51999)
2026-01-23 19:21:12 +05:30
SowmyaArunachalam
13e4849c43 fix: disable asset repair when status is fully depreciated
(cherry picked from commit 66fe1aa85d)
2026-01-23 11:38:39 +00:00
Bharathidhasan06
f97b850077 fix(stock): use purchase UOM in Supplier Quotation items
(cherry picked from commit 2606ca6fa9)
2026-01-23 08:34:36 +00:00
rohitwaghchaure
b3e12f9acb Merge pull request #52015 from frappe/mergify/bp/version-16-hotfix/pr-52006
fix: negative stock for purchase return (backport #52006)
2026-01-23 13:22:36 +05:30
Rohit Waghchaure
fb3fb8ca5e fix: negative stock for purchae return
(cherry picked from commit d68a04ad16)
2026-01-23 06:04:02 +00:00
rohitwaghchaure
e2232340dc Merge pull request #52005 from frappe/mergify/bp/version-16-hotfix/pr-51989
fix: autofill warehouse for packed items (backport #51989)
2026-01-22 23:56:30 +05:30
Sudharsanan11
881562fc37 fix: autofill warehouse for packed items
(cherry picked from commit 3f8a0a4833)
2026-01-22 17:28:22 +00:00
Mihir Kandoi
dcd6279d47 Merge pull request #51983 from frappe/mergify/bp/version-16-hotfix/pr-51908
fix: throw if item order field is not set in subcontracting controller (backport #51908)
2026-01-22 10:53:05 +05:30
Mihir Kandoi
041a7c5a57 Merge pull request #51982 from frappe/mergify/bp/version-16-hotfix/pr-51929
fix: calculate weighted average rate for customer provided items in subcontracting inward order (backport #51929)
2026-01-22 10:51:54 +05:30
Mihir Kandoi
27ffef41a7 Merge pull request #51980 from frappe/mergify/bp/version-16-hotfix/pr-51966
fix(customer): add customer group filters (backport #51966)
2026-01-22 10:42:45 +05:30
Mihir Kandoi
9038f19fb6 Merge pull request #51978 from frappe/mergify/bp/version-16-hotfix/pr-51967
fix(project): add missing counter to project update naming series (backport #51967)
2026-01-22 10:38:33 +05:30
ljain112
264855e5e1 fix: throw if item order field is not set in subcontracting controller
(cherry picked from commit d256365f4a)
2026-01-22 05:05:22 +00:00
ljain112
7120fbd14b fix: calculate weighted average rate for customer provided items in subcontracting inward order
(cherry picked from commit 37ee560eae)
2026-01-22 05:02:16 +00:00
SowmyaArunachalam
b1716bfeef fix(customer): add customer group filters
(cherry picked from commit 1e3db9f916)
2026-01-22 04:57:04 +00:00
ravibharathi656
37a237dbb7 fix(project): add missing counter to project update naming series
(cherry picked from commit 49e64f4e1c)
2026-01-22 04:53:10 +00:00
Mihir Kandoi
be9112b6fc Merge pull request #51972 from frappe/mergify/bp/version-16-hotfix/pr-51968 2026-01-22 09:04:25 +05:30
Mihir Kandoi
2f240f3553 Merge pull request #51970 from frappe/mergify/bp/version-16-hotfix/pr-51964
fix: create DN btn should not be shown if it cannot be created (backport #51964)
2026-01-21 22:54:50 +05:30
Mihir Kandoi
c7c7a55a58 fix: rejected qty in PR doesn't consider conversion factor
(cherry picked from commit 343ee9695b)
2026-01-21 17:21:00 +00:00
Mihir Kandoi
30e6b5daac fix: create DN btn should not be shown if it cannot be created
(cherry picked from commit 70ec977cb2)
2026-01-21 17:09:48 +00:00
Mihir Kandoi
0b5cc039b6 Merge pull request #51962 from frappe/mergify/bp/version-16-hotfix/pr-51958
fix!: force user to enter batch or serial for serial/batch items (backport #51958)
2026-01-21 16:38:31 +05:30
Mihir Kandoi
6fa60d2f1a fix: tests
(cherry picked from commit 035b3cb61e)
2026-01-21 10:53:46 +00:00
Mihir Kandoi
91199ea9c9 fix: force user to enter batch or serial for serial/batch items
(cherry picked from commit 7170a1bd78)
2026-01-21 10:53:46 +00:00
Mihir Kandoi
e23ba0e852 Merge pull request #51960 from frappe/mergify/bp/version-16-hotfix/pr-51947
fix: job cards should not be deleted on close of WO (backport #51947)
2026-01-21 16:03:09 +05:30
Mihir Kandoi
7c2bbe0d82 fix: job cards should not be deleted on close of WO
(cherry picked from commit c919b1de38)
2026-01-21 10:17:16 +00:00
Mihir Kandoi
0a2234a814 Merge pull request #51951 from frappe/mergify/bp/version-16-hotfix/pr-51948
fix: warehouse permissions in MR incorrectly ignored (backport #51948)
2026-01-21 14:05:14 +05:30
Mihir Kandoi
504c84e28a fix: warehouse permissions in MR incorrectly ignored
(cherry picked from commit 5bacb67d36)
2026-01-21 07:36:22 +00:00
ruthra kumar
bb2bada1fd Merge pull request #51945 from ruthra-kumar/reenable_auto_close
chore: reenable auto close
2026-01-21 10:16:58 +05:30
ruthra kumar
ca85ee33f5 chore: reenable auto close 2026-01-21 10:13:32 +05:30
ruthra kumar
21c1189e24 Merge pull request #51944 from ruthra-kumar/remove_junk_comment
chore: remove stray comment and disable auto close
2026-01-21 10:10:35 +05:30
ruthra kumar
7e7885b304 chore: remove stray comment and disable auto close 2026-01-21 10:09:03 +05:30
Frappe PR Bot
30238e3063 chore(release): Bumped to Version 16.1.0
# [16.1.0](https://github.com/frappe/erpnext/compare/v16.0.1...v16.1.0) (2026-01-20)

### Bug Fixes

* **accounts_controller:** make return message translatable ([621243c](621243c1d3))
* **accounts:** add missing accounting dimensions in advance taxes and charges ([673635e](673635e2c3))
* add below-0 column in ar/ap report (backport [#51673](https://github.com/frappe/erpnext/issues/51673)) ([#51780](https://github.com/frappe/erpnext/issues/51780)) ([5c93bf5](5c93bf5798))
* add company filters for warehouse ([ccab91b](ccab91b9ed))
* add other charges in total ([68c8dfb](68c8dfb24c))
* add uom js error ([a660ed0](a660ed061b))
* add validation for amount and hours ([ce421bb](ce421bb1d4))
* add validation for direct return ([bfd6375](bfd6375508))
* add validation for duplication ([84a749e](84a749e3d0))
* add validation for return against ([6dade11](6dade11d8f))
* allow creation of DN in SI for items not having DN reference ([fef6df7](fef6df709d))
* allow disassemble stock entry without work order (backport [#51761](https://github.com/frappe/erpnext/issues/51761)) ([#51836](https://github.com/frappe/erpnext/issues/51836)) ([c830bf6](c830bf6fc7))
* **bank_account:** validation for is_company_account ([5d5d208](5d5d208a49))
* **bom:** pass company warehouse filter ([3c533d0](3c533d04f5))
* **budget variance report:** check budget dimensions ([a3d860e](a3d860eabf))
* bugs ([accce1f](accce1fe59))
* calculate net profit amount from root node accounts ([89b44c4](89b44c41a2))
* change docfield type to render html format (backport [#51795](https://github.com/frappe/erpnext/issues/51795)) ([#51804](https://github.com/frappe/erpnext/issues/51804)) ([fcea760](fcea7603a8))
* common_party_path ([#51826](https://github.com/frappe/erpnext/issues/51826)) ([aeb2b60](aeb2b60450))
* continuous raw material consumption with bom validation (backport [#51914](https://github.com/frappe/erpnext/issues/51914)) ([#51919](https://github.com/frappe/erpnext/issues/51919)) ([c9d7c6c](c9d7c6cd42))
* docs_path ([86d5939](86d5939d91))
* dont show certain fields based on permissions ([d3dfed9](d3dfed909e))
* handle return cancellation ([65a1c70](65a1c7086b))
* include total hours validation in depends on ([cbfc137](cbfc13728b))
* **manufacturing:** consider process loss qty while validating the work order ([7b3f746](7b3f74609a))
* no attribute error on LCV ([fe59ace](fe59ace285))
* no attribute error on subcontracting receipt ([2131c7a](2131c7aadb))
* overproduction % not considered when making WO from SO ([fb669eb](fb669eb6f4))
* **pos:** reapply set warehouse during cart update ([6869115](686911546f))
* **postgres:** compute current month sales without DATE_FORMAT ([49760e4](49760e4542))
* prevent UOM from updating incorrectly while scanning barcode ([9d5a0e5](9d5a0e56a0))
* qty with serial no count ([ae6b3af](ae6b3af013))
* remove already transferred batch ([f1e41f4](f1e41f4a4f))
* setting process loss qty causes fg item qty to be incorrect ([cb2d455](cb2d4550af))
* Show non-SLE vouchers with GL entries in Stock vs Account Value Comparison report ([e64ae9a](e64ae9a8a9))
* **stock:** resolve quantity issue when adding items via barcode scan ([ab482ca](ab482caac9))
* **transaction.js:** use flt instead of cint for plc_conversion_rate ([8ba4701](8ba470160d))
* validation message in stock reco row idx ([176096b](176096bc5b))
* valuation rate for non batchwise valuation ([768c131](768c131073))

### Features

* add list_view status for partial billing ([9b88275](9b88275312))
* add new 2025 Charts of Accounts for France ([9cc9fa5](9cc9fa59be))
* Adding Item name in update item dialog box ([1da8ed2](1da8ed202b))
* modify field properties ([e49add2](e49add20b7))
* remove old French chart of accounts with code as nex 2025 is provided ([3bdaab1](3bdaab149b))
* support for serial item ([c4c2d35](c4c2d35565))
* **timesheet:** handle partial billing in sales invoice ([332673f](332673f260))

### Performance Improvements

* prevent duplicate reposting for the same item ([3ac431b](3ac431bd50))
2026-01-20 16:47:59 +00:00
ruthra kumar
35b3045b72 Merge pull request #51911 from frappe/version-16-hotfix
chore: release v16
2026-01-20 22:16:27 +05:30
Mihir Kandoi
cf130ff865 Merge pull request #51936 from frappe/mergify/bp/version-16-hotfix/pr-51934
fix: validation message in stock reco row idx (backport #51934)
2026-01-20 21:05:40 +05:30
Mihir Kandoi
176096bc5b fix: validation message in stock reco row idx
(cherry picked from commit 3960c01798)
2026-01-20 15:17:53 +00:00
rohitwaghchaure
e854eafc0b Merge pull request #51933 from frappe/mergify/bp/version-16-hotfix/pr-51930
Revert "perf: prevent duplicate reposting for the same item" (backport #51930)
2026-01-20 20:05:41 +05:30
rohitwaghchaure
72cdddbeda Revert "perf: prevent duplicate reposting for the same item"
(cherry picked from commit 6e4b90055f)
2026-01-20 14:19:47 +00:00
mergify[bot]
c9d7c6cd42 fix: continuous raw material consumption with bom validation (backport #51914) (#51919)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2026-01-20 12:56:27 +00:00
Diptanil Saha
8393c3c32d Merge pull request #51922 from frappe/mergify/bp/version-16-hotfix/pr-51887
fix(bank_account): `is_company_account` related validations (backport #51887)
2026-01-20 18:09:01 +05:30
Mihir Kandoi
5752d2e0a1 Merge pull request #51926 from frappe/mergify/bp/version-16-hotfix/pr-51909
fix: allow creation of DN in SI for items not having DN reference (backport #51909)
2026-01-20 18:03:35 +05:30
rohitwaghchaure
f25558b4d7 Merge pull request #51924 from frappe/mergify/bp/version-16-hotfix/pr-51920
perf: prevent duplicate reposting for the same item (backport #51920)
2026-01-20 18:01:21 +05:30
Mihir Kandoi
fef6df709d fix: allow creation of DN in SI for items not having DN reference
(cherry picked from commit b691de0147)
2026-01-20 12:14:59 +00:00
Rohit Waghchaure
3ac431bd50 perf: prevent duplicate reposting for the same item
(cherry picked from commit 7535931571)
2026-01-20 12:09:03 +00:00
diptanilsaha
5d5d208a49 fix(bank_account): validation for is_company_account
(cherry picked from commit 7532ab01d6)
2026-01-20 11:53:16 +00:00
ruthra kumar
9535f3d583 Merge pull request #51916 from frappe/mergify/bp/version-16-hotfix/pr-51671
fix(accounts): add missing accounting dimensions in advance taxes and charges (backport #51671)
2026-01-20 17:19:35 +05:30
Nikhil Kothari
673635e2c3 fix(accounts): add missing accounting dimensions in advance taxes and charges
(cherry picked from commit 22e9cb4cf4)

# Conflicts:
#	erpnext/patches.txt
2026-01-20 17:04:51 +05:30
Rohit Waghchaure
d067e37ab6 fix: validation to check at-least one raw material for manufacture entry
(cherry picked from commit f003b3c378)
2026-01-20 08:25:59 +00:00
Mihir Kandoi
37e241ba15 Merge pull request #51897 from frappe/mergify/bp/version-16-hotfix/pr-51895
fix: overproduction % not considered when making WO from SO (backport #51895)
2026-01-20 13:25:01 +05:30
Mihir Kandoi
fb669eb6f4 fix: overproduction % not considered when making WO from SO
(cherry picked from commit edba9efb5e)
2026-01-20 07:34:24 +00:00
ruthra kumar
232225d753 Merge pull request #51891 from frappe/mergify/bp/version-16-hotfix/pr-51561
fix: delete advance ledger entries  while reconciling payment entry (backport #51561)
2026-01-20 08:17:44 +05:30
ruthra kumar
80cbd851d1 Merge pull request #51893 from frappe/mergify/bp/version-16-hotfix/pr-51886
fix(accounts_controller): make return message translatable (backport #51886)
2026-01-20 08:13:12 +05:30
ruthra kumar
5474ac298d Merge pull request #51884 from frappe/mergify/bp/version-16-hotfix/pr-51830
fix(manufacturing): consider process loss qty while validating the work order (backport #51830)
2026-01-20 08:08:29 +05:30
ruthra kumar
7a9b10a05e Merge pull request #51861 from frappe/mergify/bp/version-16-hotfix/pr-51822
fix(budget variance report): check budget dimensions (backport #51822)
2026-01-20 07:56:49 +05:30
barredterra
621243c1d3 fix(accounts_controller): make return message translatable
(cherry picked from commit 0209f0fe29)
2026-01-20 02:26:48 +00:00
Lakshit Jain
efa5173964 Merge pull request #51561 from ljain112/fic-adv-ple-po
fix: delete advance ledger entries  while reconciling payment entry
(cherry picked from commit aea70c5ec1)
2026-01-20 02:21:34 +00:00
Sudharsanan11
7b3f74609a fix(manufacturing): consider process loss qty while validating the work order
(cherry picked from commit e6366e830c)
2026-01-19 16:18:36 +00:00
Mihir Kandoi
775f6d07b1 Merge pull request #51882 from frappe/mergify/bp/version-16-hotfix/pr-51880
fix: no attribute error on LCV (backport #51880)
2026-01-19 20:30:03 +05:30
Mihir Kandoi
e80ed14456 Merge pull request #51881 from frappe/mergify/bp/version-16-hotfix/pr-51879
fix: no attribute error on subcontracting receipt (backport #51879)
2026-01-19 20:15:55 +05:30
Mihir Kandoi
fe59ace285 fix: no attribute error on LCV
(cherry picked from commit ad11914fca)
2026-01-19 14:35:22 +00:00
Mihir Kandoi
2131c7aadb fix: no attribute error on subcontracting receipt
(cherry picked from commit fbac8b032e)
2026-01-19 14:30:08 +00:00
Diptanil Saha
b7284c7717 Merge pull request #51877 from frappe/mergify/bp/version-16-hotfix/pr-51595 2026-01-19 18:12:07 +05:30
Florian HENRY
6b9107c05c chore: re add older template
(cherry picked from commit b3efb3084f)
2026-01-19 12:23:31 +00:00
Florian HENRY
1ed8857d31 chore: fix bank account type
(cherry picked from commit 4fe1b214c1)
2026-01-19 12:23:31 +00:00
Florian HENRY
a195690bc8 chore: fix CASH acount type
(cherry picked from commit 6a876de838)
2026-01-19 12:23:31 +00:00
Florian HENRY
0c546c9e5a chore: fix bank acount type
(cherry picked from commit 765487a087)
2026-01-19 12:23:30 +00:00
Florian HENRY
11d9fd3dee chore: add Expenses Included In Valuation account
(cherry picked from commit c519cd0268)
2026-01-19 12:23:30 +00:00
Florian HENRY
3bdaab149b feat: remove old French chart of accounts with code as nex 2025 is provided
(cherry picked from commit bf430fce09)
2026-01-19 12:23:30 +00:00
Florian HENRY
ad4ac4e53c chore: Review PR #51595
(cherry picked from commit 6bdaeb983d)
2026-01-19 12:23:30 +00:00
Florian HENRY
9cc9fa59be feat: add new 2025 Charts of Accounts for France
(cherry picked from commit c81dee137f)
2026-01-19 12:23:30 +00:00
rohitwaghchaure
ab2aedd9a2 Merge pull request #51866 from frappe/mergify/bp/version-16-hotfix/pr-51769
fix(pos): reapply set warehouse during cart update (backport #51769)
2026-01-19 15:44:38 +05:30
ravibharathi656
686911546f fix(pos): reapply set warehouse during cart update
(cherry picked from commit 5a53c45321)
2026-01-19 10:07:50 +00:00
rohitwaghchaure
4f3078ab1a Merge pull request #51863 from frappe/mergify/bp/version-16-hotfix/pr-51690
feat: Adding Item name in update item dialog box (backport #51690)
2026-01-19 15:34:47 +05:30
rohitwaghchaure
a950adab79 Merge pull request #51864 from frappe/mergify/bp/version-16-hotfix/pr-51856
fix: qty with serial no count (backport #51856)
2026-01-19 15:34:23 +05:30
Rohit Waghchaure
ae6b3af013 fix: qty with serial no count
(cherry picked from commit 56e58ef301)
2026-01-19 10:00:35 +00:00
Nishka Gosalia
1da8ed202b feat: Adding Item name in update item dialog box
(cherry picked from commit e6133ad6d4)
2026-01-19 10:00:34 +00:00
ervishnucs
a3d860eabf fix(budget variance report): check budget dimensions
(cherry picked from commit cb696a8880)
2026-01-19 09:55:17 +00:00
rohitwaghchaure
adc9dc82ca Merge pull request #51848 from frappe/mergify/bp/version-16-hotfix/pr-51644
Refactor batch bundle get snos sle (backport #51644)
2026-01-19 15:15:20 +05:30
Rohit Waghchaure
79e04ea1fe chore: fix semantic commit message
(cherry picked from commit dfcbee9cc0)
2026-01-19 09:22:45 +00:00
krupalvora
0981b894dd refactor: Batch & Bundle get sle for snos - Added docstring
(cherry picked from commit 22dee50348)
2026-01-19 09:22:45 +00:00
krupalvora
380564a677 refactor: Batch & Bundle get Stock ledger for snos - added posting date in select
(cherry picked from commit 1ccc7365a7)
2026-01-19 09:22:45 +00:00
krupalvora
75deb180fb refactor: Batch & Bundle get Stock ledger for snos v2
(cherry picked from commit a074d81754)
2026-01-19 09:22:45 +00:00
krupalvora
839315752b refactor: Batch & Bundle get Stock ledger for snos
(cherry picked from commit c0149925ad)
2026-01-19 09:22:44 +00:00
Mihir Kandoi
2b4a547e23 Merge pull request #51847 from frappe/mergify/bp/version-16-hotfix/pr-51845
fix(bom): pass company warehouse filter (backport #51845)
2026-01-19 14:18:39 +05:30
22-poojashree
3c533d04f5 fix(bom): pass company warehouse filter
(cherry picked from commit 73bcfc4710)
2026-01-19 08:34:16 +00:00
ruthra kumar
1c214eec98 Merge pull request #51844 from frappe/mergify/bp/version-16-hotfix/pr-51826
fix: common_party_path (backport #51826)
2026-01-19 13:21:14 +05:30
mahsem
aeb2b60450 fix: common_party_path (#51826)
* fix: common_pary_path

* chore: remove non-existent anchor

---------

Co-authored-by: ruthra kumar <ruthra@erpnext.com>
(cherry picked from commit 0c0f43f7f7)
2026-01-19 07:50:30 +00:00
ruthra kumar
1b3f5e1c96 Merge pull request #51841 from frappe/mergify/bp/version-16-hotfix/pr-51513
fix: calculate net profit amount from root node accounts (backport #51513)
2026-01-19 13:05:56 +05:30
mergify[bot]
c830bf6fc7 fix: allow disassemble stock entry without work order (backport #51761) (#51836)
fix: allow disassemble stock entry without work order (#51761)

* fix: allow disassemble stock entry without work order

* fix: use existing functionality to load fg item

* chore: better dict update

(cherry picked from commit 83919119f8)

Co-authored-by: Smit Vora <smitvora203@gmail.com>
2026-01-19 12:54:06 +05:30
ruthra kumar
e2b95da24d Merge pull request #51839 from frappe/mergify/bp/version-16-hotfix/pr-51787
fix: recalculate taxes when item tax template changes after discount (backport #51787)
2026-01-19 12:50:34 +05:30
Navin-S-R
89b44c41a2 fix: calculate net profit amount from root node accounts
(cherry picked from commit c84986d00e)
2026-01-19 07:15:50 +00:00
Lakshit Jain
181141b56a Merge pull request #51787 from ljain112/fix-taxes-disc
fix: recalculate taxes when item tax template changes after discount
(cherry picked from commit f00aeec9b4)
2026-01-19 07:01:52 +00:00
ruthra kumar
5742a5d86a Merge pull request #51834 from frappe/mergify/bp/version-16-hotfix/pr-51742
fix: add other charges in total (backport #51742)
2026-01-19 11:34:22 +05:30
SowmyaArunachalam
68c8dfb24c fix: add other charges in total
(cherry picked from commit 9406c07c42)
2026-01-19 05:45:20 +00:00
Mihir Kandoi
7f54de7926 Merge pull request #51829 from frappe/mergify/bp/version-16-hotfix/pr-51824
fix: setting process loss qty causes fg item qty to be incorrect (backport #51824)
2026-01-18 22:51:58 +05:30
Mihir Kandoi
cb2d4550af fix: setting process loss qty causes fg item qty to be incorrect
(cherry picked from commit 56f5df6847)
2026-01-18 17:21:03 +00:00
Mihir Kandoi
c22d7e16d1 Merge pull request #51821 from frappe/mergify/bp/version-16-hotfix/pr-51817
fix: prevent UOM from updating incorrectly while scanning barcode (backport #51817)
2026-01-18 15:10:56 +05:30
Pandiyan5273
9d5a0e56a0 fix: prevent UOM from updating incorrectly while scanning barcode
(cherry picked from commit 30263b26a5)
2026-01-18 09:36:44 +00:00
mergify[bot]
fcea7603a8 fix: change docfield type to render html format (backport #51795) (#51804)
fix: change docfield type to render html format (#51795)

(cherry picked from commit 3fe5b5c80d)

Co-authored-by: Sowmya <106989392+SowmyaArunachalam@users.noreply.github.com>
2026-01-17 15:12:57 +05:30
ruthra kumar
42ebb7446a Merge pull request #51797 from frappe/mergify/bp/version-16-hotfix/pr-51555
fix(postgres): compute current month sales without DATE_FORMAT (backport #51555)
2026-01-16 17:15:48 +05:30
Matt Howard
49760e4542 fix(postgres): compute current month sales without DATE_FORMAT
(cherry picked from commit 64f391adf7)
2026-01-16 11:29:08 +00:00
Mihir Kandoi
6e1f4d84b6 Merge pull request #51794 from frappe/mergify/bp/version-16-hotfix/pr-51790
fix(stock): resolve quantity issue when adding items via barcode scan (backport #51790)
2026-01-16 16:20:37 +05:30
Pandiyan5273
ab482caac9 fix(stock): resolve quantity issue when adding items via barcode scan
(cherry picked from commit f959b2c59a)
2026-01-16 10:49:36 +00:00
Mihir Kandoi
d8506fb2c0 Merge pull request #51792 from frappe/mergify/bp/version-16-hotfix/pr-51791
fix: dont show certain fields based on permissions (backport #51791)
2026-01-16 16:02:37 +05:30
Mihir Kandoi
d3dfed909e fix: dont show certain fields based on permissions
(cherry picked from commit b3db2981de)
2026-01-16 10:31:39 +00:00
Mihir Kandoi
ac31c5ca19 Merge pull request #51789 from frappe/mergify/bp/version-16-hotfix/pr-51784
fix: add company filters for warehouse (backport #51784)
2026-01-16 15:16:05 +05:30
SowmyaArunachalam
ccab91b9ed fix: add company filters for warehouse
(cherry picked from commit f952b92d71)
2026-01-16 09:44:42 +00:00
Mihir Kandoi
541a8b135a Merge pull request #51785 from frappe/mergify/bp/version-16-hotfix/pr-51693 2026-01-16 14:09:49 +05:30
Mihir Kandoi
c0a30a5302 chore: typo
(cherry picked from commit 8fd1d6aec8)
2026-01-16 08:25:03 +00:00
Mihir Kandoi
accce1fe59 fix: bugs
(cherry picked from commit 19ae405742)
2026-01-16 08:25:03 +00:00
Mihir Kandoi
f04221417e test: add test case
(cherry picked from commit b567184dd7)
2026-01-16 08:25:03 +00:00
Mihir Kandoi
c4c2d35565 feat: support for serial item
(cherry picked from commit 3d0f649411)
2026-01-16 08:25:02 +00:00
Mihir Kandoi
f1e41f4a4f fix: remove already transferred batch
(cherry picked from commit b54067e04d)
2026-01-16 08:25:02 +00:00
Mihir Kandoi
d9326d80de refactor: sample retention stock entry
(cherry picked from commit 8d188cd32b)
2026-01-16 08:25:02 +00:00
ruthra kumar
5c93bf5798 fix: add below-0 column in ar/ap report (backport #51673) (#51780)
Merge pull request #51673 from Jatin3128/ar/ap-future-range-fix

fix: add below-0 column in ar/ap report
(cherry picked from commit c5b0787de6)

Co-authored-by: Jatin3128 <140256508+Jatin3128@users.noreply.github.com>
2026-01-16 12:46:26 +05:30
Jatin3128
f62ad83d6f Merge pull request #51673 from Jatin3128/ar/ap-future-range-fix
fix: add below-0 column in ar/ap report
(cherry picked from commit c5b0787de6)
2026-01-16 06:37:34 +00:00
Ankush Menat
876e2d4e6e build: Update Frappe dependency (#51779) 2026-01-16 11:24:43 +05:30
rohitwaghchaure
4977e06c50 Merge pull request #51772 from frappe/mergify/bp/version-16-hotfix/pr-51768
fix: Show non-SLE vouchers with GL entries in Stock vs Account Value … (backport #51768)
2026-01-15 19:26:45 +05:30
Rohit Waghchaure
e64ae9a8a9 fix: Show non-SLE vouchers with GL entries in Stock vs Account Value Comparison report
(cherry picked from commit 1db9ce205f)
2026-01-15 12:20:36 +00:00
rohitwaghchaure
6ddf4eee15 Merge pull request #51752 from frappe/mergify/bp/version-16-hotfix/pr-51729
fix: valuation rate for non batchwise valuation (backport #51729)
2026-01-15 17:00:32 +05:30
Mihir Kandoi
d27a09cb9f Merge pull request #51755 from frappe/mergify/bp/version-16-hotfix/pr-51753
fix: docs_path (backport #51753)
2026-01-14 21:31:31 +05:30
mahsem
86d5939d91 fix: docs_path
(cherry picked from commit 7ef8c81caf)
2026-01-14 16:00:03 +00:00
Rohit Waghchaure
768c131073 fix: valuation rate for non batchwise valuation
(cherry picked from commit b6312bca9c)
2026-01-14 14:06:50 +00:00
Diptanil Saha
8f77223057 Merge pull request #51748 from frappe/mergify/bp/version-16-hotfix/pr-51730
fix(transaction.js): use flt instead of cint for plc_conversion_rate (backport #51730)
2026-01-14 15:55:13 +05:30
diptanilsaha
8ba470160d fix(transaction.js): use flt instead of cint for plc_conversion_rate
(cherry picked from commit 8b445e04e5)
2026-01-14 10:22:21 +00:00
Mihir Kandoi
1a6264d831 Merge pull request #51737 from frappe/mergify/bp/version-16-hotfix/pr-51684 2026-01-14 11:37:00 +05:30
Mihir Kandoi
19a90c0980 Merge pull request #51736 from frappe/mergify/bp/version-16-hotfix/pr-51295 2026-01-14 11:18:57 +05:30
Pandiyan5273
d57fc49896 test(stock-entry): manufacture entry without work order
(cherry picked from commit 784e338be4)
2026-01-14 05:34:40 +00:00
l0gesh29
fe0431a6d0 chore: modify error msg
(cherry picked from commit f7004aa8c3)
2026-01-14 05:33:39 +00:00
l0gesh29
bfd6375508 fix: add validation for direct return
(cherry picked from commit 8379b39aaf)
2026-01-14 05:33:38 +00:00
l0gesh29
6dade11d8f fix: add validation for return against
(cherry picked from commit ff9b936634)
2026-01-14 05:33:38 +00:00
Logesh Periyasamy
ce421bb1d4 fix: add validation for amount and hours
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
(cherry picked from commit 43d1d685c6)
2026-01-14 05:33:38 +00:00
l0gesh29
84a749e3d0 fix: add validation for duplication
(cherry picked from commit cda8a97f4a)
2026-01-14 05:33:37 +00:00
l0gesh29
65a1c7086b fix: handle return cancellation
(cherry picked from commit 50f73a5072)
2026-01-14 05:33:37 +00:00
l0gesh29
a04da71182 test: add test for partial billing and return
(cherry picked from commit ae594e81f9)
2026-01-14 05:33:37 +00:00
l0gesh29
cbfc13728b fix: include total hours validation in depends on
(cherry picked from commit 57d34ab146)
2026-01-14 05:33:37 +00:00
l0gesh29
9b88275312 feat: add list_view status for partial billing
(cherry picked from commit ff0b37055b)
2026-01-14 05:33:36 +00:00
l0gesh29
332673f260 feat(timesheet): handle partial billing in sales invoice
(cherry picked from commit c87b5d3132)
2026-01-14 05:33:36 +00:00
l0gesh29
e49add20b7 feat: modify field properties
(cherry picked from commit 38a4642479)
2026-01-14 05:33:36 +00:00
Mihir Kandoi
c3b0633eda Merge pull request #51734 from frappe/mergify/bp/version-16-hotfix/pr-51733
fix: add uom js error (backport #51733)
2026-01-14 10:28:24 +05:30
Mihir Kandoi
a660ed061b fix: add uom js error
(cherry picked from commit 6d3f6d73d0)
2026-01-14 04:55:22 +00:00
Frappe PR Bot
0b1c0c36b5 chore(release): Bumped to Version 16.0.1
## [16.0.1](https://github.com/frappe/erpnext/compare/v16.0.0...v16.0.1) (2026-01-13)

### Bug Fixes

* **asset value adjustment:** skip cancelling revaluation journal entry if already cancelled (backport [#51666](https://github.com/frappe/erpnext/issues/51666)) ([#51716](https://github.com/frappe/erpnext/issues/51716)) ([4b85d51](4b85d51257))
* Redirect to Desktop after signup ([#51696](https://github.com/frappe/erpnext/issues/51696)) ([0363b01](0363b01ab7))
* Redirect to Desktop after signup ([#51696](https://github.com/frappe/erpnext/issues/51696)) ([#51697](https://github.com/frappe/erpnext/issues/51697)) ([294fb27](294fb27dc8))
* Redirect to Desktop after signup (backport [#51696](https://github.com/frappe/erpnext/issues/51696)) ([#51714](https://github.com/frappe/erpnext/issues/51714)) ([2118321](211832104c))
* stock module not opened when no warehouses ([3420e21](3420e21d45))
* **tds:** correct tax logic for customer ([50ce61a](50ce61ae02))
2026-01-13 16:20:34 +00:00
Mihir Kandoi
d316ef2306 Merge pull request #51728 from frappe/trigger-release-v16 2026-01-13 21:44:48 +05:30
Mihir Kandoi
af3a7903b3 chore: trigger release 2026-01-13 21:43:30 +05:30
Mihir Kandoi
a66e114a71 Merge pull request #51727 from frappe/change-release-branch 2026-01-13 21:34:26 +05:30
Mihir Kandoi
631b9d3bb0 chore: update release branch from version-13 to version-16 2026-01-13 20:32:48 +05:30
Mihir Kandoi
eb03781718 Merge pull request #51713 from frappe/version-16-hotfix 2026-01-13 20:17:06 +05:30
rohitwaghchaure
eb7cebac91 Merge pull request #51720 from frappe/mergify/bp/version-16-hotfix/pr-51719
fix: stock module not opened when no warehouses (backport #51719)
2026-01-13 17:38:25 +05:30
Rohit Waghchaure
3420e21d45 fix: stock module not opened when no warehouses
(cherry picked from commit 9de3b07223)
2026-01-13 11:49:56 +00:00
Mihir Kandoi
211832104c fix: Redirect to Desktop after signup (backport #51696) (#51714)
Co-authored-by: Nabin Hait <nabinhait@gmail.com>
fix: Redirect to Desktop after signup (#51696)
2026-01-13 16:07:20 +05:30
mergify[bot]
4b85d51257 fix(asset value adjustment): skip cancelling revaluation journal entry if already cancelled (backport #51666) (#51716)
Co-authored-by: Navin-S-R <navin@aerele.in>
2026-01-13 16:05:14 +05:30
Nabin Hait
0363b01ab7 fix: Redirect to Desktop after signup (#51696)
(cherry picked from commit 3bc58fb46f)
2026-01-13 09:46:21 +00:00
Mihir Kandoi
fc517f7fa2 Merge pull request #51707 from mihir-kandoi/ci-patch-test-2 2026-01-13 15:11:37 +05:30
ruthra kumar
18451b69e6 Merge pull request #51703 from frappe/mergify/bp/version-16-hotfix/pr-51412
fix(tds): correct tax logic for customer (backport #51412)
2026-01-13 11:41:28 +05:30
ljain112
50ce61ae02 fix(tds): correct tax logic for customer
(cherry picked from commit 86b0f67dbc)
2026-01-13 05:37:32 +00:00
Nabin Hait
294fb27dc8 fix: Redirect to Desktop after signup (#51696) (#51697) 2026-01-12 19:22:24 +05:30
Rohit Waghchaure
c3fdb191b9 Merge branch 'develop' into version-16 2026-01-12 16:20:48 +05:30
Saqib Ansari
ccb4b1fbc4 fix: delete outdated desktop icon & sidebar (#51685) 2026-01-12 16:13:46 +05:30
Saqib Ansari
adec530792 ci: ignore server tests on svg changes (#51687) 2026-01-12 16:12:46 +05:30
Jacob Salvi
b5e0b543f7 chore: new icons share-management (#51682) 2026-01-12 10:18:28 +00:00
Khushi Rawat
e87857cee0 Merge pull request #51678 from khushi8112/asset-toggle-reference-doc
fix(asset): properly reset purchase reference and item fields
2026-01-12 15:46:15 +05:30
Rohit Waghchaure
93db2ebd6f Merge branch 'develop' into version-16 2026-01-12 15:07:27 +05:30
rohitwaghchaure
2925f9a04e chore: weekly release for v16 2026-01-12 14:29:14 +05:30
Nabin Hait
02a9c54b74 fix: Subcontracting settings link should point to subcontracting tab of Buying Settings (#51680) 2026-01-12 14:08:30 +05:30
rohitwaghchaure
c7bf103c0c chore: fix version 2026-01-12 14:04:45 +05:30
Nabin Hait
8434efd11b fix: removed duplicate sidebar link: Tree of procedures (#51679) 2026-01-12 13:22:28 +05:30
khushi8112
671610db1e fix(asset): properly reset purchase reference and item fields 2026-01-12 13:06:48 +05:30
Nabin Hait
1c6bfc9af7 fix: desktop icon for share management and banking (#51676) 2026-01-12 13:06:00 +05:30
Khushi Rawat
b9659a8741 Merge pull request #51630 from aerele/fix/unlink-purchase-flow
fix(asset): remove references  for composite and existing assets
2026-01-12 12:59:32 +05:30
rohitwaghchaure
6dead8fd85 chore: fix version 2026-01-12 12:19:58 +05:30
rohitwaghchaure
e3beca400f Merge pull request #51656 from aerele/fix-material-transfer-transferred-qty
fix(stock entry): calculate transferred quantity using transfer_qty
2026-01-12 12:04:59 +05:30
ruthra kumar
d8ff1595a7 Merge pull request #51662 from frappe/l10n_develop
fix: sync translations from crowdin
2026-01-11 19:03:06 +05:30
ruthra kumar
528de7fbd4 Merge pull request #51664 from ruthra-kumar/reduce_tabs_in_accounts_settings
refactor: UI cleanup in Accounts settings and reports
2026-01-11 19:02:27 +05:30
NaviN
cecd07bbf4 fix(payment reconciliation): handle adhoc payment returns (#51311)
* fix(payment reconciliation): handle reverse payments

* test: validate payment return gain or loss

* chore: typo
2026-01-11 18:57:39 +05:30
ruthra kumar
e66b1a06f4 refactor: remove redundant separators in P&L 2026-01-11 18:38:23 +05:30
ruthra kumar
c15e96c460 refactor: cleanup accounts settings 2026-01-11 18:30:58 +05:30
rohitwaghchaure
78ac8232d8 Merge pull request #51661 from rohitwaghchaure/fixed-single-table-for-better-performance
refactor: single table for better performance
2026-01-11 14:51:50 +05:30
Rohit Waghchaure
8d4a179a8f refactor: single table for better performance 2026-01-11 13:43:09 +05:30
MochaMind
058500e011 fix: Indonesian translations 2026-01-11 12:04:33 +05:30
Navin-S-R
bf2ab32abf test: validate transferred quantity for material transfer entry 2026-01-10 20:13:17 +05:30
Navin-S-R
7e99148357 test: allow from_warehouse while creating material request 2026-01-10 19:42:09 +05:30
Navin-S-R
4e6d86d6f0 fix(stock entry): calculate transferred quantity using transfer_qty 2026-01-10 19:29:25 +05:30
Mihir Kandoi
584c40a1b5 Merge pull request #51652 from mihir-kandoi/so_picked_qty 2026-01-10 18:12:53 +05:30
Mihir Kandoi
1d6d9c2040 fix: pick list qty does not reset when pick list is cancelled 2026-01-10 17:57:31 +05:30
Mihir Kandoi
4cb4b34683 Merge pull request #51648 from mihir-kandoi/gh51636 2026-01-10 15:54:54 +05:30
Mihir Kandoi
7662616721 Merge pull request #51647 from mihir-kandoi/reorder-check-readonly 2026-01-10 15:50:21 +05:30
Mihir Kandoi
9f4bf65768 fix: error message args in sle.py 2026-01-10 15:40:03 +05:30
Mihir Kandoi
7c96a08054 fix: reorder checkbox in MR should be readonly 2026-01-10 15:35:37 +05:30
Diptanil Saha
46e7fedff8 Merge pull request #51633 from diptanilsaha/pos_settings 2026-01-10 13:42:51 +05:30
Soham Kulkarni
e8665864a4 Merge pull request #51641 from sokumon/add-standard-field 2026-01-10 01:22:18 +05:30
sokumon
b6e5b67676 chore: export sidebars for new schema 2026-01-10 00:07:12 +05:30
diptanilsaha
e9c009b564 fix(patch): copy the value of post_change_gl_entries from accounts settings to pos settings 2026-01-09 18:44:56 +05:30
Diptanil Saha
17955337cc Merge pull request #51618 from diptanilsaha/settings_icon 2026-01-09 18:39:49 +05:30
diptanilsaha
34fd4e7043 chore: renaming settings icon to erpnext_setting 2026-01-09 18:20:46 +05:30
diptanilsaha
bf199cc2e0 fix: renaming 'Settings' desktop icon and workspace to 'ERPNext Settings' 2026-01-09 18:20:42 +05:30
diptanilsaha
e4741072a6 fix: moved pos related accounts settings configuration to pos settings 2026-01-09 18:15:14 +05:30
rohitwaghchaure
f23c11256c Merge pull request #51351 from rohitwaghchaure/fixed-serial-no-save-performance-issue
perf: SABB taking time to save the record
2026-01-09 17:45:36 +05:30
Rohit Waghchaure
8e143d68b4 fix: incoming rate calculation 2026-01-09 17:29:34 +05:30
Nabin Hait
79a14f49e1 Revert "chore: export sidebars for new schema" (#51631) 2026-01-09 17:24:17 +05:30
rohitwaghchaure
d3a480200e Merge branch 'develop' into fixed-serial-no-save-performance-issue 2026-01-09 16:57:24 +05:30
nivithamerlin
c1d50c492b fix(asset): remove references for composite and existing asset 2026-01-09 16:36:12 +05:30
rohitwaghchaure
d595a974ee Merge pull request #51628 from rohitwaghchaure/fixed-removed-unused-code
chore: removed unused code
2026-01-09 16:21:53 +05:30
Rohit Waghchaure
b11f20596e chore: removed unused code 2026-01-09 16:03:45 +05:30
Soham Kulkarni
c06a8568bd Merge pull request #51623 from jacob-salvi/new-icons 2026-01-09 15:08:51 +05:30
jacob-salvi
fc9bc36110 chore: update new solid icons 2026-01-09 14:53:09 +05:30
jacob-salvi
67def7dc13 chore: update new icons 2026-01-09 14:50:37 +05:30
Khushi Rawat
cdd7b12279 Merge pull request #51453 from khushi8112/payment-entry-gl-merge
fix(payment_entry): merge GL entries with similar account heads based on setting
2026-01-08 23:43:08 +05:30
Diptanil Saha
3a995ba260 Merge pull request #51613 from diptanilsaha/pos_item_selector_ui_ux 2026-01-08 23:05:36 +05:30
diptanilsaha
4d8d29b0df fix: animate on item load 2026-01-08 22:21:15 +05:30
diptanilsaha
02cefa8bdb fix: item group field clear button 2026-01-08 22:21:15 +05:30
diptanilsaha
aef2e2794b fix: race condition 2026-01-08 22:21:15 +05:30
diptanilsaha
069f28feeb fix(pos): item selector section ui/ux 2026-01-08 22:21:15 +05:30
Soham Kulkarni
62270af65b Merge pull request #51604 from sokumon/new-sidebar-schema 2026-01-08 22:13:02 +05:30
rohitwaghchaure
5139442205 Merge pull request #51607 from rohitwaghchaure/fixed-item-not-found
fix: item not found
2026-01-08 19:58:11 +05:30
Rohit Waghchaure
5eb062c065 fix: item not found 2026-01-08 19:40:18 +05:30
rohitwaghchaure
20f6e37b65 Merge pull request #51507 from elshafei-developer/fix-add-missing-translate-function
fix: add missing translation function for company default error message
2026-01-08 19:33:03 +05:30
sokumon
c5ce14dc14 chore: export sidebars for new schema 2026-01-08 18:51:01 +05:30
Soham Kulkarni
b5d0e85b59 Merge pull request #51600 from nabinhait/accounts-workspace-cleanup 2026-01-08 18:45:53 +05:30
Soham Kulkarni
7db70742e8 Merge pull request #51599 from nabinhait/financial-reports-workspace 2026-01-08 18:39:22 +05:30
Nabin Hait
b0a04e202a fix: Removed opening and closing workspace 2026-01-08 18:02:32 +05:30
Nabin Hait
721b29c8df fix: Added AR, AP, Sales and Purchase Register reports 2026-01-08 17:56:55 +05:30
ruthra kumar
f4f02458ef Merge pull request #51534 from aerele/fix/support-56421
fix(accounts): correct sales order item deletion message for MR and PO linkage
2026-01-08 17:39:21 +05:30
rohitwaghchaure
e5b93d85e6 Merge pull request #51574 from aerele/fix/support-56834
fix(stock): enable allow on submit for tracking status field
2026-01-08 16:30:02 +05:30
rohitwaghchaure
e4a0bc2d5f Merge pull request #51594 from nabinhait/debit-credit-note-links
fix: Workspace sidebar links for Debit/Credit Notes
2026-01-08 16:13:52 +05:30
Nabin Hait
8acf373e68 fix: Workspace sidebar links for Debit/Credit Notes 2026-01-08 15:23:40 +05:30
Nabin Hait
10a3f61689 fix: erpnext workspaces cleanup (#51461) 2026-01-08 15:03:11 +05:30
rohitwaghchaure
3c13543c24 Merge pull request #51514 from rohitwaghchaure/fixed-purchase-return-issue
fix: purchase return issue
2026-01-08 14:46:45 +05:30
rohitwaghchaure
3906bf450e Merge pull request #51586 from rohitwaghchaure/fixed-support-54626
fix: negative stock issue for higher precision
2026-01-08 14:36:37 +05:30
Mihir Kandoi
69597329e9 Merge pull request #51585 from mihir-kandoi/st56826 2026-01-08 14:22:36 +05:30
Rohit Waghchaure
87be020c78 fix: negative stock issue for higher precision 2026-01-08 14:11:52 +05:30
Mihir Kandoi
d0ba365aaa fix: closed WO becomes open when RM is returned 2026-01-08 14:07:14 +05:30
ruthra kumar
d82bf43684 fix: sync translations from crowdin (#51579)
fix: Swedish translations
2026-01-08 14:05:25 +05:30
Mihir Kandoi
cfa00829a8 Merge pull request #51583 from mihir-kandoi/st56954 2026-01-08 13:31:19 +05:30
Mihir Kandoi
190204a939 fix: allow all users of supplier to create purchase invoices 2026-01-08 13:14:34 +05:30
Logesh Periyasamy
bc63c85daf fix(accounting-dimension): System-generated round-off GL entries fail to set the accounting dimension (#51167)
* chore: remove disabled condition statement

* fix: add default dimension for round off gle

* fix: validate report type to handle opening entries roundoff
2026-01-08 12:05:36 +05:30
MochaMind
dbab929016 fix: Swedish translations 2026-01-08 11:26:58 +05:30
Pandiyan5273
1bfb62465f fix(stock): enable allow on submit for tracking status field 2026-01-07 19:27:16 +05:30
ruthra kumar
dd94e51d66 Merge pull request #51400 from Jatin3128/quick-entry-address-fix
fix(supplier): avoid mandatory_depends_on trigger from prefetched country in quick entry
2026-01-07 17:13:40 +05:30
ruthra kumar
fd0ed04979 Merge pull request #51294 from Jatin3128/subscription-grace-status
fix(subscription): add grace period status while invoice in grace period
2026-01-07 17:10:17 +05:30
rohitwaghchaure
f111d97444 Merge pull request #51550 from rohitwaghchaure/fixed-modified-date
fix: modified date not updated
2026-01-07 13:06:17 +05:30
ruthra kumar
ae7aa19afc Merge pull request #51192 from aerele/bank-clearance-tool
fix: add comment and validation for clearance date updation
2026-01-07 12:50:27 +05:30
ruthra kumar
772847c0d3 Merge pull request #51542 from aerele/fix/filter_in_mode_of_payment
fix(mode of payment): use valid syntax
2026-01-07 12:45:27 +05:30
ruthra kumar
ed1f1110c7 Merge pull request #51199 from Jatin3128/subscription_date_fix
fix(subscription): add cancellation and date validation
2026-01-07 12:43:42 +05:30
l0gesh29
24c8cfe128 fix: add comment and validation for clearance date updation 2026-01-07 12:36:25 +05:30
ruthra kumar
5fa9e0421c Merge pull request #51560 from frappe/l10n_develop
fix: sync translations from crowdin
2026-01-07 11:26:27 +05:30
MochaMind
103e4aaa93 fix: Bosnian translations 2026-01-07 11:06:06 +05:30
MochaMind
6729d3d1ca fix: Croatian translations 2026-01-07 11:06:03 +05:30
MochaMind
66425462ba fix: Swedish translations 2026-01-07 11:05:59 +05:30
MochaMind
e675c76628 fix: Hungarian translations 2026-01-07 11:05:56 +05:30
Diptanil Saha
57624e1e33 Merge pull request #51551 from diptanilsaha/pos_whitespace 2026-01-06 22:00:58 +05:30
Rohit Waghchaure
3acc3e6ad1 fix: modified date not updated 2026-01-06 21:05:05 +05:30
ruthra kumar
2dcba90afc Merge pull request #51528 from trustedcomputer/change-payment-references-float-to-currency
fix: change float types in payment entry reference table to currency
2026-01-06 20:50:25 +05:30
ruthra kumar
ede0dcd58a Merge pull request #51454 from Jatin3128/gh_38620
fix(Accounting Period): allow GL entries for exempted roles
2026-01-06 20:40:37 +05:30
Mihir Kandoi
a7be255261 Merge pull request #51536 from sokumon/deprecate-moduldes 2026-01-06 20:34:55 +05:30
Mihir Kandoi
015529a321 fix: change http to https 2026-01-06 20:20:25 +05:30
MochaMind
f5aaa1139c fix: sync translations from crowdin (#51404) 2026-01-06 14:55:41 +01:00
Rohit Waghchaure
d420ec0b22 fix: purchase return issue 2026-01-06 19:02:33 +05:30
Rohit Waghchaure
20320c4a6c perf: SABB taking time to save the record 2026-01-06 18:47:35 +05:30
rohitwaghchaure
e0f6f2a600 Merge pull request #51163 from aerele/mr-product-bundle
fix(material-request): get remaining qty on partial transaction with product bundle
2026-01-06 18:16:43 +05:30
ervishnucs
6cd4ef694e fix(mode of payment): use valid syntax 2026-01-06 18:13:26 +05:30
ruthra kumar
e432a88ec1 Merge pull request #51544 from ruthra-kumar/unsaved_bug_in_gain_loss_journal
fix: unsaved status on opening gain loss journal
2026-01-06 17:47:25 +05:30
ruthra kumar
8fdf6a9ac6 Merge pull request #51424 from Jatin3128/trial-balance-party-fix
fix(trial balance party): add check for parties with zero credit and debit
2026-01-06 17:47:04 +05:30
ruthra kumar
e5b02e81a9 fix: unsaved status on opening gain loss journal 2026-01-06 17:45:11 +05:30
diptanilsaha
a36331c393 fix(pos): removed white space from the bottom of pos screen 2026-01-06 16:09:48 +05:30
Khushi Rawat
b63d069635 Merge pull request #51540 from khushi8112/allow-data-import-for-asset-repiar
feat: allow data import for asset repair doctype
2026-01-06 16:08:29 +05:30
Khushi Rawat
feb4bf394a Merge pull request #51405 from khushi8112/fix-budget-variance-report
refactor: budget variance report
2026-01-06 16:05:46 +05:30
khushi8112
49f1688a51 feat: allow data import for asset repair doctype 2026-01-06 15:49:03 +05:30
sokumon
fd6683e196 fix: add deprecation message 2026-01-06 15:02:36 +05:30
Pandiyan5273
5a47503611 fix(accounts): correct sales order item deletion message for MR and PO linkage 2026-01-06 12:58:54 +05:30
khushi8112
07a69a073d refactor: optimize budget variance report queries 2026-01-06 12:25:14 +05:30
Sowmya
f8f82ccf31 Merge pull request #51458 from aerele/default-age-range
feat: add default-age-range in accounts settings
2026-01-06 11:07:28 +05:30
Mihir Kandoi
54cbe4222d Merge pull request #51530 from mihir-kandoi/fix-email-details-visibility 2026-01-06 10:47:03 +05:30
Mihir Kandoi
f222d3a37b fix: email details should be visible if emails are to be sent 2026-01-06 10:32:02 +05:30
trustedcomputer
8ba71300db fix: change float types in payment entry reference table to currency 2026-01-05 14:21:31 -08:00
Jatin3128
7a4cd3ac33 fix(Accounting Period): allow GL entries for exempted roles 2026-01-06 03:31:52 +05:30
khushi8112
7f6e509e20 refactor: more code cleanup 2026-01-06 01:25:56 +05:30
khushi8112
f786c16a7d refactor: better function and variable name 2026-01-06 01:05:10 +05:30
khushi8112
53b13501a9 fix: get correct total budget data 2026-01-06 00:40:32 +05:30
khushi8112
244319bf1d fix: show budget variance chart 2026-01-05 18:48:17 +05:30
khushi8112
f6a4f696a1 fix: Show Cumulative Amount based on checkbox in filter 2026-01-05 18:43:20 +05:30
rohitwaghchaure
afc5dda372 Merge pull request #51506 from rohitwaghchaure/fixed-reposting-for-transaction
fix: reposting fixes for transaction based and parallel reposting
2026-01-05 18:29:50 +05:30
Khushi Rawat
140d13cfb3 Merge pull request #51504 from khushi8112/fiscal-year-not-found-error
fix: use non-standard-fieldname for budget
2026-01-05 16:44:36 +05:30
elshafei-developer
0950e67eea fix: add missing translation function for company default error message 2026-01-05 10:49:35 +00:00
Rohit Waghchaure
31a147126e fix: reposting fixes for transaction based and parallel reposting 2026-01-05 16:17:33 +05:30
Mihir Kandoi
72aa27a87f Merge pull request #51503 from mihir-kandoi/rfq-email-refactor 2026-01-05 15:11:14 +05:30
Mihir Kandoi
9cb5768fea refactor: RFQ email process 2026-01-05 14:50:18 +05:30
khushi8112
01c560eb99 refactor: remove budget reference from monthly distribution dashboard 2026-01-05 14:38:33 +05:30
khushi8112
fa0ac8db4d fix: use non-standard-fieldname-for-bdget 2026-01-05 14:37:38 +05:30
Diptanil Saha
57c6f4ffb6 Merge pull request #51500 from diptanilsaha/pos_ui_ux 2026-01-05 13:32:46 +05:30
diptanilsaha
84612d676b fix(pos): hide sidebar 2026-01-05 13:25:31 +05:30
Mihir Kandoi
c7a81161c7 Merge pull request #51495 from mihir-kandoi/gh51193 2026-01-05 12:36:33 +05:30
Mihir Kandoi
aac39b2671 fix: bom item code getting fg item name on row add 2026-01-05 12:32:10 +05:30
ruthra kumar
028cd97ee1 Merge pull request #51326 from aerele/fix-background-jv-submission
fix(journal entry): use submission_queue to perform submit and cancel actions for rows over 100
2026-01-05 12:21:46 +05:30
ruthra kumar
c297282fa5 Merge pull request #51457 from aerele/project-filters-jv
fix: add company filters to project
2026-01-05 10:52:40 +05:30
ruthra kumar
522e4887ca Merge pull request #51467 from aerele/pcv-account-filter
fix: update filters on period closing voucher
2026-01-05 10:49:53 +05:30
rohitwaghchaure
bd94deee62 Merge pull request #51476 from rohitwaghchaure/fixed-purchase-serial-no-return-issue
fix: not able to make purchase return for serial nos
2026-01-05 10:04:09 +05:30
Rohit Waghchaure
344572cf87 fix: not able to make purchase return for serial nos 2026-01-04 19:47:33 +05:30
rohitwaghchaure
fc9496a36b Merge pull request #51475 from rohitwaghchaure/fixed-stock-reco-cancel-issue
fix: SABB not cancelled on cancel of Stock Reco
2026-01-03 16:16:25 +05:30
Rohit Waghchaure
b204853193 fix: SABB not cancelled on cancel of Stock Reco 2026-01-03 15:59:25 +05:30
rohitwaghchaure
2d5d03e63a Merge pull request #51468 from rohitwaghchaure/fixed-support-56624
fix: not able to submit backdated stock reco
2026-01-03 15:21:22 +05:30
Rohit Waghchaure
cccd34b06a fix: not able to submit backdated stock reco 2026-01-03 15:01:30 +05:30
SowmyaArunachalam
7ab1e1f677 fix: update filters on period closing voucher 2026-01-03 14:15:03 +05:30
diptanilsaha
daabb42ad7 fix(pos): remove full screen feature 2026-01-03 11:53:40 +05:30
Mihir Kandoi
3d4c8d6d35 Merge pull request #51462 from mihir-kandoi/gh51459 2026-01-02 23:07:11 +05:30
Mihir Kandoi
247cc1d53e fix: multiple issues 2026-01-02 20:53:44 +05:30
Soham Kulkarni
2eb448d4b4 Merge pull request #51452 from sokumon/export-desktop-icons 2026-01-02 19:48:27 +05:30
Mihir Kandoi
7308021aa8 fix: use SABB posting_datetime instead of posting_date 2026-01-02 19:32:39 +05:30
rohitwaghchaure
82b49f5d9d Merge pull request #51451 from rohitwaghchaure/fixed-removed-forecasting_method
chore: removed forecasting method holt winter
2026-01-02 18:35:21 +05:30
Nabin Hait
b9e8b2808a fix: JSON decode error (#51301) 2026-01-02 18:32:52 +05:30
Mihir Kandoi
d4702ac232 Merge pull request #51455 from nishkagosalia/gh-51383 2026-01-02 17:05:58 +05:30
Nishka Gosalia
f622996c48 fix: disallowing overlapping time logs in allow on submit mode 2026-01-02 16:50:20 +05:30
khushi8112
b8b55754c8 fix: breaking test 2026-01-02 16:39:23 +05:30
khushi8112
7baa75faa5 fix: add back test record - removed for debugging 2026-01-02 16:13:54 +05:30
khushi8112
6147f9c6a3 test: add tests for merging GL entries based on Accounts Settings 2026-01-02 16:11:32 +05:30
SowmyaArunachalam
7c16db567b fix: add company filters to project 2026-01-02 16:05:36 +05:30
sokumon
83bc8744bb chore: reexport desktop icons with new schema 2026-01-02 15:42:26 +05:30
Rohit Waghchaure
fd5b84fe1a chore: removed forecasting_method holt winter 2026-01-02 15:21:01 +05:30
khushi8112
59f5ee7b63 fix(payment_entry): merge GL entries with similar account heads based on setting 2026-01-02 15:09:30 +05:30
Abdeali Chharchhodawala
4632ddc497 Merge pull request #51078 from Abdeali099/custom-financial-statement-pdf-export 2026-01-02 13:29:49 +05:30
Mihir Kandoi
7bb0ec836f Merge pull request #51441 from mihir-kandoi/semgrep-autofixes 2026-01-01 22:11:32 +05:30
Mihir Kandoi
ca568a01f5 fix: autofixes by semgrep 2026-01-01 21:56:12 +05:30
Mihir Kandoi
06fd0f8084 Merge pull request #51439 from frappe/revert-51434-semgrep-autofix 2026-01-01 18:22:07 +05:30
Mihir Kandoi
cc6cb5d1af Revert "fix: autofixes by semgrep" 2026-01-01 18:07:34 +05:30
Mihir Kandoi
6c6bf306d3 Merge pull request #51434 from mihir-kandoi/semgrep-autofix 2026-01-01 18:06:02 +05:30
rohitwaghchaure
43e859b093 Merge pull request #51436 from rohitwaghchaure/fixed-github-43596
fix: do not sum quantities for similar items across different operations
2026-01-01 17:43:24 +05:30
Rohit Waghchaure
855dd4162f fix: do not sum quantities for similar items across different operations 2026-01-01 17:20:10 +05:30
rohitwaghchaure
28a49a21ee Merge pull request #51432 from rohitwaghchaure/fixed-github-43967
fix: LCV rate not updated based on PI rate if PI created from PO
2026-01-01 16:26:08 +05:30
Rohit Waghchaure
50b30fce4a fix: LCV rate not updated based on PI rate if PI created from PO 2026-01-01 16:06:52 +05:30
Mihir Kandoi
debd3c6886 fix: autofixes by semgrep 2026-01-01 15:59:44 +05:30
Jatin3128
83ddaf1696 fix(trial balance party): add check for parties with zero credit and debit 2026-01-01 13:49:09 +05:30
Ankush Menat
f79e7dd806 build: bump required python version (#51421)
closes https://github.com/frappe/erpnext/issues/51420
2026-01-01 12:26:52 +05:30
rohitwaghchaure
9854b146a5 Merge pull request #51427 from rohitwaghchaure/fixed-github-48006
fix: avoid duplicate items under the same parent in bom creator
2026-01-01 12:25:10 +05:30
Nabin Hait
b93f920592 fix: sidebar items for accounts (#51418) 2026-01-01 12:24:39 +05:30
Rohit Waghchaure
45fe7f2875 fix: avoid duplicate items under the same parent in bom creator 2026-01-01 12:03:37 +05:30
Khushi Rawat
1fba6fc2f4 Merge pull request #51426 from khushi8112/refactor-workspace-sidebar-for-budget
refactor: remove monthly distribution doctype from sidebar
2026-01-01 11:52:10 +05:30
khushi8112
7e81be7b8c refactor: remove monthly distribution doctype from sidebar 2026-01-01 11:34:32 +05:30
Mihir Kandoi
767bb534c0 Merge pull request #51419 from mihir-kandoi/actual-qty-mat-rcpt 2025-12-31 18:07:45 +05:30
Mihir Kandoi
349db6cfaf fix: actual qty resets to 0 on save of material receipt 2025-12-31 17:52:36 +05:30
Mihir Kandoi
73e7c38bc7 Merge pull request #51414 from nishkagosalia/gh-51382 2025-12-31 15:50:54 +05:30
ruthra kumar
7811c08e2b Merge pull request #51409 from ljain112/fix-tds-manual-entry-taxes
fix(tds): always update item taxable value
2025-12-31 15:13:53 +05:30
Nishka Gosalia
aefd36e050 fix: task actual hours calculation correction post timesheet update after submit 2025-12-31 15:11:50 +05:30
Mihir Kandoi
87d00a373f Merge pull request #51305 from mihir-kandoi/gh45824 2025-12-31 09:26:38 +00:00
ljain112
410a4b20af fix: always update item taxable value 2025-12-31 13:03:30 +05:30
khushi8112
f56a673baa refactor: formatted code 2025-12-31 11:40:38 +05:30
khushi8112
24757465ce fix: consider dimension filter while generating report 2025-12-31 11:40:38 +05:30
khushi8112
c57a43b3f4 fix: distribute non-monthly budgets across months when creating budget map 2025-12-31 11:40:38 +05:30
khushi8112
e3fb7f4c47 fix: include budget with for multiple fiscal years 2025-12-31 11:40:38 +05:30
khushi8112
8108fe4ca5 fix: correct query of fetching budget records 2025-12-31 11:40:37 +05:30
khushi8112
8ebd1fd029 refactor: budget variance report 2025-12-31 11:40:37 +05:30
Jatin3128
a450f7a00d fix(supplier): avoid mandatory_depends_on trigger from prefetched country in quick entry 2025-12-31 04:45:28 +05:30
Mihir Kandoi
cb5926f59b Revert "fix: purchase receipt item showing wrong expense account" (#51398) 2025-12-30 14:44:57 +00:00
rohitwaghchaure
0c08fb9303 Merge pull request #51341 from aerele/fix/remove-item-image
fix(stock): remove item image to avoid setting the image of previous item
2025-12-30 16:49:55 +05:30
rohitwaghchaure
732b04f37c Merge pull request #51375 from aerele/fix/stock-reservation-entry
fix(stock): prevent excess stock reservation
2025-12-30 16:49:18 +05:30
Mihir Kandoi
016170b08c Merge pull request #51255 from mihir-kandoi/read-only-job-card-employee 2025-12-30 16:08:14 +05:30
ruthra kumar
566d1a1ee2 Merge pull request #51340 from aerele/bank-reconciliation-pass-company-bank-account
fix(bank reconciliation tool): carry bank account to payment entry
2025-12-30 15:57:26 +05:30
Sudharsanan11
e1f9adf4e9 fix(stock): prevent excess stock reservation 2025-12-30 15:16:49 +05:30
Khushi Rawat
ae9c9f7570 Merge pull request #51380 from khushi8112/purchase-receipt-item-expense-account-query
fix: expense_account query override in Purchase Receipt
2025-12-30 12:56:06 +05:30
Mihir Kandoi
1416ae3fb2 Merge pull request #51374 from mihir-kandoi/gh45169 2025-12-30 12:51:10 +05:30
Mihir Kandoi
c249638ebb Merge pull request #51377 from mihir-kandoi/gh47785 2025-12-30 12:31:02 +05:30
ruthra kumar
d24a68b206 Merge pull request #51356 from Jatin3128/cost-center-fix
fix(subscription): added the cost center from the subscription plan to invoice item
2025-12-30 12:30:24 +05:30
Mihir Kandoi
1097d6eef1 fix: add missing GTIN-14 barcode 2025-12-30 12:25:34 +05:30
ruthra kumar
a9b3839c3c Merge pull request #51368 from Ponnusamy1-V/error-when-reposting-on-background
fix: start reposting accounting ledger after commit
2025-12-30 12:22:56 +05:30
Mihir Kandoi
2860d5a406 fix: variant creation with translation 2025-12-30 12:14:43 +05:30
Mihir Kandoi
b8ecefa06c fix: add missing patch 2025-12-30 12:10:46 +05:30
khushi8112
292a51c160 fix: expense_account query override in Purchase Receipt 2025-12-30 12:05:48 +05:30
Ponnusamy
469a1ade79 fix: start reposting accounting ledger after commit 2025-12-30 06:33:38 +00:00
Mihir Kandoi
acb30dc6ac Merge pull request #51338 from mihir-kandoi/gh43256 2025-12-30 11:53:32 +05:30
Mihir Kandoi
43cdca950f fix: type in barcode type 2025-12-30 06:23:08 +00:00
Mihir Kandoi
e2e2e78b65 Merge pull request #51376 from mihir-kandoi/gh45649 2025-12-30 11:52:28 +05:30
Mihir Kandoi
0c43c07cf6 fix: purchase receipt item showing wrong expense account (#51362) 2025-12-30 11:51:50 +05:30
ruthra kumar
875bf5c8a9 Merge pull request #51361 from aerele/payment-entry-clear-party-name-in-internal-transfer
fix(payment entry): clear party_name for internal transfer
2025-12-30 11:47:17 +05:30
Mihir Kandoi
b30ffc561b fix: misleading and confusing item variants field copy message 2025-12-30 11:18:05 +05:30
ruthra kumar
8fa047f96d Merge pull request #51171 from nabinhait/party_merge_validation
fix: validate party's existing transaction currency before merging
2025-12-30 10:21:37 +05:30
ruthra kumar
4a30634942 Merge pull request #51165 from nabinhait/bank-clearance-ux
fix: update button was getting frozen after validation
2025-12-30 10:09:01 +05:30
Sudharsanan11
69e94248c1 fix(stock): remove item image to avoid setting the image of previous item 2025-12-29 16:16:04 +05:30
Mihir Kandoi
8fb8f32ad6 Merge pull request #51364 from mihir-kandoi/gh51357 2025-12-29 15:32:30 +05:30
Mihir Kandoi
da899913b8 fix: RFQ does not fetch html response 2025-12-29 15:03:59 +05:30
Nishka Gosalia
41a7e64772 feat: Adding support for discarding document (#51316)
Co-authored-by: Nishka Gosalia <nishkagosalia@Nishkas-MacBook-Air.local>
2025-12-29 08:49:46 +00:00
ravibharathi656
aae0448e1f fix(payment entry): clear party_name for internal transfer 2025-12-29 12:06:28 +05:30
ruthra kumar
9f0f4d6709 Merge pull request #51358 from frappe/l10n_develop
fix: sync translations from crowdin
2025-12-29 10:52:58 +05:30
MochaMind
7b4cb629de fix: Persian translations 2025-12-29 10:05:29 +05:30
Jatin3128
3ef66f65b9 fix(subscription): added the cost center from the subscription plan to invoice item 2025-12-29 01:34:32 +05:30
MochaMind
70f1d3ca47 fix: sync translations from crowdin (#51246)
* fix: Slovenian translations

* fix: Persian translations

* fix: Serbian (Latin) translations

* fix: French translations

* fix: Spanish translations

* fix: Arabic translations

* fix: Czech translations

* fix: Danish translations

* fix: German translations

* fix: Hungarian translations

* fix: Italian translations

* fix: Dutch translations

* fix: Polish translations

* fix: Portuguese translations

* fix: Russian translations

* fix: Serbian (Cyrillic) translations

* fix: Swedish translations

* fix: Turkish translations

* fix: Chinese Simplified translations

* fix: Vietnamese translations

* fix: Portuguese, Brazilian translations

* fix: Indonesian translations

* fix: Tamil translations

* fix: Thai translations

* fix: Croatian translations

* fix: Burmese translations

* fix: Bosnian translations

* fix: Norwegian Bokmal translations

* fix: Esperanto translations

* fix: Persian translations

* fix: Serbian (Latin) translations

* fix: Serbian (Cyrillic) translations

* fix: Persian translations
2025-12-28 20:07:19 +01:00
Jatin3128
68ccb961f1 test(subscription): add auto-completion/cancellation test case 2025-12-28 21:29:44 +05:30
Jatin3128
20dc93a4b7 fix(subscription): complete subscription if no outstanding invoices 2025-12-28 21:02:21 +05:30
Mihir Kandoi
bf791ae716 Merge pull request #51349 from KerollesFathy/fix-type-error 2025-12-28 14:47:52 +05:30
KerollesFathy
44d85b0764 fix: get_item_details error 2025-12-27 18:26:32 +00:00
Mihir Kandoi
b3526599dd Merge pull request #51343 from frappe/revert-51259-gh-51233 2025-12-26 21:58:29 +05:30
Mihir Kandoi
bce4ec20e5 Merge pull request #51330 from aerele/fix/purchase-receipt-trends 2025-12-26 21:49:19 +05:30
Mihir Kandoi
30d4d53171 Revert "fix: company creation for Italy country" 2025-12-26 21:38:58 +05:30
ravibharathi656
9dfb0fdcbb fix(bank reconciliation tool): fix incorrect bank account field mapping 2025-12-26 20:41:01 +05:30
ravibharathi656
6fc9636642 fix(bank reconciliation tool): carry bank account to payment entry 2025-12-26 18:00:08 +05:30
Mihir Kandoi
db9ce998e1 test: remove invalid test case 2025-12-26 17:33:09 +05:30
Mihir Kandoi
11db07c42e fix: division in supplier score criteria throws zero division error 2025-12-26 16:33:57 +05:30
Khushi Rawat
5f4185ede9 Merge pull request #51325 from khushi8112/budget-migration-accounting-dimensions
fix: budget migration for accounting dimensions
2025-12-26 11:55:05 +05:30
Raffael Meyer
b6cb9d4799 fix: don't duplicate default income account to Item (#50413)
* fix: don't duplicate default income account to Item

Only store _Default Income Account_ in **Item** if it's different from the **Company**'s  _Default Income Account_.

Resolves #48231

* refactor: move db call out of loop

* docs: add docstring
2025-12-25 10:22:37 +01:00
Sudharsanan11
7df349844a fix(stock): remove total bar in chart view 2025-12-25 13:56:17 +05:30
ruthra kumar
73daad0fc9 Merge pull request #51222 from aerele/restore-old-records
fix: set posting time during restore
2025-12-25 10:28:00 +05:30
Navin-S-R
fa8e80c6a0 fix(journal entry): use submission_queue to perform submit and cancel actions for rows over 100 2025-12-25 10:18:33 +05:30
rohitwaghchaure
aebcd010ba Merge pull request #51322 from rohitwaghchaure/composite-index-for-serial-no
perf: composite index for serial no
2025-12-25 09:09:38 +05:30
khushi8112
8dacfdf287 fix: budget migration for accounting dimensions 2025-12-25 00:52:24 +05:30
Mihir Kandoi
0050898762 Merge pull request #50826 from Abdeali099/bulk-update-picked-qty 2025-12-24 21:34:54 +05:30
Rohit Waghchaure
734d553338 perf: composite index for serial no 2025-12-24 20:15:04 +05:30
ruthra kumar
ca31a94c76 Merge pull request #51286 from ruthra-kumar/refactor_workspace_charts
refactor: cleanup accounting workspace and charts
2025-12-24 19:54:34 +05:30
ruthra kumar
666c77dd91 refactor: accounting workspace 2025-12-24 19:34:57 +05:30
ruthra kumar
20654acdd7 refactor: update icon and chart in financial report workspace 2025-12-24 19:34:57 +05:30
ruthra kumar
e8777d4f72 refactor: remove workspace for receivable and payable 2025-12-24 19:34:57 +05:30
ruthra kumar
3ebff7e236 refactor: number cards in selling 2025-12-24 19:34:43 +05:30
ruthra kumar
f44a181c81 refactor: remove columns from chart labels 2025-12-24 19:02:59 +05:30
ruthra kumar
4a8ed972d0 refactor: subscription and budget sidebars 2025-12-24 19:02:59 +05:30
ruthra kumar
ca2ddd5d92 refactor: banking sidebar 2025-12-24 19:02:59 +05:30
ruthra kumar
201dbad545 refactor: remove redundant icons 2025-12-24 19:02:59 +05:30
ruthra kumar
c44adc6d98 refactor: add opening and closing to Accounting sidebar 2025-12-24 19:02:59 +05:30
ruthra kumar
9580a3c9f7 refactor: add charts to financial statements workspace 2025-12-24 19:02:59 +05:30
ruthra kumar
941b70a185 refactor: reorder icon in ERPNext desktop dialog 2025-12-24 19:02:59 +05:30
ruthra kumar
232cc16bbb refactor: add process payment reconciliation to sidebar 2025-12-24 19:02:56 +05:30
ruthra kumar
96829787b9 refactor: move receivables and payables outside of group 2025-12-24 19:02:32 +05:30
ruthra kumar
b55afe36c8 refactor: tidy up accounts workspace and dashboard 2025-12-24 19:02:29 +05:30
Mihir Kandoi
c7069df4b4 Merge pull request #51306 from mihir-kandoi/gh40171 2025-12-24 16:55:11 +05:30
rohitwaghchaure
46f8cfd228 Merge pull request #51293 from rohitwaghchaure/fixed-test-case-to-handle-complex-cases
test: test cases to handle complex cases
2025-12-24 15:34:10 +05:30
Rohit Waghchaure
dd18d78c10 test: test cases to handle complex cases 2025-12-24 15:05:35 +05:30
rohitwaghchaure
6cb6cbb00b Merge pull request #51310 from rohitwaghchaure/fixed-index-for-serial-no
perf: index for warehouse field
2025-12-24 14:59:16 +05:30
Rohit Waghchaure
23c70332df perf: index for warehouse field 2025-12-24 14:31:12 +05:30
Soham Kulkarni
278fd072c3 Merge pull request #51308 from sokumon/desktop-icons 2025-12-24 14:25:39 +05:30
sokumon
fc92458378 chore: rename corrrect desktop icon 2025-12-24 14:08:53 +05:30
Diptanil Saha
a35216a668 Merge pull request #51304 from diptanilsaha/ral_preview 2025-12-24 12:52:12 +05:30
Mihir Kandoi
175d262b94 fix: correctly copy serial/batch from cancelled doc 2025-12-24 12:45:09 +05:30
diptanilsaha
bd9f5fca08 fix(repost accounting ledger): prevent preview generation when no vouchers are selected 2025-12-24 11:52:48 +05:30
SowmyaArunachalam
f523c7889e fix: update remaining qty calculation 2025-12-23 22:02:57 +05:30
Mihir Kandoi
ca00b46507 Merge pull request #51256 from aerele/fix/validate-delivered-qty 2025-12-23 21:31:20 +05:30
SowmyaArunachalam
88dd869a11 fix(material-request): consider delivered qty for remaining qty calculation 2025-12-23 21:20:15 +05:30
Mihir Kandoi
4e04d5d1bc Merge pull request #48347 from iamkhanraheel/add-supplier_group-permission 2025-12-23 21:14:49 +05:30
SowmyaArunachalam
f2160a0629 chore: check 2nd row value 2025-12-23 21:14:06 +05:30
SowmyaArunachalam
9ca3d00eb7 test(marterial-request): validate partial transaction with product bundle 2025-12-23 21:14:06 +05:30
SowmyaArunachalam
6ade609dd6 fix(material-request): get remaining qty on partial transaction with product bundle 2025-12-23 21:14:06 +05:30
iamkhanraheel
e84c84975c feat: added supplier group field to link permission 2025-12-23 21:00:04 +05:30
Lakshit Jain
c66f78c784 feat: Introduce tax withholding entry 2025-12-23 20:47:53 +05:30
Mihir Kandoi
56192afe5f Merge pull request #51225 from aerele/report-button 2025-12-23 20:46:01 +05:30
Mihir Kandoi
8af3dd0ba0 Merge pull request #51283 from nishkagosalia/gh-49518-2 2025-12-23 20:30:32 +05:30
Mihir Kandoi
655b35fcdd Merge pull request #51263 from mihir-kandoi/gh48779 2025-12-23 20:20:39 +05:30
Jatin3128
489a035637 fix(subscription): add grace period status while invoice in grace period 2025-12-23 19:58:45 +05:30
Sudharsanan11
2073cb0106 test(manufacturing): add test to validate planned qty 2025-12-23 18:26:17 +05:30
Sudharsanan11
eda8a621c6 fix(manufacturing): validate delivered qty in production plan 2025-12-23 18:13:48 +05:30
rohitwaghchaure
83ab480211 Merge pull request #51271 from rohitwaghchaure/fixed-scrap-items-in-job-card
fix: scrap items in job card
2025-12-23 18:00:58 +05:30
ruthra kumar
f122509816 Merge pull request #51285 from diptanilsaha/frankfurter-v14-patch
fix(patch): handle currency exchange settings frankfurter api update for older versions
2025-12-23 17:40:52 +05:30
diptanilsaha
50bb1ce31d fix(patch): fallback for frankfurter settings v14 patch 2025-12-23 17:23:08 +05:30
rohitwaghchaure
2873dab98e Merge pull request #51276 from rohitwaghchaure/fixed-expense-account-stock-entry
fix: use stock adjustment if the account has not set
2025-12-23 17:07:43 +05:30
Rohit Waghchaure
9bbcbe0ac3 fix: use stock adjustment if the account has not set 2025-12-23 16:08:37 +05:30
Nishka Gosalia
8310b5ca36 feat: Added description column for update items 2025-12-23 15:47:44 +05:30
Rohit Waghchaure
09bcadfbb9 fix: scrap items in job card 2025-12-23 15:38:09 +05:30
Mihir Kandoi
250b9755f2 Merge pull request #51248 from vorasmit/phantom-as-additional-costs 2025-12-23 15:04:09 +05:30
Mihir Kandoi
6ac88f9bbf test: add test case 2025-12-23 14:57:23 +05:30
Mihir Kandoi
4b07d4a1b9 fix: create delivery notes condering customer AND addresses 2025-12-23 14:57:23 +05:30
Akhil Narang
1b530f7f92 Merge pull request #51275 from akhilnarang/dependency-update
build: update to python3.14 and nodejs 24, bump dependencies
2025-12-23 14:51:27 +05:30
Akhil Narang
8a8e1a2c4d chore: update action versions
Signed-off-by: Akhil Narang <me@akhilnarang.dev>
2025-12-23 13:35:13 +05:30
Akhil Narang
352c585208 build(ci): use python 3.14 and node 24
Signed-off-by: Akhil Narang <me@akhilnarang.dev>
2025-12-23 12:58:36 +05:30
Akhil Narang
e98d8bf638 build(deps): bump
Signed-off-by: Akhil Narang <me@akhilnarang.dev>
2025-12-23 12:52:03 +05:30
rohitwaghchaure
bb21415a72 Merge pull request #51259 from nishkagosalia/gh-51233
fix: company creation for Italy country
2025-12-23 12:42:41 +05:30
Nishka Gosalia
bc784a0e73 fix: company creation for Italy country 2025-12-22 20:23:03 +05:30
Mihir Kandoi
48c53c06ce Merge pull request #51266 from mihir-kandoi/fix-phantom-bom-filter 2025-12-22 19:33:03 +05:30
Mihir Kandoi
5e8d7a949c fix: filter not changing when field is changed 2025-12-22 19:31:24 +05:30
rohitwaghchaure
1d0aa4d3ec Merge pull request #51251 from rohitwaghchaure/fixed-added-limit-serial-nos
fix: limit condition to fetch serial nos
2025-12-22 17:44:58 +05:30
Khushi Rawat
f1b79e6687 Merge pull request #51262 from khushi8112/validate-finance-books-row-values
fix: validate depreciation row values
2025-12-22 17:34:18 +05:30
Rohit Waghchaure
da4b78491d fix: limit condition to fetch serial nos 2025-12-22 17:21:48 +05:30
khushi8112
16c6b2c39f fix: validate depreciation row values 2025-12-22 16:50:43 +05:30
rohitwaghchaure
9e28703ad9 Merge pull request #51258 from frappe/revert-50978-fixed-support-55110
Revert "fix: performance of the reposting"
2025-12-22 16:41:38 +05:30
rohitwaghchaure
e9c37642c8 chore: fix linters issue 2025-12-22 16:23:15 +05:30
rohitwaghchaure
d191b80587 chore: fix test case 2025-12-22 16:22:44 +05:30
rohitwaghchaure
280558efa2 Revert "fix: performance of the reposting" 2025-12-22 16:19:11 +05:30
Mihir Kandoi
cfe2181bf8 chore: make job card employee field read only 2025-12-22 15:55:54 +05:30
Mihir Kandoi
fbb67265b2 Merge pull request #51224 from aerele/task-end-date 2025-12-22 15:34:30 +05:30
Khushi Rawat
58e4f5690e Merge pull request #51186 from khushi8112/finance-book-wise-balance
fix: filter COA balances by finance book
2025-12-22 14:41:38 +05:30
Smit Vora
a441b1c53a test: ensure enough stock 2025-12-22 13:19:15 +05:30
rohitwaghchaure
0e1b45ca26 Merge pull request #51215 from vorasmit/fix-disassembly
fix: de-duplicate rows on disassembly with multiple manufacture entries
2025-12-22 11:38:35 +05:30
Smit Vora
a5e5365ba9 fix: conditional check for phantom item if field exists 2025-12-22 11:34:37 +05:30
Mihir Kandoi
dfe57b9fd3 Merge pull request #51249 from mihir-kandoi/fix-local-tests 2025-12-22 11:29:58 +05:30
Mihir Kandoi
19bfa9225d fix: flaky local test 2025-12-22 11:10:42 +05:30
Smit Vora
6e8a6582a0 fix: don't consider phantom item in additional costs in stock entry 2025-12-22 11:04:21 +05:30
rohitwaghchaure
5ae7805429 Merge pull request #51244 from rohitwaghchaure/fixed-support-55963
fix: same serial number was picked in multiple sales invoices
2025-12-22 09:38:43 +05:30
rohitwaghchaure
586431ca1c Merge pull request #51242 from aerele/fix/batch-qty-ignore-reserved-stock
fix(stock-report): ignore reserved stock in batch qty calculation
2025-12-21 22:25:52 +05:30
Rohit Waghchaure
61c31f0cd0 fix: same serial number was picked in multiple sales invoices 2025-12-21 22:22:28 +05:30
MochaMind
6c65c8955c chore: update POT file (#51240) 2025-12-21 14:27:20 +01:00
Pugazhendhi Velu
9a1f551e53 fix(stock-report): ignore reserved stock in batch qty calculation 2025-12-21 12:22:47 +00:00
SowmyaArunachalam
b8434ecfb0 test(task): validate expected end date 2025-12-19 23:27:51 +05:30
SowmyaArunachalam
c0ac5f94b5 feat: add redirect button on report 2025-12-19 22:49:34 +05:30
SowmyaArunachalam
820ccba9a4 fix(task): calculate end date if not available 2025-12-19 22:20:03 +05:30
rohitwaghchaure
c62b66038b Merge pull request #49951 from aerele/feat/update-batch-qty-report
feat(report): add batch qty update functionality in report
2025-12-19 20:25:22 +05:30
ravibharathi656
a55092d8da fix: set posting time during restore 2025-12-19 19:48:58 +05:30
Pugazhendhi Velu
15d9d8b719 fix: update batch_qty using get_batch_qty 2025-12-19 14:12:45 +00:00
Pugazhendhi Velu
cf03d03033 fix: use get_batch_qty to fetch batch data 2025-12-19 14:12:44 +00:00
Pugazhendhi Velu
9cc77934a6 refactor: fetch batch qty difference in a single db query 2025-12-19 14:12:44 +00:00
Pugazhendhi Velu
f40c492a05 feat(report): add batch qty update functionality in report 2025-12-19 14:12:44 +00:00
Smit Vora
5b3d2c0d02 test: ensure full qty reversal for items outside of BOM on disassemble 2025-12-19 19:32:34 +05:30
Smit Vora
ce123f1a89 fix: support disassemble of RMs other than in BOM 2025-12-19 19:03:22 +05:30
Smit Vora
18ac589796 test: ensure no regression after save and submit on disassemble 2025-12-19 18:19:40 +05:30
Smit Vora
df13308663 fix: don't fetch qty as it's unused 2025-12-19 18:14:06 +05:30
rohitwaghchaure
32b3a13591 Merge pull request #51219 from rohitwaghchaure/fixed-projects-home
fix: chart and number cards for projects and qc
2025-12-19 18:13:30 +05:30
rohitwaghchaure
83522bf079 Merge pull request #51214 from aerele/fix/recalculate-batch-qty
fix(stock): ignore reserved stock while calculating batch qty
2025-12-19 18:00:04 +05:30
Rohit Waghchaure
7c6f0e4463 fix: chart and number cards for projects and qc 2025-12-19 17:48:50 +05:30
Sudharsanan11
4d8ec5f54c test(stock): add test for ignore reserve stock 2025-12-19 17:25:20 +05:30
rohitwaghchaure
68fabb72fa Merge pull request #51218 from rohitwaghchaure/fixed-subcontracting-home
fix: chart and number cards for subcontracting
2025-12-19 17:21:47 +05:30
Sudharsanan11
b23c6e2687 fix(stock): ignore reserved stock while calculating batch qty 2025-12-19 17:20:17 +05:30
rohitwaghchaure
8c0dbb5bf6 Merge pull request #51217 from rohitwaghchaure/fixed-buying-home
fix: number cards for buying module
2025-12-19 17:18:37 +05:30
Rohit Waghchaure
3b221b0078 fix: chart and number cards for subcontracting 2025-12-19 16:58:29 +05:30
Rohit Waghchaure
fb0bd44a85 fix: number cards for buying module 2025-12-19 16:57:44 +05:30
Diptanil Saha
cb951bbb18 Merge pull request #51216 from diptanilsaha/gh_50890 2025-12-19 15:53:22 +05:30
diptanilsaha
0942845af7 fix(pos): prevent setting focus to item search field after item selection 2025-12-19 15:41:48 +05:30
rohitwaghchaure
b567eac01d Merge pull request #51209 from rohitwaghchaure/fixed-manufacturing-dashboard
fix: manufacturing chart and number cards
2025-12-19 15:14:32 +05:30
Rohit Waghchaure
278963be69 fix: manufacturing chart and number cards 2025-12-19 14:12:18 +05:30
Khushi Rawat
c55c97a9fe fix: add space 2025-12-19 14:11:54 +05:30
Smit Vora
a091e47bd7 fix: de-duplicate rows on disassembly with multiple manufacture entries 2025-12-19 14:07:09 +05:30
khushi8112
358083d759 fix: include entries with null finance book 2025-12-19 13:50:20 +05:30
Khushi Rawat
fdebf25ca7 Merge pull request #51205 from khushi8112/do-not-disable-primary-action-button
fix: do not hide primary-action for composite asset
2025-12-19 00:06:57 +05:30
Mihir Kandoi
6710a8b032 Merge pull request #51166 from mihir-kandoi/gh50060 2025-12-18 21:27:55 +05:30
Mihir Kandoi
d78a626661 chore: make mr_item indexed 2025-12-18 21:09:38 +05:30
Mihir Kandoi
48ea75c452 Merge branch 'gh50060' of https://github.com/mihir-kandoi/erpnext into gh50060 2025-12-18 21:07:57 +05:30
khushi8112
e04353fc31 fix: add server side validation 2025-12-18 17:34:31 +05:30
khushi8112
e2ac7646e6 fix: set frm.has_active_capitalization before using it 2025-12-18 17:15:10 +05:30
ruthra kumar
7a3206f0bf Merge pull request #51197 from ruthra-kumar/fix_deterministic_bug_in_sql_procedures
refactor: remove custom sql function in AR SQL procedure approach
2025-12-18 17:07:24 +05:30
khushi8112
482efee6c0 fix: do not hide primary-action for composite asset 2025-12-18 16:43:26 +05:30
Mihir Kandoi
41e1f92612 Merge pull request #51204 from mihir-kandoi/gh51201 2025-12-18 16:40:24 +05:30
Mihir Kandoi
39031ae8a2 fix: customer quick entry address 2025-12-18 16:37:27 +05:30
Diptanil Saha
e53a74f2be fix(payment entry): make taxes & charges section non-collapsible and remove border (#51191) 2025-12-18 16:23:24 +05:30
Diptanil Saha
3a604dd249 fix(pegged currencies): skip adding currencies_to_add items on pegged_currency_item if source_currency or pegged_against currency doc does not exist (#51188) 2025-12-18 16:22:56 +05:30
Mihir Kandoi
11ce4ad102 Merge pull request #51202 from mihir-kandoi/gh51195 2025-12-18 16:15:01 +05:30
Mihir Kandoi
adabb6acb3 fix: NoneType error when starting job card 2025-12-18 16:06:58 +05:30
Jatin3128
00c9e20df3 fix(subscription): add cancellation and date validation 2025-12-18 16:01:08 +05:30
ruthra kumar
d1e0992253 refactor: remove custom sql function in AR SQL procedure approach 2025-12-18 15:45:05 +05:30
Khushi Rawat
260e6fb979 Merge pull request #51175 from khushi8112/asset-depreciation-manual-value-update
fix: manual depreciation update logic
2025-12-18 15:32:36 +05:30
Mihir Kandoi
a0af90f755 Merge pull request #51194 from mihir-kandoi/type-resolve-error 2025-12-18 15:18:18 +05:30
Mihir Kandoi
b0d3681593 Merge pull request #51189 from mihir-kandoi/gh49776 2025-12-18 15:11:40 +05:30
Mihir Kandoi
8b1fd7469c fix: get_item_tax_template error 2025-12-18 14:56:51 +05:30
khushi8112
f991420152 fix: Apply finance book filter conditionally 2025-12-18 14:54:37 +05:30
khushi8112
31374e1134 fix: filter account balances by default finance book in COA tree view 2025-12-18 14:54:37 +05:30
khushi8112
c186b1d9c8 fix: additional check to regenerate depreciation 2025-12-18 14:52:58 +05:30
khushi8112
178bc759c7 fix: logic error in docstatus check and use better arg 2025-12-18 14:52:58 +05:30
khushi8112
aa8e8da29f fix: check and update depreciation if depreciation method was changed 2025-12-18 14:52:58 +05:30
khushi8112
028b6790cf fix: update depreciation schedule when asset value changes for manual depreciation 2025-12-18 14:52:58 +05:30
Mihir Kandoi
333169e52b test: patch: add test case and patch 2025-12-18 09:17:42 +00:00
Mihir Kandoi
17320d1062 refactor: pick list from material request 2025-12-18 09:17:42 +00:00
Mihir Kandoi
34cee8fa9c fix: set conversion factor before validation 2025-12-18 09:16:55 +00:00
Ankush Menat
fe66bd4dc2 test: fix tests failing due to dependent state (#51187)
* test: Use fixture instead of hardcoded employee

* test: create user before assigning
2025-12-18 09:13:05 +00:00
Mihir Kandoi
9638e7ea83 Merge pull request #51168 from nishkagosalia/gh-42873 2025-12-18 10:14:05 +05:30
Mihir Kandoi
80933ec66b test: patch: add test case and patch 2025-12-17 20:16:13 +05:30
rohitwaghchaure
abef84358c Merge pull request #51022 from rohitwaghchaure/feat-run-parallel-reposting
feat: run parallel reposting
2025-12-17 16:41:40 +05:30
Nabin Hait
f48b90c600 fix: validate party's existing transaction currency before merging 2025-12-17 15:26:36 +05:30
Diptanil Saha
64e50f2e55 Merge pull request #51169 from diptanilsaha/gh_39653 2025-12-17 15:21:29 +05:30
diptanilsaha
848f8d6b1f fix(payment entry): set row id for 'On Previous Row Amount' or 'On Previous Row Total' charge type on tax table 2025-12-17 15:12:45 +05:30
Nishka Gosalia
1562e9b828 fix: Disallow due date to be before the posting date in Quotation 2025-12-17 14:44:24 +05:30
Mihir Kandoi
1778e2c564 refactor: pick list from material request 2025-12-17 14:41:09 +05:30
Nabin Hait
62acc4aeb5 fix: update button was getting freezed after validation 2025-12-17 14:36:40 +05:30
Khushi Rawat
da4d6cb567 Merge pull request #51156 from aerele/asset-depreciation-schedule-calculation
fix: show company currency in asset depreciation schedule
2025-12-17 14:33:34 +05:30
Khushi Rawat
5f80857bc9 fix: show correct PR amount in email template (#51033)
* fix: show correct PR amount in email template

* fix: add translation string
2025-12-17 14:06:54 +05:30
Diptanil Saha
a412e0b357 Merge pull request #51155 from diptanilsaha/st_55683 2025-12-17 13:53:40 +05:30
Nishka Gosalia
f4c0611cc5 feat: update item button addition for quotation (#50976)
* feat: update item button addition for quotation

* feat: update item button addition for supplier quotation

* fix: test case

---------

Co-authored-by: Nishka Gosalia <nishkagosalia@Nishkas-MacBook-Air.local>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-12-17 13:53:10 +05:30
rohitwaghchaure
dec474ef3a fix: incorrect current qty in stock reco (#51152) 2025-12-17 13:15:00 +05:30
diptanilsaha
f3142c4af6 fix: allow rename for market segment doctype 2025-12-17 12:39:34 +05:30
Ankush Menat
0b3e40b155 perf!: Avoid updating sales data on every transaction (#51151) 2025-12-17 07:04:46 +00:00
sudarshan-g
e32f898dd7 fix: show company currency in asset depreciation schedule 2025-12-17 12:09:22 +05:30
NaviN
5f6ed62c03 fix: use serial and batch bundle to fetch incoming rate (#51119) 2025-12-16 15:51:43 +01:00
Soham Kulkarni
382e4fe843 Merge pull request #51139 from sokumon/portal-redirect 2025-12-16 19:58:23 +05:30
Diptanil Saha
f07f2cfe88 Merge pull request #51120 from aerele/item-group-filter-quickentry 2025-12-16 18:26:17 +05:30
Mihir Kandoi
978aa9ac23 Merge pull request #51141 from aerele/fix/filter-disabled-suppliers 2025-12-16 18:21:23 +05:30
Mihir Kandoi
af4707d1ee Merge pull request #51136 from mihir-kandoi/gh42070 2025-12-16 18:17:51 +05:30
Mihir Kandoi
76da5efaa9 Merge pull request #51137 from mihir-kandoi/gh42599 2025-12-16 18:13:33 +05:30
sokumon
5986d79643 fix: remove /portal redirects 2025-12-16 18:12:58 +05:30
Sudharsanan11
6cc2290f6e fix(buying): add disabled filter for supplier 2025-12-16 17:58:20 +05:30
Raffael Meyer
ba9bbed038 fix(Rename Tool): use "Link" field instead of "Select" 2025-12-16 17:54:50 +05:30
Mihir Kandoi
273ff33ebf Merge pull request #51130 from mihir-kandoi/gh51126 2025-12-16 17:52:18 +05:30
Mihir Kandoi
38affb0562 fix: delayed tasks summary chart color 2025-12-16 17:47:23 +05:30
Mihir Kandoi
44840b8b80 fix: work order status for non tracked SFG 2025-12-16 17:33:41 +05:30
Kavin
2f19244660 fix(subcontract): ignore BOM qty validation for alternative items (#51122) 2025-12-16 17:26:34 +05:30
Logesh Periyasamy
890316a793 fix: add validation for transferred qty and handle MR transfer status for in-transit entry. (#50683)
* fix: add validation for transferred qty

* fix: modify if statement

* test: add unit test for mr transfer status in-transit entry
2025-12-16 17:25:30 +05:30
Mihir Kandoi
b6aec1d31a fix: ignore transfer material against if track semi finished goods 2025-12-16 16:36:48 +05:30
ruthra kumar
c2cd09cda7 Merge pull request #51048 from aerele/fetch-exchange-gain-loss-account
fix(payment entry): fetch gain loss account from company boot
2025-12-16 16:27:35 +05:30
ruthra kumar
c4136870cf Merge pull request #51123 from ruthra-kumar/fix_security_issue_in_payment_request
fix: ensure type on method parameter
2025-12-16 15:33:10 +05:30
ruthra kumar
c055e86e51 fix: ensure type on method parameter 2025-12-16 14:05:28 +05:30
Afsal Syed
3bef6bf5ef fix: add link filters for item group in quickentry 2025-12-16 13:03:31 +05:30
Mihir Kandoi
9ff5425859 Merge pull request #51100 from mihir-kandoi/gh41716 2025-12-16 12:01:37 +05:30
Mihir Kandoi
d0bdbfecef Merge pull request #51102 from mihir-kandoi/price-list-js-error 2025-12-16 11:24:28 +05:30
Mihir Kandoi
c287665033 fix: rejected qty not outward-ed in SCR 2025-12-16 11:23:19 +05:30
ruthra kumar
ac6583574e Merge pull request #51114 from frappe/l10n_develop
fix: sync translations from crowdin
2025-12-16 11:05:32 +05:30
ruthra kumar
9a4619a289 Merge pull request #51077 from aerele/standardize-cost-center-trigger
refactor: standardize cost_center updation across transactions
2025-12-16 10:51:29 +05:30
MochaMind
0563faca54 fix: Hungarian translations 2025-12-16 07:05:45 +05:30
MochaMind
bc213c45aa fix: Persian translations 2025-12-16 07:05:26 +05:30
0xD0M1M0
ad2c58cf2a feat: introduce extended bank transaction fields (#50021)
Co-authored-by: barredterra <14891507+barredterra@users.noreply.github.com>
2025-12-15 20:27:23 +01:00
Soham Kulkarni
8ea4e2139b Merge pull request #51097 from sokumon/portal-redirect 2025-12-15 17:56:24 +05:30
ruthra kumar
9331f8ce7e Merge pull request #50837 from Jatin3128/gh_38620
feat(accounting-period): add role-based bypass for accounting period restrictions
2025-12-15 17:36:43 +05:30
MochaMind
41cf546946 fix: sync translations from crowdin (#51000) 2025-12-15 12:28:21 +01:00
ruthra kumar
6adbe7a3fd Merge pull request #50782 from vorasmit/net-gl-balances
fix: only show net balance as opening in general ledger
2025-12-15 15:29:47 +05:30
Smit Vora
af9742a3ee Merge pull request #50788 from vorasmit/cascade-available-qty 2025-12-15 14:38:22 +05:30
Mihir Kandoi
b923a6b72c Merge pull request #51098 from mihir-kandoi/fix-dispatch-addr 2025-12-15 14:24:32 +05:30
Mihir Kandoi
09a8905b2d fix: price list arg type error 2025-12-15 14:20:10 +05:30
rohitwaghchaure
766d157320 fix: manufacturing sidebar (#51101) 2025-12-15 12:19:28 +05:30
sokumon
9486d0d462 fix: add list template to all portal doctypes 2025-12-15 10:38:30 +05:30
Mihir Kandoi
d7fea5d4e1 fix: incorrect mapping of dispatch addr when creating PO from SO 2025-12-15 07:30:45 +05:30
Mihir Kandoi
ae339f69f4 Merge pull request #49139 from Anjalii-Patel/fix-employee-report-self 2025-12-15 01:55:22 +05:30
MochaMind
af4d14e820 chore: update POT file (#51095) 2025-12-14 13:34:30 +01:00
Ankush Menat
db7456eea2 fix: Short circuit guest perm checks 2025-12-14 12:10:26 +05:30
Mihir Kandoi
88acf05ba2 Merge pull request #51091 from aerele/purchase-invoice-item-default-conversion-factor 2025-12-13 14:48:40 +05:30
Mihir Kandoi
bf3b3d4c02 Merge pull request #51090 from mihir-kandoi/active-empployee-filter 2025-12-13 14:47:26 +05:30
Mihir Kandoi
9b794d5a42 Merge pull request #51083 from aerele/mr-customer-provided-status 2025-12-13 14:39:35 +05:30
Mihir Kandoi
d811a368a9 fix: add filter to employee field in Job Card Time Log 2025-12-13 14:29:21 +05:30
Mihir Kandoi
719cb42c1e Merge pull request #51050 from mihir-kandoi/gh41617 2025-12-13 14:23:54 +05:30
ravibharathi656
8d523d2cd3 fix: remove default conversion factor in purchase invoice item 2025-12-13 14:16:03 +05:30
Mihir Kandoi
3de80ec640 fix: test cases 2025-12-13 13:39:19 +05:30
Mihir Kandoi
c9eda3c279 fix: bom creator page width and rate calculation 2025-12-13 11:40:51 +05:30
rohitwaghchaure
10a66b8e73 Merge pull request #51063 from KerollesFathy/fix-get-doctypes-to-be-ignored-list
fix(transaction-deletion): Add virtual doctypes to the list of ignored doctypes
2025-12-13 07:41:06 +05:30
KerollesFathy
0f7d89f4d1 refactor: remove redundant assignment of doctypes_to_be_ignored_list 2025-12-12 20:38:02 +00:00
SowmyaArunachalam
aa8a0d0a9f test(material-request): add test to validate status 2025-12-12 22:56:17 +05:30
rohitwaghchaure
2fa948b070 Merge pull request #51079 from rohitwaghchaure/fixed-support-54205
fix: stock ageing report
2025-12-12 20:42:30 +05:30
Rohit Waghchaure
cb84ffd972 fix: stock ageing report 2025-12-12 17:36:23 +05:30
Navin-S-R
c28f6f1856 refactor: standardize cost_center updation across transactions 2025-12-12 14:25:08 +05:30
Khushi Rawat
25bf2d94e7 Merge pull request #51070 from khushi8112/budget-validation-condition
fix: validate budget after cost center allocation
2025-12-12 13:51:08 +05:30
rohitwaghchaure
2db85ad883 Merge pull request #51069 from rohitwaghchaure/fixed-github-47939
fix: incorrect invoice qty
2025-12-12 13:36:08 +05:30
rohitwaghchaure
c3723e798d Merge pull request #51034 from aerele/fix/company-address-validation
fix(accounts): handle drop ship in company linked address validation
2025-12-12 13:34:14 +05:30
Sudharsanan11
f6a96e5563 test(accounts): add validation test for dispatch address with drop ship enabled 2025-12-12 13:14:40 +05:30
Sudharsanan11
2ec119e561 fix(accounts): handle drop ship in company linked address validation 2025-12-12 13:14:33 +05:30
Khushi Rawat
a8b94f2090 Merge pull request #51041 from aerele/fix-trial-balance-roundoff
fix(trial_balance): remove hardcoded precision for currency values
2025-12-12 13:09:08 +05:30
Rohit Waghchaure
96cdb7d54f fix: incorrect invoice qty 2025-12-12 13:06:51 +05:30
khushi8112
f9be8a46fb fix: validate budget after cost center allocation 2025-12-12 12:52:04 +05:30
rohitwaghchaure
3c032e1f35 Merge pull request #51047 from aerele/fix/disassembly-stock-entry
fix(manufacturing): get items for disassembly order
2025-12-12 11:44:12 +05:30
SowmyaArunachalam
97a7c0162d fix(material-request): update customer provided status 2025-12-12 11:21:42 +05:30
KerollesFathy
45a7195abe refactor: switch to or_filters so the query hits the DB only once 2025-12-11 20:56:05 +00:00
KerollesFathy
c7a7cb2b90 fix: Add virtual doctypes to the list of ignored doctypes in transaction deletion 2025-12-11 19:45:01 +00:00
Sagar Vora
7ad123592c Merge pull request #51057 from sagarvora/remove-draft-guard
fix: re-calculate outstanding / write-off amount during submission
2025-12-11 23:04:29 +05:30
Sagar Vora
09c9ac1b66 fix: re-calculate outstanding / write-off amount during submission 2025-12-11 22:37:59 +05:30
Soham Kulkarni
9cc48f3686 Merge pull request #51055 from jacob-salvi/develop 2025-12-11 19:11:19 +05:30
jacob-salvi
5ed48a8539 chore: exporting desktop icons 2025-12-11 18:49:30 +05:30
Sagar Vora
bd595602de chore: ignore noisy commits from git blame (#51049) 2025-12-11 18:05:51 +05:30
Sagar Vora
b3fdef8d19 fix: ensure fresh grand_total_diff is used for each calculation 2025-12-11 12:18:37 +00:00
Sudharsanan11
99148a2aba fix(manufacturing): get items for disassembly order 2025-12-11 16:35:02 +05:30
Sudharsanan11
86d6facab3 fix(manufacturing): add validation for disassemble qty 2025-12-11 16:32:04 +05:30
ravibharathi656
8e54be7808 fix(payment entry): fetch gain loss account from company boot 2025-12-11 16:20:10 +05:30
Khushi Rawat
f15efc543b feat: supplier invoice date in opening invoice creation tool (#50835) 2025-12-11 16:09:22 +05:30
Diptanil Saha
d4ef2ebd3c Merge pull request #51037 from diptanilsaha/frankfurter-api-backward-compatibility 2025-12-11 15:53:48 +05:30
Rohit Waghchaure
767e4762bb feat: run parallel reposting 2025-12-11 15:47:18 +05:30
diptanilsaha
5c2bb66028 fix(currency exchange settings): added backward compatibility for frankfurter api 2025-12-11 15:14:28 +05:30
Navin-S-R
a8af04f6fc fix(trial_balance): remove hardcoded precision for currency values 2025-12-11 15:07:46 +05:30
rohitwaghchaure
605b7c5efe Merge pull request #51035 from rohitwaghchaure/fixed-serial-nos-for-putaway
fix: put-away rule not applying on serial nos
2025-12-11 14:38:19 +05:30
Mihir Kandoi
a34dd9d247 Merge pull request #50955 from aerele/issue-50951 2025-12-11 14:24:10 +05:30
Rohit Waghchaure
6bb0bdcdca fix: putaway rule not applying on serial nos 2025-12-11 13:43:58 +05:30
rohitwaghchaure
a20fd7428c Merge pull request #51030 from mihir-kandoi/gh49703
fix: update project costing based on child table field and not parent…
2025-12-11 13:22:32 +05:30
Mihir Kandoi
8d9b83e410 Merge pull request #51014 from mihir-kandoi/gh42653-3 2025-12-11 11:35:33 +05:30
Mihir Kandoi
e57d2b4811 fix: update project costing based on child table field and not parent level 2025-12-11 11:21:35 +05:30
rohitwaghchaure
f3ba59480b Merge pull request #51027 from rohitwaghchaure/fixed-support-48228
fix: Serial/Batches not fetching when creating Material Transfer from Purchase Receipt
2025-12-11 10:57:44 +05:30
Mihir Kandoi
4e4452b73e Merge pull request #51019 from mihir-kandoi/gh50781 2025-12-11 10:23:28 +05:30
Mihir Kandoi
dbbad3e6ee Merge pull request #51015 from mihir-kandoi/gh46164 2025-12-11 10:22:58 +05:30
Rohit Waghchaure
d16c50486a fix: Serial/Batches not fetching when creating Material Transfer from Purchase Receipt 2025-12-11 10:12:42 +05:30
Nishka Gosalia
254eb5e7d6 Merge pull request #51021 from nishkagosalia/gh-50390 2025-12-11 03:26:39 +00:00
Mihir Kandoi
074bdd119b fix: check if terms is not set in selling controller 2025-12-10 21:58:16 +05:30
Mihir Kandoi
3787b9fbe5 fix: check if terms is not set in buying controller 2025-12-10 21:57:33 +05:30
Mihir Kandoi
77045e45c5 fix: where condition 2025-12-10 21:54:43 +05:30
Mihir Kandoi
a52f42c7e4 fix: add is_active filter 2025-12-10 21:53:11 +05:30
Diptanil Saha
8e0227ea68 Merge pull request #50963 from Jatin3128/gh_38026 2025-12-10 17:41:23 +05:30
Diptanil Saha
c02fb7a619 Merge pull request #50967 from Jatin3128/gh_49740 2025-12-10 17:19:27 +05:30
Mihir Kandoi
0bec419301 fix: check if item is variant when creating WO from MR 2025-12-10 16:53:02 +05:30
rohitwaghchaure
4f99045ca0 Merge pull request #51007 from rohitwaghchaure/fixed-reposting-only-gl
fix: repost accounting ledgers for skipped records
2025-12-10 15:12:30 +05:30
Diptanil Saha
eb8ea4a02d Merge pull request #50948 from aerele/fix/delivery-note-trends 2025-12-10 15:11:56 +05:30
rohitwaghchaure
74f748e1f5 Merge pull request #51009 from nishkagosalia/gh-50389-2
fix: updating base amounts through python for timesheet
2025-12-10 14:43:05 +05:30
Mihir Kandoi
7f1c11c92e fix: consider reserved qty when fetching items from SO in PP 2025-12-10 14:27:52 +05:30
Mihir Kandoi
8cb0632081 fix: make sure buying/selling default terms from company master is default 2025-12-10 14:08:22 +05:30
Nishka Gosalia
e8a8d3947c fix: updating base amount in timesheet 2025-12-10 13:12:47 +05:30
Nishka Gosalia
4568114ba8 test: test cases added for checking the base amounts in timesheet 2025-12-10 13:03:14 +05:30
Nishka Gosalia
88d8310a47 fix: updating base amounts through python for timesheet 2025-12-10 13:03:14 +05:30
Khushi Rawat
85114eda7c Merge pull request #50804 from ljain112/fix-asset-repair-amount
fix: correct logic for repair cost in asset repair
2025-12-10 12:58:13 +05:30
Rohit Waghchaure
5757feb45a fix: repost accounting ledgers for skipped records 2025-12-10 12:07:46 +05:30
Khushi Rawat
f301b36b5e Merge pull request #50999 from khushi8112/budget-fixes
fix: better manual budget distribution
2025-12-10 11:57:13 +05:30
Sudharsanan11
198eb372e3 fix(stock): remove total bar in chart view 2025-12-10 11:39:55 +05:30
Mihir Kandoi
60470e2a5b Merge pull request #50952 from rtdany10/wo-flt-issue 2025-12-10 09:51:55 +05:30
Diptanil Saha
dc718f7acb Merge pull request #51001 from diptanilsaha/gh-39891 2025-12-10 09:49:44 +05:30
diptanilsaha
2fe5fad884 fix(share balance): use currency field instead of int for rate and amount 2025-12-10 08:13:22 +05:30
khushi8112
ed4c17d3a2 fix: patch to set budget distribution total 2025-12-10 03:06:05 +05:30
khushi8112
f194ac093c feat: show budget distribution total 2025-12-10 02:48:44 +05:30
khushi8112
1c82f42fa8 fix: better manual budget distribution on update 2025-12-10 02:19:29 +05:30
khushi8112
d42aad18a7 fix: remove revise budget permission 2025-12-10 00:46:03 +05:30
khushi8112
6a03fc6ede fix: add company-based filter to account field 2025-12-10 00:41:39 +05:30
khushi8112
75999a7ae4 fix: make amount and percent field read only when distribute equally is enabled 2025-12-10 00:38:33 +05:30
Diptanil Saha
b53b6cac52 Merge pull request #50944 from aerele/return-discount-validation 2025-12-09 20:46:24 +05:30
Diptanil Saha
ca12d88514 Merge pull request #50979 from ljain112/fix-item-wise-sales-register-develop 2025-12-09 20:04:13 +05:30
Mihir Kandoi
68703d6e5b Merge pull request #50930 from elshafei-developer/Fix-typo 2025-12-09 18:40:07 +05:30
Mihir Kandoi
8f2b3f8703 Merge pull request #50912 from aerele/issue-50832 2025-12-09 18:35:48 +05:30
Mihir Kandoi
997401a16a Merge pull request #50910 from aerele/fix/validate-picklist-partial-reserved-qty 2025-12-09 18:33:29 +05:30
Mihir Kandoi
a62b0ca196 Merge pull request #50984 from mihir-kandoi/phantom-bom-item-filter 2025-12-09 18:29:40 +05:30
Mihir Kandoi
2e5241a211 Merge pull request #50987 from mihir-kandoi/inward-status-fix 2025-12-09 18:29:02 +05:30
Diptanil Saha
4edcc12edc Merge pull request #50970 from Abdeali099/cancle-PI-fix 2025-12-09 17:11:31 +05:30
MochaMind
cbc0f327d6 fix: sync translations from crowdin (#50852) 2025-12-09 12:37:24 +01:00
rohitwaghchaure
30ae3e0b59 Merge pull request #50978 from rohitwaghchaure/fixed-support-55110
fix: performance of the reposting
2025-12-09 16:35:03 +05:30
Diptanil Saha
a28d799c09 Merge pull request #50968 from Abdeali099/pr-bulk-update 2025-12-09 16:28:31 +05:30
Mihir Kandoi
ec3cd7e09c feat: add return status 2025-12-09 16:15:58 +05:30
Diptanil Saha
13d4f5ec31 Merge pull request #49963 from ljain112/tds-jv 2025-12-09 15:41:35 +05:30
Mihir Kandoi
baf884f95c fix: item should not be a fixed asset if bom is phantom 2025-12-09 15:38:46 +05:30
Rohit Waghchaure
1bcfad8eb1 fix: performance of the reposting 2025-12-09 14:51:32 +05:30
ljain112
2767cb04fb fix: handle duplicate description in item-wise report 2025-12-09 13:34:14 +05:30
rohitwaghchaure
5401843315 Merge pull request #50974 from rohitwaghchaure/fixed-sre-for-return-components
fix: SRE while returning components
2025-12-09 11:44:40 +05:30
Rohit Waghchaure
5e2d246931 fix: SRE while returning components 2025-12-08 22:41:07 +05:30
rohitwaghchaure
e8f87927e1 Merge pull request #50972 from rohitwaghchaure/fixed-github-50917
fix: incorrect condition
2025-12-08 20:08:51 +05:30
rohitwaghchaure
107fa1d605 Merge pull request #50971 from rohitwaghchaure/fixed-github-33408
fix: do not create a Purchase Receipt for returned items (Debit Note)
2025-12-08 19:53:50 +05:30
Rohit Waghchaure
264baf34f6 fix: incorrect condition 2025-12-08 19:50:26 +05:30
Rohit Waghchaure
66407d22fc fix: do not create a Purchase Receipt for returned items (Debit Note) 2025-12-08 19:24:57 +05:30
Abdeali Chharchhoda
f26ee9e546 fix: ensure payment request button only shows for submitted invoices 2025-12-08 18:51:21 +05:30
Abdeali Chharchhoda
5154fa8259 refactor: payment request status updates with bulk database operation 2025-12-08 18:00:29 +05:30
Jatin3128
b2feb5abbe feat(sales_order, purchase_order): add bulk close and reopen actions in list view 2025-12-08 17:28:25 +05:30
Soham Kulkarni
b58c4edd5d chore: move report to the correct module (#50959) 2025-12-08 14:55:27 +05:30
rohitwaghchaure
c5bbabac4b Merge pull request #50962 from rohitwaghchaure/fixed-github-50829
fix: warning message to avoid serial no series overlap issue
2025-12-08 14:40:10 +05:30
Jatin3128
6ac76bac6e fix(payment_entry): add due date to payment reference rows 2025-12-08 14:17:32 +05:30
Rohit Waghchaure
c5fdc256fa fix: warning message to avoid serial no series overlap issue 2025-12-08 14:17:02 +05:30
MochaMind
0376bba345 chore: update POT file (#50957) 2025-12-07 16:32:50 +01:00
rohitwaghchaure
2e803e6494 Merge pull request #50937 from aerele/support-54673
fix: validate available stock with multiple dimensions
2025-12-07 10:46:38 +05:30
Afsal Syed
f13022835a fix: sanitize address display by stripping HTML tags using html2text 2025-12-06 21:41:33 +05:30
venkat102
6e44951a96 fix: use separate item 2025-12-06 14:00:51 +05:30
Dany Robert
80730908c9 fix: precision issue on job card submission 2025-12-06 10:49:15 +05:30
venkat102
66f56eea33 fix: enable validate_negative_stock in existing dimensions 2025-12-06 00:24:20 +05:30
Diptanil Saha
31d55248e4 Merge pull request #50931 from diptanilsaha/gh-49357 2025-12-05 16:31:54 +05:30
Diptanil Saha
994dd425d4 Merge pull request #50943 from diptanilsaha/gh-49427 2025-12-05 16:31:08 +05:30
ravibharathi656
fab1ef5d76 fix: include return invoice discount in discount validation 2025-12-05 15:40:34 +05:30
Khushi Rawat
97711b7e83 Merge pull request #50941 from khushi8112/asset-over-creation-from-pr-pi
fix(asset): prevent creating assets beyond purchased quantity
2025-12-05 15:11:24 +05:30
khushi8112
7012345968 fix: filter out cancelled asset in the query 2025-12-05 13:08:29 +05:30
khushi8112
7bfcdb13b1 fix: better validation message 2025-12-05 12:55:41 +05:30
diptanilsaha
d6bdbfe266 fix(sales invoice): 100% additional discount gl issue with discount accounting 2025-12-05 12:50:28 +05:30
khushi8112
2db09b3840 fix(asset): prevent creating assets beyond purchased quantity 2025-12-05 09:59:05 +05:30
venkat102
1e2c56874f test: validate negative stock with multiple inventory dimensions 2025-12-04 23:58:25 +05:30
rohitwaghchaure
17ff48ab92 Merge pull request #50929 from rohitwaghchaure/fixed-backflushed-basedd-on-for-job-card
fix: backflush based on for job card
2025-12-04 23:11:35 +05:30
Rohit Waghchaure
c807a7be7b fix: backflush based on for job card 2025-12-04 22:53:30 +05:30
rohitwaghchaure
44919be5a6 Merge pull request #50936 from rohitwaghchaure/fixed-stock-resevation-job-card-manufacture
fix: SRE for manufacture entry for job card
2025-12-04 22:49:51 +05:30
venkat102
8f86c1b3e9 fix: validate available stock with multiple dimensions 2025-12-04 22:05:21 +05:30
Rohit Waghchaure
4ad8e55d06 fix: SRE for manufacture entry for job card 2025-12-04 22:03:54 +05:30
El-Shafei H.
b5ad4acc41 Fix typo in docstring for update_product_bundle_rate 2025-12-04 12:03:41 +03:00
Khushi Rawat
931f0663b1 Merge pull request #50927 from khushi8112/income-as-root-type-for-round-off-account
feat: allow income as root type for round off account
2025-12-04 13:14:12 +05:30
khushi8112
2bdcec0a7e feat: allow income as root type for round off account 2025-12-04 13:03:57 +05:30
Khushi Rawat
eb38accb33 Merge pull request #50824 from khushi8112/move-accounts-freezing-setting-to-company
refactor: Move accounts freezing setting to company
2025-12-04 12:16:46 +05:30
Khushi Rawat
c5b1af84eb Merge pull request #50879 from aerele/is-fixed-asset-set-only-once
fix: remove set_only_once from is_fixed_asset field
2025-12-04 12:14:19 +05:30
Khushi Rawat
01c14b5ce4 Merge pull request #50923 from khushi8112/fix-manual-depreciation-reset-issue
fix: do not recalculate depreciation if already exist
2025-12-04 11:56:45 +05:30
Khushi Rawat
a7155c1fdb Merge pull request #50746 from aerele/asset-depreciation-role
feat(asset): make asset depreciation failure notification role configurable
2025-12-04 11:41:06 +05:30
khushi8112
b75e7a1188 fix: do not recalculate depreciation if already exist 2025-12-04 11:37:05 +05:30
rohitwaghchaure
d6087e5d92 Merge pull request #50913 from rohitwaghchaure/fixed-github-46923
fix: variant items not fetched while making BOM for Variant Item
2025-12-04 10:07:22 +05:30
ravibharathi656
70521fb9bf fix: remove set_only_once from is_fixed_asset 2025-12-04 09:17:32 +05:30
SowmyaArunachalam
b5ee193566 chore(asset): change field name 2025-12-03 20:53:38 +05:30
Rohit Waghchaure
a0256bd798 fix: variant items not fetched while making BOM for Variant Item 2025-12-03 19:24:43 +05:30
Pugazhendhi Velu
445a255a7f test: add test for return status in delivery note 2025-12-03 13:19:59 +00:00
Pugazhendhi Velu
af212f520d fix: change is_return value in filter from Yes to 1 2025-12-03 13:14:39 +00:00
Pugazhendhi Velu
dec67eecad fix: add return status for delivery note 2025-12-03 13:10:22 +00:00
rohitwaghchaure
6515bb04bf Merge pull request #50905 from rohitwaghchaure/fixed-github-46855
fix: LCV is not changing the valuation of the repacked item
2025-12-03 18:27:18 +05:30
rohitwaghchaure
b96b7bd046 Merge pull request #50853 from mihir-kandoi/gh33087
fix: incorrect putaway rule validation on stock reco
2025-12-03 18:26:46 +05:30
Sudharsanan11
758553b9fc test(picklist): add test for reserved qty after partial delivery 2025-12-03 18:23:32 +05:30
Sudharsanan11
f5b75b27d7 fix(picklist): calculate picked qty excluding the delivered qty 2025-12-03 18:23:32 +05:30
Mihir Kandoi
7c1a947cd8 Merge pull request #50906 from mihir-kandoi/gh39459 2025-12-03 18:09:37 +05:30
Rohit Waghchaure
ccbbc60585 fix: LCV is not changing the valuation of the repacked item 2025-12-03 18:07:45 +05:30
rohitwaghchaure
47af1cec1b Merge pull request #50902 from mihir-kandoi/gh39358
fix: fg qty uom in manufacture entry
2025-12-03 18:05:31 +05:30
Mihir Kandoi
ec06f4a71b fix: untranslated string in job card 2025-12-03 17:51:06 +05:30
Mihir Kandoi
d9a377108c fix: fg qty uom in manufacture entry 2025-12-03 15:45:56 +05:30
rohitwaghchaure
ed73bd6626 Merge pull request #50896 from rohitwaghchaure/fixed-github-50892
fix: quality inspection showing Not Saved
2025-12-03 13:38:15 +05:30
Rohit Waghchaure
3f78d6afed fix: quality inspection showing Not Saved 2025-12-03 13:00:06 +05:30
Khushi Rawat
4e578c4f83 fix: conflicts 2025-12-03 11:47:04 +05:30
khushi8112
404e68bdc2 fix: more patch related changes 2025-12-03 11:45:01 +05:30
khushi8112
4f33ee01cf fix: undo incorrect patch modification 2025-12-03 11:45:01 +05:30
khushi8112
c7e7e02b5b refactor: use Singles table to get acc_frozen_upto and modifier during migration 2025-12-03 11:45:01 +05:30
khushi8112
4df20a3122 fix: patch to migrate setting 2025-12-03 11:45:01 +05:30
khushi8112
29048c3364 refactor: fix incorrect conditon 2025-12-03 11:45:01 +05:30
khushi8112
09cdb943ec fix: remove duplicate method 2025-12-03 11:45:01 +05:30
khushi8112
0373f7f33f chore: validation for none type object 2025-12-03 11:45:01 +05:30
khushi8112
95877e73f0 fix: use correct date value 2025-12-03 11:45:01 +05:30
khushi8112
16f4e12854 chore: fix typo 2025-12-03 11:45:01 +05:30
khushi8112
9cc8a42074 fix: use correct field name 2025-12-03 11:45:01 +05:30
khushi8112
28febc69e8 fix: validate pending reposting till acc frozen date 2025-12-03 11:45:01 +05:30
Khushi Rawat
eee78766cd chore: resolved conflicts 2025-12-03 11:45:01 +05:30
Khushi Rawat
826c74eb71 chore: remove debug flag accidentally left in code 2025-12-03 11:45:01 +05:30
Khushi Rawat
6da10b9f97 fix: update validation and test cases 2025-12-03 11:45:01 +05:30
Khushi Rawat
cd540ab4cc chore: migration patch for account freezing fields 2025-12-03 11:45:01 +05:30
Khushi Rawat
b2e4e76b97 refactor: remove accounts freezing settings from accounts settings 2025-12-03 11:45:01 +05:30
Khushi Rawat
479e412a44 refactor: get frozen accounts settings from Company in tests 2025-12-03 11:45:01 +05:30
Khushi Rawat
d330700f39 refactor: get frozen accounts settings from Company in patches 2025-12-03 11:44:59 +05:30
Khushi Rawat
dc85babb4d refactor: get frozen accounts settings from Company in Deferred Revenue 2025-12-03 11:42:48 +05:30
Khushi Rawat
17a6392407 refactor: updated logic in depreciation and gl to validate acc frozen date company wise 2025-12-03 11:42:48 +05:30
Khushi Rawat
58db596027 feat: move frozen account settings to Company for company-specific configuration 2025-12-03 11:42:48 +05:30
ruthra kumar
7bca3bbcd8 Merge pull request #50875 from ruthra-kumar/ci_fix_broken_coverage
ci: fix coverage
2025-12-03 11:09:22 +05:30
Mihir Kandoi
b12b40f373 Merge pull request #50869 from mihir-kandoi/gh31117 2025-12-02 22:00:17 +05:30
rohitwaghchaure
72edd86561 Merge pull request #50888 from rohitwaghchaure/fixed-github-48282
fix: cost center not reset
2025-12-02 21:59:58 +05:30
Rohit Waghchaure
29f2ecbd6f fix: cost center not reset 2025-12-02 21:49:03 +05:30
rohitwaghchaure
8053303378 Merge pull request #50882 from rohitwaghchaure/fixed-mandatory-depends-on-for-rejected-inventory-dimension
fix: mandatory depends on for the rejected inventory dimension field
2025-12-02 20:39:59 +05:30
rohitwaghchaure
1a920c035b Merge pull request #50880 from rohitwaghchaure/fixed-sre-status-condition
fix: SRE validation
2025-12-02 20:36:33 +05:30
Diptanil Saha
f106d0e762 Merge pull request #50864 from aerele/allow-leaf-nodes-only 2025-12-02 20:36:04 +05:30
Rohit Waghchaure
5daa625fe8 fix: mandatory depends on for the rejected inventory dimension field 2025-12-02 20:21:07 +05:30
Diptanil Saha
9f599ee52d Merge pull request #50372 from aerele/validate-company-linked-address-field 2025-12-02 20:14:06 +05:30
Rohit Waghchaure
d82464b2f9 fix: SRE validation 2025-12-02 20:04:42 +05:30
ruthra kumar
88e94aa53a ci: code coverage action 2025-12-02 19:34:46 +05:30
rohitwaghchaure
95ff1d48ab Merge pull request #50874 from rohitwaghchaure/fixed-ux-material-request
fix: UX for auto created material request via reorder
2025-12-02 17:55:03 +05:30
rohitwaghchaure
3c6369d396 Merge pull request #50808 from aerele/support-51284
fix(stock entry): use fg item expense account for direct manufacturing entry
2025-12-02 17:31:54 +05:30
rohitwaghchaure
bee0e5d8d4 Merge pull request #50850 from aerele/support-53932
fix(barcode_scanner): set serial and batch before item to prevent FIFO override
2025-12-02 17:31:25 +05:30
Rohit Waghchaure
1e60076ade fix: UX for auto created material request via reorder 2025-12-02 17:21:50 +05:30
Diptanil Saha
4ad624be9c Merge pull request #50773 from aerele/delet-invoice-with-cancelled-repost 2025-12-02 17:12:19 +05:30
Diptanil Saha
026487dce7 Merge pull request #50846 from aerele/validate-product-bundle-stock-in-pos 2025-12-02 17:07:00 +05:30
Mihir Kandoi
9b5d215a7a fix: do cancellation procedures on WO close 2025-12-02 15:36:17 +05:30
Sudharsanan11
2612152456 test(pos): add test for product bundle negative stock validation 2025-12-02 15:19:08 +05:30
Smit Vora
75839f36ba Merge pull request #50733 from vorasmit/qb-changes 2025-12-02 14:41:58 +05:30
ravibharathi656
e08805128b fix: exclude is_group records 2025-12-02 14:09:12 +05:30
Smit Vora
09325aad3d refactor: tax witholding in JV out of document class 2025-12-02 14:08:05 +05:30
Mihir Kandoi
ba94d02cb4 Merge pull request #50834 from mihir-kandoi/pp-flaky-test 2025-12-02 13:37:11 +05:30
Mihir Kandoi
c404e3b093 fix: incorrect query/function logic 2025-12-02 13:19:26 +05:30
rohitwaghchaure
cd5b913750 Merge pull request #50856 from rohitwaghchaure/fixed-operation-read-only
fix: not able to set operation in work order
2025-12-02 12:22:46 +05:30
Khushi Rawat
dcdafc79ee Merge pull request #50794 from aerele/fix-capitalized-asset-repair-gl
fix: use asset in against_voucher while posting gl entries for capitalised asset repairs
2025-12-02 12:07:04 +05:30
Diptanil Saha
91e285efd7 Merge pull request #50149 from Dharanidharan2813/fix/payment-terms-template-fetching 2025-12-02 12:05:12 +05:30
Khushi Rawat
e9e498cbd0 Merge pull request #50793 from ljain112/fix-asset-repair-accounting-dimensions
fix: include accounting dimensions in stock entries created during asset repair.
2025-12-02 11:56:35 +05:30
Rohit Waghchaure
b24c38f332 fix: not able to set operation in work order 2025-12-02 11:18:07 +05:30
Mihir Kandoi
b4fbda4da3 Merge pull request #50854 from mihir-kandoi/employee-filter 2025-12-02 11:17:26 +05:30
Mihir Kandoi
21ec4ed911 fix: show only active employees when starting job card 2025-12-02 11:16:01 +05:30
Mihir Kandoi
7deb407206 fix: incorrect putaway rule validation on stock reco 2025-12-02 10:42:28 +05:30
Navin-S-R
8c35a6ecdd chore: reload asset doc before assertEqual 2025-12-02 00:43:15 +05:30
Pugazhendhi Velu
92ec633a5c fix(barcode_scanner): set serial and batch before item to prevent FIFO override 2025-12-01 19:11:57 +00:00
Navin-S-R
bcf6deec9a test: add unit test to validate capitalized asset repair gl entries being booked against the asset 2025-12-01 23:48:14 +05:30
MochaMind
35379294c3 fix: sync translations from crowdin (#50723) 2025-12-01 16:58:29 +01:00
rohitwaghchaure
1252fed642 Merge pull request #50844 from rohitwaghchaure/fixed-label-for-warehouse
fix: label for warehouse based on material request type
2025-12-01 21:28:21 +05:30
Rohit Waghchaure
699e9b4452 fix: label for warehouse based on material request type 2025-12-01 20:31:14 +05:30
Sudharsanan11
38b4536300 fix(pos): add negative stock validation for product bundle 2025-12-01 19:23:35 +05:30
Jatin3128
cfdbeb6a1a feat(accounting-period): add role-based bypass for accounting period restrictions 2025-12-01 17:33:49 +05:30
ljain112
e1fd90f731 chore: remove unused import for depreciation schedule 2025-12-01 17:06:42 +05:30
ljain112
8ee2cbf259 chore: remove unwanted strings 2025-12-01 17:05:00 +05:30
Mihir Kandoi
25458d6ba6 fix: flaky production plan test 2025-12-01 16:04:05 +05:30
diptanilsaha
1966584804 chore: trigger GitHub actions 2025-12-01 15:27:30 +05:30
ljain112
2a0ba84f69 refactor: linters 2025-12-01 13:17:47 +05:30
ljain112
0c1df30771 fix: add permission check 2025-12-01 13:13:55 +05:30
Abdeali Chharchhoda
5f986e4032 refactor: optimize picked quantity updates using bulk_update 2025-12-01 13:12:23 +05:30
Diptanil Saha
b2ddef8340 Merge pull request #50797 from aerele/dr-cr-outstanding 2025-12-01 13:11:02 +05:30
Diptanil Saha
150c764205 Merge pull request #50814 from diptanilsaha/st54148 2025-12-01 11:45:50 +05:30
rohitwaghchaure
b855eb54b3 Merge pull request #50799 from rohitwaghchaure/fixed-negative-batch-qty-in-SCR
fix: negative batch in subcontracting receipt
2025-12-01 11:44:41 +05:30
diptanilsaha
7e8d19b0c8 fix(email campaign): send emails using bcc 2025-11-30 23:30:15 +05:30
Khushi Rawat
48783d136f Merge pull request #50749 from khushi8112/replace-use-of-publish-realtime-before-print
refactor: company details popup
2025-11-30 22:12:07 +05:30
Khushi Rawat
8b8f569da2 Merge pull request #50811 from khushi8112/extend-print-format-to-other-docs
feat: Standard Print Format for Purchase Order, Delivery Note and POS Invoice
2025-11-30 21:51:52 +05:30
khushi8112
d050cd221d fix: minor change 2025-11-30 21:29:26 +05:30
khushi8112
5cfd7ec32a refactor: generalize popup for multiple doctypes 2025-11-30 18:30:47 +05:30
khushi8112
b808a51d8f refactor: Make labels translatable 2025-11-30 17:38:50 +05:30
khushi8112
1125f96316 feat: print format with images for PO, Delivery Note and POS Invoice 2025-11-30 17:25:02 +05:30
khushi8112
725a4fcf2d feat: standard print format for POS Invoice 2025-11-30 17:00:55 +05:30
MochaMind
32cf6148aa chore: update POT file (#50810) 2025-11-30 11:24:24 +01:00
Pugazhendhi Velu
ba2411b4ee test: add test for fg item expense account in direct manufacturing 2025-11-30 06:32:35 +00:00
Pugazhendhi Velu
ce1312764f fix(stock entry): use fg item expense account for direct manufacturing entry 2025-11-30 06:32:27 +00:00
khushi8112
3a4c1a9f9a refactor: Replace use publish_realtime with msgprint for cleaner flow 2025-11-30 01:26:02 +05:30
khushi8112
945390502e feat: standard print format for Purchase Order and Delivery Note 2025-11-30 01:25:11 +05:30
ruthra kumar
ae7db7ea5a Merge pull request #50802 from Jatin3128/gh_48028
fix(accounts-payable-summary): add Show GL Balance check similar to A…
2025-11-29 11:34:05 +05:30
Jatin3128
8a7e5d0626 fix(accounts-payable-summary): add Show GL Balance check similar to Accounts Receivable Summary 2025-11-28 21:41:32 +05:30
ljain112
ff9b392024 fix: add duplicate purchase invoice validation in asset repair 2025-11-28 19:13:31 +05:30
ljain112
0b84d11600 perf: enhance validation for purchase invoices to check submission status for all invoices 2025-11-28 19:09:54 +05:30
ljain112
c2810ea799 perf: replace get_doc with get_lazy_doc for asset retrieval and optimize stock entry fetching 2025-11-28 18:54:37 +05:30
ljain112
00ffdee928 fix: update repair cost logic to set value only for positive amounts 2025-11-28 18:45:07 +05:30
ljain112
b9aaae6343 fix: remove unnecessary filtering by search text in get_expense_accounts 2025-11-28 18:36:13 +05:30
ljain112
e6160d1b63 fix: correct logic for repair cost in asset repair 2025-11-28 18:30:51 +05:30
Khushi Rawat
82b6326e0b Merge pull request #50792 from ljain112/fix-asset-repair-connection
fix: add Stock Entry link to Asset Repair doctype.
2025-11-28 17:34:38 +05:30
Khushi Rawat
e42b751dce Merge pull request #50772 from aerele/fix-asset-purchase-date
fix: use posting_date instead of bill_date from purchase invoice
2025-11-28 17:18:13 +05:30
Rohit Waghchaure
71e46b3ef5 fix: negative batch in subcontracting receipt 2025-11-28 16:26:55 +05:30
l0gesh29
765f9a9bbf fix(payment-recon): add validation for outstanding of dr_cr 2025-11-28 15:01:50 +05:30
ljain112
cdbe8b909b refactor: show_general ledger for consistency with other doctyoes 2025-11-28 14:13:24 +05:30
ruthra kumar
956e5b1b68 fix: incorrect positional param for get_field_precision util (#50764)
fix: incorrect positional param for get_field_precision util
2025-11-28 14:01:36 +05:30
Smit Vora
92fdec9b92 test: add test for projected quantity cascading across multiple sales orders 2025-11-28 13:45:20 +05:30
ljain112
147a5ee953 fix: include accounting dimensions in stock entries created during asset repair. 2025-11-28 13:35:47 +05:30
Smit Vora
a2fadd9347 fix: use ValueWrapper consistently 2025-11-28 13:33:24 +05:30
ljain112
da7f28a3c3 fix: add Stock Entry link to Asset Repair doctype. 2025-11-28 13:05:24 +05:30
Navin S R
a7e43eddad fix: use asset in against_voucher while posting gl entries for capitalized asset repairs 2025-11-28 12:54:27 +05:30
Diptanil Saha
0520ab3c66 Merge pull request #50642 from Jatin3128/gh_48202 2025-11-28 11:50:34 +05:30
Smit Vora
d344be32a0 fix: cascade projected quantity across multiple items in material requests 2025-11-28 11:37:25 +05:30
Aadhil
9145bf5563 fix: restore missing account number for Indirect Expenses in standard COA with Numbers (#50767) 2025-11-27 19:23:02 +05:30
Smit Vora
b7c7e0746e fix: only show net gl balance as opening in general ledger 2025-11-27 19:15:46 +05:30
Aadhil
355aa52cb8 feat: add Account Category field to Account (Chart of Accounts) (#50766) 2025-11-27 18:40:20 +05:30
Mihir Kandoi
cf449d8dcb Merge pull request #50777 from mihir-kandoi/sr-better-uiux 2025-11-27 17:10:45 +05:30
Diptanil Saha
98e864bea0 Merge pull request #50775 from frappe/mergify/bp/develop/pr-50558 2025-11-27 16:58:42 +05:30
Mihir Kandoi
aab7cd1ae6 chore: make unnecessary field read only and show only when required 2025-11-27 16:51:35 +05:30
Diptanil Saha
31142b2f47 chore: resolve conflict 2025-11-27 16:40:55 +05:30
Sherin KR
c5d92d7999 fix: item price not considering based on valid_upto
(cherry picked from commit dfda8e6241)

# Conflicts:
#	erpnext/selling/page/point_of_sale/point_of_sale.py
2025-11-27 11:04:59 +00:00
l0gesh29
d8fc369e38 fix: add validation for cancelled reposting entries 2025-11-27 14:19:32 +05:30
Navin S R
145d40dec8 fix: use posting_date instead of bill_date from purchase invoice 2025-11-27 14:06:43 +05:30
ljain112
6079bee3a3 fix: remove redundant party variable assignments 2025-11-27 13:44:28 +05:30
ljain112
6a66ce5a97 fix: add is_tax_withholding_account field to JournalEntryAccount to avoid recursive tds 2025-11-27 13:40:23 +05:30
rohitwaghchaure
8a5fd5fe89 Merge pull request #50769 from rohitwaghchaure/fixed-two-primary-buttons
fix: two primary buttons
2025-11-27 11:56:00 +05:30
Rohit Waghchaure
f68515210b fix: two primary buttons 2025-11-27 11:43:21 +05:30
Hussain Nagaria
c2358c6b3f fix: incorrect positional param for get_field_precision util 2025-11-26 22:19:50 +05:30
rohitwaghchaure
8ed9ee9213 Merge pull request #50742 from rohitwaghchaure/fix-serial-batch-disassembly
fix: inward same serial / batches in disassembly which were used
2025-11-26 20:57:13 +05:30
Rohit Waghchaure
95e6c72539 fix: inward same serial / batches in disassembly which were used 2025-11-26 18:01:55 +05:30
Mihir Kandoi
2b3bdfe387 Merge pull request #50759 from mihir-kandoi/fix-bad-test 2025-11-26 17:59:55 +05:30
Mihir Kandoi
5391ca2a55 test: fix flaky test case 2025-11-26 17:40:05 +05:30
Jatin3128
0e7f75f5c0 fix(journal-entry): auto-populate bank account when user selects account (#50744)
* fix(journal-entry): auto-populate bank account when user selects account

* refactor(journal-entry): simplify get_value call and return None by default

---------

Co-authored-by: Jatin3128 <jatinsarna8@gmail.com>
2025-11-26 17:26:33 +05:30
Mihir Kandoi
d17120909c Merge pull request #50736 from mihir-kandoi/refactor-so-to-po 2025-11-26 16:55:12 +05:30
Soham Kulkarni
74a5325a95 Merge pull request #50732 from sokumon/export-all-sidebars 2025-11-26 16:22:55 +05:30
Diptanil Saha
0ca6e19a85 Merge pull request #50752 from ljain112/fix-round-off-so 2025-11-26 14:31:53 +05:30
Diptanil Saha
383c33b02a Merge pull request #50753 from diptanilsaha/gh-50083 2025-11-26 14:27:30 +05:30
diptanilsaha
079218ffbf fix: exchange_rate field visibility on invoice currency change 2025-11-26 14:20:05 +05:30
ljain112
563c2998ca fix: enhance SalesOrderController setup method to call super.setup 2025-11-26 12:51:14 +05:30
SowmyaArunachalam
d52d98666f chore: update description 2025-11-25 23:05:59 +05:30
SowmyaArunachalam
e830cca886 feat(asset): make asset depreciation failure notification role configurable 2025-11-25 22:28:26 +05:30
Mihir Kandoi
7b592d8737 feat: add provision to mass select supplier 2025-11-25 20:54:24 +05:30
Mihir Kandoi
88b262abc7 fix: more coderabbit issues 2025-11-25 16:07:35 +05:30
rohitwaghchaure
a8d3e9bacc Merge pull request #50735 from rohitwaghchaure/fixed-validation-for-batch
fix: stock reservation validation
2025-11-25 15:14:55 +05:30
ruthra kumar
264dcf8539 Merge pull request #50734 from diptanilsaha/frankfurter-api
chore: switched frankfurter domain from frankfurter.app to frankfurter.dev
2025-11-25 14:58:12 +05:30
diptanilsaha
f1f68ead7d chore: switched frankfurter api domain from api.frankfurter.app to api.frankfurter.dev 2025-11-25 13:10:48 +05:30
Mihir Kandoi
5a17dd8d6d fix: addresses not being carried forward 2025-11-25 12:58:52 +05:30
Mihir Kandoi
c93dba2895 fix: coderabbit suggestions 2025-11-25 12:33:51 +05:30
Mihir Kandoi
a436c6a503 refactor: creation of purchase order from sales order 2025-11-25 12:16:48 +05:30
Smit Vora
8235a551f0 refactor: further changes to adapt to query builder changes 2025-11-25 12:08:31 +05:30
Rohit Waghchaure
ca47ae6fd8 fix: stock reservation validation 2025-11-25 12:01:51 +05:30
sokumon
3d0b28a198 fix: re-export all sidebars 2025-11-25 11:17:29 +05:30
ruthra kumar
58e217be6a Merge pull request #50561 from aerele/hidden-fields-ledger-summary
fix(ledger-summary-report): show party group and territory
2025-11-25 11:07:23 +05:30
Logesh Periyasamy
5e58e344b2 feat(accounting-dimension): add dynamic triggers for custom accounting dimensions (#50621)
* feat: add dynamic triggers for custom accounting dimensions

* feat: add accounting dimension trigger call in setup event

* chore: ignore cur_frm semgrep rules

* chore: move function to transaction.js
2025-11-25 10:21:17 +05:30
Mihir Kandoi
c2b8b97d7d fix: incorrect query filter when selecting primary customer adr (#50727) 2025-11-25 04:48:04 +00:00
MochaMind
fa8007f949 fix: sync translations from crowdin (#50699) 2025-11-24 19:27:59 +01:00
ljain112
40b787827a fix: use alias for get_exchange_rate function in JournalEntry 2025-11-24 18:04:56 +05:30
ruthra kumar
33135899ab Merge pull request #50706 from frappe/pot_develop_2025-11-23
chore: update POT file
2025-11-24 17:20:57 +05:30
ljain112
50cf814b43 Merge branch 'develop' into tds-jv 2025-11-24 16:47:30 +05:30
Khushi Rawat
5806bcbb17 Merge pull request #50716 from elshafei-developer/add-missing-translate-function
fix: add missing translate function
2025-11-24 13:07:40 +05:30
El-Shafei H.
56def01240 fix: add missing translate function 2025-11-24 09:51:42 +03:00
Kavin
d01c4b68fe fix: add validation for FG Items as per BOM qty (#50579)
Co-authored-by: Kavin <78342682+kavin0411@users.noreply.github.com>
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-11-24 06:17:14 +00:00
Mihir Kandoi
aeece36d93 Merge pull request #50712 from mihir-kandoi/gh50703 2025-11-24 11:30:50 +05:30
Mihir Kandoi
49c866db74 chore: change manufacturing course link 2025-11-24 11:12:06 +05:30
Mihir Kandoi
e2a01773a5 Merge pull request #50661 from aerele/support-53364 2025-11-24 10:38:17 +05:30
Mihir Kandoi
903e97af5f Merge pull request #50710 from mihir-kandoi/fix-phantom-subassembly 2025-11-23 21:52:09 +05:30
Mihir Kandoi
7b1d860c33 fix: subassembly inside phantom item not being fetched in production plan 2025-11-23 21:33:38 +05:30
Mihir Kandoi
5659538e67 Merge pull request #50707 from mihir-kandoi/pricing-rule-error 2025-11-23 19:37:44 +05:30
Mihir Kandoi
3b7d7aed4c fix: unknown column error 2025-11-23 19:16:39 +05:30
frappe-pr-bot
3404419a1f chore: update POT file 2025-11-23 09:36:01 +00:00
Diptanil Saha
47a6d34224 Merge pull request #50476 from aerele/support-53067 2025-11-21 22:10:37 +05:30
Lakshit Jain
d3c33d16ad Merge pull request #50609 from karm1000/patch/handle-empty-item-tax-rate
fix: handle empty item_tax_rate in ItemTax class
2025-11-21 18:27:02 +05:30
Karm Soni
fc098a732b fix: handle empty item_tax_rate in ItemTax class 2025-11-21 16:47:23 +05:30
Smit Vora
e92c46ba19 Merge pull request #50658 from ljain112/fix-taxes-validation 2025-11-21 16:43:59 +05:30
rohitwaghchaure
5ded5e54f1 Merge pull request #50660 from rohitwaghchaure/fixed-repost-gl-only
feat: repost GL Entries only
2025-11-21 16:06:31 +05:30
Rohit Waghchaure
b01f872f7d feat: repost GL Entries only 2025-11-21 15:21:38 +05:30
Sagar Vora
d5120efa25 Merge pull request #50675 from sagarvora/fix-item-wise-tax-detail-patch 2025-11-21 14:23:09 +05:30
Sagar Vora
f644c19760 fix: ignore chunk if no valid invoices found 2025-11-21 14:04:15 +05:30
Akhil Narang
42f4e7ebde Merge pull request #50659 from akhilnarang/qb-compat
fix: adjust a few more queries
2025-11-21 13:43:14 +05:30
Mihir Kandoi
d5025b2af8 Merge pull request #50667 from mihir-kandoi/gh50122 2025-11-21 12:50:48 +05:30
Mihir Kandoi
5fe3fcf174 Merge pull request #50655 from mihir-kandoi/gh49528 2025-11-21 12:43:27 +05:30
Diptanil Saha
47bb2544b9 Merge pull request #50669 from diptanilsaha/gh-50435 2025-11-21 12:25:32 +05:30
diptanilsaha
cd145f4141 fix(lead): made the create and action menu visible for lead doctype 2025-11-21 12:22:00 +05:30
Pugazhendhi Velu
9194e6350a fix: apply precision for scrap items amount 2025-11-21 06:43:20 +00:00
Mihir Kandoi
ffae7c4175 fix: pricing rule was ignoring time validity 2025-11-21 11:58:33 +05:30
Mihir Kandoi
d26f8aa629 fix: tests 2025-11-21 11:23:06 +05:30
Pugazhendhi Velu
5fd7d46986 Merge branch 'develop' of https://github.com/aerele/erpnext into support-53364 2025-11-21 05:44:52 +00:00
Diptanil Saha
866f1e695b Merge pull request #50665 from diptanilsaha/st-53822 2025-11-21 06:47:39 +05:30
diptanilsaha
310099f4cd fix(customer): link contact and addresses if created from lead/opportunity/prospect 2025-11-21 06:18:43 +05:30
MochaMind
7422464e75 fix: sync translations from crowdin (#50664) 2025-11-21 00:44:07 +01:00
Pugazhendhi Velu
02941afd6a Merge branch 'develop' of https://github.com/frappe/erpnext into support-53364 2025-11-20 13:31:25 +00:00
Akhil Narang
13f8bcd289 fix: adjust a few more queries
Signed-off-by: Akhil Narang <me@akhilnarang.dev>
2025-11-20 18:14:34 +05:30
ljain112
ef37e6aa16 fix: handle zero rate actual taxes in calculate_taxes_and_totals 2025-11-20 18:13:30 +05:30
Mihir Kandoi
f7b3253683 fix: pick list status doesn't update when DN created from it and PL was created from SO 2025-11-20 17:40:28 +05:30
rohitwaghchaure
8f01e89d76 Merge pull request #50639 from mihir-kandoi/st47854
fix(product bundle): fields reset if doc is new
2025-11-20 16:12:00 +05:30
rohitwaghchaure
8a40eac45a Merge pull request #50649 from mihir-kandoi/zero-val-stock-reco
fix: unhide zero val checkbox in stock reco
2025-11-20 16:11:34 +05:30
Mihir Kandoi
7172f30455 Merge pull request #50385 from NihalRoshanCK/disable-warehouse 2025-11-20 16:02:09 +05:30
Mihir Kandoi
ff2d9bf4cb fix: remove disabled warehouse in get_warehouses_based_on_account 2025-11-20 15:42:27 +05:30
Mihir Kandoi
20e0313a8c fix: unhide zero val checkbox 2025-11-20 15:34:39 +05:30
Mihir Kandoi
7faee7edc2 fix(product bundle): fields reset if doc is new 2025-11-20 15:32:55 +05:30
rohitwaghchaure
21361ebb2f Merge pull request #50646 from mihir-kandoi/gh49446
fix: serial batch selector shown only once
2025-11-20 15:07:44 +05:30
Mihir Kandoi
aa6f09e9a9 fix: serial batch selector shown only once 2025-11-20 14:57:33 +05:30
rohitwaghchaure
5e47b0dadb Merge pull request #50644 from rohitwaghchaure/fixed-delete-sabb-validation
fix: validation for SABB deletion
2025-11-20 13:45:36 +05:30
Khushi Rawat
8a57090aa2 Merge pull request #50286 from khushi8112/budget-feature-enhancements
feat: Budget feature enhancements
2025-11-20 13:07:03 +05:30
Rohit Waghchaure
dd4bef0706 fix: validation for SABB deletion 2025-11-20 13:00:24 +05:30
Jatin3128
4b612c64a8 fix(payment reconciliation): added a hint that posting date can be changed on exchange gain/loss reconcile dialog 2025-11-20 12:53:29 +05:30
Mihir Kandoi
c3e735ae96 Merge pull request #50502 from aerele/add-purchase-invoice-link-field 2025-11-20 12:33:11 +05:30
khushi8112
c3ff5e3748 fix: multiple minor fixes 2025-11-20 12:18:03 +05:30
ruthra kumar
ee69a6b8ab Merge pull request #50636 from frappe/l10n_develop
fix: sync translations from crowdin
2025-11-20 10:57:12 +05:30
Mihir Kandoi
4e6d288056 Merge pull request #50635 from aerele/negative-conversion-factor 2025-11-20 10:55:00 +05:30
MochaMind
cb737f31fc fix: Bosnian translations 2025-11-19 14:23:42 -08:00
MochaMind
1d850bf3be fix: Croatian translations 2025-11-19 14:23:39 -08:00
MochaMind
fdb790b00f fix: Persian translations 2025-11-19 14:23:35 -08:00
MochaMind
29f9e423b2 fix: Swedish translations 2025-11-19 14:23:29 -08:00
SowmyaArunachalam
6141071a18 fix(uom): validate negative conversion factor 2025-11-19 22:05:19 +05:30
Akhil Narang
0cb734d6a0 Merge pull request #50550 from akhilnarang/qb-compat
refactor: adapt for query builder changes
2025-11-19 21:55:25 +05:30
Akhil Narang
1cf9f903e5 fix: adapt to query builder
Signed-off-by: Akhil Narang <me@akhilnarang.dev>
2025-11-19 21:36:37 +05:30
Rohit Waghchaure
d40e660a52 fix: use qb for functions 2025-11-19 21:36:37 +05:30
Pugazhendhi Velu
57f9353d90 fix(manufacturing): apply precision for bom amount and rm_cost_per_qty 2025-11-19 14:19:26 +00:00
khushi8112
acec1a7a9d fix: permission based revision of budget 2025-11-19 17:05:26 +05:30
rohitwaghchaure
ec4d4a0d6c Merge pull request #50624 from rohitwaghchaure/fixed-desktop-icons-accounts
fix: desktop icons
2025-11-19 16:38:16 +05:30
Mihir Kandoi
1ee700fff3 fix: process loss % can be negative (#50629) 2025-11-19 11:07:23 +00:00
ruthra kumar
197f00f211 Merge pull request #50623 from vorasmit/fix-custom-fs-js
fix: replace `this` with function path
2025-11-19 16:19:12 +05:30
Mihir Kandoi
5fdf8058df Merge pull request #48634 from mihir-kandoi/46788 2025-11-19 16:17:47 +05:30
Rohit Waghchaure
124293bd63 fix: desktop icons 2025-11-19 16:16:21 +05:30
Mihir Kandoi
38cf0d9b5f Merge pull request #50627 from mihir-kandoi/gh48474 2025-11-19 16:16:19 +05:30
Mihir Kandoi
3271eaaf0e fix: show current company warehouse only in get material from bom MR 2025-11-19 16:13:56 +05:30
Mihir Kandoi
5ba4c1ea22 Merge pull request #50625 from mihir-kandoi/gh48301 2025-11-19 16:11:32 +05:30
Mihir Kandoi
3ca3a6d9bb fix: add filter company and status to job card employee 2025-11-19 16:07:50 +05:30
Mihir Kandoi
3327799524 test: add test case 2025-11-19 15:57:15 +05:30
Mihir Kandoi
0973dbac65 fix: create job card button 2025-11-19 15:56:38 +05:30
khushi8112
8fd5d7187a refactor: replace args with params 2025-11-19 15:56:32 +05:30
khushi8112
9ebf546e1f refactor: patch for migration 2025-11-19 15:56:32 +05:30
khushi8112
4a03462890 refactor: use params instead of args 2025-11-19 15:56:32 +05:30
khushi8112
4576ccbbdc fix: use new naming series 2025-11-19 15:56:32 +05:30
khushi8112
22ec48159e fix(minor): use corrct field name in patch 2025-11-19 15:56:32 +05:30
khushi8112
e08793cb8f fix(patch): update naming series for budget 2025-11-19 15:56:32 +05:30
khushi8112
4abe2e82a0 fix(patch): migrate old Budget data to new structure 2025-11-19 15:56:32 +05:30
khushi8112
57f9faa15a fix: validate existing expenses when revising or modifying budget amounts 2025-11-19 15:56:32 +05:30
khushi8112
09ed3066d8 fix: test cases and fiscal year validation 2025-11-19 15:56:32 +05:30
khushi8112
04a44e7e14 refactor: budget controller 2025-11-19 15:56:32 +05:30
khushi8112
e4bae76580 refactor: add budget start and end date field on the parent 2025-11-19 15:56:32 +05:30
khushi8112
e40fe9919c refactor: better manual budget distribution ux 2025-11-19 15:56:32 +05:30
khushi8112
1cb03db43b test: test cases to validate budget distribution and revision 2025-11-19 15:56:32 +05:30
khushi8112
bd88356a8a feat: budget for multiple fiscal year 2025-11-19 15:56:32 +05:30
khushi8112
b5d892c802 fix: default company currency for amount 2025-11-19 15:56:32 +05:30
khushi8112
1f832ca23e fix: test cases of budget 2025-11-19 15:56:32 +05:30
khushi8112
64456af654 refactor: update budget expense validation to align with new structure 2025-11-19 15:56:32 +05:30
khushi8112
af9dc8e406 test: budget revision test cases 2025-11-19 15:56:32 +05:30
khushi8112
077692b57b feat: Budget Revision 2025-11-19 15:56:32 +05:30
khushi8112
882b6c2950 feat: add budget amount field on parent 2025-11-19 15:56:32 +05:30
khushi8112
d8deb33c8c feat: auto-generate budget distribution rows based on start and end date 2025-11-19 15:56:32 +05:30
khushi8112
8857037971 feat: flexible budget allocation frequency 2025-11-19 15:56:31 +05:30
khushi8112
ccb89fee75 feat: add fields for new budget flow 2025-11-19 15:56:31 +05:30
khushi8112
e23d229e7b feat: introduce budget distribution child table 2025-11-19 15:56:31 +05:30
khushi8112
906a4bd398 feat(patch): set total budget amount on budget doctype 2025-11-19 15:56:31 +05:30
khushi8112
b6e452a695 feat: show budget total 2025-11-19 15:56:31 +05:30
Mihir Kandoi
37b120bf69 fix: modify for new changes 2025-11-19 15:56:13 +05:30
rohitwaghchaure
be40b5bbff Merge pull request #50622 from rohitwaghchaure/fixed-validate-reserved-batch
fix: validate reserved batches
2025-11-19 15:51:30 +05:30
Smit Vora
2a1eb08b08 fix: replace this with function path 2025-11-19 15:50:42 +05:30
Rohit Waghchaure
ae0d9d1134 fix: validate reserved batches 2025-11-19 15:12:12 +05:30
Mihir Kandoi
59c3eef7db fix: stock entry manufacture - fix operating cost calculation 2025-11-19 13:00:47 +05:30
Mihir Kandoi
4efe681a5c Merge pull request #50617 from mihir-kandoi/mergify-16-beta-label 2025-11-19 12:49:08 +05:30
Mihir Kandoi
83dab5db60 feat: backport v16 beta label 2025-11-19 12:46:45 +05:30
Mihir Kandoi
d1595a2549 Merge pull request #50614 from mihir-kandoi/fix-duplicate-message 2025-11-19 12:35:11 +05:30
Mihir Kandoi
074f07694f fix: redundant message on bom save 2025-11-19 12:11:56 +05:30
MochaMind
dea734cd4c fix: sync translations from crowdin (#50613) 2025-11-19 01:11:26 +01:00
MochaMind
cf73de9533 chore: update POT file (#50547) 2025-11-18 15:39:39 +01:00
rohitwaghchaure
f13e540e74 Merge pull request #50512 from aerele/support-53201
fix: add return status for purchase receipt
2025-11-18 18:02:27 +05:30
rohitwaghchaure
1512c94e79 Merge pull request #50486 from aerele/support-52693
fix: validate sabb autocreation when disabled
2025-11-18 17:58:22 +05:30
ruthra kumar
d2c19007cc Merge pull request #50524 from aerele/financial-ratio-calculation-fix
fix: use dynamic account type to get average ratio balance
2025-11-18 16:52:17 +05:30
Khushi Rawat
9b374d605a Merge pull request #50591 from khushi8112/validate-depreciation-account-type
fix: validate account type of depreciation account
2025-11-18 16:48:18 +05:30
Logesh Periyasamy
113ff17c71 fix(general_ledger): add translation for accounting dimension 2025-11-18 16:45:15 +05:30
Logesh Periyasamy
9670edb521 fix: add condition for allow negative stock in pos (#50369) 2025-11-18 16:37:24 +05:30
Raffael Meyer
4d9473f844 feat(Company): allow setting default sales contact, fetch into sales transaction (#50159) 2025-11-18 16:33:21 +05:30
khushi8112
68d6fc142b fix: check root type instead of account type 2025-11-18 16:26:35 +05:30
khushi8112
ca37f0371b fix: validate root type as well 2025-11-18 15:26:02 +05:30
ruthra kumar
73eaddcd67 fix: unintended backported depends_on expression (backport #50529) (#50587)
fix: unintended backported depends_on expression (#50529)


(cherry picked from commit 81a16286a1)

Co-authored-by: Kavin <78342682+kavin-114@users.noreply.github.com>
Co-authored-by: Kavin <78342682+kavin0411@users.noreply.github.com>
2025-11-18 15:05:27 +05:30
khushi8112
592ec1c5a5 fix: validate account type of depreciation account 2025-11-18 14:51:46 +05:30
rohitwaghchaure
b1be525032 Merge pull request #50585 from rohitwaghchaure/fixed-desktop-icons-erpnext
fix: icons for workspace sidebar in ERPNext modules
2025-11-18 14:10:56 +05:30
Rohit Waghchaure
842546d917 fix: icons for workspace sidebar in ERPNext modules 2025-11-18 13:49:33 +05:30
l0gesh29
8f91919933 test: add party_group, territory in json 2025-11-18 13:42:45 +05:30
Kavin
67d471598d fix: unintended backported depends_on expression (#50529)
Co-authored-by: Kavin <78342682+kavin0411@users.noreply.github.com>
(cherry picked from commit 81a16286a1)
2025-11-18 08:08:07 +00:00
Ejaaz Khan
154350b733 Merge pull request #50583 from iamejaaz/fix-item-patch
fix: NoneType issue on item tax rate
2025-11-18 12:00:44 +05:30
Ejaaz Khan
9ea3e1e848 fix: NoneType issue on item tax rate 2025-11-18 11:40:20 +05:30
rohitwaghchaure
b672744543 Merge pull request #50578 from rohitwaghchaure/fixed-hide-home-icon
fix: hide home icon
2025-11-17 21:16:43 +05:30
Rohit Waghchaure
4e1e2ee756 fix: hide home icon 2025-11-17 20:58:23 +05:30
rohitwaghchaure
6277dac209 Merge pull request #50577 from rohitwaghchaure/fixed-desktop-icons
fix: desktop icons
2025-11-17 19:58:55 +05:30
Rohit Waghchaure
9349dcc907 fix: desktop icons 2025-11-17 19:40:51 +05:30
rohitwaghchaure
2ea6921e20 Merge pull request #50575 from sokumon/desktop-icons
fix: add more icons
2025-11-17 19:37:41 +05:30
sokumon
12a2e14dae fix: add more icons 2025-11-17 19:12:31 +05:30
Smit Vora
12008b775f Merge pull request #50439 from ljain112/fix-lead-quotation 2025-11-17 19:08:31 +05:30
Smit Vora
5662801a9c Merge pull request #50496 from ljain112/correct-grand-total 2025-11-17 19:05:45 +05:30
Lakshit Jain
91f3c82bdf feat!: Item Wise Tax Details Table (#48692)
* fix: Add `Item Wise Tax Detail` Table and update related doctypes

* fix: remove setting item_wise_tax_details in client side

* fix: Remove redundant code for updating item_wise_tax_details after rename

* fix: Add 'dont_recompute_tax' field to Item Wise Tax Detail

* fix: update item_wise_tax_details after validations

* chore: remove redundant code from payment_entry.js

* fix: changes in POS for item_wise_tax_details

* fix: handle merge taxes

* fix: update test case and fix precision issue

* chore: remove debugging statement

* chore: remove redundant import

* chore: linters

* chore: remove redundant code and minor refactor

* fix: correct function args

* fix: fix test cases

* fix: item wise sales register report

* fix: remove dont recompute from item wise tax details and calculation for deduct

* fix: do not retain old rows

* fix: added validation for item wise tax details

* fix: tax merging for pos

* fix: vat audit report(regional report)

* fix: query issue in item-wise sales register

* fix: set other_charges using temp object

* fix: precision issue in validation

* fix: changes as per failing test cases

* fix: tax merging

* fix: set no_copy for item wise tax detail

* fix: correct select field in query and other charged in item_wise_purchase_register

* fix: do not include rows with missing item or tax in merge_taxes

* fix: respect row wise rounding

* chore: remove unused import

* chore: incorrect tuple creation

* fix: handle rounding adjustment

* fix: currency option in item wise tax detail doctype

* fix: patch to migrate item_wise tax_details to table

* chore: remove item_wise_tax_detail from taxes table

* fix: use base_tax_withholding_net_total instead of tax_withholding_net_total

* fix: implemet item_wise_tax_detail for e-invoice (italy)

* fix: fetch document by doctypes in migration patch

* fix: fix multiple syntax errors and inconsistent variable usage

* fix: remove deprecated settings and update item wise tax details flag

* fix: enhance validation for item wise tax details and handle discrepancies

* fix: increase chunk size for migration and improve item-wise tax detail calculations

* fix: delete existing item-wise tax details to prevent duplicates during migration

* fix: remove unnecessary docstatus filter from tax details query

* fix: streamline validation checks in item wise tax details adjustment

* fix: update additional fields to reference item and invoice attributes in tax detail queries

* fix: Restrict tax query to the selected invoices in vat audit report

* fix: use `base_tax_withholding_net_total` for calculation in patch

* fix: set tax row_id and idx to None instead of empty strings

* fix: remove unused precision parameter from rounding differences handler

* fix: update docstatus in item_wise_tax_details as per doc

* fix: remove empty on_update method from SalesOrder class

* fix: remove empty on_update method from PurchaseOrder class

* fix: incorporate zero cutoff in tax calculation logic

* fix: increase threshold for rounding diff
2025-11-17 19:02:31 +05:30
rohitwaghchaure
47b7214580 Merge pull request #50567 from sokumon/desktop-icons
feat: add newly created desktop icons
2025-11-17 17:33:32 +05:30
sokumon
768afd7968 feat: add newly created desktop icons 2025-11-17 17:10:00 +05:30
rohitwaghchaure
ec5849d8d2 Merge pull request #50492 from nabinhait/erpnext-workspace-sidebars
refactor: Workspace sidebars and desktop icons for erpnext modules
2025-11-17 16:55:23 +05:30
Rohit Waghchaure
fdbe7bc988 fix: desktop icon placing 2025-11-17 16:35:03 +05:30
Rohit Waghchaure
8ea5170fb8 fix: sidebars of erpnext modules 2025-11-17 15:25:50 +05:30
Mihir Kandoi
350539f5e6 Merge pull request #50562 from mihir-kandoi/gh50536 2025-11-17 14:53:29 +05:30
Mihir Kandoi
4cde0bfddd fix: incorrect connection to delivery note on pick list 2025-11-17 14:34:16 +05:30
ruthra kumar
05ee4c0b0c Merge pull request #50560 from frappe/mergify/copy/develop/pr-49788
feat: (Multi-Currency in Employee Advance, Expense Claim)  update exchange rate of payment entry in gl entry & added exchange rate, base amount field in Advance Payment Ledger Entry (copy #49788)
2025-11-17 14:07:35 +05:30
Rohit Waghchaure
56e44cfccb fix: sidebar for selling and accounting modules 2025-11-17 13:55:01 +05:30
l0gesh29
231479a6e2 fix(ledger-summary-report): show party group and territory 2025-11-17 13:42:43 +05:30
iamkhanraheel
054e7adeac fix: conflicts 2025-11-17 13:37:25 +05:30
iamkhanraheel
9c2525a8f4 feat: add exchange rate & base field in advance payment ledger, set exchange rate in journal entry on every refresh
(cherry picked from commit 287cb621cd)

# Conflicts:
#	erpnext/accounts/doctype/advance_payment_ledger_entry/advance_payment_ledger_entry.json
2025-11-17 08:04:55 +00:00
iamkhanraheel
bacef2f135 fix: remove hrms dependent func which are moved to hrms module
(cherry picked from commit 038536e1cd)
2025-11-17 08:04:54 +00:00
iamkhanraheel
78da4c38fa feat: multiCurrency in epxense claim, set excahnge rate in advance & update it in gl entry
(cherry picked from commit a9ecf7c319)
2025-11-17 08:04:54 +00:00
Rohit Waghchaure
334deccd2d feat: workspace sidebars and desktop icons for erpnext modules 2025-11-17 13:20:57 +05:30
rohitwaghchaure
b5df39f47d Merge pull request #50388 from rohitwaghchaure/feat-subcontracting-workspace
feat: subcontracting workspace and sidebar
2025-11-17 13:08:50 +05:30
Asmita Hase
8ca02e7fbb Merge pull request #50538 from asmitahase/holiday-list-assignment 2025-11-17 12:11:49 +05:30
Asmita Hase
7362d783b1 Merge branch 'develop' into holiday-list-assignment 2025-11-17 11:53:56 +05:30
rohitwaghchaure
60f8654ad6 Merge pull request #50506 from mihir-kandoi/company-wise-valuation-method
feat: company wise valuation method
2025-11-17 11:49:09 +05:30
ruthra kumar
b2a0cdf4bc Merge pull request #50552 from frappe/l10n_develop
fix: sync translations from crowdin
2025-11-17 11:27:49 +05:30
Khushi Rawat
c4b9268f9d Merge pull request #50404 from khushi8112/company-details-popup-trigger
fix: show company-details popup only for the targeted print format/le…
2025-11-17 11:15:59 +05:30
Mihir Kandoi
316b6d6867 feat: company wise valuation method 2025-11-17 10:37:11 +05:30
Mihir Kandoi
5dcb766b9f Merge pull request #50540 from aerele/support-52430 2025-11-17 10:10:48 +05:30
MochaMind
03bfbeb1cb fix: Persian translations 2025-11-16 14:14:08 -08:00
MochaMind
14c5245037 fix: sync translations from crowdin (#50503)
* fix: Persian translations

* fix: Bosnian translations

* fix: Hungarian translations

* fix: French translations

* fix: Arabic translations

* fix: Polish translations

* fix: Turkish translations

* fix: Indonesian translations

* fix: Persian translations

* fix: Spanish translations
2025-11-16 15:08:37 +01:00
Mihir Kandoi
42002d0aa1 Merge pull request #50507 from mihir-kandoi/company-wise-default-warehouses 2025-11-16 17:10:11 +05:30
Mihir Kandoi
84af60da7f feat: company wise default warehouses 2025-11-16 16:51:51 +05:30
rohitwaghchaure
c4882f6f26 fix: validation to check company in Sales Forecast and MPS (#50545) 2025-11-16 15:08:31 +05:30
Mihir Kandoi
e5e26cd92a feat: phantom bom (#50351)
* feat: add phantom bom settings in bom doctype

* feat: new explosion logic for production plan, subcontracting and work order/manufacturing

* feat: modify explosion logic in reports and bom creator

* fix: failing test

* feat: add convert to phantom item support in bom creator

* test: added test cases

* fix: always fetch rm rate if phantom bom

* refactor: PP phantom explosion logic

* fix: report test cases

* feat: add phantom item in description of item if phantom item in bom tree

* fix: hide create button if bom is phantom

* fix: bugs found by coderabbit
2025-11-16 15:08:08 +05:30
Mihir Kandoi
9b303a2272 Merge pull request #50235 from mihir-kandoi/sre-sco
feat: stock reservation for subcontracting order
2025-11-16 13:06:21 +05:30
Rohit Waghchaure
80b6c226b2 fix: validation to check company in Sales Forecast and MPS 2025-11-16 12:58:29 +05:30
Pugazhendhi Velu
8b38578914 fix(stock-entry): prevent default warehouse from overriding parent warehouse 2025-11-16 06:07:55 +00:00
Raffael Meyer
4bd3b00e5f refactor: remove unused import (#50543) 2025-11-15 19:34:44 +00:00
Raffael Meyer
38287afc05 fix: mark role profile names as translatable (#50542) 2025-11-15 19:26:12 +00:00
Raffael Meyer
f57d7f39bc fix: mark navbar item as translatable (#50541) 2025-11-15 19:11:39 +00:00
Raffael Meyer
9a989a84fb fix: use dummy translations for custom field labels (#49875) 2025-11-15 19:34:13 +01:00
Asmita Hase
3ce6da3b71 feat: half day in holiday list 2025-11-15 18:35:14 +05:30
Asmita Hase
0af4515afd feat: specify half day in holiday list 2025-11-15 18:35:12 +05:30
Smit Vora
68cdadf11a feat: support custom financial statements (#49098)
Co-authored-by: Abdeali Chharchhoda <abdealiking786@gmail.com>
2025-11-15 09:59:01 +05:30
Navin-S-R
f420371a7e fix: correct profit after tax calculation by reducing expenses from income 2025-11-14 14:12:29 +05:30
Navin-S-R
9118f08e7b fix: use dynamic account type to get average ratio balance 2025-11-14 14:05:47 +05:30
Mihir Kandoi
b98f4611e6 fix: wrong currency in Subcontracting Order Service Item (#50517) 2025-11-14 05:21:06 +00:00
PUGAZHENDHI V
4f720b3969 fix(period closing voucher): add title to error log (#50498) 2025-11-13 21:25:44 +05:30
Pugazhendhi Velu
3a0e1e8ef9 fix: add return status for purchase receipt 2025-11-13 15:29:27 +00:00
rohitwaghchaure
75533ea7d8 Merge pull request #50515 from rohitwaghchaure/fixed-sales-forecast-manual
fix: do not allow to add rows manually
2025-11-13 18:16:34 +05:30
Rohit Waghchaure
019f8103f3 fix: do not allow to add rows manually 2025-11-13 16:34:31 +05:30
rohitwaghchaure
b79f88a0a6 Merge pull request #50513 from rohitwaghchaure/fixed-seasonal-method
fix: change seasonal method
2025-11-13 15:47:41 +05:30
Diptanil Saha
ef7a3419fa Merge pull request #50510 from ljain112/fix-supplier-quick-entry 2025-11-13 15:26:48 +05:30
Rohit Waghchaure
58c92ea10d fix: change seasonal method 2025-11-13 15:11:31 +05:30
ljain112
510f50077b fix: first and last name in supplier quick entry 2025-11-13 14:24:35 +05:30
Mihir Kandoi
eafd2d4b5f Merge pull request #50509 from mihir-kandoi/gh49650 2025-11-13 14:07:04 +05:30
Mihir Kandoi
2ea9ffea3c fix(stock): format numeric values in variant dialog helper text 2025-11-13 14:03:38 +05:30
Diptanil Saha
37aa24141b Merge pull request #50495 from ljain112/chore-description-not-mandatory 2025-11-13 12:21:28 +05:30
rohitwaghchaure
926c670c91 Merge pull request #50501 from rohitwaghchaure/fixed-schedule-validation
fix: validation for delivery schedule
2025-11-13 10:49:39 +05:30
Karuppasamy B
6c1620ab8c fix(purchase_receipt): add internal_and_external_links field to show purchase invoice connection count 2025-11-13 01:16:48 +05:30
Rohit Waghchaure
31ae91f313 fix: validation for delivery schedule 2025-11-12 23:53:11 +05:30
ljain112
e056c0327d chore: typo in comment 2025-11-12 19:28:38 +05:30
ljain112
7c5f5405cc fix: improve precision in tax amount calculations in tax withholding details report 2025-11-12 18:59:45 +05:30
ljain112
d3751d9bb4 fix: back calcalute total amount from rate and tax_amount in tax withholding details report 2025-11-12 18:41:20 +05:30
ljain112
5cfa71fa47 fix: update description field to be optional in POS and Landed Cost Item 2025-11-12 18:15:32 +05:30
rohitwaghchaure
4ba4aef151 Merge pull request #50487 from rohitwaghchaure/fixed-current-qty-in-stock-reco
fix: current qty in stock reconciliation
2025-11-12 13:54:47 +05:30
Rohit Waghchaure
58315bc963 fix: current qty in stock reco 2025-11-12 12:20:41 +05:30
Kavin
3ca1940881 fix: validate sabb autocreation when disabled 2025-11-12 11:32:41 +05:30
Diptanil Saha
b9affe0cd8 Merge pull request #50409 from diptanilsaha/gh_34023 2025-11-12 11:13:25 +05:30
Diptanil Saha
51d583b6a7 Merge pull request #50323 from Abdeali099/set-company-bank-account 2025-11-12 11:07:29 +05:30
rohitwaghchaure
42751fec6d Merge pull request #50217 from aerele/sales-item-uom
fix(sales): update uom based on the selected item
2025-11-12 11:06:47 +05:30
ruthra kumar
385229b81a Merge pull request #50482 from frappe/l10n_develop
fix: sync translations from crowdin
2025-11-12 09:18:31 +05:30
MochaMind
1fe7ef5f1a fix: Bosnian translations 2025-11-11 13:15:14 -08:00
MochaMind
a211db592d fix: Croatian translations 2025-11-11 13:15:10 -08:00
MochaMind
80d13d6629 fix: Swedish translations 2025-11-11 13:15:04 -08:00
Pugazhendhi Velu
e64b6db2eb test: add minimal test case 2025-11-11 13:18:05 +00:00
Pugazhendhi Velu
7fddbb6dc4 Merge branch 'develop' of https://github.com/frappe/erpnext into validate-company-linked-address-field 2025-11-11 11:44:41 +00:00
Pugazhendhi Velu
5a3fcbedb5 fix: use current_tax_amount value for base_total_taxes_and_charges 2025-11-11 10:26:31 +00:00
Diptanil Saha
be826dba3b Merge pull request #50469 from ljain112/auto-taxes 2025-11-11 15:02:43 +05:30
Sagar Vora
7fb4d67662 Merge pull request #50155 from sagarvora/discount-mapping 2025-11-11 15:01:58 +05:30
rohitwaghchaure
6f20ceba81 Merge pull request #50187 from aerele/support-50973
fix: Update pick list locations quantity
2025-11-11 14:53:15 +05:30
ljain112
3d0a668c50 test: add automatic tax addition for buying controller 2025-11-11 14:00:55 +05:30
Kavin
827f9cc6ef fix: pass UOM null to update when item changes 2025-11-11 13:52:23 +05:30
ljain112
d171dc7328 fix: automatically append taxes if taxes_and_charges is set in Buying controller 2025-11-11 13:41:13 +05:30
ruthra kumar
6474435ede Merge pull request #50366 from aerele/enque-err-per-company
refactor: enqueue exchange rate revaluation per company
2025-11-11 13:04:01 +05:30
Mihir Kandoi
da04225c7d Merge pull request #50461 from mihir-kandoi/mat-transfer-wh-validation 2025-11-11 11:57:39 +05:30
Mihir Kandoi
c7b8461d43 feat: make material transfer warehouse validation optional 2025-11-11 11:39:04 +05:30
Kavin
3f7a60d56c test: add test for pending qty calculation in Pick List 2025-11-11 11:02:34 +05:30
Kavin
6db605c443 fix: Pass stock_qty and picked_qty in transfer entry 2025-11-11 11:00:39 +05:30
Kavin
bd9e240ca5 fix: Update pick list locations quantity 2025-11-11 11:00:38 +05:30
Mihir Kandoi
2b051ebb87 Merge pull request #50446 from aerele/company-warehouse-filter-sales-return 2025-11-11 10:47:24 +05:30
Mihir Kandoi
d0ebe5d675 Merge pull request #50418 from aerele/non_billed_report-filter-stock-items 2025-11-11 10:41:57 +05:30
mahsem
e148a38353 fix: state_to_state_province for translation (#50244)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-11-11 05:07:34 +00:00
Mihir Kandoi
f7585f40ac Merge pull request #50320 from aerele/task-is-group-filter 2025-11-11 10:27:37 +05:30
Mihir Kandoi
584d81cfbb chore: fix typo "show_disables_items" to "show_disabled_items" (#50322) 2025-11-11 10:26:09 +05:30
maasanto
722581cf05 Merge pull request #48912 from maasanto/dont-set-description 2025-11-11 10:15:15 +05:30
Mihir Kandoi
f7c9dc20a8 Merge pull request #50452 from frappe/mergify/bp/develop/pr-49831 2025-11-11 10:11:35 +05:30
Mihir Kandoi
834221b297 Merge pull request #50443 from aerele/support-51054 2025-11-11 10:10:25 +05:30
Mihir Kandoi
1d0cd68d2c Merge pull request #50399 from aerele/support-52332 2025-11-11 10:09:57 +05:30
Rehan Ansari
7baf6ec3d6 fix: add missing stock entry UOM filtering based on item master (#50135)
Co-authored-by: rehansari26 <rehan.ansari@cloverinfotech.com>
2025-11-11 09:58:33 +05:30
Assem Bahnasy
2374cf8bfd Fix: Product Bundle Purchase Order Creation Logic (#49831)
Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
(cherry picked from commit 5b643433e5)
2025-11-11 04:23:59 +00:00
MochaMind
607cf47312 fix: sync translations from crowdin (#50425) 2025-11-10 21:54:29 +00:00
Diptanil Saha
b03cbdb83a Merge pull request #50339 from aerele/acc-dim-difference-entry 2025-11-10 23:15:55 +05:30
Pugazhendhi Velu
0b614007bb fix: add company filter for default warehouse for sales return 2025-11-10 15:19:55 +00:00
rohitwaghchaure
4bd476293b Merge pull request #50436 from rohitwaghchaure/fixed-serial-no-creation
perf: serial no creation
2025-11-10 20:40:21 +05:30
Diptanil Saha
cad5cbb5ed Merge pull request #50361 from aerele/fix/support-52293 2025-11-10 20:37:19 +05:30
Pugazhendhi Velu
462deb3755 fix: change fieldtype from link to data for document_type in production plan summary 2025-11-10 13:59:27 +00:00
MochaMind
bc351feb3e chore: update POT file (#50440) 2025-11-10 12:28:20 +00:00
Raffael Meyer
87b4f872f8 fix: ignore translations from frappe (#50438) 2025-11-10 13:09:14 +01:00
ljain112
0b91338771 fix: add doctype parameter to lead details for correct company details 2025-11-10 17:34:19 +05:30
Rohit Waghchaure
19a9497273 perf: serial no creation 2025-11-10 16:35:54 +05:30
rohitwaghchaure
80219724f0 Merge pull request #50432 from rohitwaghchaure/fixed-patch-for-sabe
fix: patch for existing data
2025-11-10 16:07:05 +05:30
rohitwaghchaure
46ed52a329 Merge pull request #50416 from rohitwaghchaure/fixed-github-46684
fix: work order status
2025-11-10 15:03:22 +05:30
Rohit Waghchaure
91fcac5785 fix: patch for existing data 2025-11-10 15:02:10 +05:30
rohitwaghchaure
a66d643638 Merge pull request #50424 from rohitwaghchaure/perf-serial-batch-dn
perf: DN submission with SABB
2025-11-10 14:43:08 +05:30
Rohit Waghchaure
f2ad27eb06 perf: DN submission with SABB 2025-11-10 14:01:02 +05:30
ruthra kumar
88823e51c7 Merge pull request #50423 from barredterra/fetch-cc-from-project
fix(buying): fetch Cost Center from Project
2025-11-10 12:32:15 +05:30
rohitwaghchaure
ab9241bc11 Merge pull request #50374 from aerele/support-52577
fix: add validation to reject empty readings
2025-11-10 11:07:36 +05:30
barredterra
bdabcb081a fix(buying): fetch Cost Center from Project 2025-11-09 17:56:24 +01:00
MochaMind
dbfb77f768 chore: update POT file (#50421) 2025-11-09 13:17:36 +01:00
Rohit Waghchaure
ba29f5b858 fix: work order status 2025-11-08 22:55:23 +05:30
diptanilsaha
e35e8968f0 fix: prevent pos opening entry creation for disabled pos profile 2025-11-08 15:29:26 +05:30
diptanilsaha
69016a284f test: added test to validate disabled pos profile 2025-11-08 15:29:18 +05:30
ravibharathi656
1b2e5c9706 fix: show only stock items in delivered items to be billed and received items to be billed reports 2025-11-08 15:09:43 +05:30
rohitwaghchaure
a8f3864905 Merge pull request #50406 from rohitwaghchaure/fixed-github-48153
fix: set operating cost based on bom qty causing incorrect operating …
2025-11-07 23:13:43 +05:30
Rohit Waghchaure
4c5ddf03e2 fix: set operating cost based on bom qty causing incorrect operating costing 2025-11-07 22:48:48 +05:30
rohitwaghchaure
2c4654ab30 Merge pull request #50411 from rohitwaghchaure/fixed-github-47250
fix: removed the validation
2025-11-07 18:01:54 +05:30
diptanilsaha
c5219278fb feat(pos): prevent disabling POS Profile when open POS sessions exist 2025-11-07 17:25:54 +05:30
Rohit Waghchaure
10131333b2 fix: removed the validation 2025-11-07 16:39:13 +05:30
rohitwaghchaure
07f3f420af Merge pull request #50407 from rohitwaghchaure/feat-allow_editing_of_items_and_quantities_in_work_order
feat: Allow Editing of Items and Quantities in Work Order
2025-11-07 16:24:41 +05:30
Rohit Waghchaure
b5e6c3e703 feat: Allow Editing of Items and Quantities in Work Order 2025-11-07 15:46:48 +05:30
Patrick Eißler
4846dfd3ca fix(Timesheet): don't use billing_hours for costing amount calculation (#50392) 2025-11-07 13:26:16 +05:30
Diptanil Saha
6d4afc85e6 Merge pull request #50326 from aerele/support-52064 2025-11-07 12:57:29 +05:30
khushi8112
4c8226eb18 fix: show company-details popup only for the targeted print format/letterhead 2025-11-07 12:55:14 +05:30
Diptanil Saha
9eabaf02c6 Merge pull request #50402 from diptanilsaha/gh_33287 2025-11-07 12:32:44 +05:30
diptanilsaha
f7d09f8760 fix: trends report total mismatch with group filters 2025-11-07 12:08:22 +05:30
Pugazhendhi Velu
55f531bad6 test: add test for validate mr item qty against so with over-receipt allowance 2025-11-06 20:39:42 +00:00
Pugazhendhi Velu
8d7e31e3f2 fix: material request item quantity validation against sales order with over-receipt allowance 2025-11-06 20:39:36 +00:00
Pugazhendhi Velu
4cf02b4d78 refactor(task): use get_link_to_form for validation error messages 2025-11-06 11:22:58 +00:00
Diptanil Saha
a5830c8247 Merge pull request #50340 from aerele/transaction_deletion_record 2025-11-06 16:44:33 +05:30
Pugazhendhi Velu
ed40b3232e Merge branch 'develop' of https://github.com/frappe/erpnext into support-52064 2025-11-06 11:06:45 +00:00
Rohit Waghchaure
8ef18754a0 feat: subcontracting workspace and sidebar 2025-11-06 15:48:10 +05:30
Diptanil Saha
70483cffa3 Merge pull request #50364 from aerele/support-52595 2025-11-06 15:39:42 +05:30
Pugazhendhi Velu
63fb9f55e7 refactor: add default reading value when creating a quality inspection 2025-11-06 06:32:04 +00:00
Pugazhendhi Velu
67e7a09e08 Merge branch 'develop' of https://github.com/frappe/erpnext into support-52577 2025-11-06 06:17:24 +00:00
Khushi Rawat
5cc2cf530a Merge pull request #50367 from rehanrehman389/asset-mov-fix
fix: set company before creating asset movement to avoid permission error
2025-11-06 03:19:29 +05:30
Khushi Rawat
a0b9b5cd71 Merge pull request #50342 from rehanrehman389/asset-name
feat: add asset name column
2025-11-06 00:21:42 +05:30
Khushi Rawat
3820be8a64 Merge pull request #50343 from rehanrehman389/asset-fix
fix: validate purchase invoice status and resolve related issues
2025-11-06 00:18:59 +05:30
Pugazhendhi Velu
405d901514 fix: add validation to reject empty readings 2025-11-05 17:34:55 +00:00
Pugazhendhi Velu
e10007c646 test: add test for company linked address fields 2025-11-05 15:02:57 +00:00
Pugazhendhi Velu
800a44a65f fix: add validation for company linked address fields 2025-11-05 15:02:02 +00:00
MochaMind
cc7810998c fix: sync translations from crowdin (#50281) 2025-11-05 15:25:10 +01:00
ruthra kumar
ad42eae2d6 Merge pull request #50144 from ruthra-kumar/stable_period_closing_voucher
refactor: period closing voucher to handle large data volumes
2025-11-05 16:53:31 +05:30
rehansari26
8c49c9e500 fix: set company before creating asset movement to avoid permission error 2025-11-05 16:46:00 +05:30
ravibharathi656
b10e7bf7b5 refactor: enqueue exchange rate revaluation per company 2025-11-05 16:40:14 +05:30
rohitwaghchaure
e213c64f9e Merge pull request #50363 from rohitwaghchaure/fixed-prevent-sn-reuse
fix: prevent reuse of serial no in manufacture and repack entry
2025-11-05 16:05:05 +05:30
Pugazhendhi Velu
ef38b26a73 fix: hide total row in general ledger report 2025-11-05 10:26:18 +00:00
ruthra kumar
fca7abf4d6 refactor: add paused to select option 2025-11-05 15:51:25 +05:30
ruthra kumar
9c13edc0b9 refactor: minor changes on status
1. set to 'In Progress' on start of both legacy and new controller
2. force delete to avoid permission issues
3. default to 1hr timeout
2025-11-05 15:51:25 +05:30
ruthra kumar
fe39ce03bb refactor: enable legacy controller by default for pcv 2025-11-05 15:51:25 +05:30
ruthra kumar
0b88f98a86 chore: progress bar 2025-11-05 15:51:25 +05:30
ruthra kumar
191c0e65a1 chore: remove scaffolding 2025-11-05 15:51:25 +05:30
ruthra kumar
090e155fd0 refactor: abort processing of all tasks upon cancellation 2025-11-05 15:51:25 +05:30
ruthra kumar
cae1237859 refactor: more changes
1. 'Accounts Manager' has access to submit, cancel and delete
2. cancel and delete operation of PCV is linked with Proces PCV
2025-11-05 15:51:25 +05:30
ruthra kumar
fa3bd6f5a7 refactor: smaller methods 2025-11-05 15:51:25 +05:30
ruthra kumar
7406d83260 refactor: utility to consolidate results from all dates 2025-11-05 15:51:25 +05:30
ruthra kumar
5b464ae4c1 refactor: utility to convert tuple key to str 2025-11-05 15:51:25 +05:30
ruthra kumar
653ae84b3e refactor: cleanup and for better readability 2025-11-05 15:51:25 +05:30
ruthra kumar
6e32769e37 refactor: make Accounts Closing Balance as well 2025-11-05 15:51:25 +05:30
ruthra kumar
09e37bc98c refactor: store closing balance for Balnace sheet accounts 2025-11-05 15:51:25 +05:30
ruthra kumar
643e1fdce8 refactor: calculate both balances from single queue 2025-11-05 15:51:25 +05:30
ruthra kumar
86edacb781 refactor: populate opening balances calculation table 2025-11-05 15:51:25 +05:30
ruthra kumar
cef879bb3b chore: rename closing balance field 2025-11-05 15:51:25 +05:30
ruthra kumar
324bebfd44 refactor: balances for both P&L and Balance sheet accounts 2025-11-05 15:51:25 +05:30
ruthra kumar
186d540502 refactor: maintain report type on each date 2025-11-05 15:51:25 +05:30
ruthra kumar
9e93298f12 refactor: more stable pause and resume 2025-11-05 15:51:25 +05:30
ruthra kumar
c738b6d356 refactor: process on submit 2025-11-05 15:51:25 +05:30
ruthra kumar
8ba199016a refactor: for better readability 2025-11-05 15:51:25 +05:30
ruthra kumar
f25ee3c53f refactor: store results as is and convert at the end 2025-11-05 15:51:25 +05:30
ruthra kumar
e88074ddec refactor: build and post gl entries 2025-11-05 15:51:25 +05:30
ruthra kumar
1846de0d49 refactor: store daily balances based on dimensions key
dimensions key is manually converted to string
2025-11-05 15:51:25 +05:30
ruthra kumar
1a31825409 refactor: store closing balance as JSON 2025-11-05 15:51:25 +05:30
ruthra kumar
c839ebf593 refactor: stable start, pause, resume and completion stages 2025-11-05 15:51:25 +05:30
ruthra kumar
1c92b01542 refactor: barebones functions 2025-11-05 15:51:25 +05:30
ruthra kumar
f44c908a8d refactor: temporarily save balances in JSON 2025-11-05 15:51:25 +05:30
ruthra kumar
0d09d21d2e refactor: child table in process pcv 2025-11-05 15:51:25 +05:30
ruthra kumar
a15578f8f4 refactor: more data structure changes 2025-11-05 15:51:25 +05:30
ruthra kumar
4888461be2 refactor: checkbox for pcv controller 2025-11-05 15:51:25 +05:30
ruthra kumar
7a93630629 feat: process period closing voucher 2025-11-05 15:51:25 +05:30
Rohit Waghchaure
48b537dc8c fix: prevent reuse of serial no in manufacture and repack entry 2025-11-05 15:09:50 +05:30
rohitwaghchaure
fb23719b62 Merge pull request #50335 from aerele/material-request-default-buying-price-list
fix(material request): set default buying price list if not exists
2025-11-05 14:10:59 +05:30
Pugazhendhi Velu
0510f7e13f fix: reset billing and shipping address when company changes 2025-11-05 08:26:34 +00:00
rohitwaghchaure
4d26a796ef Merge pull request #50325 from rohitwaghchaure/fixed-support-51819
fix: negative stock validation
2025-11-05 12:59:07 +05:30
Rohit Waghchaure
eca71dce54 fix: negative stock validation 2025-11-05 11:48:02 +05:30
Rehan Ansari
1928a394c9 fix: validate purchase invoice status and resolve related issues 2025-11-04 23:34:27 +05:30
Rehan Ansari
f3eda02972 feat: add asset name column 2025-11-04 22:08:03 +05:30
rethik
fff6f1fb23 fix: ignore Department doctype 2025-11-04 19:53:44 +05:30
l0gesh29
dcdc1c6a89 fix: apply company,is_group filter for cost center 2025-11-04 18:31:47 +05:30
l0gesh29
4680295303 fix: include cost_center and project upon accounting dimension fetch 2025-11-04 18:30:53 +05:30
Pugazhendhi Velu
60537eeb48 Merge branch 'develop' of https://github.com/frappe/erpnext into support-52064 2025-11-04 11:41:03 +00:00
rohitwaghchaure
7285eaf633 Merge pull request #50332 from rohitwaghchaure/fixed-support-51208
feat: option to exclude stand-alone returned sales invoices from the Gross Profit report
2025-11-04 16:59:39 +05:30
Abdeali Chharchhoda
4901dc2531 fix: on changes of paid from/to account fetch company bank account 2025-11-04 16:28:25 +05:30
ravibharathi656
9c0ff14060 fix(material request): set default buying price list if not exists 2025-11-04 15:52:55 +05:30
Rohit Waghchaure
52cf9d4950 feat: option to exclude stand-alone returned sales invoices from the Gross Profit report 2025-11-04 15:43:15 +05:30
Diptanil Saha
eaf37c606e Merge pull request #50289 from aerele/acc-dim-report
preserve accounting dimension filters while navigating between reports
2025-11-04 15:20:47 +05:30
Mihir Kandoi
dd68578252 chore: add docstring to function (#50329) 2025-11-04 14:17:22 +05:30
Saad Chaudhary
8854db51dd Merge pull request #50299 from saadchaudharry/feature-subcontract-return-rejected
Add support for subcontract return from rejected warehouse
2025-11-04 14:14:34 +05:30
Pugazhendhi Velu
291f0c7161 test: add test for parent task is_group validation 2025-11-04 08:31:41 +00:00
Pugazhendhi Velu
ed1a1099cb fix: validate is_group for parent task 2025-11-04 08:30:54 +00:00
Mihir Kandoi
34c190a76e chore: add docstring to function 2025-11-04 13:57:12 +05:30
Mihir Kandoi
7b8bb4f959 fix: disallow material transfer if source and target warehouse are same (#48697)
* fix: disallow material transfer if source and target warehouse are same

* fix: check on child row level instead of parent level
2025-11-04 13:50:52 +05:30
rethik
d26c598daa chore: fix typo "show_disables_items" to "show_disabled_items" 2025-11-04 11:10:27 +05:30
Pugazhendhi Velu
5bac896329 fix: add is_group filter in task for timesheet 2025-11-03 15:54:00 +00:00
Mihir Kandoi
689eee767d Merge pull request #50319 from mihir-kandoi/misc-sci-fixes
fix: minor issues in subcontracting inward
2025-11-03 18:14:47 +05:30
Mihir Kandoi
553ec40d4a fix: minor issues in subcontracting inward 2025-11-03 17:56:15 +05:30
rohitwaghchaure
34e13ee745 Merge pull request #50318 from rohitwaghchaure/fixed-mrp-issues
fix: multiple MRP issues
2025-11-03 17:35:17 +05:30
Rohit Waghchaure
f43444dd28 fix: multiple MRP issues 2025-11-03 17:13:40 +05:30
rohitwaghchaure
807d344ee1 Merge pull request #50314 from rohitwaghchaure/fixed-stock-reservation-transfer-cancel
fix: stock reservation cancellation for transfer case
2025-11-03 16:54:15 +05:30
Mihir Kandoi
4e9732ab96 Merge pull request #50316 from mihir-kandoi/fix-buying-transporter-filter
revert: remove transporter filter from buying doctypes
2025-11-03 16:31:56 +05:30
Mihir Kandoi
b0cd4bc9e7 revert: remove transporter filter from buying doctypes 2025-11-03 16:28:18 +05:30
Rohit Waghchaure
10094829e8 fix: stock reservation cancellation for transfer case 2025-11-03 15:19:24 +05:30
Kerolles Fathy
44363c069e fix: Respect allowed zero qty in SO and PO based on Buying/Selling settings when update items (#49673)
* fix: respect allowed zero qty in SO and PO based on buying/selling settings

* refactor: remove parent_doctype param due to it's already avaliable

* refactor: rename is_allowed_zero_qty_for to is_allowed_zero_qty

* fix: prevent rate change for unit price items

* fix: unboundlocal variable rate_unchanged

* refactor: only throw on 'zero' qty items

---------

Co-authored-by: ruthra kumar <ruthra@erpnext.com>
2025-11-03 15:16:50 +05:30
Khushi Rawat
5b11710a28 Merge pull request #50260 from khushi8112/gl-entry-only-for-submitted-assets
fix: create GL entries via hooks only for submitted assets
2025-11-03 14:50:38 +05:30
ruthra kumar
d464c731bb Merge pull request #50035 from aerele/fix/accounts-receivable-in-party-currency
fix(accounts-receivable): ensure report data with party account currency
2025-11-03 14:41:07 +05:30
Nihal Roshan
f1682ea90e refactor: remove company filter
'Bank' doctype has no 'company' field.
2025-11-03 14:00:36 +05:30
Diptanil Saha
3e80e99fa6 Merge pull request #50305 from diptanilsaha/st_50933
fix(accounts): populate correct fields on GL Entry during discount accounting
2025-11-03 13:18:52 +05:30
diptanilsaha
e41a7b8cd7 fix(accounts): populate correct fields on GL Entry during discount accounting 2025-11-03 12:58:16 +05:30
ruthra kumar
edf8f83a2a Merge pull request #50258 from barredterra/budget-msg
refactor: error message in budget
2025-11-03 10:15:05 +05:30
MochaMind
fdd0e39c91 chore: update POT file (#50304) 2025-11-02 09:55:28 +00:00
rohitwaghchaure
4d4086854a Merge pull request #50300 from aerele/support-52253
fix: handle None in last_valuation_rate check
2025-11-02 12:54:10 +05:30
Kavin
a3058bf8cc fix: handle None in last_valuation_rate check 2025-11-01 18:16:20 +05:30
rohitwaghchaure
ff8b701f13 Merge pull request #50298 from rohitwaghchaure/fixed-github-40130
fix: job card timer for mobile view
2025-10-31 20:18:10 +05:30
Rohit Waghchaure
921bb02eb5 fix: job card timer for mobile view 2025-10-31 20:11:11 +05:30
l0gesh29
fcfcaa76c6 feat(reports): preserve accounting dimension filters while navigating between reports 2025-10-31 19:16:35 +05:30
rohitwaghchaure
2b6723c3d8 Merge pull request #50296 from rohitwaghchaure/fixed-github-48129
fix: hourly rate not fetched on selection of workstation type
2025-10-31 17:02:55 +05:30
Rohit Waghchaure
0aec896ebb fix: hourly rate not fetched on selction of workstation type 2025-10-31 16:59:21 +05:30
rohitwaghchaure
acafc9c2de Merge pull request #50294 from rohitwaghchaure/fixedd-github-48221
fix: pause button not working for sub-operation
2025-10-31 16:57:18 +05:30
rohitwaghchaure
50cceaca6a Merge pull request #50293 from rohitwaghchaure/fixed-github-49402
fix: stock reservation validation for stock reconciliation
2025-10-31 16:37:32 +05:30
Rohit Waghchaure
1f183a7e06 fix: pause button not working for sub-operation 2025-10-31 16:36:14 +05:30
Rohit Waghchaure
859dc3b458 fix: stock reservation validation for stock reconciliation 2025-10-31 16:07:43 +05:30
Mihir Kandoi
65de8b4915 Merge pull request #50288 from frappe/revert-50013-refactor/transporter-filter-buying
Revert "refactor: add supplier filter in buying"
2025-10-31 15:46:38 +05:30
Diptanil Saha
a378d8bcc9 Merge pull request #50291 from diptanilsaha/gh_50256
fix: added validation for default accounts on company
2025-10-31 15:36:04 +05:30
diptanilsaha
4af1ae1470 fix: added validation for default accounts on company 2025-10-31 15:04:10 +05:30
l0gesh29
3fcd8d84ac feat: modify accounting dimension as multiselect field 2025-10-31 14:00:37 +05:30
Mihir Kandoi
7f7dd8d0ba Revert "refactor: add supplier filter in buying" 2025-10-31 14:00:19 +05:30
rohitwaghchaure
c4b46344be Merge pull request #50285 from rohitwaghchaure/fixed-github-50279
fix: Serial No and Batch Traceability report
2025-10-31 13:18:00 +05:30
Rohit Waghchaure
1908858cd5 fix: Serial No and Batch Traceability report 2025-10-31 12:38:39 +05:30
rohitwaghchaure
b5a78b5daf Merge pull request #50276 from rohitwaghchaure/fixed-setup-query-default-inv-acct
fix: only show inventory accounts in the dropdown
2025-10-30 15:56:03 +05:30
Rohit Waghchaure
c5fbebecb8 fix: only show inventory accounts in the dropdown 2025-10-30 15:51:52 +05:30
rohitwaghchaure
f2e721de71 Merge pull request #50273 from rohitwaghchaure/fixed-mps-workspace
fix: added MPS, MRP report in the manufacturing workspace
2025-10-30 12:17:48 +05:30
Rohit Waghchaure
b46fa8510d fix: added MPS, MRP report in the manufacturing workspace 2025-10-30 11:50:03 +05:30
rohitwaghchaure
87346dbf17 Merge pull request #50270 from aerele/support-51237
fix: set valuation rate for rejected serial/batch item
2025-10-30 09:00:14 +05:30
MochaMind
6d9d1ea593 fix: sync translations from crowdin (#50269) 2025-10-29 20:07:42 +00:00
venkat102
d002959d35 test: add unit test for valuation rate on rejected serial/batch item 2025-10-30 00:18:23 +05:30
venkat102
614402cf6c fix: set valuation rate for rejected serial/batch item 2025-10-30 00:16:37 +05:30
MochaMind
b7eb01bd7e fix: sync translations from crowdin (#50242) 2025-10-29 15:33:26 +01:00
rohitwaghchaure
1e54b8ec4c Merge pull request #50264 from rohitwaghchaure/fixed-bulk-edit-bom
fix: allow bulk edit for bill of material items
2025-10-29 18:21:02 +05:30
Rohit Waghchaure
1f74e06791 fix: allow bulk edit for bill of material items 2025-10-29 17:43:58 +05:30
khushi8112
33690975f6 fix: create GL entries via hooks only for submitted assets 2025-10-29 13:06:58 +05:30
barredterra
71db348330 fix: placeholder number 2025-10-29 01:50:07 +01:00
barredterra
72fff5d9ee refactor: error message in budget
improve translatability
2025-10-29 01:34:59 +01:00
dharanidharan2813
cf1d892d60 fix: Payment Terms auto-fetched in Sales Invoice even when automatically_fetch_payment_terms is disabled 2025-10-28 17:57:09 +05:30
rohitwaghchaure
76d7fe452f Merge pull request #50247 from rohitwaghchaure/fixed-incorrect-sabb-report
fix: provision to find and fix incorrect serial and batch bundles
2025-10-28 17:44:00 +05:30
Diptanil Saha
05d4152e43 Merge pull request #50137 from aerele/payment-reco-edit-allocated-amount
fix(payment-reco): recalculate amount based on allocated amount
2025-10-28 17:26:48 +05:30
Rohit Waghchaure
10ad56060c fix: provision to find and fix incorrect serial and batch bundles 2025-10-28 16:47:10 +05:30
Diptanil Saha
5d62908ba9 Merge pull request #50220 from aerele/gross-profit-columns
fix(gross profit): remove customer name from columns
2025-10-28 15:20:27 +05:30
rohitwaghchaure
b1cc11cc38 Merge pull request #50248 from mihir-kandoi/fix-sabb-posting-datetime
fix: missed refactoring code
2025-10-28 14:31:42 +05:30
rohitwaghchaure
9ab70d0a6a Merge pull request #50193 from rohitwaghchaure/feat-item-wise-inventory-account
feat: enable item wise inventory account
2025-10-28 13:49:15 +05:30
Mihir Kandoi
941e924d4d fix: missed refactoring code 2025-10-28 13:44:35 +05:30
Diptanil Saha
d932a67407 Merge pull request #50213 from barredterra/transaction-id-unique
fix(Bank Transaction)!: make transaction ID non-unique
2025-10-28 08:14:08 +05:30
Diptanil Saha
e16c6dc0bb Merge pull request #49599 from KerollesFathy/fix-get-payment-mode-account
fix(accounts): reference get_payment_mode_account correctly in Sales Invoice
2025-10-27 22:19:27 +05:30
ravibharathi656
7ce81127d2 fix: avoid group columns mutation 2025-10-27 17:44:12 +05:30
Mihir Kandoi
80fd9a5b0d Merge pull request #50221 from aerele/fix/stock-recon-barcode-scanner
fix: Pass uom field name to update existing item qty
2025-10-27 17:17:35 +05:30
rohitwaghchaure
55e06a49a1 Merge pull request #50233 from rohitwaghchaure/fixed-performance-issue
fix: optimized the slow query to get the batch-wise available qty
2025-10-27 16:48:31 +05:30
Khushi Rawat
7f714d3262 Merge pull request #50222 from aerele/asset-dep-bal-opening-entries
fix(asset depreciations and balances): showing opening entries
2025-10-27 16:17:19 +05:30
Diptanil Saha
f73db0219a Merge pull request #50039 from aerele/fix/jv-account-currency-no-copy
fix(journal-entry): allow copy account currency when duplicating JV
2025-10-27 14:14:08 +05:30
Bhavan23
76748e4573 fix(journal-entry): allow copy account currency when duplicating JV 2025-10-27 08:21:42 +00:00
Rohit Waghchaure
9c21567309 fix: optimized the slow query to get the batchwise available qty 2025-10-27 13:17:52 +05:30
Diptanil Saha
06d28fed09 Merge pull request #50232 from diptanilsaha/gh_50085
fix(consolidated trial balance): index out of range error
2025-10-27 12:52:15 +05:30
diptanilsaha
67c9fe6532 fix(consolidated trial balance): index out of range error 2025-10-27 12:30:16 +05:30
Diptanil Saha
d868f7706e Merge pull request #50103 from rehanrehman389/fix-overlap-validation
fix: fiscal year overlap validation for company-specific years
2025-10-27 10:37:42 +05:30
MochaMind
2f68235442 fix: sync translations from crowdin (#50228) 2025-10-26 16:59:30 +01:00
MochaMind
e3f44c35b7 chore: update POT file (#50225) 2025-10-26 13:14:55 +01:00
MochaMind
b0fef75bfa fix: sync translations from crowdin (#50201) 2025-10-24 17:41:58 +02:00
ravibharathi656
d3afa67be3 fix(asset depreciations and balances): showing opening entries 2025-10-24 18:32:40 +05:30
Kavin
23d69389ec fix: Pass uom field name to update existing item qty 2025-10-24 18:07:02 +05:30
ravibharathi656
0009925af0 fix(gross profit): remove customer name from columns 2025-10-24 14:09:30 +05:30
Rohit Waghchaure
076407ad70 test: test cases for item wise inventory account 2025-10-24 10:08:44 +05:30
rohitwaghchaure
08941bf742 Merge pull request #50215 from rohitwaghchaure/fixed-valuation-rate
fix: get valuation rate based of previous SLEs for material receipt
2025-10-23 23:59:35 +05:30
Rohit Waghchaure
fa9ef6708f fix: get valuation rate based of previous SLEs for material receipt 2025-10-23 23:49:50 +05:30
Rohit Waghchaure
74192547ce feat: enable item wise inventory account 2025-10-23 22:41:04 +05:30
barredterra
a2a41a0eaa fix(Bank Transaction): make transaction ID non-unique 2025-10-23 17:38:34 +02:00
Khushi Rawat
5b6979c700 Merge pull request #50209 from khushi8112/asset-status-in-list-view
fix: set status to Draft for auto-created assets from Purchase Receipt
2025-10-23 18:31:58 +05:30
khushi8112
20c2cb40d1 fix: set status to Draft for auto-created assets from Purchase Receipt 2025-10-23 17:41:51 +05:30
Deepesh Garg
cbccb67bfb Merge pull request #50204 from deepeshgarg007/add_posting_date_param_for_rev
feat: Add posting date param for reverse GL entries
2025-10-23 13:41:22 +05:30
Deepesh Garg
05e1a737f1 chore: Linting issues 2025-10-23 13:06:48 +05:30
Deepesh Garg
38988bf797 feat: Add posting date param for reverse GL entries 2025-10-23 13:00:15 +05:30
rohitwaghchaure
7f63d100b5 Merge pull request #50200 from rohitwaghchaure/fixed-support-50958-1
fix: stock difference value for adjustment entry
2025-10-22 22:31:44 +05:30
Rohit Waghchaure
fb4c7de86c fix: stock difference value for adjustment entry 2025-10-22 19:17:43 +05:30
Mihir Kandoi
abf81e5217 Merge pull request #50130 from PatrickDEissler/task-no-copy-fix
fix(Task): make Timesheet-dependent fields no_copy
2025-10-22 13:46:10 +05:30
Mihir Kandoi
6de258b4c8 chore: remove print statement (#50151) 2025-10-22 13:43:53 +05:30
Kerolles Fathy
8efcf6cb38 Merge pull request #50153 from KerollesFathy/fix-address-error-when-create-transporter
fix: Address title error when create new transporter on driver
2025-10-22 13:43:13 +05:30
rohitwaghchaure
92891c7e72 Merge pull request #50191 from rohitwaghchaure/fixed-support-51420
fix: sabb missed in the incorrect serial no valuation report
2025-10-22 11:55:20 +05:30
Rohit Waghchaure
b50bac6788 fix: sabb missed in the incorrect serial no valuation report 2025-10-22 11:23:51 +05:30
Mihir Kandoi
e3fcae1c0c Merge pull request #50189 from mihir-kandoi/inward-fix
fix: feat: multiple changes related to subcontracting inward
2025-10-22 00:22:34 +05:30
Mihir Kandoi
9f3cb4b783 fix: feat: multiple changes related to subcontracting inward 2025-10-21 23:51:07 +05:30
MochaMind
d9fa9c6b3d fix: sync translations from crowdin (#50185) 2025-10-21 19:35:13 +02:00
Ahmed AbuKhatwa
f51ed30c23 fix: correct monthly sales history (#50056)
* fix: correct monthly sales history

* fix: correct monthly sales history calculation

* chore: remove unrelated file accidentally committed

---------

Co-authored-by: AhmedAbukhatwa <Ahmedabukhatwa1@gmail.com>
2025-10-21 10:46:53 +05:30
Deepesh Garg
7a91ec3e33 perf: Add index for faster queries (#50175) 2025-10-20 20:42:19 +02:00
MochaMind
de93d266a6 fix: sync translations from crowdin (#50176) 2025-10-20 20:40:41 +02:00
MochaMind
53efd2d718 fix: sync translations from crowdin (#50049) 2025-10-20 01:38:15 +02:00
MochaMind
d854c6cc81 chore: update POT file (#50172) 2025-10-19 23:58:40 +02:00
Sagar Vora
e43c2ac5c1 Merge pull request #50168 from barredterra/account-currency
refactor: simplify expression
2025-10-18 23:48:31 +05:30
barredterra
2de88dadd3 refactor: simplify expression
This expression always evaluates to avalue that is equal to account_currency.
2025-10-18 19:55:57 +02:00
Sagar Vora
81ab15351e chore: remove unused import 2025-10-18 00:08:44 +05:30
Sagar Vora
95f604457d refactor: simplify logic 2025-10-18 00:00:36 +05:30
rohitwaghchaure
63a65838d3 Merge pull request #50156 from rohitwaghchaure/fixed-internal-transfer-issue
fix: internal transfer entry with serial/batch
2025-10-17 21:03:08 +05:30
Rohit Waghchaure
9b4e62a758 fix: internal transfer entry with serial/batch 2025-10-17 20:32:36 +05:30
Sagar Vora
0e026b9ccd fix: handle returns as well 2025-10-17 19:21:24 +05:30
Sagar Vora
0968f435d2 test: some tests to ensure correct discount mapping 2025-10-17 17:32:16 +05:30
Sagar Vora
f4f79d99e4 fix: validate that discount amount cannot exceed total before discount 2025-10-17 17:06:03 +05:30
Sagar Vora
feb62102d9 fix: ensure that additional discount amount is not mapped repeatedly 2025-10-17 17:06:03 +05:30
Abdeali Chharchhoda
1ad4dc9066 chore: remove print statement 2025-10-17 15:56:13 +05:30
rohitwaghchaure
36d422fbb5 Merge pull request #50123 from rohitwaghchaure/fixed-better-validation-message
fix: validation for negative batch
2025-10-17 11:36:31 +05:30
Rohit Waghchaure
f9c8f27586 fix: validation for negative batch 2025-10-17 08:52:41 +05:30
Diptanil Saha
7bd5461704 Merge pull request #50141 from diptanilsaha/fix_st_51018
fix(point-of-sale): render payment methods only when payment component is visible
2025-10-17 01:42:22 +05:30
diptanilsaha
7dc4306640 fix(point-of-sale): render payment methods only payment component is visible 2025-10-17 01:26:31 +05:30
l0gesh29
5a7a6a9bd5 fix: recalculate amount based on allocated amount 2025-10-16 17:03:37 +05:30
Patrick Eissler
2a2e4b5423 fix(Task): make Timesheet-dependent fields no_copy 2025-10-16 08:40:54 +02:00
rehansari26
d59e55fb08 test: replace get_doc with new_doc in fiscal year tests 2025-10-16 11:04:48 +05:30
Rehan Ansari
94ae098854 test: fiscal year overlap validation for company-specific years 2025-10-15 23:33:02 +05:30
Diptanil Saha
182c9fd966 fix: added exception handling on service level agreement apply hook (#50096)
* fix: added exception handling on service level agreement apply hook

* Revert "fix: added exception handling on service level agreement apply hook"

This reverts commit dae93aa96f.

* fix: Ignore missing SLA table during install/uninstall

---------

Co-authored-by: Ankush Menat <ankush@frappe.io>
2025-10-15 13:27:07 +00:00
rohitwaghchaure
afcd1d68f0 Merge pull request #50113 from rohitwaghchaure/fixed-support-50958
fix: adjustment entry
2025-10-15 15:57:55 +05:30
Rohit Waghchaure
c0851abaee fix: adjustment entry 2025-10-15 15:17:59 +05:30
Yash Chaubey
4ede97ae2b perf: optimize company monthly sales query using date range (#48942)
* perf: optimize company monthly sales query using date range instead of DATE_FORMAT

* perf: optimize company monthly sales query using date range
2025-10-15 12:46:02 +05:30
rohitwaghchaure
1fc5af67be Merge pull request #50095 from aerele/support-50163
fix: preview stock ledger for manual serial and batch values
2025-10-15 11:17:15 +05:30
Mihir Kandoi
3af5a83301 fix(stock): remove filter from query (#50104) 2025-10-14 23:55:43 +05:30
Mihir Kandoi
fa8a988454 Merge pull request #50013 from aerele/refactor/transporter-filter-buying
refactor: add supplier filter in buying
2025-10-14 23:40:52 +05:30
Mihir Kandoi
e0adbb2c01 fix: handle flt conversion for prev_ordered_qty (#50078)
Co-authored-by: Kavin <78342682+kavin0411@users.noreply.github.com>
2025-10-14 23:39:14 +05:30
Rehan Ansari
57aaf34d3e fix: fiscal year overlap validation for company-specific years 2025-10-14 23:38:17 +05:30
Mihir Kandoi
e9538f6d64 fix(stock): remove filter from query 2025-10-14 23:37:45 +05:30
Mihir Kandoi
270520a9fc fix: source warehouse validation in manufacturing entry during subcon… (#50101)
fix: source warehouse validation in manufacturing entry during subcontracting inward
2025-10-14 20:30:31 +05:30
Mihir Kandoi
3fd5aace0a fix: source warehouse validation in manufacturing entry during subcontracting inward 2025-10-14 20:08:22 +05:30
ljain112
0f89e750a7 Merge branch 'develop' into tds-jv 2025-10-14 18:40:58 +05:30
Akhil Narang
f8b50d3ffa fix: sanitize projects field in tasks webform (#50089)
Signed-off-by: Akhil Narang <me@akhilnarang.dev>
2025-10-14 13:07:59 +00:00
ljain112
2de9f8f2e2 test: add TDS and TCS calculations for journal entries in Debit and Credit Notes 2025-10-14 17:30:22 +05:30
Kavin
c5f68d0b27 fix: preview stock ledger for manual serial and batch values 2025-10-14 17:14:22 +05:30
rohitwaghchaure
2a7e4c68e5 Merge pull request #50080 from rohitwaghchaure/fixed-stock-query
perf: optimize sql query
2025-10-14 17:13:07 +05:30
Khushi Rawat
cc3660635f Merge pull request #50033 from rehanrehman389/filter-sales-team
fix: filter sales team to show only active individual salespersons
2025-10-14 17:08:56 +05:30
rohitwaghchaure
df1e49ffb4 fix: negative error not throw for backdated entry (#50091) 2025-10-14 17:08:43 +05:30
Rohit Waghchaure
88a947ff4e fix: negative error not throw for backdated entry 2025-10-14 16:48:38 +05:30
Mihir Kandoi
ab0ee8809d Merge pull request #50090 from mihir-kandoi/restore_customer_field
fix: restore customer field
2025-10-14 16:27:41 +05:30
Mihir Kandoi
cf97c1db38 fix: add delivery warehouse filter 2025-10-14 16:08:50 +05:30
Mihir Kandoi
ae816d0c1d fix: restore customer field 2025-10-14 16:02:58 +05:30
Rohit Waghchaure
e7b64175fd perf: optimize sql query 2025-10-14 15:03:42 +05:30
Mihir Kandoi
f2b948a483 feat: subcontracting inward (#47728)
* feat: subcontracting inward

* feat: stock reservation

* feat: subcontracting delivery

* feat: all remaining stuff

* fix: linter errors

* fix: patch

* fix: modify stock entry type validation

* fix: customer provided item cost field mandatory validation

* fix: failing tests

* fix: failing tests

* fix: subcontracting controlller

* refactor: semi final

* refactor: final

* chore: resolve conflicts

* refactor: changes requested

* fix: reservation transfer of extra qty

* fix: consider add cost for customer provided rate field

* test: create test data

* test: subcontracted sales order (partial)

* test: fin

* fix: do not add self RM in DN created from SI

* fix: failing test case

* fix: conflicting function name

* refactor: final changes

* fix: more bugs

* perf: various and major performance improvements

* fix: consider warehouse as well in all queries

* fix: same item code with diff warehouse in manufacture entry

* refactor: readability

* fix: frontend validations

* perf: replace query inside loop with single query

* fix: set additional item flag to true when extra customer provided item is received

* fix: bugs found by coderabbit

* fix: more coderabbit bugs

* fix: add validation to disallow cancellation of manufacturing entry

* perf: use cached values wherever it makes sense

* test: fix redundant insert to child tables

* fix: consider SI return of billed self RM

* fix: bug found by coderabbit

---------

Co-authored-by: Mihir Kandoi <mihirkandoi@Mihirs-MacBook-Air.local>
2025-10-14 15:00:49 +05:30
Mihir Kandoi
9772ca75c4 Merge pull request #50004 from aerele/delivery-note-return 2025-10-14 14:49:04 +05:30
Mihir Kandoi
b452724c1a Merge pull request #50079 from mihir-kandoi/gh-50066
chore: replace broken links with correct ones
2025-10-14 14:26:53 +05:30
Mihir Kandoi
224317d1c9 Merge pull request #49960 from aerele/support-50220
Fix/Support 50220
2025-10-14 14:18:36 +05:30
Kavin
1c586697c7 fix: handle multi uom in reserved qty for production plan 2025-10-14 14:00:59 +05:30
Mihir Kandoi
11be07086f chore: replace broken links with correct ones 2025-10-14 13:55:14 +05:30
rohitwaghchaure
9c014c7ba4 Merge pull request #50072 from aerele/support-50647
fix: swap warehouse labels for return entry
2025-10-14 13:35:33 +05:30
Kavin
77c35ef47f fix: handle flt conversion for prev_ordered_qty 2025-10-14 13:35:06 +05:30
rohitwaghchaure
5cd62ad236 Merge pull request #50073 from aerele/support-50395
fix(stock-entry): fetch empty batch for finished item
2025-10-14 13:34:33 +05:30
rohitwaghchaure
10014b9b79 Merge pull request #50065 from rohitwaghchaure/aerele-support-48884
fix(stock-reconciliation): include inventory dimensions in duplicate validation
2025-10-14 13:32:15 +05:30
rohitwaghchaure
08bd3b348f Merge pull request #50070 from rohitwaghchaure/fixed-support-50227
fix: performance issue by adding index
2025-10-14 13:31:30 +05:30
venkat102
74a7ddf66d fix(stock-entry): fetch empty batch for finished item 2025-10-14 13:19:37 +05:30
Kavin
f0c3f0d0be fix: swap warehouse labels for return entry 2025-10-14 13:14:39 +05:30
Rohit Waghchaure
1afc75b15a fix: performance issue by adding index 2025-10-14 13:02:56 +05:30
rohitwaghchaure
9ccc55decc Merge pull request #50027 from rohitwaghchaure/fixed-reset-raw-materials
fix: reset raw materials considering not available batches
2025-10-14 12:48:43 +05:30
rohitwaghchaure
70c6461cad Merge pull request #50061 from rohitwaghchaure/fixed-support-50717
fix: do reposting of first transfer entry based on item-wh combination
2025-10-14 12:47:55 +05:30
Mihir Kandoi
3d7ac166b7 Merge pull request #49445 from aerele/production-plan-item-filter
fix(production plan): filter sales orders by item
2025-10-14 12:02:05 +05:30
Rohit Waghchaure
c95465cba1 fix: duplicate serial nos 2025-10-14 12:01:46 +05:30
Mihir Kandoi
9b3b2102f8 Merge pull request #49891 from rehanrehman389/fix/empty-create-button
fix: prevent empty Create dropdown when In Process
2025-10-14 11:58:04 +05:30
Mihir Kandoi
ff94438563 Merge pull request #50058 from matteoarosti/fix/warehouse-source-reference
fix: warehouse source reference in production report
2025-10-14 11:52:08 +05:30
Rohit Waghchaure
2f25b445ab fix: do reposting of first transfer entry based on item-wh combination 2025-10-14 11:48:42 +05:30
ruthra kumar
d3014447b6 Merge pull request #50003 from frappe/cache_deletion_check
perf: Only check transaction deletion record once during req/job
2025-10-14 10:05:23 +05:30
matteo.arosti
451651e350 fix: warehouse source reference in production report 2025-10-14 00:27:27 +02:00
Rohit Waghchaure
ec1636db12 fix: reset raw materials considering not available batches 2025-10-13 17:29:52 +05:30
Kavin
af8aa153bf fix: sum quantity instead of requried BOM quantity 2025-10-13 15:13:37 +05:30
l0gesh29
fd9167f2af fix: add GROUP BY for dn_detail and convert SQL query to QB 2025-10-13 11:22:29 +05:30
Bhavan23
3e4846ea3d test(accounts-receivable): add test case to validate report data with party account currency 2025-10-12 20:23:25 +00:00
Bhavan23
752ea7ee7d fix(accounts-receivable): ensure report data with party account currency 2025-10-12 20:23:19 +00:00
Rehan Ansari
2fcd406b18 fix: filter sales team to show only active individual salespersons 2025-10-12 19:01:54 +05:30
venkat102
4b21c2cc46 fix(stock-reconciliation): include inventory dimensions in duplicate validation 2025-10-10 18:47:15 +05:30
manikandan-s-18
108b108d64 refactor: add supplier filter in buying 2025-10-10 17:04:49 +05:30
l0gesh29
1f831d8783 fix: hide sales invoice creation for fully returned delivery notes 2025-10-10 13:31:57 +05:30
Ankush Menat
8d723d3da6 perf: Only check transaction deletion record once during req/job 2025-10-10 12:44:33 +05:30
ljain112
88f6d783b4 fix: include grand_total in journal entry and handle taxes correctly in invoice total calculation 2025-10-09 13:44:32 +05:30
ljain112
2112f36577 fix: add cost center to tds row in journal entry 2025-10-09 13:32:45 +05:30
ljain112
610877fb17 refactor: update exchange rate import to avoid redundancy 2025-10-09 13:11:10 +05:30
ljain112
004bd59245 fix: calculate net_total excluding taxes 2025-10-09 13:08:55 +05:30
ljain112
84e6d278c3 chore: remove redundant code 2025-10-09 12:54:55 +05:30
ljain112
2b4f621c8e refactor: proper variable naming 2025-10-09 12:24:54 +05:30
ljain112
31434630b5 fix: handle multicurrency in tds jv 2025-10-08 19:29:39 +05:30
ljain112
47aa006ea9 fix: recalculate totals after applying tds 2025-10-08 18:02:19 +05:30
ljain112
1319b28b1f fix: tds for customer and supplier in Journal Entry 2025-10-08 17:27:58 +05:30
Rehan Ansari
0948358bb3 fix: prevent empty Create dropdown when In Process 2025-10-06 01:29:54 +05:30
KerollesFathy
0af74aef00 fix(accounts): update payment mode account retrieval to use namespaced function 2025-09-17 13:14:35 +00:00
ravibharathi656
bfff945fb1 fix(production plan): filter sales orders by item 2025-09-03 16:54:13 +05:30
Anjali Patel
cbfb14a654 fix: add missing query key in 'Reports To' field filter 2025-08-13 13:37:48 +00:00
Anjali Patel
608d38a172 fix: prevent self in "Reports To" dropdown (UI-level check)
Ensures employee cannot select themselves in the "Reports To" field via UI.
This complements server-side validation by improving UX.
2025-08-13 12:25:22 +00:00
1521 changed files with 317679 additions and 372739 deletions

View File

@@ -45,3 +45,9 @@ d827ed21adc7b36047e247cbb0dc6388d048a7f9
# `frappe.flags.in_test` => `frappe.in_test`
7a482a69985c952de0e8193c9d4e086aee65ee6d
# these commits actually changed something valuable
# but they have a lot of whitespace changes that make blame noisy
# PR: https://github.com/frappe/erpnext/pull/49816
3ffd50c772735877b330d010c1058f623da8721d
0e8f8677b8eb31e7834f72d1c6314d3c3f392ca6

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.
@@ -60,7 +60,7 @@ body:
description: Share exact version number of Frappe and ERPNext you are using.
placeholder: |
Frappe version -
ERPNext Verion -
ERPNext version -
validations:
required: true

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

View File

@@ -14,7 +14,7 @@ jobs:
timeout-minutes: 60
steps:
- name: Checkout Actions
uses: actions/checkout@v2
uses: actions/checkout@v6
with:
repository: "frappe/backport"
path: ./actions

View File

@@ -13,12 +13,12 @@ jobs:
steps:
- name: 'Setup Environment'
uses: actions/setup-python@v2
uses: actions/setup-python@v6
with:
python-version: '3.10'
- name: 'Clone repo'
uses: actions/checkout@v2
uses: actions/checkout@v6
- name: Validate Docs
env:

View File

@@ -21,14 +21,14 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
ref: ${{ matrix.branch }}
- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: "3.12"
python-version: "3.14"
- name: Run script to update POT file
run: |

View File

@@ -19,7 +19,7 @@ jobs:
strategy:
fail-fast: false
matrix:
version: ["14", "15"]
version: ["14", "15", "16"]
steps:
- uses: octokit/request-action@v2.x

View File

@@ -12,12 +12,12 @@ jobs:
name: linters
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
- name: Set up Python 3.10
uses: actions/setup-python@v4
- name: Set up Python 3.14
uses: actions/setup-python@v6
with:
python-version: '3.10'
python-version: '3.14'
cache: pip
- name: Install and Run Pre-commit
@@ -27,12 +27,12 @@ jobs:
name: semgrep
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
- name: Set up Python 3.10
uses: actions/setup-python@v4
- name: Set up Python 3.14
uses: actions/setup-python@v6
with:
python-version: '3.10'
python-version: '3.14'
cache: pip
- name: Download Semgrep rules
@@ -43,3 +43,6 @@ jobs:
- name: Run Semgrep rules
run: semgrep ci --config ./frappe-semgrep-rules/rules --config r/python.lang.correctness
- name: Semgrep for Test Correctness
run: semgrep ci --include=**/test_*.py --config ./semgrep/test-correctness.yml

View File

@@ -29,7 +29,7 @@ jobs:
services:
mysql:
image: mariadb:10.6
image: mariadb:11.8
env:
MARIADB_ROOT_PASSWORD: 'root'
ports:
@@ -38,7 +38,7 @@ jobs:
steps:
- name: Clone
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Check for valid Python & Merge Conflicts
run: |
@@ -49,14 +49,17 @@ jobs:
fi
- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.11'
python-version: |
3.11
3.13
3.14
- name: Setup Node
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 18
node-version: 24
check-latest: true
- name: Add to Hosts
@@ -110,8 +113,8 @@ jobs:
jq 'del(.install_apps)' ~/frappe-bench/sites/test_site/site_config.json > tmp.json
mv tmp.json ~/frappe-bench/sites/test_site/site_config.json
wget https://erpnext.com/files/v13-erpnext.sql.gz
bench --site test_site --force restore ~/frappe-bench/v13-erpnext.sql.gz
wget https://frappe.io/files/erpnext-v14.sql.gz
bench --site test_site --force restore ~/frappe-bench/erpnext-v14.sql.gz
git -C "apps/frappe" remote set-url upstream https://github.com/frappe/frappe.git
git -C "apps/erpnext" remote set-url upstream https://github.com/frappe/erpnext.git
@@ -132,15 +135,14 @@ jobs:
# Resetup env and install apps
pgrep honcho | xargs kill
rm -rf ~/frappe-bench/env
bench -v setup env
bench -v setup env --python python$2
bench pip install -e ./apps/erpnext
bench start &>> ~/frappe-bench/bench_start.log &
bench --site test_site migrate
}
update_to_version 14
update_to_version 15
update_to_version 15 3.13
echo "Updating to latest version"
git -C "apps/frappe" fetch --depth 1 upstream "${GITHUB_BASE_REF:-${GITHUB_REF##*/}}"

View File

@@ -2,7 +2,7 @@ name: Generate Semantic Release
on:
push:
branches:
- version-13
- version-16
permissions:
contents: read
@@ -13,12 +13,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Entire Repository
uses: actions/checkout@v2
uses: actions/checkout@v6
with:
fetch-depth: 0
persist-credentials: false
- name: Setup Node.js
uses: actions/setup-node@v2
uses: actions/setup-node@v6
with:
node-version: 20
- name: Setup dependencies

View File

@@ -4,8 +4,8 @@ on:
workflow_dispatch:
concurrency:
group: server-individual-tests-develop-${{ github.event_name }}-${{ github.event.number || github.event_name == 'workflow_dispatch' && github.run_id || '' }}
cancel-in-progress: false
group: server-individual-tests-lightmode-develop
cancel-in-progress: true
permissions:
contents: read
@@ -17,11 +17,11 @@ jobs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: Clone
uses: actions/checkout@v4
uses: actions/checkout@v6
- id: set-matrix
run: |
# Use grep and find to get the list of test files
matrix=$(find . -path '*/doctype/*/test_*.py' | xargs grep -l 'def test_' | awk '{
matrix=$(find . -path '*/test_*.py' | xargs grep -l 'def test_' | sort | awk '{
# Remove ./ prefix, file extension, and replace / with .
gsub(/^\.\//, "", $0)
gsub(/\.py$/, "", $0)
@@ -58,6 +58,7 @@ jobs:
strategy:
fail-fast: false
matrix: ${{fromJson(needs.discover.outputs.matrix)}}
max-parallel: 14
name: Test
@@ -72,17 +73,17 @@ jobs:
steps:
- name: Clone
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.12'
python-version: '3.14'
- name: Setup Node
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 18
node-version: 24
check-latest: true
- name: Add to Hosts
@@ -130,4 +131,13 @@ jobs:
FRAPPE_BRANCH: ${{ github.event.inputs.branch }}
- name: Run Tests
run: 'cd ~/frappe-bench/ && bench --site test_site run-tests --app erpnext --module ${{ matrix.test }}'
run: |
site_name=$(echo "${{matrix.test}}" | sed -e 's/.*\.\(test_.*$\)/\1/')
echo "$site_name"
mkdir ~/frappe-bench/sites/$site_name
cp -r "${GITHUB_WORKSPACE}/.github/helper/site_config_mariadb.json" ~/frappe-bench/sites/$site_name/site_config.json
cd ~/frappe-bench/
bench --site $site_name reinstall --yes
bench --site $site_name set-config allow_tests true
bench --site $site_name run-tests --module ${{ matrix.test }} --lightmode

View File

@@ -15,11 +15,11 @@ jobs:
name: Check Commit Titles
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
with:
fetch-depth: 200
- uses: actions/setup-node@v3
- uses: actions/setup-node@v6
with:
node-version: 18
check-latest: true

View File

@@ -7,6 +7,7 @@ on:
paths:
- "**.js"
- "**.css"
- "**.svg"
- "**.md"
- "**.html"
- 'crowdin.yml'

View File

@@ -7,6 +7,7 @@ on:
paths-ignore:
- '**.js'
- '**.css'
- '**.svg'
- '**.md'
- '**.html'
- 'crowdin.yml'
@@ -40,6 +41,7 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 60
env:
TZ: 'Asia/Kolkata'
NODE_ENV: "production"
WITH_COVERAGE: ${{ github.event_name != 'pull_request' }}
@@ -55,6 +57,7 @@ jobs:
mysql:
image: mariadb:10.6
env:
TZ: 'Asia/Kolkata'
MARIADB_ROOT_PASSWORD: 'root'
ports:
- 3306:3306
@@ -62,12 +65,12 @@ jobs:
steps:
- name: Clone
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.12'
python-version: '3.14'
- name: Check for valid Python & Merge Conflicts
run: |
@@ -78,9 +81,9 @@ jobs:
fi
- name: Setup Node
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 18
node-version: 24
check-latest: true
- name: Add to Hosts
@@ -128,10 +131,9 @@ jobs:
FRAPPE_BRANCH: ${{ github.event.client_payload.sha || github.event.inputs.branch }}
- name: Run Tests
run: 'cd ~/frappe-bench/ && bench --site test_site run-parallel-tests --app erpnext --total-builds ${{ strategy.job-total }} --build-number ${{ matrix.container }}'
run: 'cd ~/frappe-bench/ && bench --site test_site run-parallel-tests --lightmode --app erpnext --total-builds ${{ strategy.job-total }} --build-number ${{ matrix.container }} --with-coverage'
env:
TYPE: server
CAPTURE_COVERAGE: ${{ github.event_name != 'pull_request' }}
- name: Show bench output
@@ -140,7 +142,6 @@ jobs:
- name: Upload coverage data
uses: actions/upload-artifact@v4
if: github.event_name != 'pull_request'
with:
name: coverage-${{ matrix.container }}
path: /home/runner/frappe-bench/sites/coverage.xml
@@ -149,10 +150,9 @@ jobs:
name: Coverage Wrap Up
needs: test
runs-on: ubuntu-latest
if: ${{ github.event_name != 'pull_request' }}
steps:
- name: Clone
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Download artifacts
uses: actions/download-artifact@v4

View File

@@ -47,12 +47,12 @@ jobs:
steps:
- name: Clone
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.12'
python-version: '3.14'
- name: Check for valid Python & Merge Conflicts
run: |
@@ -63,9 +63,9 @@ jobs:
fi
- name: Setup Node
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: 18
node-version: 24
check-latest: true
- name: Add to Hosts

View File

@@ -50,6 +50,15 @@ pull_request_rules:
- version-15-hotfix
assignees:
- "{{ author }}"
- name: backport to version-16-beta
conditions:
- label="backport version-16-beta"
actions:
backport:
branches:
- version-16-beta
assignees:
- "{{ author }}"
- name: Automatic merge on CI success and review
conditions:
- status-success=linters

View File

@@ -1,5 +1,5 @@
{
"branches": ["version-13"],
"branches": ["version-16"],
"plugins": [
"@semantic-release/commit-analyzer", {
"preset": "angular",
@@ -21,4 +21,4 @@
],
"@semantic-release/github"
]
}
}

View File

@@ -1,3 +1,4 @@
<div align="center">
<a href="https://frappe.io/erpnext">
<img src="./erpnext/public/images/v16/erpnext.svg" alt="ERPNext Logo" height="80px" width="80xp"/>
@@ -133,7 +134,7 @@ To setup the repository locally follow the steps mentioned below:
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

@@ -6,7 +6,7 @@ import frappe
from frappe.model.document import Document
from frappe.utils.user import is_website_user
__version__ = "16.0.0-dev"
__version__ = "16.18.3"
def get_default_company(user=None):

View File

@@ -0,0 +1,50 @@
{
"cards": [
{
"card": "Total Outgoing Bills"
},
{
"card": "Total Incoming Bills"
},
{
"card": "Total Incoming Payment"
},
{
"card": "Total Outgoing Payment"
}
],
"charts": [
{
"chart": "Incoming Bills (Purchase Invoice)",
"width": "Half"
},
{
"chart": "Outgoing Bills (Sales Invoice)",
"width": "Half"
},
{
"chart": "Accounts Receivable Ageing",
"width": "Half"
},
{
"chart": "Accounts Payable Ageing",
"width": "Half"
},
{
"chart": "Bank Balance",
"width": "Full"
}
],
"creation": "2026-01-26 21:25:12.793893",
"dashboard_name": "Payments",
"docstatus": 0,
"doctype": "Dashboard",
"idx": 0,
"is_default": 0,
"is_standard": 1,
"modified": "2026-01-26 21:25:12.793893",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payments",
"owner": "Administrator"
}

View File

@@ -9,18 +9,20 @@
"idx": 0,
"is_public": 1,
"is_standard": 1,
"last_synced_on": "2020-07-22 12:19:59.879476",
"modified": "2020-07-22 12:21:48.780513",
"last_synced_on": "2026-01-02 13:01:24.037552",
"modified": "2026-01-02 13:04:57.850305",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Bank Balance",
"number_of_groups": 0,
"owner": "Administrator",
"roles": [],
"show_values_over_chart": 1,
"source": "Account Balance Timeline",
"time_interval": "Quarterly",
"timeseries": 0,
"time_interval": "Monthly",
"timeseries": 1,
"timespan": "Last Year",
"type": "Line",
"use_report_chart": 0,
"y_axis": []
}
}

View File

@@ -1,7 +1,7 @@
{
"chart_name": "Profit and Loss",
"chart_type": "Report",
"creation": "2020-07-17 11:25:34.448572",
"creation": "2025-04-01 20:38:16.986176",
"docstatus": 0,
"doctype": "Dashboard Chart",
"dynamic_filters_json": "{\"company\":\"frappe.defaults.get_user_default(\\\"Company\\\")\",\"from_fiscal_year\":\"erpnext.utils.get_fiscal_year()\",\"to_fiscal_year\":\"erpnext.utils.get_fiscal_year()\"}",
@@ -9,7 +9,7 @@
"idx": 0,
"is_public": 1,
"is_standard": 1,
"modified": "2023-07-19 13:08:56.470390",
"modified": "2025-12-19 12:37:31.673782",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Profit and Loss",
@@ -17,8 +17,9 @@
"owner": "Administrator",
"report_name": "Profit and Loss Statement",
"roles": [],
"show_values_over_chart": 1,
"timeseries": 0,
"type": "Bar",
"type": "Line",
"use_report_chart": 1,
"y_axis": []
}
}

View File

@@ -7,6 +7,7 @@ from frappe.utils import (
cint,
date_diff,
flt,
formatdate,
get_first_day,
get_last_day,
get_link_to_form,
@@ -318,7 +319,7 @@ def get_already_booked_amount(doc, item):
def book_deferred_income_or_expense(doc, deferred_process, posting_date=None):
enable_check = "enable_deferred_revenue" if doc.doctype == "Sales Invoice" else "enable_deferred_expense"
accounts_frozen_upto = frappe.get_single_value("Accounts Settings", "acc_frozen_upto")
accounts_frozen_upto = frappe.db.get_value("Company", doc.company, "accounts_frozen_till_date")
def _book_deferred_revenue_or_expense(
item,
@@ -449,14 +450,12 @@ def process_deferred_accounting(posting_date=None):
for company in companies:
for record_type in ("Income", "Expense"):
doc = frappe.get_doc(
dict(
doctype="Process Deferred Accounting",
company=company.name,
posting_date=posting_date,
start_date=start_date,
end_date=end_date,
type=record_type,
)
doctype="Process Deferred Accounting",
company=company.name,
posting_date=posting_date,
start_date=start_date,
end_date=end_date,
type=record_type,
)
doc.insert()
@@ -525,7 +524,8 @@ def make_gl_entries(
if gl_entries:
try:
make_gl_entries(gl_entries, cancel=(doc.docstatus == 2), merge_entries=True)
frappe.db.commit()
if not frappe.in_test:
frappe.db.commit()
except Exception as e:
if frappe.in_test:
doc.log_error(f"Error while processing deferred accounting for Invoice {doc.name}")
@@ -607,7 +607,8 @@ def book_revenue_via_journal_entry(
if submit:
journal_entry.submit()
frappe.db.commit()
if not frappe.in_test:
frappe.db.commit()
except Exception:
frappe.db.rollback()
doc.log_error(f"Error while processing deferred accounting for Invoice {doc.name}")

View File

@@ -5,8 +5,7 @@ frappe.ui.form.on("Account", {
setup: function (frm) {
frm.add_fetch("parent_account", "report_type", "report_type");
frm.add_fetch("parent_account", "root_type", "root_type");
},
onload: function (frm) {
frm.set_query("parent_account", function (doc) {
return {
filters: {
@@ -15,7 +14,18 @@ frappe.ui.form.on("Account", {
},
};
});
frm.set_query("account_category", function () {
if (!frm.doc.root_type) return;
return {
filters: {
root_type: ["in", [frm.doc.root_type, ""]],
},
};
});
},
refresh: function (frm) {
frm.toggle_display("account_name", frm.is_new());
@@ -58,12 +68,20 @@ frappe.ui.form.on("Account", {
}
}
},
account_type: function (frm) {
if (frm.doc.is_group == 0) {
frm.toggle_display(["tax_rate"], frm.doc.account_type == "Tax");
frm.toggle_display("warehouse", frm.doc.account_type == "Stock");
}
},
root_type: function (frm) {
if (frm.doc.account_category) {
frm.set_value("account_category", "");
}
},
add_toolbar_buttons: function (frm) {
frm.add_custom_button(
__("Chart of Accounts"),

View File

@@ -21,6 +21,7 @@
"account_currency",
"column_break1",
"parent_account",
"account_category",
"account_type",
"tax_rate",
"freeze_account",
@@ -189,13 +190,20 @@
"fieldname": "disabled",
"fieldtype": "Check",
"label": "Disable"
},
{
"description": "Used with Financial Report Template",
"fieldname": "account_category",
"fieldtype": "Link",
"label": "Account Category",
"options": "Account Category"
}
],
"icon": "fa fa-money",
"idx": 1,
"is_tree": 1,
"links": [],
"modified": "2025-01-22 10:40:35.766017",
"modified": "2026-04-14 18:14:42.202065",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Account",
@@ -248,8 +256,17 @@
"role": "Accounts Manager",
"share": 1,
"write": 1
},
{
"role": "HR User",
"select": 1
},
{
"role": "HR Manager",
"select": 1
}
],
"row_format": "Dynamic",
"search_fields": "account_number",
"show_name_in_global_search": 1,
"show_preview_popup": 1,
@@ -257,4 +274,4 @@
"sort_order": "ASC",
"states": [],
"track_changes": 1
}
}

View File

@@ -31,6 +31,7 @@ class Account(NestedSet):
if TYPE_CHECKING:
from frappe.types import DF
account_category: DF.Link | None
account_currency: DF.Link | None
account_name: DF.Data
account_number: DF.Data | None
@@ -92,8 +93,10 @@ class Account(NestedSet):
super().on_update()
def onload(self):
frozen_accounts_modifier = frappe.get_single_value("Accounts Settings", "frozen_accounts_modifier")
if not frozen_accounts_modifier or frozen_accounts_modifier in frappe.get_roles():
role_allowed_for_frozen_entries = frappe.db.get_value(
"Company", self.company, "role_allowed_for_frozen_entries"
)
if not role_allowed_for_frozen_entries or role_allowed_for_frozen_entries in frappe.get_roles():
self.set_onload("can_freeze_account", True)
def autoname(self):
@@ -108,6 +111,7 @@ class Account(NestedSet):
self.validate_parent_child_account_type()
self.validate_root_details()
self.validate_account_number()
self.validate_disabled()
self.validate_group_or_ledger()
self.set_root_and_report_type()
self.validate_mandatory()
@@ -252,6 +256,14 @@ class Account(NestedSet):
self.create_account_for_child_company(parent_acc_name_map, descendants, parent_acc_name)
def validate_disabled(self):
doc_before_save = self.get_doc_before_save()
if not doc_before_save or cint(doc_before_save.disabled) == cint(self.disabled):
return
if cint(self.disabled):
self.validate_default_accounts_in_company()
def validate_group_or_ledger(self):
doc_before_save = self.get_doc_before_save()
if not doc_before_save or cint(doc_before_save.is_group) == cint(self.is_group):
@@ -262,18 +274,41 @@ class Account(NestedSet):
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."))
self.validate_default_accounts_in_company()
elif self.check_if_child_exists():
throw(_("Account with child nodes cannot be set as ledger"))
def validate_default_accounts_in_company(self):
default_account_fields = get_company_default_account_fields()
company_default_accounts = frappe.db.get_value(
"Company", self.company, list(default_account_fields.keys()), as_dict=1
)
msg = _("Account {0} cannot be disabled as it is already set as {1} for {2}.")
if not self.disabled:
msg = _("Account {0} cannot be converted to Group as it is already set as {1} for {2}.")
for d in default_account_fields:
if company_default_accounts.get(d) == self.name:
throw(
msg.format(
frappe.bold(self.name),
frappe.bold(default_account_fields.get(d)),
frappe.bold(self.company),
)
)
def validate_frozen_accounts_modifier(self):
doc_before_save = self.get_doc_before_save()
if not doc_before_save or doc_before_save.freeze_account == self.freeze_account:
return
frozen_accounts_modifier = frappe.get_cached_value(
"Accounts Settings", "Accounts Settings", "frozen_accounts_modifier"
role_allowed_for_frozen_entries = frappe.get_cached_value(
"Company", self.company, "role_allowed_for_frozen_entries"
)
if not frozen_accounts_modifier or frozen_accounts_modifier not in frappe.get_roles():
if not role_allowed_for_frozen_entries or role_allowed_for_frozen_entries not in frappe.get_roles():
throw(_("You are not authorized to set Frozen value"))
def validate_balance_must_be_debit_or_credit(self):
@@ -625,3 +660,27 @@ def _ensure_idle_system():
).format(pretty_date(last_gl_update)),
title=_("System In Use"),
)
def get_company_default_account_fields():
return {
"default_bank_account": "Default Bank Account",
"default_cash_account": "Default Cash Account",
"default_receivable_account": "Default Receivable Account",
"default_payable_account": "Default Payable Account",
"default_expense_account": "Default Expense Account",
"default_income_account": "Default Income Account",
"stock_received_but_not_billed": "Stock Received But Not Billed Account",
"stock_adjustment_account": "Stock Adjustment Account",
"write_off_account": "Write Off Account",
"default_discount_account": "Default Payment Discount Account",
"unrealized_profit_loss_account": "Unrealized Profit / Loss Account",
"exchange_gain_loss_account": "Exchange Gain / Loss Account",
"unrealized_exchange_gain_loss_account": "Unrealized Exchange Gain / Loss Account",
"round_off_account": "Round Off Account",
"default_deferred_revenue_account": "Default Deferred Revenue Account",
"default_deferred_expense_account": "Default Deferred Expense Account",
"accumulated_depreciation_account": "Accumulated Depreciation Account",
"depreciation_expense_account": "Depreciation Expense Account",
"disposal_account": "Gain/Loss Account on Asset Disposal",
}

View File

@@ -52,59 +52,55 @@ frappe.treeview_settings["Account"] = {
],
root_label: "Accounts",
get_tree_nodes: "erpnext.accounts.utils.get_children",
on_get_node: function (nodes, deep = false) {
if (frappe.boot.user.can_read.indexOf("GL Entry") == -1) return;
on_node_render: function (node, deep) {
const render_balances = () => {
for (let account of cur_tree.account_balance_data) {
const node = cur_tree.nodes && cur_tree.nodes[account.value];
if (!node || node.is_root) continue;
let accounts = [];
if (deep) {
// in case of `get_all_nodes`
accounts = nodes.reduce((acc, node) => [...acc, ...node.data], []);
} else {
accounts = nodes;
}
// show Dr if positive since balance is calculated as debit - credit else show Cr
const balance = account.balance_in_account_currency || account.balance;
const dr_or_cr = balance > 0 ? __("Dr") : __("Cr");
const format = (value, currency) => format_currency(Math.abs(value), currency);
frappe.db.get_single_value("Accounts Settings", "show_balance_in_coa").then((value) => {
if (value) {
const get_balances = frappe.call({
method: "erpnext.accounts.utils.get_account_balances",
args: {
accounts: accounts,
company: cur_tree.args.company,
},
});
get_balances.then((r) => {
if (!r.message || r.message.length == 0) return;
for (let account of r.message) {
const node = cur_tree.nodes && cur_tree.nodes[account.value];
if (!node || node.is_root) continue;
// show Dr if positive since balance is calculated as debit - credit else show Cr
const balance = account.balance_in_account_currency || account.balance;
const dr_or_cr = balance > 0 ? __("Dr") : __("Cr");
const format = (value, currency) => format_currency(Math.abs(value), currency);
if (account.balance !== undefined) {
node.parent && node.parent.find(".balance-area").remove();
$(
'<span class="balance-area pull-right">' +
(account.balance_in_account_currency
? format(
account.balance_in_account_currency,
account.account_currency
) + " / "
: "") +
format(account.balance, account.company_currency) +
" " +
dr_or_cr +
"</span>"
).insertBefore(node.$ul);
}
}
});
if (account.balance !== undefined) {
node.parent && node.parent.find(".balance-area").remove();
$(
'<span class="balance-area pull-right">' +
(account.account_currency != account.company_currency
? format(account.balance_in_account_currency, account.account_currency) +
" / "
: "") +
format(account.balance, account.company_currency) +
" " +
dr_or_cr +
"</span>"
).insertBefore(node.$ul);
}
}
});
};
if (frappe.boot.user.can_read.indexOf("GL Entry") == -1) return;
if (!cur_tree.account_balance_data) {
frappe.db.get_single_value("Accounts Settings", "show_balance_in_coa").then((value) => {
if (value) {
frappe.call({
method: "erpnext.accounts.utils.get_account_balances_coa",
args: {
company: cur_tree.args.company,
include_default_fb_balances: true,
},
callback: function (r) {
if (!r.message || r.message.length === 0) return;
cur_tree.account_balance_data = r.message || [];
render_balances();
},
});
}
});
} else {
render_balances();
}
},
add_tree_node: "erpnext.accounts.utils.add_ac",
menu_items: [
@@ -160,6 +156,14 @@ frappe.treeview_settings["Account"] = {
.options,
description: __("Optional. This setting will be used to filter in various transactions."),
},
{
fieldtype: "Link",
fieldname: "account_category",
label: __("Account Category"),
options: frappe.get_meta("Account").fields.filter((d) => d.fieldname == "account_category")[0]
.options,
description: __("Optional. Used with Financial Report Template"),
},
{
fieldtype: "Float",
fieldname: "tax_rate",

View File

@@ -23,15 +23,7 @@ def create_charts(
if root_account:
root_type = child.get("root_type")
if account_name not in [
"account_name",
"account_number",
"account_type",
"root_type",
"is_group",
"tax_rate",
"account_currency",
]:
if account_name not in get_chart_metadata_fields():
account_number = cstr(child.get("account_number")).strip()
account_name, account_name_in_db = add_suffix_if_duplicate(
account_name, account_number, accounts
@@ -55,6 +47,7 @@ def create_charts(
"report_type": report_type,
"account_number": account_number,
"account_type": child.get("account_type"),
"account_category": child.get("account_category"),
"account_currency": child.get("account_currency")
if custom_chart
else frappe.get_cached_value("Company", company, "default_currency"),
@@ -97,20 +90,7 @@ def add_suffix_if_duplicate(account_name, account_number, accounts):
def identify_is_group(child):
if child.get("is_group"):
is_group = child.get("is_group")
elif len(
set(child.keys())
- set(
[
"account_name",
"account_type",
"root_type",
"is_group",
"tax_rate",
"account_number",
"account_currency",
]
)
):
elif len(set(child.keys()) - set(get_chart_metadata_fields())):
is_group = 1
else:
is_group = 0
@@ -253,13 +233,7 @@ def validate_bank_account(coa, bank_account):
def _get_account_names(account_master):
for account_name, child in account_master.items():
if account_name not in [
"account_number",
"account_type",
"root_type",
"is_group",
"tax_rate",
]:
if account_name not in get_chart_metadata_fields():
accounts.append(account_name)
_get_account_names(child)
@@ -284,15 +258,7 @@ def build_tree_from_json(chart_template, chart_data=None, from_coa_importer=Fals
"""recursively called to form a parent-child based list of dict from chart template"""
for account_name, child in children.items():
account = {}
if account_name in [
"account_name",
"account_number",
"account_type",
"root_type",
"is_group",
"tax_rate",
"account_currency",
]:
if account_name in get_chart_metadata_fields():
continue
if from_coa_importer:
@@ -310,3 +276,16 @@ def build_tree_from_json(chart_template, chart_data=None, from_coa_importer=Fals
_import_accounts(chart, None)
return accounts
def get_chart_metadata_fields():
return [
"account_name",
"account_number",
"account_type",
"account_category",
"root_type",
"is_group",
"tax_rate",
"account_currency",
]

View File

@@ -34,6 +34,13 @@
"account_number": "0430",
"account_type": "Fixed Asset"
},
"Anlagen im Bau": {
"is_group": 1,
"Andere Anlagen, Betriebs- und Geschäftsausstattung im Bau": {
"account_number": "0498",
"account_type": "Capital Work in Progress"
}
},
"Accumulated Depreciation": {
"account_type": "Accumulated Depreciation"
}
@@ -317,13 +324,21 @@
"account_number": "3800",
"account_type": "Expenses Included In Asset Valuation"
},
"Bestandsveränderungen Roh-, Hilfs- und Betriebsstoffe sowie bezogene Waren": {
"account_number": "3960",
"account_type": "Stock Adjustment"
},
"Herstellungskosten": {
"account_number": "4996",
"account_type": "Cost of Goods Sold"
},
"Anlagenabgänge Sachanlagen (Restbuchwert bei Buchverlust)": {
"account_number": "2310",
"account_type": "Expense Account"
},
"Verluste aus dem Abgang von Gegenständen des Anlagevermögens": {
"account_number": "2320",
"account_type": "Stock Adjustment"
"account_type": "Expense Account"
},
"Verwaltungskosten": {
"account_number": "4997",
@@ -340,7 +355,7 @@
"is_group": 1,
"Abschreibungen auf Sachanlagen (ohne AfA auf Kfz und Gebäude)": {
"account_number": "4830",
"account_type": "Accumulated Depreciation"
"account_type": "Depreciation"
},
"Abschreibungen auf Gebäude": {
"account_number": "4831",

View File

@@ -33,6 +33,17 @@
},
"account_number": "1151.000"
},
"Pajak Dibayar di Muka": {
"PPN Masukan": {
"account_number": "1152.001",
"account_type": "Tax"
},
"PPh 23 Dibayar di Muka": {
"account_number": "1152.002",
"account_type": "Tax"
},
"account_number": "1152.000"
},
"account_number": "1150.000"
},
"Kas": {
@@ -97,17 +108,6 @@
},
"account_number": "1130.000"
},
"Pajak Dibayar di Muka": {
"PPN Masukan": {
"account_number": "1151.001",
"account_type": "Tax"
},
"PPh 23 Dibayar di Muka": {
"account_number": "1152.001",
"account_type": "Tax"
},
"account_number": "1150.000"
},
"account_number": "1100.000"
},

View File

@@ -6,64 +6,83 @@
"Current Assets": {
"Accounts Receivable": {
"Debtors": {
"account_type": "Receivable"
"account_type": "Receivable",
"account_category": "Trade Receivables"
}
},
"Bank Accounts": {
"account_type": "Bank",
"is_group": 1
"is_group": 1,
"account_category": "Cash and Cash Equivalents"
},
"Cash In Hand": {
"Cash": {
"account_type": "Cash"
"account_type": "Cash",
"account_category": "Cash and Cash Equivalents"
},
"account_type": "Cash"
"account_type": "Cash",
"account_category": "Cash and Cash Equivalents"
},
"Loans and Advances (Assets)": {
"is_group": 1
"is_group": 1,
"account_category": "Other Receivables"
},
"Securities and Deposits": {
"Earnest Money": {}
"Earnest Money": {
"account_category": "Other Current Assets"
}
},
"Stock Assets": {
"Stock In Hand": {
"account_type": "Stock"
"account_type": "Stock",
"account_category": "Stock Assets"
},
"account_type": "Stock"
"account_type": "Stock",
"account_category": "Stock Assets"
},
"Tax Assets": {
"is_group": 1
"is_group": 1,
"account_category": "Other Current Assets"
}
},
"Fixed Assets": {
"Capital Equipment": {
"account_type": "Fixed Asset"
"account_type": "Fixed Asset",
"account_category": "Tangible Assets"
},
"Electronic Equipment": {
"account_type": "Fixed Asset"
"account_type": "Fixed Asset",
"account_category": "Tangible Assets"
},
"Furniture and Fixtures": {
"account_type": "Fixed Asset"
"account_type": "Fixed Asset",
"account_category": "Tangible Assets"
},
"Office Equipment": {
"account_type": "Fixed Asset"
"account_type": "Fixed Asset",
"account_category": "Tangible Assets"
},
"Plants and Machineries": {
"account_type": "Fixed Asset"
"account_type": "Fixed Asset",
"account_category": "Tangible Assets"
},
"Buildings": {
"account_type": "Fixed Asset"
"account_type": "Fixed Asset",
"account_category": "Tangible Assets"
},
"Accumulated Depreciations": {
"account_type": "Accumulated Depreciation"
"account_type": "Accumulated Depreciation",
"account_category": "Tangible Assets"
}
},
"Investments": {
"is_group": 1
"is_group": 1,
"account_category": "Long-term Investments"
},
"Temporary Accounts": {
"Temporary Opening": {
"account_type": "Temporary"
"account_type": "Temporary",
"account_category": "Other Non-current Assets"
}
},
"root_type": "Asset"
@@ -72,55 +91,103 @@
"Direct Expenses": {
"Stock Expenses": {
"Cost of Goods Sold": {
"account_type": "Cost of Goods Sold"
"account_type": "Cost of Goods Sold",
"account_category": "Cost of Goods Sold"
},
"Expenses Included In Valuation": {
"account_type": "Expenses Included In Valuation"
"account_type": "Expenses Included In Valuation",
"account_category": "Other Direct Costs"
},
"Stock Adjustment": {
"account_type": "Stock Adjustment"
"account_type": "Stock Adjustment",
"account_category": "Other Direct Costs"
}
}
},
"Indirect Expenses": {
"Administrative Expenses": {},
"Commission on Sales": {},
"Administrative Expenses": {
"account_category": "Operating Expenses"
},
"Commission on Sales": {
"account_category": "Operating Expenses"
},
"Depreciation": {
"account_type": "Depreciation"
"account_type": "Depreciation",
"account_category": "Operating Expenses"
},
"Entertainment Expenses": {
"account_category": "Operating Expenses"
},
"Entertainment Expenses": {},
"Freight and Forwarding Charges": {
"account_type": "Chargeable"
"account_type": "Chargeable",
"account_category": "Operating Expenses"
},
"Legal Expenses": {
"account_category": "Operating Expenses"
},
"Marketing Expenses": {
"account_type": "Chargeable",
"account_category": "Operating Expenses"
},
"Miscellaneous Expenses": {
"account_type": "Chargeable",
"account_category": "Operating Expenses"
},
"Office Maintenance Expenses": {
"account_category": "Operating Expenses"
},
"Office Rent": {
"account_category": "Operating Expenses"
},
"Postal Expenses": {
"account_category": "Operating Expenses"
},
"Print and Stationery": {
"account_category": "Operating Expenses"
},
"Legal Expenses": {},
"Marketing Expenses": {},
"Miscellaneous Expenses": {},
"Office Maintenance Expenses": {},
"Office Rent": {},
"Postal Expenses": {},
"Print and Stationery": {},
"Rounded Off": {
"account_type": "Round Off"
"account_type": "Round Off",
"account_category": "Operating Expenses"
},
"Salary": {},
"Sales Expenses": {},
"Telephone Expenses": {},
"Travel Expenses": {},
"Utility Expenses": {},
"Write Off": {},
"Exchange Gain/Loss": {},
"Gain/Loss on Asset Disposal": {},
"Impairment": {}
"Salary": {
"account_category": "Operating Expenses"
},
"Sales Expenses": {
"account_category": "Operating Expenses"
},
"Telephone Expenses": {
"account_category": "Operating Expenses"
},
"Travel Expenses": {
"account_category": "Operating Expenses"
},
"Utility Expenses": {
"account_category": "Operating Expenses"
},
"Write Off": {
"account_category": "Operating Expenses"
},
"Exchange Gain/Loss": {
"account_category": "Operating Expenses"
},
"Gain/Loss on Asset Disposal": {
"account_category": "Other Operating Income"
},
"Impairment": {
"account_category": "Operating Expenses"
}
},
"root_type": "Expense"
},
"Income": {
"Direct Income": {
"Sales": {
"account_type": "Income Account"
"account_type": "Income Account",
"account_category": "Revenue from Operations"
},
"Service": {
"account_type": "Income Account"
"account_type": "Income Account",
"account_category": "Revenue from Operations"
},
"account_type": "Income Account"
},
@@ -132,31 +199,51 @@
},
"Source of Funds (Liabilities)": {
"Capital Account": {
"Reserves and Surplus": {},
"Shareholders Funds": {},
"Revaluation Surplus": {}
"Reserves and Surplus": {
"account_category": "Reserves and Surplus"
},
"Shareholders Funds": {
"account_category": "Share Capital"
},
"Revaluation Surplus": {
"account_category": "Reserves and Surplus"
}
},
"Current Liabilities": {
"Accounts Payable": {
"Creditors": {
"account_type": "Payable"
"account_type": "Payable",
"account_category": "Trade Payables"
},
"Payroll Payable": {}
"Payroll Payable": {
"account_category": "Other Payables"
}
},
"Stock Liabilities": {
"Stock Received But Not Billed": {
"account_type": "Stock Received But Not Billed"
"account_type": "Stock Received But Not Billed",
"account_category": "Trade Payables"
}
},
"Duties and Taxes": {
"TDS": {
"account_type": "Tax"
}
"account_type": "Tax",
"account_category": "Current Tax Liabilities"
},
"account_type": "Tax",
"is_group": 1,
"account_category": "Current Tax Liabilities"
},
"Loans (Liabilities)": {
"Secured Loans": {},
"Unsecured Loans": {},
"Bank Overdraft Account": {}
"Secured Loans": {
"account_category": "Long-term Borrowings"
},
"Unsecured Loans": {
"account_category": "Long-term Borrowings"
},
"Bank Overdraft Account": {
"account_category": "Short-term Borrowings"
}
}
},
"root_type": "Liability"

View File

@@ -0,0 +1,840 @@
{
"name": "Philippines",
"country": "Philippines",
"tree": {
"Asset": {
"account_number": "1000",
"is_group": 1,
"root_type": "Asset",
"Current Assets": {
"account_number": "1001",
"is_group": 1,
"root_type": "Asset",
"Cash": {
"account_number": "1100",
"is_group": 1,
"root_type": "Asset",
"account_type": "Cash",
"Cash on Hand": {
"account_number": "1101",
"is_group": 0,
"root_type": "Asset",
"account_type": "Cash"
},
"Petty Cash Fund": {
"account_number": "1200",
"is_group": 1,
"root_type": "Asset",
"account_type": "Cash",
"Petty Cash Fund": {
"account_number": "1201",
"is_group": 0,
"root_type": "Asset",
"account_type": "Cash"
}
}
},
"Bank Accounts": {
"account_number": "1102",
"is_group": 1,
"root_type": "Asset",
"account_type": "Bank"
},
"Advances to Officers & Employees": {
"account_number": "1290",
"is_group": 1,
"root_type": "Asset",
"Advances to Officers & Employees": {
"account_number": "1291",
"is_group": 0,
"root_type": "Asset"
}
},
"Accounts Receivable Trade": {
"account_number": "1300",
"is_group": 1,
"root_type": "Asset",
"Accounts Receivable - Trade": {
"account_number": "1301",
"is_group": 0,
"root_type": "Asset",
"account_type": "Receivable"
}
},
"Accounts Receivable - Affiliates": {
"account_number": "1310",
"is_group": 1,
"root_type": "Asset",
"Due from Company": {
"account_number": "1311",
"is_group": 0,
"root_type": "Asset"
}
},
"Accounts Receivable - Others": {
"account_number": "1400",
"is_group": 1,
"root_type": "Asset",
"Accounts Receivable - Others": {
"account_number": "1401",
"is_group": 0,
"root_type": "Asset"
}
},
"Parts, Materials and Supplies": {
"account_number": "1500",
"is_group": 1,
"root_type": "Asset",
"Parts, Materials and Supplies": {
"account_number": "1501",
"is_group": 0,
"root_type": "Asset"
},
"Raw Materials - Demo": {
"account_number": "1502",
"is_group": 0,
"root_type": "Asset"
}
},
"Project in Progress": {
"account_number": "1510",
"is_group": 1,
"root_type": "Asset",
"Project in Progress": {
"account_number": "1511",
"is_group": 0,
"root_type": "Asset"
},
"Factory Overhead Variance": {
"account_number": "1512",
"is_group": 0,
"root_type": "Asset"
}
},
"Finished Goods": {
"account_number": "1520",
"is_group": 1,
"root_type": "Asset",
"Finished Goods Inventory": {
"account_number": "1531",
"is_group": 0,
"root_type": "Asset",
"account_type": "Stock"
},
"Inventory in Transit": {
"account_number": "1532",
"is_group": 0,
"root_type": "Asset",
"account_type": "Stock Adjustment"
}
},
"Prepayments": {
"account_number": "1600",
"is_group": 1,
"root_type": "Asset",
"Prepaid Insurance & Bonds": {
"account_number": "1601",
"is_group": 0,
"root_type": "Asset"
},
"Prepaid Rent": {
"account_number": "1602",
"is_group": 0,
"root_type": "Asset"
}
},
"VAT Input Tax": {
"account_number": "1610",
"is_group": 1,
"root_type": "Asset",
"VAT Input Tax - Goods": {
"account_number": "1611",
"is_group": 0,
"root_type": "Asset",
"account_type": "Tax"
}
}
},
"Non - Current Assets": {
"account_number": "1002",
"is_group": 1,
"root_type": "Asset",
"Property, Plants And Equipments": {
"account_number": "1700",
"is_group": 1,
"root_type": "Asset",
"Land": {
"account_number": "1701",
"is_group": 0,
"root_type": "Asset",
"account_type": "Fixed Asset"
},
"Buildings & Improvements": {
"account_number": "1702",
"is_group": 0,
"root_type": "Asset",
"account_type": "Fixed Asset"
},
"Delivery & Trans Equipment": {
"account_number": "1703",
"is_group": 0,
"root_type": "Asset",
"account_type": "Fixed Asset"
},
"Furniture & Fixtures": {
"account_number": "1704",
"is_group": 0,
"root_type": "Asset",
"account_type": "Fixed Asset"
},
"Machinery & Equipment": {
"account_number": "1705",
"is_group": 0,
"root_type": "Asset",
"account_type": "Fixed Asset"
}
},
"Accum Depr. - Property, Plants and Equipment": {
"account_number": "1800",
"is_group": 1,
"root_type": "Asset",
"Accumulated Dep Bdgs & Improv": {
"account_number": "1801",
"is_group": 0,
"root_type": "Asset",
"account_type": "Accumulated Depreciation"
},
"Accumulated Dep Delivery & Trans": {
"account_number": "1802",
"is_group": 0,
"root_type": "Asset",
"account_type": "Accumulated Depreciation"
},
"Accumulated Dep Furniture & Fixture": {
"account_number": "1803",
"is_group": 0,
"root_type": "Asset",
"account_type": "Accumulated Depreciation"
},
"Accumulated Depreciation - Machinery & Equipment": {
"account_number": "1804",
"is_group": 0,
"root_type": "Asset",
"account_type": "Accumulated Depreciation"
}
}
},
"Other Assets": {
"account_number": "1003",
"is_group": 1,
"root_type": "Asset",
"Advances To Supplier": {
"account_number": "1900",
"is_group": 1,
"root_type": "Asset",
"Advances To Supplier": {
"account_number": "1901",
"is_group": 0,
"root_type": "Asset"
}
},
"Miscellaneous Deposits": {
"account_number": "1910",
"is_group": 1,
"root_type": "Asset",
"Miscellaneous Deposits": {
"account_number": "1911",
"is_group": 0,
"root_type": "Asset"
}
},
"Retirement Fund": {
"account_number": "1920",
"is_group": 1,
"root_type": "Asset",
"Retirement Fund": {
"account_number": "1921",
"is_group": 0,
"root_type": "Asset"
}
},
"Investment": {
"account_number": "1930",
"is_group": 1,
"root_type": "Asset",
"Investment": {
"account_number": "1931",
"is_group": 0,
"root_type": "Asset"
}
},
"System Development": {
"account_number": "1940",
"is_group": 1,
"root_type": "Asset",
"System Development": {
"account_number": "1941",
"is_group": 0,
"root_type": "Asset"
}
}
}
},
"Liability": {
"account_number": "2000",
"is_group": 1,
"root_type": "Liability",
"Current Liabilities": {
"account_number": "2001",
"is_group": 1,
"root_type": "Liability",
"Accounts Payable Trade": {
"account_number": "2100",
"is_group": 1,
"root_type": "Liability",
"Accounts Payable - Trade": {
"account_number": "2101",
"is_group": 0,
"root_type": "Liability",
"account_type": "Payable"
}
},
"Accounts Payable Others": {
"account_number": "2110",
"is_group": 1,
"root_type": "Liability",
"Accounts Payable - Payroll": {
"account_number": "2111",
"is_group": 0,
"root_type": "Liability"
}
},
"VAT Output Tax": {
"account_number": "2200",
"is_group": 1,
"root_type": "Liability",
"VAT Output Tax": {
"account_number": "2201",
"is_group": 0,
"root_type": "Liability",
"account_type": "Tax"
}
},
"Withholding Taxes Payable Wages": {
"account_number": "2210",
"is_group": 1,
"root_type": "Liability",
"Withholding Taxes Payable Wages": {
"account_number": "2211",
"is_group": 0,
"root_type": "Liability",
"account_type": "Tax"
}
},
"Withholding Taxes Payable Expanded": {
"account_number": "2220",
"is_group": 1,
"root_type": "Liability",
"Withholding Taxes Payable Expanded": {
"account_number": "2221",
"is_group": 0,
"root_type": "Liability",
"account_type": "Tax"
}
},
"Accruals And Other Current Payables": {
"account_number": "2300",
"is_group": 1,
"root_type": "Liability",
"Stock Received But Not Billed": {
"account_number": "2301",
"is_group": 0,
"root_type": "Liability",
"account_type": "Stock Received But Not Billed"
}
},
"Payable to Government and Other Institutions": {
"account_number": "2400",
"is_group": 1,
"root_type": "Liability",
"SSS Premium Payable": {
"account_number": "2401",
"is_group": 0,
"root_type": "Liability"
},
"SSS Salary Loan Payable": {
"account_number": "2402",
"is_group": 0,
"root_type": "Liability"
},
"PhilHealth Premium": {
"account_number": "2403",
"is_group": 0,
"root_type": "Liability"
},
"Pag-ibig Loan Payable": {
"account_number": "2404",
"is_group": 0,
"root_type": "Liability"
},
"Coop Loans": {
"account_number": "2405",
"is_group": 0,
"root_type": "Liability"
},
"Coop Contributions": {
"account_number": "2406",
"is_group": 0,
"root_type": "Liability"
},
"Canteen": {
"account_number": "2407",
"is_group": 0,
"root_type": "Liability"
},
"AUB Loan Payable": {
"account_number": "2408",
"is_group": 0,
"root_type": "Liability"
},
"HSBC Loan Payable": {
"account_number": "2409",
"is_group": 0,
"root_type": "Liability"
}
},
"Customer Deposits": {
"account_number": "2500",
"is_group": 0,
"root_type": "Liability",
"account_type": "Payable"
}
},
"Non Current Liabilities": {
"account_number": "2002",
"is_group": 1,
"root_type": "Liability",
"Due To Associated Company": {
"account_number": "2600",
"is_group": 1,
"root_type": "Liability",
"Due To Associated Company": {
"account_number": "2601",
"is_group": 0,
"root_type": "Liability"
}
},
"Deferred Income": {
"account_number": "2700",
"is_group": 1,
"root_type": "Liability",
"Deferred Income": {
"account_number": "2701",
"is_group": 0,
"root_type": "Liability"
}
},
"Notes Payable": {
"account_number": "2800",
"is_group": 1,
"root_type": "Liability",
"Notes Payable": {
"account_number": "2801",
"is_group": 0,
"root_type": "Liability"
}
},
"Dividends Payable": {
"account_number": "2900",
"is_group": 0,
"root_type": "Liability"
}
}
},
"Equity": {
"account_number": "3000",
"is_group": 1,
"root_type": "Equity",
"STOCKHOLDER'S EQUITY": {
"account_number": "3001",
"is_group": 1,
"root_type": "Equity",
"Capital Stocks": {
"account_number": "3100",
"is_group": 1,
"root_type": "Equity",
"Capital Stocks": {
"account_number": "3101",
"is_group": 0,
"root_type": "Equity"
}
},
"Subscription Receivable": {
"account_number": "3200",
"is_group": 1,
"root_type": "Equity",
"Subscription Receivable": {
"account_number": "3201",
"is_group": 0,
"root_type": "Equity"
}
},
"Retained Earnings": {
"account_number": "3300",
"is_group": 1,
"root_type": "Equity",
"Retained Earnings": {
"account_number": "3301",
"is_group": 0,
"root_type": "Equity"
}
},
"Current Year (Profit/Loss)": {
"account_number": "3400",
"is_group": 0,
"root_type": "Equity"
},
"Drawings": {
"account_number": "3500",
"is_group": 1,
"root_type": "Equity",
"Drawings": {
"account_number": "3501",
"is_group": 0,
"root_type": "Equity"
}
}
}
},
"Income": {
"account_number": "4000",
"is_group": 1,
"root_type": "Income",
"Gross Sales": {
"account_number": "4100",
"is_group": 1,
"root_type": "Income",
"Sales": {
"account_number": "4101",
"is_group": 0,
"root_type": "Income"
}
},
"Sales Adjustment": {
"account_number": "4200",
"is_group": 1,
"root_type": "Income",
"Sales Return And Allowance": {
"account_number": "4201",
"is_group": 0,
"root_type": "Income"
}
},
"Sales Discount": {
"account_number": "4300",
"is_group": 1,
"root_type": "Income",
"Sales Discount": {
"account_number": "4301",
"is_group": 0,
"root_type": "Income"
}
},
"Other Income": {
"account_number": "6000",
"is_group": 1,
"root_type": "Income",
"Interest Income Bank": {
"account_number": "6010",
"is_group": 1,
"root_type": "Income",
"Interest Income Bank": {
"account_number": "6011",
"is_group": 0,
"root_type": "Income"
}
},
"Dividend Income": {
"account_number": "6020",
"is_group": 1,
"root_type": "Income",
"Dividend Income": {
"account_number": "6021",
"is_group": 0,
"root_type": "Income"
}
}
}
},
"Expense": {
"account_number": "5000",
"is_group": 1,
"root_type": "Expense",
"Operating Expenses": {
"account_number": "5100",
"is_group": 1,
"root_type": "Expense",
"Salaries, Wages": {
"account_number": "5101",
"is_group": 0,
"root_type": "Expense"
},
"13th Month Pay & Bonus": {
"account_number": "5102",
"is_group": 0,
"root_type": "Expense"
},
"Overtime & Night Diff": {
"account_number": "5103",
"is_group": 0,
"root_type": "Expense"
},
"Incentive/Performance Bonus": {
"account_number": "5104",
"is_group": 0,
"root_type": "Expense"
},
"Employees Benefits": {
"account_number": "5105",
"is_group": 0,
"root_type": "Expense"
},
"Advertising & Promotions": {
"account_number": "5106",
"is_group": 0,
"root_type": "Expense"
},
"Amortization of Leasehold Improvement": {
"account_number": "5107",
"is_group": 0,
"root_type": "Expense"
},
"Amortization of Pre-Operating": {
"account_number": "5108",
"is_group": 0,
"root_type": "Expense"
},
"Amortization of System Development": {
"account_number": "5109",
"is_group": 0,
"root_type": "Expense"
},
"Audit & Legal Fee": {
"account_number": "5110",
"is_group": 0,
"root_type": "Expense"
},
"Bad Debts Expenses": {
"account_number": "5111",
"is_group": 0,
"root_type": "Expense"
},
"Client Service & Maintenance": {
"account_number": "5112",
"is_group": 0,
"root_type": "Expense"
},
"Commission Expenses": {
"account_number": "5113",
"is_group": 0,
"root_type": "Expense"
},
"Communications": {
"account_number": "5114",
"is_group": 0,
"root_type": "Expense"
},
"Contractual Services": {
"account_number": "5115",
"is_group": 0,
"root_type": "Expense"
},
"Depreciation Expenses": {
"account_number": "5116",
"is_group": 0,
"root_type": "Expense",
"account_type": "Depreciation"
},
"Donation & Contribution": {
"account_number": "5117",
"is_group": 0,
"root_type": "Expense"
},
"Dues & Subscription": {
"account_number": "5118",
"is_group": 0,
"root_type": "Expense"
},
"Employee Med/Dental/Hosp Expenses": {
"account_number": "5119",
"is_group": 0,
"root_type": "Expense"
},
"Employee Uniforms": {
"account_number": "5120",
"is_group": 0,
"root_type": "Expense"
},
"Equipage": {
"account_number": "5121",
"is_group": 0,
"root_type": "Expense"
},
"Expenses for Reclassification": {
"account_number": "5122",
"is_group": 0,
"root_type": "Expense"
},
"Gas & Oil": {
"account_number": "5123",
"is_group": 0,
"root_type": "Expense"
},
"Insurance Expenses": {
"account_number": "5124",
"is_group": 0,
"root_type": "Expense"
},
"Light & Water": {
"account_number": "5125",
"is_group": 0,
"root_type": "Expense"
},
"Local/Overseas Travel": {
"account_number": "5126",
"is_group": 0,
"root_type": "Expense"
},
"Meals & Transportation Expenses": {
"account_number": "5127",
"is_group": 0,
"root_type": "Expense"
},
"Meeting & Conferences": {
"account_number": "5128",
"is_group": 0,
"root_type": "Expense"
},
"Miscellaneous Expenses": {
"account_number": "5129",
"is_group": 0,
"root_type": "Expense"
},
"Mockup Expenses": {
"account_number": "5130",
"is_group": 0,
"root_type": "Expense"
},
"Obsolescence Expenses": {
"account_number": "5131",
"is_group": 0,
"root_type": "Expense"
},
"Other Support Cost": {
"account_number": "5132",
"is_group": 0,
"root_type": "Expense"
},
"Pag-ibig Contribution": {
"account_number": "5133",
"is_group": 0,
"root_type": "Expense"
},
"Performance Bonds": {
"account_number": "5134",
"is_group": 0,
"root_type": "Expense"
},
"Pre Employment Expenses": {
"account_number": "5135",
"is_group": 0,
"root_type": "Expense"
},
"Professional Fees": {
"account_number": "5136",
"is_group": 0,
"root_type": "Expense"
},
"Recruitment & Employment": {
"account_number": "5137",
"is_group": 0,
"root_type": "Expense"
},
"Rent Expenses": {
"account_number": "5138",
"is_group": 0,
"root_type": "Expense"
},
"Rent Expenses Others": {
"account_number": "5139",
"is_group": 0,
"root_type": "Expense"
},
"Repairs & Maintenance": {
"account_number": "5140",
"is_group": 0,
"root_type": "Expense"
},
"Representation Expenses": {
"account_number": "5141",
"is_group": 0,
"root_type": "Expense"
},
"Research & Development": {
"account_number": "5142",
"is_group": 0,
"root_type": "Expense"
},
"Security Expenses": {
"account_number": "5143",
"is_group": 0,
"root_type": "Expense"
},
"Shared Services Fee": {
"account_number": "5144",
"is_group": 0,
"root_type": "Expense"
},
"SSS/Medicare/EC Contributions": {
"account_number": "5145",
"is_group": 0,
"root_type": "Expense"
},
"Stationery & Supplies": {
"account_number": "5146",
"is_group": 0,
"root_type": "Expense"
},
"Taxes & Licenses": {
"account_number": "5147",
"is_group": 0,
"root_type": "Expense",
"account_type": "Tax"
},
"Training & Seminar": {
"account_number": "5148",
"is_group": 0,
"root_type": "Expense"
}
},
"Stock Adjustment": {
"account_number": "5200",
"is_group": 0,
"root_type": "Expense",
"account_type": "Stock Adjustment"
},
"Round Off": {
"account_number": "5300",
"is_group": 0,
"root_type": "Expense",
"account_type": "Round Off"
},
"Expenses Included In Valuation": {
"account_number": "5400",
"is_group": 0,
"root_type": "Expense",
"account_type": "Expenses Included In Valuation"
}
}
}
}

View File

@@ -9,103 +9,192 @@ def get():
return {
_("Application of Funds (Assets)"): {
_("Current Assets"): {
_("Accounts Receivable"): {_("Debtors"): {"account_type": "Receivable"}},
_("Bank Accounts"): {"account_type": "Bank", "is_group": 1},
_("Cash In Hand"): {_("Cash"): {"account_type": "Cash"}, "account_type": "Cash"},
_("Accounts Receivable"): {
_("Debtors"): {"account_type": "Receivable", "account_category": "Trade Receivables"}
},
_("Bank Accounts"): {
"account_type": "Bank",
"is_group": 1,
"account_category": "Cash and Cash Equivalents",
},
_("Cash In Hand"): {
_("Cash"): {"account_type": "Cash", "account_category": "Cash and Cash Equivalents"},
"account_type": "Cash",
"account_category": "Cash and Cash Equivalents",
},
_("Loans and Advances (Assets)"): {
_("Employee Advances"): {"account_type": "Payable"},
_("Employee Advances"): {
"account_type": "Payable",
"account_category": "Other Receivables",
},
},
_("Securities and Deposits"): {_("Earnest Money"): {}},
_("Securities and Deposits"): {
_("Earnest Money"): {"account_category": "Other Current Assets"}
},
_("Prepaid Expenses"): {"account_category": "Other Current Assets"},
_("Short-term Investments"): {"account_category": "Short-term Investments"},
_("Stock Assets"): {
_("Stock In Hand"): {"account_type": "Stock"},
_("Stock In Hand"): {"account_type": "Stock", "account_category": "Stock Assets"},
"account_type": "Stock",
"account_category": "Stock Assets",
},
_("Tax Assets"): {"is_group": 1},
_("Tax Assets"): {"is_group": 1, "account_category": "Other Current Assets"},
},
_("Fixed Assets"): {
_("Capital Equipment"): {"account_type": "Fixed Asset"},
_("Electronic Equipment"): {"account_type": "Fixed Asset"},
_("Furniture and Fixtures"): {"account_type": "Fixed Asset"},
_("Office Equipment"): {"account_type": "Fixed Asset"},
_("Plants and Machineries"): {"account_type": "Fixed Asset"},
_("Buildings"): {"account_type": "Fixed Asset"},
_("Software"): {"account_type": "Fixed Asset"},
_("Accumulated Depreciation"): {"account_type": "Accumulated Depreciation"},
_("Capital Equipment"): {
"account_type": "Fixed Asset",
"account_category": "Tangible Assets",
},
_("Electronic Equipment"): {
"account_type": "Fixed Asset",
"account_category": "Tangible Assets",
},
_("Furniture and Fixtures"): {
"account_type": "Fixed Asset",
"account_category": "Tangible Assets",
},
_("Office Equipment"): {"account_type": "Fixed Asset", "account_category": "Tangible Assets"},
_("Plants and Machineries"): {
"account_type": "Fixed Asset",
"account_category": "Tangible Assets",
},
_("Buildings"): {"account_type": "Fixed Asset", "account_category": "Tangible Assets"},
_("Software"): {"account_type": "Fixed Asset", "account_category": "Intangible Assets"},
_("Accumulated Depreciation"): {
"account_type": "Accumulated Depreciation",
"account_category": "Tangible Assets",
},
_("CWIP Account"): {
"account_type": "Capital Work in Progress",
"account_category": "Tangible Assets",
},
},
_("Investments"): {"is_group": 1},
_("Temporary Accounts"): {_("Temporary Opening"): {"account_type": "Temporary"}},
_("Investments"): {"is_group": 1, "account_category": "Long-term Investments"},
_("Temporary Accounts"): {
_("Temporary Opening"): {
"account_type": "Temporary",
"account_category": "Other Non-current Assets",
}
},
"root_type": "Asset",
},
_("Expenses"): {
_("Direct Expenses"): {
_("Stock Expenses"): {
_("Cost of Goods Sold"): {"account_type": "Cost of Goods Sold"},
_("Expenses Included In Asset Valuation"): {
"account_type": "Expenses Included In Asset Valuation"
_("Cost of Goods Sold"): {
"account_type": "Cost of Goods Sold",
"account_category": "Cost of Goods Sold",
},
_("Expenses Included In Asset Valuation"): {
"account_type": "Expenses Included In Asset Valuation",
"account_category": "Other Direct Costs",
},
_("Expenses Included In Valuation"): {
"account_type": "Expenses Included In Valuation",
"account_category": "Other Direct Costs",
},
_("Stock Adjustment"): {
"account_type": "Stock Adjustment",
"account_category": "Other Direct Costs",
},
_("Expenses Included In Valuation"): {"account_type": "Expenses Included In Valuation"},
_("Stock Adjustment"): {"account_type": "Stock Adjustment"},
},
},
_("Indirect Expenses"): {
_("Administrative Expenses"): {},
_("Commission on Sales"): {},
_("Depreciation"): {"account_type": "Depreciation"},
_("Entertainment Expenses"): {},
_("Freight and Forwarding Charges"): {"account_type": "Chargeable"},
_("Legal Expenses"): {},
_("Marketing Expenses"): {"account_type": "Chargeable"},
_("Miscellaneous Expenses"): {"account_type": "Chargeable"},
_("Office Maintenance Expenses"): {},
_("Office Rent"): {},
_("Postal Expenses"): {},
_("Print and Stationery"): {},
_("Round Off"): {"account_type": "Round Off"},
_("Salary"): {},
_("Sales Expenses"): {},
_("Telephone Expenses"): {},
_("Travel Expenses"): {},
_("Utility Expenses"): {},
_("Write Off"): {},
_("Exchange Gain/Loss"): {},
_("Gain/Loss on Asset Disposal"): {},
_("Impairment"): {},
_("Administrative Expenses"): {"account_category": "Operating Expenses"},
_("Commission on Sales"): {"account_category": "Operating Expenses"},
_("Depreciation"): {"account_type": "Depreciation", "account_category": "Operating Expenses"},
_("Entertainment Expenses"): {"account_category": "Operating Expenses"},
_("Freight and Forwarding Charges"): {
"account_type": "Chargeable",
"account_category": "Operating Expenses",
},
_("Legal Expenses"): {"account_category": "Operating Expenses"},
_("Marketing Expenses"): {
"account_type": "Chargeable",
"account_category": "Operating Expenses",
},
_("Miscellaneous Expenses"): {
"account_type": "Chargeable",
"account_category": "Operating Expenses",
},
_("Office Maintenance Expenses"): {"account_category": "Operating Expenses"},
_("Office Rent"): {"account_category": "Operating Expenses"},
_("Postal Expenses"): {"account_category": "Operating Expenses"},
_("Print and Stationery"): {"account_category": "Operating Expenses"},
_("Round Off"): {"account_type": "Round Off", "account_category": "Operating Expenses"},
_("Salary"): {"account_category": "Operating Expenses"},
_("Sales Expenses"): {"account_category": "Operating Expenses"},
_("Telephone Expenses"): {"account_category": "Operating Expenses"},
_("Travel Expenses"): {"account_category": "Operating Expenses"},
_("Utility Expenses"): {"account_category": "Operating Expenses"},
_("Write Off"): {"account_category": "Operating Expenses"},
_("Exchange Gain/Loss"): {"account_category": "Operating Expenses"},
_("Interest Expense"): {"account_category": "Finance Costs"},
_("Bank Charges"): {"account_category": "Finance Costs"},
_("Gain/Loss on Asset Disposal"): {"account_category": "Other Operating Income"},
_("Impairment"): {"account_category": "Operating Expenses"},
_("Tax Expense"): {"account_category": "Tax Expense"},
},
"root_type": "Expense",
},
_("Income"): {
_("Direct Income"): {_("Sales"): {}, _("Service"): {}},
_("Indirect Income"): {"is_group": 1},
_("Direct Income"): {
_("Sales"): {"account_category": "Revenue from Operations"},
_("Service"): {"account_category": "Revenue from Operations"},
},
_("Indirect Income"): {
_("Interest Income"): {"account_category": "Investment Income"},
_("Interest on Fixed Deposits"): {"account_category": "Investment Income"},
"is_group": 1,
},
"root_type": "Income",
},
_("Source of Funds (Liabilities)"): {
_("Current Liabilities"): {
_("Accounts Payable"): {
_("Creditors"): {"account_type": "Payable"},
_("Payroll Payable"): {},
_("Creditors"): {"account_type": "Payable", "account_category": "Trade Payables"},
_("Payroll Payable"): {"account_category": "Other Payables"},
},
_("Accrued Expenses"): {"account_category": "Other Current Liabilities"},
_("Customer Advances"): {"account_category": "Other Current Liabilities"},
_("Stock Liabilities"): {
_("Stock Received But Not Billed"): {"account_type": "Stock Received But Not Billed"},
_("Asset Received But Not Billed"): {"account_type": "Asset Received But Not Billed"},
_("Stock Received But Not Billed"): {
"account_type": "Stock Received But Not Billed",
"account_category": "Trade Payables",
},
_("Asset Received But Not Billed"): {
"account_type": "Asset Received But Not Billed",
"account_category": "Trade Payables",
},
},
_("Duties and Taxes"): {"account_type": "Tax", "is_group": 1},
_("Duties and Taxes"): {
"account_type": "Tax",
"is_group": 1,
"account_category": "Current Tax Liabilities",
},
_("Short-term Provisions"): {"account_category": "Short-term Provisions"},
_("Loans (Liabilities)"): {
_("Secured Loans"): {},
_("Unsecured Loans"): {},
_("Bank Overdraft Account"): {},
_("Secured Loans"): {"account_category": "Long-term Borrowings"},
_("Unsecured Loans"): {"account_category": "Long-term Borrowings"},
_("Bank Overdraft Account"): {"account_category": "Short-term Borrowings"},
},
},
_("Non-Current Liabilities"): {
_("Long-term Provisions"): {"account_category": "Long-term Provisions"},
_("Employee Benefits Obligation"): {"account_category": "Other Non-current Liabilities"},
"is_group": 1,
},
"root_type": "Liability",
},
_("Equity"): {
_("Capital Stock"): {"account_type": "Equity"},
_("Dividends Paid"): {"account_type": "Equity"},
_("Opening Balance Equity"): {"account_type": "Equity"},
_("Retained Earnings"): {"account_type": "Equity"},
_("Revaluation Surplus"): {"account_type": "Equity"},
_("Capital Stock"): {"account_type": "Equity", "account_category": "Share Capital"},
_("Dividends Paid"): {"account_type": "Equity", "account_category": "Reserves and Surplus"},
_("Opening Balance Equity"): {
"account_type": "Equity",
"account_category": "Reserves and Surplus",
},
_("Retained Earnings"): {"account_type": "Equity", "account_category": "Reserves and Surplus"},
_("Revaluation Surplus"): {"account_type": "Equity", "account_category": "Reserves and Surplus"},
"root_type": "Equity",
},
}

View File

@@ -10,49 +10,128 @@ def get():
_("Application of Funds (Assets)"): {
_("Current Assets"): {
_("Accounts Receivable"): {
_("Debtors"): {"account_type": "Receivable", "account_number": "1310"},
_("Debtors"): {
"account_type": "Receivable",
"account_number": "1310",
"account_category": "Trade Receivables",
},
"account_number": "1300",
},
_("Bank Accounts"): {"account_type": "Bank", "is_group": 1, "account_number": "1200"},
_("Bank Accounts"): {
"account_type": "Bank",
"is_group": 1,
"account_number": "1200",
"account_category": "Cash and Cash Equivalents",
},
_("Cash In Hand"): {
_("Cash"): {"account_type": "Cash", "account_number": "1110"},
_("Cash"): {
"account_type": "Cash",
"account_number": "1110",
"account_category": "Cash and Cash Equivalents",
},
"account_type": "Cash",
"account_number": "1100",
"account_category": "Cash and Cash Equivalents",
},
_("Loans and Advances (Assets)"): {
_("Employee Advances"): {"account_number": "1610", "account_type": "Payable"},
_("Employee Advances"): {
"account_number": "1610",
"account_type": "Payable",
"account_category": "Other Receivables",
},
"account_number": "1600",
},
_("Securities and Deposits"): {
_("Earnest Money"): {"account_number": "1651"},
_("Earnest Money"): {
"account_number": "1651",
"account_category": "Other Current Assets",
},
"account_number": "1650",
},
_("Prepaid Expenses"): {
"account_number": "1660",
"account_category": "Other Current Assets",
},
_("Short-term Investments"): {
"account_number": "1670",
"account_category": "Short-term Investments",
},
_("Stock Assets"): {
_("Stock In Hand"): {"account_type": "Stock", "account_number": "1410"},
_("Stock In Hand"): {
"account_type": "Stock",
"account_number": "1410",
"account_category": "Stock Assets",
},
"account_type": "Stock",
"account_number": "1400",
"account_category": "Stock Assets",
},
_("Tax Assets"): {
"is_group": 1,
"account_number": "1500",
"account_category": "Other Current Assets",
},
_("Tax Assets"): {"is_group": 1, "account_number": "1500"},
"account_number": "1100-1600",
},
_("Fixed Assets"): {
_("Capital Equipment"): {"account_type": "Fixed Asset", "account_number": "1710"},
_("Electronic Equipment"): {"account_type": "Fixed Asset", "account_number": "1720"},
_("Furniture and Fixtures"): {"account_type": "Fixed Asset", "account_number": "1730"},
_("Office Equipment"): {"account_type": "Fixed Asset", "account_number": "1740"},
_("Plants and Machineries"): {"account_type": "Fixed Asset", "account_number": "1750"},
_("Buildings"): {"account_type": "Fixed Asset", "account_number": "1760"},
_("Software"): {"account_type": "Fixed Asset", "account_number": "1770"},
_("Capital Equipment"): {
"account_type": "Fixed Asset",
"account_number": "1710",
"account_category": "Tangible Assets",
},
_("Electronic Equipment"): {
"account_type": "Fixed Asset",
"account_number": "1720",
"account_category": "Tangible Assets",
},
_("Furniture and Fixtures"): {
"account_type": "Fixed Asset",
"account_number": "1730",
"account_category": "Tangible Assets",
},
_("Office Equipment"): {
"account_type": "Fixed Asset",
"account_number": "1740",
"account_category": "Tangible Assets",
},
_("Plants and Machineries"): {
"account_type": "Fixed Asset",
"account_number": "1750",
"account_category": "Tangible Assets",
},
_("Buildings"): {
"account_type": "Fixed Asset",
"account_number": "1760",
"account_category": "Tangible Assets",
},
_("Software"): {
"account_type": "Fixed Asset",
"account_number": "1770",
"account_category": "Intangible Assets",
},
_("Accumulated Depreciation"): {
"account_type": "Accumulated Depreciation",
"account_number": "1780",
"account_category": "Tangible Assets",
},
_("CWIP Account"): {
"account_type": "Capital Work in Progress",
"account_number": "1790",
"account_category": "Tangible Assets",
},
_("CWIP Account"): {"account_type": "Capital Work in Progress", "account_number": "1790"},
"account_number": "1700",
},
_("Investments"): {"is_group": 1, "account_number": "1800"},
_("Investments"): {
"is_group": 1,
"account_number": "1800",
"account_category": "Long-term Investments",
},
_("Temporary Accounts"): {
_("Temporary Opening"): {"account_type": "Temporary", "account_number": "1910"},
_("Temporary Opening"): {
"account_type": "Temporary",
"account_number": "1910",
"account_category": "Other Non-current Assets",
},
"account_number": "1900",
},
"root_type": "Asset",
@@ -61,42 +140,94 @@ def get():
_("Expenses"): {
_("Direct Expenses"): {
_("Stock Expenses"): {
_("Cost of Goods Sold"): {"account_type": "Cost of Goods Sold", "account_number": "5111"},
_("Cost of Goods Sold"): {
"account_type": "Cost of Goods Sold",
"account_number": "5111",
"account_category": "Cost of Goods Sold",
},
_("Expenses Included In Asset Valuation"): {
"account_type": "Expenses Included In Asset Valuation",
"account_number": "5112",
"account_category": "Other Direct Costs",
},
_("Expenses Included In Valuation"): {
"account_type": "Expenses Included In Valuation",
"account_number": "5118",
"account_category": "Other Direct Costs",
},
_("Stock Adjustment"): {
"account_type": "Stock Adjustment",
"account_number": "5119",
"account_category": "Other Direct Costs",
},
_("Stock Adjustment"): {"account_type": "Stock Adjustment", "account_number": "5119"},
"account_number": "5110",
},
"account_number": "5100",
},
_("Indirect Expenses"): {
_("Administrative Expenses"): {"account_number": "5201"},
_("Commission on Sales"): {"account_number": "5202"},
_("Depreciation"): {"account_type": "Depreciation", "account_number": "5203"},
_("Entertainment Expenses"): {"account_number": "5204"},
_("Freight and Forwarding Charges"): {"account_type": "Chargeable", "account_number": "5205"},
_("Legal Expenses"): {"account_number": "5206"},
_("Marketing Expenses"): {"account_type": "Chargeable", "account_number": "5207"},
_("Office Maintenance Expenses"): {"account_number": "5208"},
_("Office Rent"): {"account_number": "5209"},
_("Postal Expenses"): {"account_number": "5210"},
_("Print and Stationery"): {"account_number": "5211"},
_("Round Off"): {"account_type": "Round Off", "account_number": "5212"},
_("Salary"): {"account_number": "5213"},
_("Sales Expenses"): {"account_number": "5214"},
_("Telephone Expenses"): {"account_number": "5215"},
_("Travel Expenses"): {"account_number": "5216"},
_("Utility Expenses"): {"account_number": "5217"},
_("Write Off"): {"account_number": "5218"},
_("Exchange Gain/Loss"): {"account_number": "5219"},
_("Gain/Loss on Asset Disposal"): {"account_number": "5220"},
_("Miscellaneous Expenses"): {"account_type": "Chargeable", "account_number": "5221"},
_("Administrative Expenses"): {
"account_number": "5201",
"account_category": "Operating Expenses",
},
_("Commission on Sales"): {
"account_number": "5202",
"account_category": "Operating Expenses",
},
_("Depreciation"): {
"account_type": "Depreciation",
"account_number": "5203",
"account_category": "Operating Expenses",
},
_("Entertainment Expenses"): {
"account_number": "5204",
"account_category": "Operating Expenses",
},
_("Freight and Forwarding Charges"): {
"account_type": "Chargeable",
"account_number": "5205",
"account_category": "Operating Expenses",
},
_("Legal Expenses"): {"account_number": "5206", "account_category": "Operating Expenses"},
_("Marketing Expenses"): {
"account_type": "Chargeable",
"account_number": "5207",
"account_category": "Operating Expenses",
},
_("Office Maintenance Expenses"): {
"account_number": "5208",
"account_category": "Operating Expenses",
},
_("Office Rent"): {"account_number": "5209", "account_category": "Operating Expenses"},
_("Postal Expenses"): {"account_number": "5210", "account_category": "Operating Expenses"},
_("Print and Stationery"): {
"account_number": "5211",
"account_category": "Operating Expenses",
},
_("Round Off"): {
"account_type": "Round Off",
"account_number": "5212",
"account_category": "Operating Expenses",
},
_("Salary"): {"account_number": "5213", "account_category": "Operating Expenses"},
_("Sales Expenses"): {"account_number": "5214", "account_category": "Operating Expenses"},
_("Telephone Expenses"): {"account_number": "5215", "account_category": "Operating Expenses"},
_("Travel Expenses"): {"account_number": "5216", "account_category": "Operating Expenses"},
_("Utility Expenses"): {"account_number": "5217", "account_category": "Operating Expenses"},
_("Write Off"): {"account_number": "5218", "account_category": "Operating Expenses"},
_("Exchange Gain/Loss"): {"account_number": "5219", "account_category": "Operating Expenses"},
_("Interest Expense"): {"account_number": "5220", "account_category": "Finance Costs"},
_("Bank Charges"): {"account_number": "5221", "account_category": "Finance Costs"},
_("Gain/Loss on Asset Disposal"): {
"account_number": "5222",
"account_category": "Other Operating Income",
},
_("Miscellaneous Expenses"): {
"account_type": "Chargeable",
"account_number": "5223",
"account_category": "Operating Expenses",
},
_("Impairment"): {"account_number": "5224", "account_category": "Operating Expenses"},
_("Tax Expense"): {"account_number": "5225", "account_category": "Tax Expense"},
"account_number": "5200",
},
"root_type": "Expense",
@@ -104,54 +235,126 @@ def get():
},
_("Income"): {
_("Direct Income"): {
_("Sales"): {"account_number": "4110"},
_("Service"): {"account_number": "4120"},
_("Sales"): {"account_number": "4110", "account_category": "Revenue from Operations"},
_("Service"): {"account_number": "4120", "account_category": "Revenue from Operations"},
"account_number": "4100",
},
_("Indirect Income"): {"is_group": 1, "account_number": "4200"},
_("Indirect Income"): {
_("Interest Income"): {"account_number": "4210", "account_category": "Investment Income"},
_("Interest on Fixed Deposits"): {
"account_number": "4220",
"account_category": "Investment Income",
},
"is_group": 1,
"account_number": "4200",
},
"root_type": "Income",
"account_number": "4000",
},
_("Source of Funds (Liabilities)"): {
_("Current Liabilities"): {
_("Accounts Payable"): {
_("Creditors"): {"account_type": "Payable", "account_number": "2110"},
_("Payroll Payable"): {"account_number": "2120"},
_("Creditors"): {
"account_type": "Payable",
"account_number": "2110",
"account_category": "Trade Payables",
},
_("Payroll Payable"): {"account_number": "2120", "account_category": "Other Payables"},
"account_number": "2100",
},
_("Accrued Expenses"): {
"account_number": "2150",
"account_category": "Other Current Liabilities",
},
_("Customer Advances"): {
"account_number": "2160",
"account_category": "Other Current Liabilities",
},
_("Stock Liabilities"): {
_("Stock Received But Not Billed"): {
"account_type": "Stock Received But Not Billed",
"account_number": "2210",
"account_category": "Trade Payables",
},
_("Asset Received But Not Billed"): {
"account_type": "Asset Received But Not Billed",
"account_number": "2211",
"account_category": "Trade Payables",
},
"account_number": "2200",
},
_("Duties and Taxes"): {
_("TDS Payable"): {"account_number": "2310"},
_("TDS Payable"): {
"account_number": "2310",
"account_category": "Current Tax Liabilities",
},
"account_type": "Tax",
"is_group": 1,
"account_number": "2300",
"account_category": "Current Tax Liabilities",
},
_("Short-term Provisions"): {
"account_number": "2350",
"account_category": "Short-term Provisions",
},
_("Loans (Liabilities)"): {
_("Secured Loans"): {"account_number": "2410"},
_("Unsecured Loans"): {"account_number": "2420"},
_("Bank Overdraft Account"): {"account_number": "2430"},
_("Secured Loans"): {
"account_number": "2410",
"account_category": "Long-term Borrowings",
},
_("Unsecured Loans"): {
"account_number": "2420",
"account_category": "Long-term Borrowings",
},
_("Bank Overdraft Account"): {
"account_number": "2430",
"account_category": "Short-term Borrowings",
},
"account_number": "2400",
},
"account_number": "2100-2400",
},
_("Non-Current Liabilities"): {
_("Long-term Provisions"): {
"account_number": "2510",
"account_category": "Long-term Provisions",
},
_("Employee Benefits Obligation"): {
"account_number": "2520",
"account_category": "Other Non-current Liabilities",
},
"is_group": 1,
"account_number": "2500",
},
"root_type": "Liability",
"account_number": "2000",
},
_("Equity"): {
_("Capital Stock"): {"account_type": "Equity", "account_number": "3100"},
_("Dividends Paid"): {"account_type": "Equity", "account_number": "3200"},
_("Opening Balance Equity"): {"account_type": "Equity", "account_number": "3300"},
_("Retained Earnings"): {"account_type": "Equity", "account_number": "3400"},
_("Capital Stock"): {
"account_type": "Equity",
"account_number": "3100",
"account_category": "Share Capital",
},
_("Dividends Paid"): {
"account_type": "Equity",
"account_number": "3200",
"account_category": "Reserves and Surplus",
},
_("Opening Balance Equity"): {
"account_type": "Equity",
"account_number": "3300",
"account_category": "Reserves and Surplus",
},
_("Retained Earnings"): {
"account_type": "Equity",
"account_number": "3400",
"account_category": "Reserves and Surplus",
},
_("Revaluation Surplus"): {
"account_type": "Equity",
"account_number": "3500",
"account_category": "Reserves and Surplus",
},
"root_type": "Equity",
"account_number": "3000",
},

View File

@@ -3,7 +3,6 @@
import unittest
import frappe
from frappe.tests import IntegrationTestCase
from frappe.utils import nowdate
from erpnext.accounts.doctype.account.account import (
@@ -12,11 +11,10 @@ from erpnext.accounts.doctype.account.account import (
update_account_number,
)
from erpnext.stock import get_company_default_inventory_account, get_warehouse_account
EXTRA_TEST_RECORD_DEPENDENCIES = ["Company"]
from erpnext.tests.utils import ERPNextTestSuite
class TestAccount(IntegrationTestCase):
class TestAccount(ERPNextTestSuite):
def test_rename_account(self):
if not frappe.db.exists("Account", "1210 - Debtors - _TC"):
acc = frappe.new_doc("Account")
@@ -323,72 +321,6 @@ class TestAccount(IntegrationTestCase):
self.assertEqual(balance, 0)
def _make_test_records(verbose=None):
from frappe.tests.utils import make_test_objects
accounts = [
# [account_name, parent_account, is_group]
["_Test Bank", "Bank Accounts", 0, "Bank", None],
["_Test Bank USD", "Bank Accounts", 0, "Bank", "USD"],
["_Test Bank EUR", "Bank Accounts", 0, "Bank", "EUR"],
["_Test Cash", "Cash In Hand", 0, "Cash", None],
["_Test Account Stock Expenses", "Direct Expenses", 1, None, None],
["_Test Account Shipping Charges", "_Test Account Stock Expenses", 0, "Chargeable", None],
["_Test Account Customs Duty", "_Test Account Stock Expenses", 0, "Tax", None],
["_Test Account Insurance Charges", "_Test Account Stock Expenses", 0, "Chargeable", None],
["_Test Account Stock Adjustment", "_Test Account Stock Expenses", 0, "Stock Adjustment", None],
["_Test Employee Advance", "Current Liabilities", 0, None, None],
["_Test Account Tax Assets", "Current Assets", 1, None, None],
["_Test Account VAT", "_Test Account Tax Assets", 0, "Tax", None],
["_Test Account Service Tax", "_Test Account Tax Assets", 0, "Tax", None],
["_Test Account Reserves and Surplus", "Current Liabilities", 0, None, None],
["_Test Account Cost for Goods Sold", "Expenses", 0, None, None],
["_Test Account Excise Duty", "_Test Account Tax Assets", 0, "Tax", None],
["_Test Account Education Cess", "_Test Account Tax Assets", 0, "Tax", None],
["_Test Account S&H Education Cess", "_Test Account Tax Assets", 0, "Tax", None],
["_Test Account CST", "Direct Expenses", 0, "Tax", None],
["_Test Account Discount", "Direct Expenses", 0, None, None],
["_Test Write Off", "Indirect Expenses", 0, None, None],
["_Test Exchange Gain/Loss", "Indirect Expenses", 0, None, None],
["_Test Account Sales", "Direct Income", 0, None, None],
# related to Account Inventory Integration
["_Test Account Stock In Hand", "Current Assets", 0, None, None],
# fixed asset depreciation
["_Test Fixed Asset", "Current Assets", 0, "Fixed Asset", None],
["_Test Accumulated Depreciations", "Current Assets", 0, "Accumulated Depreciation", None],
["_Test Depreciations", "Expenses", 0, "Depreciation", None],
["_Test Gain/Loss on Asset Disposal", "Expenses", 0, None, None],
# Receivable / Payable Account
["_Test Receivable", "Current Assets", 0, "Receivable", None],
["_Test Payable", "Current Liabilities", 0, "Payable", None],
["_Test Receivable USD", "Current Assets", 0, "Receivable", "USD"],
["_Test Payable USD", "Current Liabilities", 0, "Payable", "USD"],
]
for company, abbr in [
["_Test Company", "_TC"],
["_Test Company 1", "_TC1"],
["_Test Company with perpetual inventory", "TCP1"],
]:
test_objects = make_test_objects(
"Account",
[
{
"doctype": "Account",
"account_name": account_name,
"parent_account": parent_account + " - " + abbr,
"company": company,
"is_group": is_group,
"account_type": account_type,
"account_currency": currency,
}
for account_name, parent_account, is_group, account_type, currency in accounts
],
)
return test_objects
def get_inventory_account(company, warehouse=None):
account = None
if warehouse:
@@ -415,15 +347,13 @@ def create_account(**kwargs):
return account.name
else:
account = frappe.get_doc(
dict(
doctype="Account",
is_group=kwargs.get("is_group", 0),
account_name=kwargs.get("account_name"),
account_type=kwargs.get("account_type"),
parent_account=kwargs.get("parent_account"),
company=kwargs.get("company"),
account_currency=kwargs.get("account_currency"),
)
doctype="Account",
is_group=kwargs.get("is_group", 0),
account_name=kwargs.get("account_name"),
account_type=kwargs.get("account_type"),
parent_account=kwargs.get("parent_account"),
company=kwargs.get("company"),
account_currency=kwargs.get("account_currency"),
)
account.save()

View File

@@ -1,6 +0,0 @@
[
{
"doctype": "Account",
"name": "_Test Account 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("Account Category", {
// refresh(frm) {
// },
// });

View File

@@ -0,0 +1,91 @@
{
"actions": [],
"allow_rename": 1,
"autoname": "field:account_category_name",
"creation": "2025-08-02 06:22:31.835063",
"doctype": "DocType",
"engine": "InnoDB",
"field_order": [
"account_category_name",
"root_type",
"column_break_qluu",
"description"
],
"fields": [
{
"fieldname": "account_category_name",
"fieldtype": "Data",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Account Category Name",
"reqd": 1,
"unique": 1
},
{
"fieldname": "description",
"fieldtype": "Small Text",
"label": "Description"
},
{
"fieldname": "column_break_qluu",
"fieldtype": "Column Break"
},
{
"fieldname": "root_type",
"fieldtype": "Select",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Root Type",
"options": "\nAsset\nLiability\nIncome\nExpense\nEquity"
}
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"links": [
{
"link_doctype": "Account",
"link_fieldname": "account_category"
}
],
"modified": "2026-03-05 06:49:34.430723",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Account Category",
"naming_rule": "By fieldname",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Accounts User",
"share": 1,
"write": 1
},
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Accounts Manager",
"share": 1,
"write": 1
},
{
"read": 1,
"role": "Auditor"
}
],
"row_format": "Dynamic",
"search_fields": "account_category_name, root_type",
"sort_field": "creation",
"sort_order": "DESC",
"states": []
}

View File

@@ -0,0 +1,95 @@
# Copyright (c) 2025, Frappe Technologies Pvt. Ltd. and contributors
# For license information, please see license.txt
import json
import os
import frappe
from frappe import _
from frappe.model.document import Document, bulk_insert
DOCTYPE = "Account Category"
class AccountCategory(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
account_category_name: DF.Data
description: DF.SmallText | None
root_type: DF.Literal["", "Asset", "Liability", "Income", "Expense", "Equity"]
# end: auto-generated types
def after_rename(self, old_name, new_name, merge):
from erpnext.accounts.doctype.financial_report_template.financial_report_engine import (
FormulaFieldUpdater,
)
# get all template rows with this account category being used
row = frappe.qb.DocType("Financial Report Row")
rows = frappe._dict(
frappe.qb.from_(row)
.select(row.name, row.calculation_formula)
.where(row.calculation_formula.like(f"%{old_name}%"))
.run()
)
if not rows:
return
# Update formulas with new name
updater = FormulaFieldUpdater(
field_name="account_category",
value_mapping={old_name: new_name},
exclude_operators=["like", "not like"],
)
updated_formulas = updater.update_in_rows(rows)
if updated_formulas:
frappe.msgprint(
_("Updated {0} Financial Report Row(s) with new category name").format(len(updated_formulas))
)
def import_account_categories(template_path: str):
categories_file = os.path.join(template_path, "account_categories.json")
if not os.path.exists(categories_file):
return
with open(categories_file) as f:
categories = json.load(f, object_hook=frappe._dict)
create_account_categories(categories)
def create_account_categories(categories: list[dict]):
if not categories:
return
existing_categories = set(frappe.get_all(DOCTYPE, pluck="name"))
new_categories = []
for category_data in categories:
category_name = category_data.get("account_category_name")
if not category_name or category_name in existing_categories:
continue
doc = frappe.get_doc(
{
**category_data,
"doctype": DOCTYPE,
"name": category_name,
}
)
new_categories.append(doc)
existing_categories.add(category_name)
if new_categories:
bulk_insert(DOCTYPE, new_categories)

View File

@@ -0,0 +1,4 @@
# Copyright (c) 2025, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt
# import frappe

View File

@@ -2,8 +2,9 @@
# See license.txt
# import frappe
from frappe.tests import IntegrationTestCase
from erpnext.tests.utils import ERPNextTestSuite
class TestAccountClosingBalance(IntegrationTestCase):
class TestAccountClosingBalance(ERPNextTestSuite):
pass

View File

@@ -82,7 +82,7 @@ class AccountingDimension(Document):
else:
frappe.throw(_("Company {0} is added more than once").format(frappe.bold(default.company)))
def after_insert(self):
def on_update(self):
if frappe.in_test:
make_dimension_in_accounting_doctypes(doc=self)
else:
@@ -103,10 +103,6 @@ class AccountingDimension(Document):
if not self.fieldname:
self.fieldname = scrub(self.label)
def on_update(self):
frappe.flags.accounting_dimensions = None
frappe.flags.accounting_dimensions_details = None
def make_dimension_in_accounting_doctypes(doc, doclist=None):
if not doclist:
@@ -241,34 +237,26 @@ def get_doctypes_with_dimensions():
return frappe.get_hooks("accounting_dimension_doctypes")
def get_accounting_dimensions(as_list=True, filters=None):
if not filters:
filters = {"disabled": 0}
if frappe.flags.accounting_dimensions is None:
frappe.flags.accounting_dimensions = frappe.get_all(
"Accounting Dimension",
fields=["label", "fieldname", "disabled", "document_type"],
filters=filters,
)
def get_accounting_dimensions(as_list=True):
accounting_dimensions = frappe.get_all(
"Accounting Dimension",
fields=["label", "fieldname", "disabled", "document_type"],
filters={"disabled": 0},
)
if as_list:
return [d.fieldname for d in frappe.flags.accounting_dimensions]
return [d.fieldname for d in accounting_dimensions]
else:
return frappe.flags.accounting_dimensions
return accounting_dimensions
def get_checks_for_pl_and_bs_accounts():
if frappe.flags.accounting_dimensions_details is None:
# nosemgrep
frappe.flags.accounting_dimensions_details = frappe.db.sql(
"""SELECT p.label, p.disabled, p.fieldname, c.default_dimension, c.company, c.mandatory_for_pl, c.mandatory_for_bs
return frappe.db.sql(
"""SELECT p.label, p.disabled, p.fieldname, c.default_dimension, c.company, c.mandatory_for_pl, c.mandatory_for_bs
FROM `tabAccounting Dimension`p ,`tabAccounting Dimension Detail` c
WHERE p.name = c.parent AND p.disabled = 0""",
as_dict=1,
)
return frappe.flags.accounting_dimensions_details
as_dict=1,
)
def get_dimension_with_children(doctype, dimensions):
@@ -309,8 +297,8 @@ def get_dimensions(with_cost_center_and_project=False):
if with_cost_center_and_project:
dimension_filters.extend(
[
{"fieldname": "cost_center", "document_type": "Cost Center"},
{"fieldname": "project", "document_type": "Project"},
frappe._dict({"fieldname": "cost_center", "document_type": "Cost Center"}),
frappe._dict({"fieldname": "project", "document_type": "Project"}),
]
)

View File

@@ -3,18 +3,13 @@
import unittest
import frappe
from frappe.tests import IntegrationTestCase
from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journal_entry
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
EXTRA_TEST_RECORD_DEPENDENCIES = ["Cost Center", "Location", "Warehouse", "Department"]
from erpnext.tests.utils import ERPNextTestSuite
class TestAccountingDimension(IntegrationTestCase):
def setUp(self):
create_dimension()
class TestAccountingDimension(ERPNextTestSuite):
def test_dimension_against_sales_invoice(self):
si = create_sales_invoice(do_not_save=1)
@@ -79,68 +74,3 @@ class TestAccountingDimension(IntegrationTestCase):
si.save()
self.assertRaises(frappe.ValidationError, si.submit)
def tearDown(self):
disable_dimension()
frappe.flags.accounting_dimensions_details = None
frappe.flags.dimension_filter_map = None
def create_dimension():
frappe.set_user("Administrator")
if not frappe.db.exists("Accounting Dimension", {"document_type": "Department"}):
dimension = frappe.get_doc(
{
"doctype": "Accounting Dimension",
"document_type": "Department",
}
)
dimension.append(
"dimension_defaults",
{
"company": "_Test Company",
"reference_document": "Department",
"default_dimension": "_Test Department - _TC",
},
)
dimension.insert()
dimension.save()
else:
dimension = frappe.get_doc("Accounting Dimension", "Department")
dimension.disabled = 0
dimension.save()
if not frappe.db.exists("Accounting Dimension", {"document_type": "Location"}):
dimension1 = frappe.get_doc(
{
"doctype": "Accounting Dimension",
"document_type": "Location",
}
)
dimension1.append(
"dimension_defaults",
{
"company": "_Test Company",
"reference_document": "Location",
"default_dimension": "Block 1",
},
)
dimension1.insert()
dimension1.save()
else:
dimension1 = frappe.get_doc("Accounting Dimension", "Location")
dimension1.disabled = 0
dimension1.save()
def disable_dimension():
dimension1 = frappe.get_doc("Accounting Dimension", "Department")
dimension1.disabled = 1
dimension1.save()
dimension2 = frappe.get_doc("Accounting Dimension", "Location")
dimension2.disabled = 1
dimension2.save()

View File

@@ -69,37 +69,34 @@ class AccountingDimensionFilter(Document):
def get_dimension_filter_map():
if not frappe.flags.get("dimension_filter_map"):
filters = frappe.db.sql(
"""
SELECT
a.applicable_on_account, d.dimension_value, p.accounting_dimension,
p.allow_or_restrict, p.fieldname, a.is_mandatory
FROM
`tabApplicable On Account` a,
`tabAccounting Dimension Filter` p
LEFT JOIN `tabAllowed Dimension` d ON d.parent = p.name
WHERE
p.name = a.parent
AND p.disabled = 0
""",
as_dict=1,
filters = frappe.db.sql(
"""
SELECT
a.applicable_on_account, d.dimension_value, p.accounting_dimension,
p.allow_or_restrict, p.fieldname, a.is_mandatory
FROM
`tabApplicable On Account` a,
`tabAccounting Dimension Filter` p
LEFT JOIN `tabAllowed Dimension` d ON d.parent = p.name
WHERE
p.name = a.parent
AND p.disabled = 0
""",
as_dict=1,
)
dimension_filter_map = {}
for f in filters:
build_map(
dimension_filter_map,
f.fieldname,
f.applicable_on_account,
f.dimension_value,
f.allow_or_restrict,
f.is_mandatory,
)
dimension_filter_map = {}
for f in filters:
build_map(
dimension_filter_map,
f.fieldname,
f.applicable_on_account,
f.dimension_value,
f.allow_or_restrict,
f.is_mandatory,
)
frappe.flags.dimension_filter_map = dimension_filter_map
return frappe.flags.dimension_filter_map
return dimension_filter_map
def build_map(map_object, dimension, account, filter_value, allow_or_restrict, is_mandatory):

View File

@@ -5,19 +5,13 @@ import unittest
import frappe
from erpnext.accounts.doctype.accounting_dimension.test_accounting_dimension import (
create_dimension,
disable_dimension,
)
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
from erpnext.exceptions import InvalidAccountDimensionError, MandatoryAccountDimensionError
EXTRA_TEST_RECORD_DEPENDENCIES = ["Location", "Cost Center", "Department"]
from erpnext.tests.utils import ERPNextTestSuite
class TestAccountingDimensionFilter(unittest.TestCase):
class TestAccountingDimensionFilter(ERPNextTestSuite):
def setUp(self):
create_dimension()
create_accounting_dimension_filter()
self.invoice_list = []
@@ -44,17 +38,6 @@ class TestAccountingDimensionFilter(unittest.TestCase):
self.assertRaises(MandatoryAccountDimensionError, si.submit)
self.invoice_list.append(si)
def tearDown(self):
disable_dimension_filter()
disable_dimension()
frappe.flags.accounting_dimensions_details = None
frappe.flags.dimension_filter_map = None
for si in self.invoice_list:
si.load_from_db()
if si.docstatus == 1:
si.cancel()
def create_accounting_dimension_filter():
if not frappe.db.get_value("Accounting Dimension Filter", {"accounting_dimension": "Cost Center"}):

View File

@@ -12,6 +12,7 @@
"column_break_4",
"company",
"disabled",
"exempted_role",
"section_break_7",
"closed_documents"
],
@@ -19,7 +20,6 @@
{
"fieldname": "period_name",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Period Name",
"reqd": 1,
"unique": 1
@@ -67,10 +67,18 @@
"label": "Closed Documents",
"options": "Closed Document",
"reqd": 1
},
{
"description": "Role allowed to bypass period restrictions.",
"fieldname": "exempted_role",
"fieldtype": "Link",
"label": "Exempted Role",
"link_filters": "[[\"Role\",\"disabled\",\"=\",0]]",
"options": "Role"
}
],
"links": [],
"modified": "2025-10-06 15:00:15.568067",
"modified": "2026-03-09 17:15:33.577217",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Accounting Period",

View File

@@ -30,6 +30,7 @@ class AccountingPeriod(Document):
company: DF.Link
disabled: DF.Check
end_date: DF.Date
exempted_role: DF.Link | None
period_name: DF.Data
start_date: DF.Date
# end: auto-generated types
@@ -96,7 +97,7 @@ def validate_accounting_period_on_doc_save(doc, method=None):
if doc.doctype == "Bank Clearance":
return
elif doc.doctype == "Asset":
if doc.is_existing_asset:
if doc.asset_type == "Existing Asset":
return
else:
date = doc.available_for_use_date
@@ -113,7 +114,7 @@ def validate_accounting_period_on_doc_save(doc, method=None):
accounting_period = (
frappe.qb.from_(ap)
.from_(cd)
.select(ap.name)
.select(ap.name, ap.exempted_role)
.where(
(ap.name == cd.parent)
& (ap.company == doc.company)
@@ -126,6 +127,11 @@ def validate_accounting_period_on_doc_save(doc, method=None):
).run(as_dict=1)
if accounting_period:
if (
accounting_period[0].get("exempted_role")
and accounting_period[0].get("exempted_role") in frappe.get_roles()
):
return
frappe.throw(
_("You cannot create a {0} within the closed Accounting Period {1}").format(
doc.doctype, frappe.bold(accounting_period[0]["name"])

View File

@@ -3,7 +3,6 @@
import unittest
import frappe
from frappe.tests import IntegrationTestCase
from frappe.utils import add_months, nowdate
from erpnext.accounts.doctype.accounting_period.accounting_period import (
@@ -11,11 +10,10 @@ from erpnext.accounts.doctype.accounting_period.accounting_period import (
OverlapError,
)
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
EXTRA_TEST_RECORD_DEPENDENCIES = ["Item"]
from erpnext.tests.utils import ERPNextTestSuite
class TestAccountingPeriod(IntegrationTestCase):
class TestAccountingPeriod(ERPNextTestSuite):
def test_overlap(self):
ap1 = create_accounting_period(
start_date="2018-04-01", end_date="2018-06-30", company="Wind Power LLC"
@@ -37,9 +35,58 @@ class TestAccountingPeriod(IntegrationTestCase):
doc = create_sales_invoice(do_not_save=1, cost_center="_Test Company - _TC", warehouse="Stores - _TC")
self.assertRaises(ClosedAccountingPeriod, doc.save)
def tearDown(self):
for d in frappe.get_all("Accounting Period"):
frappe.delete_doc("Accounting Period", d.name)
def test_accounting_period_exempted_role(self):
# Create Accounting Period with exempted role
ap = create_accounting_period(
period_name="Test Accounting Period Exempted",
exempted_role="Accounts Manager",
start_date="2025-12-01",
end_date="2025-12-31",
)
ap.save()
# Create users
users = frappe.get_all("User", filters={"email": ["like", "test%"]}, limit=1)
user = None
if users[0].name:
user = frappe.get_doc("User", users[0].name)
else:
user = frappe.get_doc(
{
"doctype": "User",
"email": "test1@example.com",
"first_name": "Test1",
}
)
user.insert()
user.roles = []
user.append("roles", {"role": "Accounts User"})
# ---- Non-exempted user should FAIL ----
user.save(ignore_permissions=True)
frappe.clear_cache(user=user.name)
frappe.set_user(user.name)
posting_date = "2025-12-11"
doc = create_sales_invoice(
do_not_save=1,
posting_date=posting_date,
)
with self.assertRaises(frappe.ValidationError):
doc.submit()
# ---- Exempted role should PASS ----
user.append("roles", {"role": "Accounts Manager"})
user.save(ignore_permissions=True)
frappe.clear_cache(user=user.name)
doc = create_sales_invoice(do_not_save=1, posting_date=posting_date)
doc.submit() # Should not raise
self.assertEqual(doc.docstatus, 1)
def create_accounting_period(**args):
@@ -51,5 +98,6 @@ def create_accounting_period(**args):
accounting_period.company = args.company or "_Test Company"
accounting_period.period_name = args.period_name or "_Test_Period_Name_1"
accounting_period.append("closed_documents", {"document_type": "Sales Invoice", "closed": 1})
accounting_period.exempted_role = args.exempted_role or ""
return accounting_period

View File

@@ -2,7 +2,15 @@
// For license information, please see license.txt
frappe.ui.form.on("Accounts Settings", {
refresh: function (frm) {},
refresh: function (frm) {
frm.set_query("document_type", "repost_allowed_types", function (doc, cdt, cdn) {
return {
filters: {
name: ["in", frappe.boot.sysdefaults.repost_allowed_doctypes],
},
};
});
},
enable_immutable_ledger: function (frm) {
if (!frm.doc.enable_immutable_ledger) {
return;

View File

@@ -16,10 +16,15 @@
"invoicing_features_section",
"check_supplier_invoice_uniqueness",
"automatically_fetch_payment_terms",
"enable_subscription",
"column_break_17",
"enable_common_party_accounting",
"allow_multi_currency_invoices_against_single_party_account",
"confirm_before_resetting_posting_date",
"analytics_section",
"enable_accounting_dimensions",
"column_break_vtnr",
"enable_discounts_and_margin",
"journals_section",
"merge_similar_account_heads",
"deferred_accounting_settings_section",
@@ -51,12 +56,19 @@
"allow_pegged_currencies_exchange_rates",
"column_break_yuug",
"stale_days",
"payments_tab",
"section_break_jpd0",
"auto_reconcile_payments",
"auto_reconciliation_job_trigger",
"reconciliation_queue_size",
"column_break_resa",
"exchange_gain_loss_posting_date",
"repost_section",
"repost_allowed_types",
"payment_options_section",
"enable_loyalty_point_program",
"column_break_ctam",
"fetch_payment_schedule_in_payment_request",
"invoicing_settings_tab",
"accounts_transactions_settings_section",
"over_billing_allowance",
@@ -64,26 +76,17 @@
"role_allowed_to_over_bill",
"credit_controller",
"make_payment_via_journal_entry",
"pos_tab",
"pos_setting_section",
"post_change_gl_entries",
"column_break_xrnd",
"assets_tab",
"asset_settings_section",
"calculate_depr_using_total_days",
"column_break_gjcc",
"book_asset_depreciation_entry_automatically",
"role_to_notify_on_depreciation_failure",
"closing_settings_tab",
"period_closing_settings_section",
"acc_frozen_upto",
"ignore_account_closing_balance",
"use_legacy_controller_for_pcv",
"column_break_25",
"frozen_accounts_modifier",
"tab_break_dpet",
"show_balance_in_coa",
"banking_tab",
"enable_party_matching",
"enable_fuzzy_matching",
"reports_tab",
"remarks_section",
"general_ledger_remarks_length",
@@ -91,31 +94,23 @@
"receivable_payable_remarks_length",
"accounts_receivable_payable_tuning_section",
"receivable_payable_fetch_method",
"default_ageing_range",
"column_break_ntmi",
"drop_ar_procedures",
"legacy_section",
"ignore_is_opening_check_for_reporting",
"payment_request_settings",
"tab_break_dpet",
"chart_of_accounts_section",
"show_balance_in_coa",
"banking_section",
"enable_party_matching",
"enable_fuzzy_matching",
"payment_request_section",
"create_pr_in_draft_status",
"budget_settings",
"budget_section",
"use_legacy_budget_controller"
],
"fields": [
{
"description": "Accounting entries are frozen up to this date. Nobody can create or modify entries except users with the role specified below",
"fieldname": "acc_frozen_upto",
"fieldtype": "Date",
"in_list_view": 1,
"label": "Accounts Frozen Till Date"
},
{
"description": "Users with this role are allowed to set frozen accounts and create / modify accounting entries against frozen accounts",
"fieldname": "frozen_accounts_modifier",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Role Allowed to Set Frozen Accounts and Edit Frozen Entries",
"options": "Role"
},
{
"default": "Billing Address",
"description": "Address used to determine Tax Category in transactions",
@@ -214,7 +209,7 @@
"description": "Payment Terms from orders will be fetched into the invoices as is",
"fieldname": "automatically_fetch_payment_terms",
"fieldtype": "Check",
"label": "Automatically Fetch Payment Terms from Order"
"label": "Automatically Fetch Payment Terms from Order/Quotation"
},
{
"description": "The percentage you are allowed to bill more against the amount ordered. For example, if the order value is $100 for an item and tolerance is set as 10%, then you are allowed to bill up to $110 ",
@@ -296,16 +291,9 @@
"fieldname": "column_break_19",
"fieldtype": "Column Break"
},
{
"default": "1",
"description": "If enabled, ledger entries will be posted for change amount in POS transactions",
"fieldname": "post_change_gl_entries",
"fieldtype": "Check",
"label": "Create Ledger Entries for Change Amount"
},
{
"default": "0",
"description": "Learn about <a href=\"https://docs.erpnext.com/docs/v13/user/manual/en/accounts/articles/common_party_accounting#:~:text=Common%20Party%20Accounting%20in%20ERPNext,Invoice%20against%20a%20primary%20Supplier.\">Common Party</a>",
"description": "Learn about <a href=\"https://docs.frappe.io/erpnext/user/manual/en/common_party_accounting\" rel=\"noopener noreferrer\">Common Party</a>",
"fieldname": "enable_common_party_accounting",
"fieldtype": "Check",
"label": "Enable Common Party Accounting"
@@ -343,11 +331,6 @@
"fieldtype": "Tab Break",
"label": "Accounts Closing"
},
{
"fieldname": "pos_setting_section",
"fieldtype": "Section Break",
"label": "POS Setting"
},
{
"fieldname": "invoice_and_billing_tab",
"fieldtype": "Tab Break",
@@ -362,11 +345,6 @@
"fieldname": "column_break_17",
"fieldtype": "Column Break"
},
{
"fieldname": "pos_tab",
"fieldtype": "Tab Break",
"label": "POS"
},
{
"default": "0",
"description": "Enabling this will allow creation of multi-currency invoices against single party account in company currency",
@@ -377,7 +355,7 @@
{
"fieldname": "tab_break_dpet",
"fieldtype": "Tab Break",
"label": "Chart Of Accounts"
"label": "Others"
},
{
"default": "1",
@@ -421,11 +399,6 @@
"fieldtype": "Check",
"label": "Show Taxes as Table in Print"
},
{
"fieldname": "banking_tab",
"fieldtype": "Tab Break",
"label": "Banking"
},
{
"default": "0",
"description": "Auto match and set the Party in Bank Transactions",
@@ -501,14 +474,9 @@
"fieldtype": "Check",
"label": "Calculate daily depreciation using total days in depreciation period"
},
{
"description": "Payment Request created from Sales Order or Purchase Order will be in Draft status. When disabled document will be in unsaved state.",
"fieldname": "payment_request_settings",
"fieldtype": "Tab Break",
"label": "Payment Request"
},
{
"default": "1",
"description": "Payment Requests made from Sales / Purchase Invoice will be put in Draft explicitly",
"fieldname": "create_pr_in_draft_status",
"fieldtype": "Check",
"label": "Create in Draft Status"
@@ -550,10 +518,6 @@
"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",
@@ -593,11 +557,6 @@
"label": "Role Allowed to Override Stop Action",
"options": "Role"
},
{
"fieldname": "budget_settings",
"fieldtype": "Tab Break",
"label": "Budget"
},
{
"default": "1",
"description": "If enabled, user will be alerted before resetting posting date to current date in relevant transactions",
@@ -651,15 +610,122 @@
"fieldname": "use_legacy_budget_controller",
"fieldtype": "Check",
"label": "Use Legacy Budget Controller"
},
{
"default": "1",
"fieldname": "use_legacy_controller_for_pcv",
"fieldtype": "Check",
"label": "Use Legacy Controller For Period Closing Voucher"
},
{
"description": "Users with this role will be notified if the asset depreciation gets failed",
"fieldname": "role_to_notify_on_depreciation_failure",
"fieldtype": "Link",
"label": "Role to Notify on Depreciation Failure",
"options": "Role"
},
{
"default": "30, 60, 90, 120",
"fieldname": "default_ageing_range",
"fieldtype": "Data",
"label": "Default Ageing Range"
},
{
"fieldname": "chart_of_accounts_section",
"fieldtype": "Section Break",
"label": "Chart Of Accounts"
},
{
"fieldname": "banking_section",
"fieldtype": "Section Break",
"label": "Banking"
},
{
"fieldname": "payment_request_section",
"fieldtype": "Section Break",
"label": "Payment Request"
},
{
"fieldname": "budget_section",
"fieldtype": "Section Break",
"label": "Budget"
},
{
"fieldname": "analytics_section",
"fieldtype": "Section Break",
"label": "Analytical Accounting"
},
{
"fieldname": "column_break_vtnr",
"fieldtype": "Column Break"
},
{
"default": "0",
"description": "Apply discounts and margins on products",
"fieldname": "enable_discounts_and_margin",
"fieldtype": "Check",
"label": "Enable Discounts and Margin"
},
{
"fieldname": "payments_tab",
"fieldtype": "Tab Break",
"label": "Payments"
},
{
"fieldname": "payment_options_section",
"fieldtype": "Section Break",
"label": "Payment Options"
},
{
"default": "0",
"fieldname": "enable_loyalty_point_program",
"fieldtype": "Check",
"label": "Enable Loyalty Point Program"
},
{
"fieldname": "column_break_ctam",
"fieldtype": "Column Break"
},
{
"default": "0",
"description": "Enable cost center, projects and other custom accounting dimensions",
"fieldname": "enable_accounting_dimensions",
"fieldtype": "Check",
"label": "Enable Accounting Dimensions"
},
{
"default": "1",
"description": "Enable Subscription tracking in invoice",
"fieldname": "enable_subscription",
"fieldtype": "Check",
"label": "Enable Subscription"
},
{
"default": "1",
"fieldname": "fetch_payment_schedule_in_payment_request",
"fieldtype": "Check",
"label": "Fetch Payment Schedule In Payment Request"
},
{
"fieldname": "repost_section",
"fieldtype": "Section Break",
"label": "Repost"
},
{
"fieldname": "repost_allowed_types",
"fieldtype": "Table",
"label": "Allowed Doctypes",
"options": "Repost Allowed Types"
}
],
"grid_page_length": 50,
"hide_toolbar": 0,
"icon": "icon-cog",
"idx": 1,
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
"modified": "2025-09-24 16:08:08.515254",
"modified": "2026-04-13 15:30:28.729627",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Accounts Settings",

View File

@@ -10,8 +10,32 @@ from frappe.custom.doctype.property_setter.property_setter import make_property_
from frappe.model.document import Document
from frappe.utils import cint
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
get_accounting_dimensions,
)
from erpnext.accounts.utils import sync_auto_reconcile_config
from erpnext.stock.utils import check_pending_reposting
SELLING_DOCTYPES = [
"Sales Invoice",
"Sales Order",
"Delivery Note",
"Quotation",
"Sales Invoice Item",
"Sales Order Item",
"Delivery Note Item",
"Quotation Item",
"POS Invoice",
"POS Invoice Item",
]
BUYING_DOCTYPES = [
"Purchase Invoice",
"Purchase Order",
"Purchase Receipt",
"Purchase Invoice Item",
"Purchase Order Item",
"Purchase Receipt Item",
]
class AccountsSettings(Document):
@@ -23,7 +47,8 @@ class AccountsSettings(Document):
if TYPE_CHECKING:
from frappe.types import DF
acc_frozen_upto: DF.Date | None
from erpnext.accounts.doctype.repost_allowed_types.repost_allowed_types import RepostAllowedTypes
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
@@ -42,15 +67,20 @@ class AccountsSettings(Document):
confirm_before_resetting_posting_date: DF.Check
create_pr_in_draft_status: DF.Check
credit_controller: DF.Link | None
default_ageing_range: DF.Data | None
delete_linked_ledger_entries: DF.Check
determine_address_tax_category_from: DF.Literal["Billing Address", "Shipping Address"]
enable_accounting_dimensions: DF.Check
enable_common_party_accounting: DF.Check
enable_discounts_and_margin: DF.Check
enable_fuzzy_matching: DF.Check
enable_immutable_ledger: DF.Check
enable_loyalty_point_program: DF.Check
enable_party_matching: DF.Check
enable_subscription: DF.Check
exchange_gain_loss_posting_date: DF.Literal["Invoice", "Payment", "Reconciliation Date"]
fetch_payment_schedule_in_payment_request: DF.Check
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
@@ -59,11 +89,12 @@ class AccountsSettings(Document):
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
repost_allowed_types: DF.Table[RepostAllowedTypes]
role_allowed_to_over_bill: DF.Link | None
role_to_notify_on_depreciation_failure: DF.Link | None
role_to_override_stop_action: DF.Link | None
round_row_wise_tax: DF.Check
show_balance_in_coa: DF.Check
@@ -75,6 +106,7 @@ class AccountsSettings(Document):
unlink_advance_payment_on_cancelation_of_order: DF.Check
unlink_payment_on_cancellation_of_invoice: DF.Check
use_legacy_budget_controller: DF.Check
use_legacy_controller_for_pcv: DF.Check
# end: auto-generated types
def validate(self):
@@ -99,13 +131,27 @@ class AccountsSettings(Document):
if old_doc.show_payment_schedule_in_print != self.show_payment_schedule_in_print:
self.enable_payment_schedule_in_print()
if old_doc.acc_frozen_upto != self.acc_frozen_upto:
self.validate_pending_reposts()
if old_doc.enable_accounting_dimensions != self.enable_accounting_dimensions:
toggle_accounting_dimension_sections(not self.enable_accounting_dimensions)
clear_cache = True
if old_doc.enable_discounts_and_margin != self.enable_discounts_and_margin:
toggle_sales_discount_section(not self.enable_discounts_and_margin)
clear_cache = True
if old_doc.enable_loyalty_point_program != self.enable_loyalty_point_program:
toggle_loyalty_point_program_section(not self.enable_loyalty_point_program)
clear_cache = True
if old_doc.enable_subscription != self.enable_subscription:
toggle_subscription_sections(not self.enable_subscription)
clear_cache = True
if clear_cache:
frappe.clear_cache()
self.validate_and_sync_auto_reconcile_config()
self.update_property_for_accounting_dimension()
def validate_stale_days(self):
if not self.allow_stale and cint(self.stale_days) <= 0:
@@ -128,10 +174,6 @@ class AccountsSettings(Document):
validate_fields_for_doctype=False,
)
def validate_pending_reposts(self):
if self.acc_frozen_upto:
check_pending_reposting(self.acc_frozen_upto)
def validate_and_sync_auto_reconcile_config(self):
if self.has_value_changed("auto_reconciliation_job_trigger"):
if (
@@ -156,10 +198,68 @@ class AccountsSettings(Document):
title=_("Auto Tax Settings Error"),
)
def update_property_for_accounting_dimension(self):
doctypes = [entry.document_type for entry in self.repost_allowed_types]
if not doctypes:
return
from erpnext.accounts.doctype.repost_accounting_ledger.repost_accounting_ledger import get_child_docs
doctypes += get_child_docs(doctypes)
set_allow_on_submit_for_dimension_fields(doctypes)
@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}")
def toggle_accounting_dimension_sections(hide):
accounting_dimension_doctypes = frappe.get_hooks("accounting_dimension_doctypes")
for doctype in accounting_dimension_doctypes:
create_property_setter_for_hiding_field(doctype, "accounting_dimensions_section", hide)
def toggle_sales_discount_section(hide):
for doctype in SELLING_DOCTYPES + BUYING_DOCTYPES:
meta = frappe.get_meta(doctype)
if meta.has_field("additional_discount_section"):
create_property_setter_for_hiding_field(doctype, "additional_discount_section", hide)
if meta.has_field("discount_and_margin"):
create_property_setter_for_hiding_field(doctype, "discount_and_margin", hide)
def toggle_loyalty_point_program_section(hide):
for doctype in SELLING_DOCTYPES:
meta = frappe.get_meta(doctype)
if meta.has_field("loyalty_points_redemption"):
create_property_setter_for_hiding_field(doctype, "loyalty_points_redemption", hide)
def toggle_subscription_sections(hide):
subscription_doctypes = frappe.get_hooks("subscription_doctypes")
for doctype in subscription_doctypes:
create_property_setter_for_hiding_field(doctype, "subscription_section", hide)
def create_property_setter_for_hiding_field(doctype, field_name, hide):
make_property_setter(
doctype,
field_name,
"hidden",
hide,
"Check",
validate_fields_for_doctype=False,
)
def set_allow_on_submit_for_dimension_fields(doctypes):
for dt in doctypes:
meta = frappe.get_meta(dt)
for dimension in get_accounting_dimensions():
df = meta.get_field(dimension)
if df and not df.allow_on_submit:
frappe.db.set_value("Custom Field", dt + "-" + dimension, "allow_on_submit", 1)

View File

@@ -1,11 +1,16 @@
frappe.ui.form.on("Accounts Settings", {
refresh: function (frm) {
frm.set_df_property("acc_frozen_upto", "label", "Books Closed Through");
frm.set_df_property(
"frozen_accounts_modifier",
"label",
"Role Allowed to Close Books & Make Changes to Closed Periods"
);
frm.set_df_property("credit_controller", "label", "Credit Manager");
},
});
frappe.ui.form.on("Company", {
refresh: function (frm) {
frm.set_df_property("accounts_frozen_till_date", "label", "Books Closed Through");
frm.set_df_property(
"role_allowed_for_frozen_entries",
"label",
"Role Allowed to Close Books & Make Changes to Closed Periods"
);
},
});

View File

@@ -1,17 +1,11 @@
import unittest
import frappe
from frappe.tests import IntegrationTestCase
from erpnext.tests.utils import ERPNextTestSuite
class TestAccountsSettings(IntegrationTestCase):
def tearDown(self):
# Just in case `save` method succeeds, we need to take things back to default so that other tests
# don't break
cur_settings = frappe.get_doc("Accounts Settings", "Accounts Settings")
cur_settings.allow_stale = 1
cur_settings.save()
class TestAccountsSettings(ERPNextTestSuite):
def test_stale_days(self):
cur_settings = frappe.get_doc("Accounts Settings", "Accounts Settings")
cur_settings.allow_stale = 0

View File

@@ -1,8 +1,9 @@
// Copyright (c) 2024, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
// frappe.ui.form.on("Advance Payment Ledger Entry", {
// refresh(frm) {
// },
// });
frappe.ui.form.on("Advance Payment Ledger Entry", {
refresh(frm) {
frm.set_currency_labels(["amount"], frm.doc.currency);
frm.set_currency_labels(["base_amount"], erpnext.get_currency(frm.doc.company));
},
});

View File

@@ -10,8 +10,10 @@
"voucher_no",
"against_voucher_type",
"against_voucher_no",
"amount",
"currency",
"exchange_rate",
"amount",
"base_amount",
"event",
"delinked"
],
@@ -48,6 +50,7 @@
"fieldname": "amount",
"fieldtype": "Currency",
"label": "Amount",
"options": "currency",
"read_only": 1
},
{
@@ -76,13 +79,29 @@
"fieldtype": "Check",
"label": "DeLinked",
"read_only": 1
},
{
"depends_on": "base_amount",
"fieldname": "base_amount",
"fieldtype": "Currency",
"label": "Amount (Company Currency)",
"options": "Company:company:default_currency",
"read_only": 1
},
{
"depends_on": "exchange_rate",
"fieldname": "exchange_rate",
"fieldtype": "Float",
"label": "Exchange Rate",
"precision": "9",
"read_only": 1
}
],
"grid_page_length": 50,
"in_create": 1,
"index_web_pages_for_search": 1,
"links": [],
"modified": "2025-10-13 15:11:58.300836",
"modified": "2025-11-13 12:45:03.014555",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Advance Payment Ledger Entry",

View File

@@ -19,10 +19,12 @@ class AdvancePaymentLedgerEntry(Document):
against_voucher_no: DF.DynamicLink | None
against_voucher_type: DF.Link | None
amount: DF.Currency
base_amount: DF.Currency
company: DF.Link | None
currency: DF.Link | None
delinked: DF.Check
event: DF.Data | None
exchange_rate: DF.Float
voucher_no: DF.DynamicLink | None
voucher_type: DF.Link | None
# end: auto-generated types

View File

@@ -2,7 +2,6 @@
# See license.txt
import frappe
from frappe.tests import IntegrationTestCase
from frappe.utils import nowdate, today
from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry
@@ -10,14 +9,13 @@ from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
# On IntegrationTestCase, the doctype test records and all
# On ERPNextTestSuite, the doctype test records and all
# link-field test record depdendencies are recursively loaded
# Use these module variables to add/remove to/from that list
EXTRA_TEST_RECORD_DEPENDENCIES = [] # eg. ["User"]
IGNORE_TEST_RECORD_DEPENDENCIES = [] # eg. ["User"]
from erpnext.tests.utils import ERPNextTestSuite
class TestAdvancePaymentLedgerEntry(AccountsTestMixin, IntegrationTestCase):
class TestAdvancePaymentLedgerEntry(ERPNextTestSuite, AccountsTestMixin):
"""
Integration tests for AdvancePaymentLedgerEntry.
Use this class for testing interactions between multiple components.
@@ -30,9 +28,6 @@ class TestAdvancePaymentLedgerEntry(AccountsTestMixin, IntegrationTestCase):
self.create_item()
self.clear_old_entries()
def tearDown(self):
frappe.db.rollback()
def create_sales_order(self, qty=1, rate=100, currency="INR", do_not_submit=False):
"""
Helper method

View File

@@ -1,57 +0,0 @@
{
"actions": [],
"allow_rename": 1,
"creation": "2021-11-25 10:24:39.836195",
"doctype": "DocType",
"engine": "InnoDB",
"field_order": [
"reference_type",
"reference_name",
"reference_detail",
"account_head",
"allocated_amount"
],
"fields": [
{
"fieldname": "reference_type",
"fieldtype": "Link",
"label": "Reference Type",
"options": "DocType"
},
{
"fieldname": "reference_name",
"fieldtype": "Dynamic Link",
"label": "Reference Name",
"options": "reference_type"
},
{
"fieldname": "reference_detail",
"fieldtype": "Data",
"label": "Reference Detail"
},
{
"fieldname": "account_head",
"fieldtype": "Link",
"label": "Account Head",
"options": "Account"
},
{
"fieldname": "allocated_amount",
"fieldtype": "Currency",
"label": "Allocated Amount",
"options": "party_account_currency"
}
],
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
"modified": "2024-03-27 13:05:58.308002",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Advance Tax",
"owner": "Administrator",
"permissions": [],
"sort_field": "creation",
"sort_order": "DESC",
"states": []
}

View File

@@ -14,6 +14,7 @@
"description",
"included_in_paid_amount",
"set_by_item_tax_template",
"is_tax_withholding_account",
"accounting_dimensions_section",
"cost_center",
"dimension_col_break",
@@ -25,7 +26,6 @@
"net_amount",
"tax_amount",
"total",
"allocated_amount",
"column_break_13",
"base_tax_amount",
"base_net_amount",
@@ -97,11 +97,11 @@
"fieldtype": "Column Break"
},
{
"allow_on_submit": 1,
"fieldname": "project",
"fieldtype": "Link",
"label": "Project",
"options": "Project"
"allow_on_submit": 1,
"fieldname": "project",
"fieldtype": "Link",
"label": "Project",
"options": "Project"
},
{
"fieldname": "section_break_8",
@@ -172,12 +172,6 @@
"fieldtype": "Check",
"label": "Considered In Paid Amount"
},
{
"fieldname": "allocated_amount",
"fieldtype": "Currency",
"label": "Allocated Amount",
"options": "currency"
},
{
"fetch_from": "account_head.account_currency",
"fieldname": "currency",
@@ -213,18 +207,26 @@
"print_hide": 1,
"read_only": 1,
"report_hide": 1
},
{
"default": "0",
"fieldname": "is_tax_withholding_account",
"fieldtype": "Check",
"label": "Is Tax Withholding Account",
"read_only": 1
}
],
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
"modified": "2024-11-22 19:16:22.346267",
"modified": "2025-12-15 06:42:18.707671",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Advance Taxes and Charges",
"owner": "Administrator",
"permissions": [],
"row_format": "Dynamic",
"sort_field": "creation",
"sort_order": "ASC",
"states": []
}
}

View File

@@ -17,7 +17,6 @@ class AdvanceTaxesandCharges(Document):
account_head: DF.Link
add_deduct_tax: DF.Literal["Add", "Deduct"]
allocated_amount: DF.Currency
base_net_amount: DF.Currency
base_tax_amount: DF.Currency
base_total: DF.Currency
@@ -28,10 +27,12 @@ class AdvanceTaxesandCharges(Document):
currency: DF.Link | None
description: DF.SmallText
included_in_paid_amount: DF.Check
is_tax_withholding_account: DF.Check
net_amount: DF.Currency
parent: DF.Data
parentfield: DF.Data
parenttype: DF.Data
project: DF.Link | None
rate: DF.Float
row_id: DF.Data | None
set_by_item_tax_template: DF.Check

View File

@@ -3,9 +3,6 @@
frappe.provide("erpnext.integrations");
frappe.ui.form.on("Bank", {
onload: function (frm) {
add_fields_to_mapping_table(frm);
},
refresh: function (frm) {
add_fields_to_mapping_table(frm);
frm.toggle_display(["address_html", "contact_html"], !frm.doc.__islocal);
@@ -37,11 +34,11 @@ let add_fields_to_mapping_table = function (frm) {
});
});
frm.fields_dict.bank_transaction_mapping.grid.update_docfield_property(
"bank_transaction_field",
"options",
options
);
const grid = frm.fields_dict.bank_transaction_mapping?.grid;
if (grid) {
grid.update_docfield_property("bank_transaction_field", "options", options);
}
};
erpnext.integrations.refreshPlaidLink = class refreshPlaidLink {
@@ -116,7 +113,7 @@ erpnext.integrations.refreshPlaidLink = class refreshPlaidLink {
"There was an issue connecting to Plaid's authentication server. Check browser console for more information"
)
);
console.log(error);
console.error(error);
}
plaid_success(token, response) {

View File

@@ -2,8 +2,8 @@
# See license.txt
import unittest
from frappe.tests import IntegrationTestCase
from erpnext.tests.utils import ERPNextTestSuite
class TestBank(IntegrationTestCase):
class TestBank(ERPNextTestSuite):
pass

View File

@@ -42,8 +42,4 @@ frappe.ui.form.on("Bank Account", {
});
}
},
is_company_account: function (frm) {
frm.set_df_property("account", "reqd", frm.doc.is_company_account);
},
});

View File

@@ -52,6 +52,7 @@
"fieldtype": "Link",
"in_list_view": 1,
"label": "Company Account",
"mandatory_depends_on": "is_company_account",
"options": "Account"
},
{
@@ -98,6 +99,7 @@
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Company",
"mandatory_depends_on": "is_company_account",
"options": "Company"
},
{
@@ -252,7 +254,7 @@
"link_fieldname": "default_bank_account"
}
],
"modified": "2025-08-29 12:32:01.081687",
"modified": "2026-01-20 00:46:16.633364",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Bank Account",

View File

@@ -51,25 +51,29 @@ class BankAccount(Document):
delete_contact_and_address("Bank Account", self.name)
def validate(self):
self.validate_company()
self.validate_account()
self.validate_is_company_account()
self.update_default_bank_account()
def validate_account(self):
if self.account:
if accounts := frappe.db.get_all(
"Bank Account", filters={"account": self.account, "name": ["!=", self.name]}, as_list=1
):
frappe.throw(
_("'{0}' account is already used by {1}. Use another account.").format(
frappe.bold(self.account),
frappe.bold(comma_and([get_link_to_form(self.doctype, x[0]) for x in accounts])),
)
)
def validate_is_company_account(self):
if self.is_company_account:
if not self.company:
frappe.throw(_("Company is mandatory for company account"))
def validate_company(self):
if self.is_company_account and not self.company:
frappe.throw(_("Company is mandatory for company account"))
if not self.account:
frappe.throw(_("Company Account is mandatory"))
self.validate_account()
def validate_account(self):
if accounts := frappe.db.get_all(
"Bank Account", filters={"account": self.account, "name": ["!=", self.name]}, as_list=1
):
frappe.throw(
_("'{0}' account is already used by {1}. Use another account.").format(
frappe.bold(self.account),
frappe.bold(comma_and([get_link_to_form(self.doctype, x[0]) for x in accounts])),
)
)
def update_default_bank_account(self):
if self.is_default and not self.disabled:
@@ -112,6 +116,7 @@ def get_default_company_bank_account(company, party_type, party):
@frappe.whitelist()
def get_bank_account_details(bank_account):
frappe.has_permission("Bank Account", doc=bank_account, ptype="read", throw=True)
return frappe.get_cached_value(
"Bank Account", bank_account, ["account", "bank", "bank_account_no"], as_dict=1
)

View File

@@ -2,10 +2,8 @@
# See license.txt
import unittest
import frappe
from frappe import ValidationError
from frappe.tests import IntegrationTestCase
from erpnext.tests.utils import ERPNextTestSuite
class TestBankAccount(IntegrationTestCase):
class TestBankAccount(ERPNextTestSuite):
pass

View File

@@ -2,8 +2,8 @@
# See license.txt
import unittest
from frappe.tests import IntegrationTestCase
from erpnext.tests.utils import ERPNextTestSuite
class TestBankAccountSubtype(IntegrationTestCase):
class TestBankAccountSubtype(ERPNextTestSuite):
pass

View File

@@ -3,8 +3,8 @@
# import frappe
import unittest
from frappe.tests import IntegrationTestCase
from erpnext.tests.utils import ERPNextTestSuite
class TestBankAccountType(IntegrationTestCase):
class TestBankAccountType(ERPNextTestSuite):
pass

View File

@@ -5,8 +5,10 @@
import frappe
from frappe import _, msgprint
from frappe.model.document import Document
from frappe.query_builder import Case
from frappe.query_builder.custom import ConstantColumn
from frappe.utils import cint, flt, fmt_money, get_link_to_form, getdate
from frappe.query_builder.functions import Coalesce, Sum
from frappe.utils import cint, flt, fmt_money, getdate
from pypika import Order
import erpnext
@@ -125,7 +127,7 @@ class BankClearance(Document):
)
msg += "</ul>"
frappe.throw(_(msg))
msgprint(_(msg))
return
if not entries_to_update:
@@ -134,16 +136,44 @@ class BankClearance(Document):
for d in entries_to_update:
if d.payment_document == "Sales Invoice":
frappe.db.set_value(
old_clearance_date = frappe.db.get_value(
"Sales Invoice Payment",
{"parent": d.payment_entry, "account": self.get("account"), "amount": [">", 0]},
{
"parent": d.payment_entry,
"account": self.account,
"amount": [">", 0],
},
"clearance_date",
d.clearance_date,
)
if d.clearance_date or old_clearance_date:
frappe.db.set_value(
"Sales Invoice Payment",
{"parent": d.payment_entry, "account": self.get("account"), "amount": [">", 0]},
"clearance_date",
d.clearance_date,
)
sales_invoice = frappe.get_lazy_doc("Sales Invoice", d.payment_entry)
sales_invoice.add_comment(
"Comment",
_("Clearance date changed from {0} to {1} via Bank Clearance Tool").format(
old_clearance_date, d.clearance_date
),
)
else:
# using db_set to trigger notification
payment_entry = frappe.get_lazy_doc(d.payment_document, d.payment_entry)
payment_entry.db_set("clearance_date", d.clearance_date)
old_clearance_date = payment_entry.clearance_date
if d.clearance_date or old_clearance_date:
# using db_set to trigger notification
payment_entry.db_set("clearance_date", d.clearance_date)
payment_entry.add_comment(
"Comment",
_("Clearance date changed from {0} to {1} via Bank Clearance Tool").format(
old_clearance_date, d.clearance_date
),
)
self.get_payment_entries()
msgprint(_("Clearance Date updated"))
@@ -154,65 +184,162 @@ def get_payment_entries_for_bank_clearance(
):
entries = []
condition = ""
pe_condition = ""
journal_entry = frappe.qb.DocType("Journal Entry")
journal_entry_account = frappe.qb.DocType("Journal Entry Account")
journal_entry_query = (
frappe.qb.from_(journal_entry_account)
.inner_join(journal_entry)
.on(journal_entry_account.parent == journal_entry.name)
.select(
ConstantColumn("Journal Entry").as_("payment_document"),
journal_entry.name.as_("payment_entry"),
journal_entry.cheque_no.as_("cheque_number"),
journal_entry.cheque_date,
Sum(journal_entry_account.debit_in_account_currency).as_("debit"),
Sum(journal_entry_account.credit_in_account_currency).as_("credit"),
journal_entry.posting_date,
journal_entry_account.against_account,
journal_entry.clearance_date,
journal_entry_account.account_currency,
)
.where(
(journal_entry_account.account == account)
& (journal_entry.docstatus == 1)
& (journal_entry.posting_date >= from_date)
& (journal_entry.posting_date <= to_date)
& (journal_entry.is_opening == "No")
)
)
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_entry_query = journal_entry_query.where(
(journal_entry.clearance_date.isnull()) | (journal_entry.clearance_date == "0000-00-00")
)
journal_entries = frappe.db.sql(
f"""
select
"Journal Entry" as payment_document, t1.name as payment_entry,
t1.cheque_no as cheque_number, t1.cheque_date,
sum(t2.debit_in_account_currency) as debit, sum(t2.credit_in_account_currency) as credit,
t1.posting_date, t2.against_account, t1.clearance_date, t2.account_currency
from
`tabJournal Entry` t1, `tabJournal Entry Account` t2
where
t2.parent = t1.name and t2.account = %(account)s and t1.docstatus=1
and t1.posting_date >= %(from)s and t1.posting_date <= %(to)s
and ifnull(t1.is_opening, 'No') = 'No' {condition}
group by t2.account, t1.name
order by t1.posting_date ASC, t1.name DESC
""",
{"account": account, "from": from_date, "to": to_date},
as_dict=1,
journal_entries = (
journal_entry_query.groupby(journal_entry_account.account, journal_entry.name)
.orderby(journal_entry.posting_date)
.orderby(journal_entry.name, order=Order.desc)
).run(as_dict=True)
pe = frappe.qb.DocType("Payment Entry")
company = frappe.qb.DocType("Company")
payment_entry_query = (
frappe.qb.from_(pe)
.join(company)
.on(pe.company == company.name)
.select(
ConstantColumn("Payment Entry").as_("payment_document"),
pe.name.as_("payment_entry"),
pe.reference_no.as_("cheque_number"),
pe.reference_date.as_("cheque_date"),
(
Case()
.when(
pe.paid_from == account,
(
pe.paid_amount
+ (
Case()
.when(
(pe.payment_type == "Pay")
& (company.default_currency == pe.paid_from_account_currency),
pe.base_total_taxes_and_charges,
)
.else_(pe.total_taxes_and_charges)
)
),
)
.else_(0)
).as_("credit"),
(
Case()
.when(pe.paid_from == account, 0)
.else_(
pe.received_amount
+ (
Case()
.when(
company.default_currency == pe.paid_to_account_currency,
pe.base_total_taxes_and_charges,
)
.else_(pe.total_taxes_and_charges)
)
)
).as_("debit"),
pe.posting_date,
Coalesce(pe.party, Case().when(pe.paid_from == account, pe.paid_to).else_(pe.paid_from)).as_(
"against_account"
),
pe.clearance_date,
(
Case()
.when(pe.paid_to == account, pe.paid_to_account_currency)
.else_(pe.paid_from_account_currency)
).as_("account_currency"),
)
.where(
((pe.paid_from == account) | (pe.paid_to == account))
& (pe.docstatus == 1)
& (pe.posting_date >= from_date)
& (pe.posting_date <= to_date)
)
)
payment_entries = frappe.db.sql(
f"""
select
"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
(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
pe.posting_date ASC, pe.name DESC
""",
{
"account": account,
"from": from_date,
"to": to_date,
},
as_dict=1,
if not include_reconciled_entries:
payment_entry_query = payment_entry_query.where(
(pe.clearance_date.isnull()) | (pe.clearance_date == "0000-00-00")
)
payment_entries = (payment_entry_query.orderby(pe.posting_date).orderby(pe.name, order=Order.desc)).run(
as_dict=True
)
pos_sales_invoices, pos_purchase_invoices = [], []
acc = frappe.qb.DocType("Account")
pi = frappe.qb.DocType("Purchase Invoice")
paid_purchase_invoices_query = (
frappe.qb.from_(pi)
.inner_join(acc)
.on(pi.cash_bank_account == acc.name)
.select(
ConstantColumn("Purchase Invoice").as_("payment_document"),
pi.name.as_("payment_entry"),
pi.paid_amount.as_("credit"),
pi.posting_date,
pi.supplier.as_("against_account"),
pi.bill_no.as_("cheque_number"),
pi.clearance_date,
acc.account_currency,
ConstantColumn(0).as_("debit"),
)
.where(
(pi.docstatus == 1)
& (pi.is_paid == 1)
& (pi.cash_bank_account == account)
& (pi.posting_date >= from_date)
& (pi.posting_date <= to_date)
)
)
if not include_reconciled_entries:
paid_purchase_invoices_query = paid_purchase_invoices_query.where(
(pi.clearance_date.isnull()) | (pi.clearance_date == "0000-00-00")
)
paid_purchase_invoices = (
paid_purchase_invoices_query.orderby(pi.posting_date).orderby(pi.name, order=Order.desc)
).run(as_dict=True)
pos_sales_invoices = []
if include_pos_transactions:
si_payment = frappe.qb.DocType("Sales Invoice Payment")
si = frappe.qb.DocType("Sales Invoice")
acc = frappe.qb.DocType("Account")
pos_sales_invoices = (
pos_sales_invoices_query = (
frappe.qb.from_(si_payment)
.inner_join(si)
.on(si_payment.parent == si.name)
@@ -235,38 +362,22 @@ def get_payment_entries_for_bank_clearance(
& (si.posting_date >= from_date)
& (si.posting_date <= to_date)
)
.orderby(si.posting_date)
.orderby(si.name, order=Order.desc)
).run(as_dict=True)
)
pi = frappe.qb.DocType("Purchase Invoice")
if not include_reconciled_entries:
pos_sales_invoices_query = pos_sales_invoices_query.where(
(si_payment.clearance_date.isnull()) | (si_payment.clearance_date == "0000-00-00")
)
pos_purchase_invoices = (
frappe.qb.from_(pi)
.inner_join(acc)
.on(pi.cash_bank_account == acc.name)
.select(
ConstantColumn("Purchase Invoice").as_("payment_document"),
pi.name.as_("payment_entry"),
pi.paid_amount.as_("credit"),
pi.posting_date,
pi.supplier.as_("against_account"),
pi.clearance_date,
acc.account_currency,
ConstantColumn(0).as_("debit"),
)
.where(
(pi.docstatus == 1)
& (pi.cash_bank_account == account)
& (pi.posting_date >= from_date)
& (pi.posting_date <= to_date)
)
.orderby(pi.posting_date)
.orderby(pi.name, order=Order.desc)
pos_sales_invoices = (
pos_sales_invoices_query.orderby(si.posting_date).orderby(si.name, order=Order.desc)
).run(as_dict=True)
entries = (
list(payment_entries) + list(journal_entries) + list(pos_sales_invoices) + list(pos_purchase_invoices)
list(payment_entries)
+ list(journal_entries)
+ list(pos_sales_invoices)
+ list(paid_purchase_invoices)
)
return entries

View File

@@ -3,7 +3,6 @@
import unittest
import frappe
from frappe.tests import IntegrationTestCase
from frappe.utils import add_months, getdate
from erpnext.accounts.doctype.cost_center.test_cost_center import create_cost_center
@@ -15,13 +14,12 @@ from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
from erpnext.stock.doctype.item.test_item import create_item
from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
from erpnext.tests.utils import if_lending_app_installed, if_lending_app_not_installed
from erpnext.tests.utils import ERPNextTestSuite, if_lending_app_installed, if_lending_app_not_installed
class TestBankClearance(IntegrationTestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
class TestBankClearance(ERPNextTestSuite):
def setUp(self):
frappe.clear_cache()
create_warehouse(
warehouse_name="_Test Warehouse",
properties={"parent_warehouse": "All Warehouses - _TC"},

View File

@@ -30,8 +30,7 @@
"label": "Payment Entry",
"oldfieldname": "voucher_id",
"oldfieldtype": "Link",
"options": "payment_document",
"width": "50"
"options": "payment_document"
},
{
"columns": 2,
@@ -69,7 +68,7 @@
"read_only": 1
},
{
"columns": 2,
"columns": 1,
"fieldname": "cheque_number",
"fieldtype": "Data",
"in_list_view": 1,
@@ -79,8 +78,10 @@
"read_only": 1
},
{
"columns": 2,
"fieldname": "cheque_date",
"fieldtype": "Date",
"in_list_view": 1,
"label": "Cheque Date",
"oldfieldname": "cheque_date",
"oldfieldtype": "Date",
@@ -96,17 +97,19 @@
"oldfieldtype": "Date"
}
],
"grid_page_length": 50,
"idx": 1,
"istable": 1,
"links": [],
"modified": "2024-03-27 13:06:37.609319",
"modified": "2025-12-17 14:33:45.913311",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Bank Clearance Detail",
"owner": "Administrator",
"permissions": [],
"quick_entry": 1,
"row_format": "Dynamic",
"sort_field": "creation",
"sort_order": "ASC",
"states": []
}
}

View File

@@ -9,13 +9,6 @@ cur_frm.add_fetch("bank", "swift_number", "swift_number");
frappe.ui.form.on("Bank Guarantee", {
setup: function (frm) {
frm.set_query("bank", function () {
return {
filters: {
company: frm.doc.company,
},
};
});
frm.set_query("bank_account", function () {
return {
filters: {

View File

@@ -2,8 +2,8 @@
# See license.txt
import unittest
from frappe.tests import IntegrationTestCase
from erpnext.tests.utils import ERPNextTestSuite
class TestBankGuarantee(IntegrationTestCase):
class TestBankGuarantee(ERPNextTestSuite):
pass

View File

@@ -304,6 +304,7 @@ def create_payment_entry_bts(
project=None,
cost_center=None,
allow_edit=None,
company_bank_account=None,
):
# Create a new payment entry based on the bank transaction
bank_transaction = frappe.db.get_values(
@@ -345,6 +346,9 @@ def create_payment_entry_bts(
pe.project = project
pe.cost_center = cost_center
if company_bank_account:
pe.bank_account = company_bank_account
pe.validate()
if allow_edit:

View File

@@ -4,7 +4,6 @@
import frappe
from frappe import qb
from frappe.tests import IntegrationTestCase
from frappe.utils import add_days, today
from erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool import (
@@ -13,9 +12,10 @@ from erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool
)
from erpnext.accounts.doctype.payment_entry.test_payment_entry import create_payment_entry
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
from erpnext.tests.utils import ERPNextTestSuite
class TestBankReconciliationTool(AccountsTestMixin, IntegrationTestCase):
class TestBankReconciliationTool(ERPNextTestSuite, AccountsTestMixin):
def setUp(self):
self.create_company()
self.create_customer()
@@ -24,9 +24,6 @@ class TestBankReconciliationTool(AccountsTestMixin, IntegrationTestCase):
qb.from_(bank_dt).delete().where(bank_dt.name == "HDFC").run()
self.create_bank_account()
def tearDown(self):
frappe.db.rollback()
def create_bank_account(self):
bank = frappe.get_doc(
{
@@ -43,6 +40,7 @@ class TestBankReconciliationTool(AccountsTestMixin, IntegrationTestCase):
"bank": bank.name,
"is_company_account": True,
"account": self.bank, # account from Chart of Accounts
"company": self.company,
}
)
.insert()

View File

@@ -14,6 +14,7 @@ import openpyxl
from frappe import _
from frappe.core.doctype.data_import.data_import import DataImport
from frappe.core.doctype.data_import.importer import Importer, ImportFile
from frappe.query_builder.functions import Count
from frappe.utils.background_jobs import enqueue
from frappe.utils.file_manager import get_file, save_file
from frappe.utils.xlsxutils import ILLEGAL_CHARACTERS_RE, handle_html
@@ -371,7 +372,7 @@ def get_import_status(docname):
logs = frappe.get_all(
"Data Import Log",
fields=["count(*) as count", "success"],
fields=[{"COUNT": "*", "as": "count"}, "success"],
filters={"data_import": docname},
group_by="success",
)

View File

@@ -1,15 +1,14 @@
# Copyright (c) 2020, Frappe Technologies and Contributors
# See license.txt
import unittest
from erpnext.accounts.doctype.bank_statement_import.bank_statement_import import (
is_mt940_format,
preprocess_mt940_content,
)
from erpnext.tests.utils import ERPNextTestSuite
class TestBankStatementImport(unittest.TestCase):
class TestBankStatementImport(ERPNextTestSuite):
"""Unit tests for Bank Statement Import functions"""
def test_preprocess_mt940_content_with_long_statement_number(self):

View File

@@ -38,7 +38,10 @@
"column_break_3czf",
"bank_party_name",
"bank_party_account_number",
"bank_party_iban"
"bank_party_iban",
"extended_bank_statement_section",
"included_fee",
"excluded_fee"
],
"fields": [
{
@@ -123,8 +126,7 @@
"fieldname": "transaction_id",
"fieldtype": "Data",
"label": "Transaction ID",
"read_only": 1,
"unique": 1
"read_only": 1
},
{
"allow_on_submit": 1,
@@ -234,12 +236,32 @@
{
"fieldname": "column_break_oufv",
"fieldtype": "Column Break"
},
{
"fieldname": "extended_bank_statement_section",
"fieldtype": "Section Break",
"label": "Extended Bank Statement"
},
{
"fieldname": "included_fee",
"fieldtype": "Currency",
"label": "Included Fee",
"non_negative": 1,
"options": "currency"
},
{
"description": "On save, the Excluded Fee will be converted to an Included Fee.",
"fieldname": "excluded_fee",
"fieldtype": "Currency",
"label": "Excluded Fee",
"non_negative": 1,
"options": "currency"
}
],
"grid_page_length": 50,
"is_submittable": 1,
"links": [],
"modified": "2025-09-26 17:06:29.207673",
"modified": "2025-12-07 20:49:18.600757",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Bank Transaction",

View File

@@ -32,6 +32,8 @@ class BankTransaction(Document):
date: DF.Date | None
deposit: DF.Currency
description: DF.SmallText | None
excluded_fee: DF.Currency
included_fee: DF.Currency
naming_series: DF.Literal["ACC-BTN-.YYYY.-"]
party: DF.DynamicLink | None
party_type: DF.Link | None
@@ -45,9 +47,14 @@ class BankTransaction(Document):
# end: auto-generated types
def before_validate(self):
self.handle_excluded_fee()
self.update_allocated_amount()
def on_discard(self):
self.db_set("status", "Cancelled")
def validate(self):
self.validate_included_fee()
self.validate_duplicate_references()
self.validate_currency()
@@ -132,6 +139,8 @@ class BankTransaction(Document):
self.set_status()
def on_cancel(self):
self.ignore_linked_doctypes = ["GL Entry"]
for payment_entry in self.payment_entries:
self.delink_payment_entry(payment_entry)
@@ -307,6 +316,40 @@ class BankTransaction(Document):
self.party_type, self.party = result
def validate_included_fee(self):
"""
The included_fee is only handled for withdrawals. An included_fee for a deposit, is not credited to the account and is
therefore outside of the deposit value and can be larger than the deposit itself.
"""
if self.included_fee and self.withdrawal:
if self.included_fee > self.withdrawal:
frappe.throw(_("Included fee is bigger than the withdrawal itself."))
def handle_excluded_fee(self):
# Include the excluded fee on validate to handle all further processing the same
excluded_fee = flt(self.excluded_fee)
if excluded_fee <= 0:
return
# Suppress a negative deposit (aka withdrawal), likely not intendend
if flt(self.deposit) > 0 and (flt(self.deposit) - excluded_fee) < 0:
frappe.throw(_("The Excluded Fee is bigger than the Deposit it is deducted from."))
# Enforce directionality
if flt(self.deposit) > 0 and flt(self.withdrawal) > 0:
frappe.throw(
_("Only one of Deposit or Withdrawal should be non-zero when applying an Excluded Fee.")
)
if flt(self.deposit) > 0:
self.deposit = flt(self.deposit) - excluded_fee
# A fee applied to deposit and withdrawal equal 0 become a withdrawal
elif flt(self.withdrawal) >= 0:
self.withdrawal = flt(self.withdrawal) + excluded_fee
self.included_fee = flt(self.included_fee) + excluded_fee
self.excluded_fee = 0
@frappe.whitelist()
def get_doctypes_for_bank_reconciliation():
@@ -332,11 +375,12 @@ def get_clearance_details(transaction, payment_entry, bt_allocations, gl_entries
("unallocated_amount", "bank_account"),
as_dict=True,
)
bt_bank_account = frappe.db.get_value("Bank Account", bt.bank_account, "account")
if bt.bank_account != gl_bank_account:
if bt_bank_account != gl_bank_account:
frappe.throw(
_("Bank Account {} in Bank Transaction {} is not matching with Bank Account {}").format(
bt.bank_account, payment_entry.payment_entry, gl_bank_account
bt_bank_account, payment_entry.payment_entry, gl_bank_account
)
)

View File

@@ -2,27 +2,20 @@
# License: GNU General Public License v3. See license.txt
import frappe
from frappe.tests import IntegrationTestCase
from frappe.utils import nowdate
from erpnext.accounts.doctype.bank_transaction.test_bank_transaction import create_bank_account
from erpnext.tests.utils import ERPNextTestSuite
IBAN_1 = "DE02000000003716541159"
IBAN_2 = "DE02500105170137075030"
class TestAutoMatchParty(IntegrationTestCase):
@classmethod
def setUpClass(cls):
class TestAutoMatchParty(ERPNextTestSuite):
def setUp(self):
create_bank_account()
frappe.db.set_single_value("Accounts Settings", "enable_party_matching", 1)
frappe.db.set_single_value("Accounts Settings", "enable_fuzzy_matching", 1)
return super().setUpClass()
@classmethod
def tearDownClass(cls):
frappe.db.set_single_value("Accounts Settings", "enable_party_matching", 0)
frappe.db.set_single_value("Accounts Settings", "enable_fuzzy_matching", 0)
def test_match_by_account_number(self):
create_supplier_for_match(account_no=IBAN_1[11:])

View File

@@ -6,7 +6,6 @@ import json
import frappe
from frappe import utils
from frappe.model.docstatus import DocStatus
from frappe.tests import IntegrationTestCase
from erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool import (
get_linked_payments,
@@ -19,12 +18,10 @@ from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_paymen
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
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
from erpnext.tests.utils import if_lending_app_installed
EXTRA_TEST_RECORD_DEPENDENCIES = ["Item", "Cost Center"]
from erpnext.tests.utils import ERPNextTestSuite, if_lending_app_installed
class TestBankTransaction(IntegrationTestCase):
class TestBankTransaction(ERPNextTestSuite):
def setUp(self):
make_pos_profile()
@@ -385,7 +382,7 @@ def add_vouchers(gl_account="_Test Bank - _TC"):
frappe.get_doc(
{
"doctype": "Customer",
"customer_group": "All Customer Groups",
"customer_group": "Individual",
"customer_type": "Company",
"customer_name": "Poore Simon's",
}
@@ -416,7 +413,7 @@ def add_vouchers(gl_account="_Test Bank - _TC"):
frappe.get_doc(
{
"doctype": "Customer",
"customer_group": "All Customer Groups",
"customer_group": "Individual",
"customer_type": "Company",
"customer_name": "Fayva",
}

View File

@@ -0,0 +1,134 @@
# Copyright (c) 2025, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt
import frappe
from erpnext.tests.utils import ERPNextTestSuite
class TestBankTransactionFees(ERPNextTestSuite):
def test_included_fee_throws(self):
"""A fee that's part of a withdrawal cannot be bigger than the
withdrawal itself."""
bt = frappe.new_doc("Bank Transaction")
bt.withdrawal = 100
bt.included_fee = 101
self.assertRaises(frappe.ValidationError, bt.validate_included_fee)
def test_included_fee_allows_equal(self):
"""A fee that's part of a withdrawal may be equal to the withdrawal
amount (only the fee was deducted from the account)."""
bt = frappe.new_doc("Bank Transaction")
bt.withdrawal = 100
bt.included_fee = 100
bt.validate_included_fee()
def test_included_fee_allows_for_deposit(self):
"""For deposits, a fee may be recorded separately without limiting the
received amount."""
bt = frappe.new_doc("Bank Transaction")
bt.deposit = 10
bt.included_fee = 999
bt.validate_included_fee()
def test_excluded_fee_noop_when_zero(self):
"""When there is no excluded fee to apply, the amounts should remain
unchanged."""
bt = frappe.new_doc("Bank Transaction")
bt.deposit = 100
bt.withdrawal = 0
bt.included_fee = 5
bt.excluded_fee = 0
bt.handle_excluded_fee()
self.assertEqual(bt.deposit, 100)
self.assertEqual(bt.withdrawal, 0)
self.assertEqual(bt.included_fee, 5)
self.assertEqual(bt.excluded_fee, 0)
def test_excluded_fee_throws_when_exceeds_deposit(self):
"""A fee deducted from an incoming payment must not exceed the incoming
amount (else it would be a withdrawal, a conversion we don't support)."""
bt = frappe.new_doc("Bank Transaction")
bt.deposit = 10
bt.excluded_fee = 11
self.assertRaises(frappe.ValidationError, bt.handle_excluded_fee)
def test_excluded_fee_throws_when_both_deposit_and_withdrawal_are_set(self):
"""A transaction must be either incoming or outgoing when applying a
fee, not both."""
bt = frappe.new_doc("Bank Transaction")
bt.deposit = 10
bt.withdrawal = 10
bt.excluded_fee = 1
self.assertRaises(frappe.ValidationError, bt.handle_excluded_fee)
def test_excluded_fee_deducts_from_deposit(self):
"""When a fee is deducted from an incoming payment, the net received
amount decreases and the fee is tracked as included."""
bt = frappe.new_doc("Bank Transaction")
bt.deposit = 100
bt.withdrawal = 0
bt.included_fee = 2
bt.excluded_fee = 5
bt.handle_excluded_fee()
self.assertEqual(bt.deposit, 95)
self.assertEqual(bt.withdrawal, 0)
self.assertEqual(bt.included_fee, 7)
self.assertEqual(bt.excluded_fee, 0)
def test_excluded_fee_can_reduce_an_incoming_payment_to_zero(self):
"""A separately-deducted fee may reduce an incoming payment to zero,
while still tracking the fee."""
bt = frappe.new_doc("Bank Transaction")
bt.deposit = 5
bt.withdrawal = 0
bt.included_fee = 0
bt.excluded_fee = 5
bt.handle_excluded_fee()
self.assertEqual(bt.deposit, 0)
self.assertEqual(bt.withdrawal, 0)
self.assertEqual(bt.included_fee, 5)
self.assertEqual(bt.excluded_fee, 0)
def test_excluded_fee_increases_outgoing_payment(self):
"""When a separately-deducted fee is provided for an outgoing payment,
the total money leaving increases and the fee is tracked."""
bt = frappe.new_doc("Bank Transaction")
bt.deposit = 0
bt.withdrawal = 100
bt.included_fee = 2
bt.excluded_fee = 5
bt.handle_excluded_fee()
self.assertEqual(bt.deposit, 0)
self.assertEqual(bt.withdrawal, 105)
self.assertEqual(bt.included_fee, 7)
self.assertEqual(bt.excluded_fee, 0)
def test_excluded_fee_turns_zero_amount_into_withdrawal(self):
"""If only an excluded fee is provided, it should be treated as an
outgoing payment and the fee is then tracked as included."""
bt = frappe.new_doc("Bank Transaction")
bt.deposit = 0
bt.withdrawal = 0
bt.included_fee = 0
bt.excluded_fee = 5
bt.handle_excluded_fee()
self.assertEqual(bt.deposit, 0)
self.assertEqual(bt.withdrawal, 5)
self.assertEqual(bt.included_fee, 5)
self.assertEqual(bt.excluded_fee, 0)

View File

@@ -2,8 +2,10 @@
# See license.txt
# import frappe
from frappe.tests import IntegrationTestCase
class TestBisectAccountingStatements(IntegrationTestCase):
from erpnext.tests.utils import ERPNextTestSuite
class TestBisectAccountingStatements(ERPNextTestSuite):
pass

View File

@@ -2,8 +2,10 @@
# See license.txt
# import frappe
from frappe.tests import IntegrationTestCase
class TestBisectNodes(IntegrationTestCase):
from erpnext.tests.utils import ERPNextTestSuite
class TestBisectNodes(ERPNextTestSuite):
pass

View File

@@ -4,16 +4,6 @@ frappe.provide("erpnext.accounts.dimensions");
frappe.ui.form.on("Budget", {
onload: function (frm) {
frm.set_query("account", "accounts", function () {
return {
filters: {
company: frm.doc.company,
report_type: "Profit and Loss",
is_group: 0,
},
};
});
frm.set_query("monthly_distribution", function () {
return {
filters: {
@@ -22,6 +12,15 @@ frappe.ui.form.on("Budget", {
};
});
frm.set_query("account", function () {
return {
filters: {
is_group: 0,
company: frm.doc.company,
},
};
});
erpnext.accounts.dimensions.setup_dimension_filters(frm, frm.doctype);
frappe.db.get_single_value("Accounts Settings", "use_legacy_budget_controller").then((value) => {
if (value) {
@@ -30,8 +29,20 @@ frappe.ui.form.on("Budget", {
});
},
refresh: function (frm) {
refresh: async function (frm) {
frm.trigger("toggle_reqd_fields");
if (!frm.doc.__islocal && frm.doc.docstatus == 1) {
frm.add_custom_button(
__("Revise Budget"),
function () {
frm.events.revise_budget_action(frm);
},
__("Actions")
);
}
toggle_distribution_fields(frm);
},
budget_against: function (frm) {
@@ -39,6 +50,20 @@ frappe.ui.form.on("Budget", {
frm.trigger("toggle_reqd_fields");
},
budget_amount(frm) {
if (frm.doc.budget_distribution?.length) {
frm.doc.budget_distribution.forEach((row) => {
row.amount = flt((row.percent / 100) * frm.doc.budget_amount, 2);
});
set_total_budget_amount(frm);
frm.refresh_field("budget_distribution");
}
},
distribute_equally: function (frm) {
toggle_distribution_fields(frm);
},
set_null_value: function (frm) {
if (frm.doc.budget_against == "Cost Center") {
frm.set_value("project", null);
@@ -51,4 +76,68 @@ frappe.ui.form.on("Budget", {
frm.toggle_reqd("cost_center", frm.doc.budget_against == "Cost Center");
frm.toggle_reqd("project", frm.doc.budget_against == "Project");
},
revise_budget_action: function (frm) {
frappe.confirm(
__(
"Are you sure you want to revise this budget? The current budget will be cancelled and a new draft will be created."
),
function () {
frappe.call({
method: "erpnext.accounts.doctype.budget.budget.revise_budget",
args: { budget_name: frm.doc.name },
callback: function (r) {
if (r.message) {
frappe.msgprint(__("New revised budget created successfully"));
frappe.set_route("Form", "Budget", r.message);
}
},
});
},
function () {
frappe.msgprint(__("Revision cancelled"));
}
);
},
});
frappe.ui.form.on("Budget Distribution", {
amount(frm, cdt, cdn) {
let row = frappe.get_doc(cdt, cdn);
if (frm.doc.budget_amount) {
row.percent = flt((row.amount / frm.doc.budget_amount) * 100, 2);
set_total_budget_amount(frm);
frm.refresh_field("budget_distribution");
}
},
percent(frm, cdt, cdn) {
let row = frappe.get_doc(cdt, cdn);
if (frm.doc.budget_amount) {
row.amount = flt((row.percent / 100) * frm.doc.budget_amount, 2);
set_total_budget_amount(frm);
frm.refresh_field("budget_distribution");
}
},
});
function set_total_budget_amount(frm) {
let total = 0;
(frm.doc.budget_distribution || []).forEach((row) => {
total += flt(row.amount);
});
frm.set_value("budget_distribution_total", total);
}
function toggle_distribution_fields(frm) {
const grid = frm.fields_dict.budget_distribution.grid;
["amount", "percent"].forEach((field) => {
grid.update_docfield_property(field, "read_only", frm.doc.distribute_equally);
});
grid.refresh();
}

View File

@@ -12,10 +12,23 @@
"company",
"cost_center",
"project",
"fiscal_year",
"account",
"column_break_3",
"monthly_distribution",
"amended_from",
"from_fiscal_year",
"to_fiscal_year",
"budget_start_date",
"budget_end_date",
"distribution_frequency",
"budget_amount",
"section_break_nwug",
"distribute_equally",
"section_break_fpdt",
"budget_distribution",
"section_break_wkqb",
"column_break_paum",
"column_break_nwor",
"budget_distribution_total",
"section_break_6",
"applicable_on_material_request",
"action_if_annual_budget_exceeded_on_mr",
@@ -32,8 +45,8 @@
"applicable_on_cumulative_expense",
"action_if_annual_exceeded_on_cumulative_expense",
"action_if_accumulated_monthly_exceeded_on_cumulative_expense",
"section_break_21",
"accounts"
"section_break_kkan",
"revision_of"
],
"fields": [
{
@@ -44,6 +57,7 @@
"in_standard_filter": 1,
"label": "Budget Against",
"options": "\nCost Center\nProject",
"read_only_depends_on": "eval: doc.revision_of",
"reqd": 1
},
{
@@ -53,6 +67,7 @@
"in_standard_filter": 1,
"label": "Company",
"options": "Company",
"read_only_depends_on": "eval: doc.revision_of",
"reqd": 1
},
{
@@ -62,7 +77,8 @@
"in_global_search": 1,
"in_standard_filter": 1,
"label": "Cost Center",
"options": "Cost Center"
"options": "Cost Center",
"read_only_depends_on": "eval: doc.revision_of"
},
{
"depends_on": "eval:doc.budget_against == 'Project'",
@@ -70,28 +86,13 @@
"fieldtype": "Link",
"in_standard_filter": 1,
"label": "Project",
"options": "Project"
},
{
"fieldname": "fiscal_year",
"fieldtype": "Link",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Fiscal Year",
"options": "Fiscal Year",
"reqd": 1
"options": "Project",
"read_only_depends_on": "eval: doc.revision_of"
},
{
"fieldname": "column_break_3",
"fieldtype": "Column Break"
},
{
"depends_on": "eval:in_list([\"Stop\", \"Warn\"], doc.action_if_accumulated_monthly_budget_exceeded_on_po || doc.action_if_accumulated_monthly_budget_exceeded_on_mr || doc.action_if_accumulated_monthly_budget_exceeded_on_actual)",
"fieldname": "monthly_distribution",
"fieldtype": "Link",
"label": "Monthly Distribution",
"options": "Monthly Distribution"
},
{
"fieldname": "amended_from",
"fieldtype": "Link",
@@ -187,22 +188,12 @@
"options": "\nStop\nWarn\nIgnore"
},
{
"fieldname": "section_break_21",
"fieldtype": "Section Break"
},
{
"fieldname": "accounts",
"fieldtype": "Table",
"label": "Budget Accounts",
"options": "Budget Account",
"reqd": 1
},
{
"default": "BUDGET-.########",
"fieldname": "naming_series",
"fieldtype": "Select",
"label": "Series",
"no_copy": 1,
"options": "BUDGET-.YYYY.-",
"options": "BUDGET-.########",
"print_hide": 1,
"reqd": 1,
"set_only_once": 1
@@ -232,13 +223,117 @@
"fieldtype": "Select",
"label": "Action if Accumulative Monthly Budget Exceeded on Cumulative Expense",
"options": "\nStop\nWarn\nIgnore"
},
{
"fieldname": "section_break_fpdt",
"fieldtype": "Section Break",
"hide_border": 1
},
{
"fieldname": "budget_distribution",
"fieldtype": "Table",
"label": "Budget Distribution",
"options": "Budget Distribution"
},
{
"fieldname": "account",
"fieldtype": "Link",
"in_list_view": 1,
"label": "Account",
"options": "Account",
"read_only_depends_on": "eval: doc.revision_of",
"reqd": 1
},
{
"fieldname": "budget_amount",
"fieldtype": "Currency",
"label": "Budget Amount",
"reqd": 1
},
{
"fieldname": "section_break_kkan",
"fieldtype": "Section Break"
},
{
"fieldname": "revision_of",
"fieldtype": "Data",
"label": "Revision Of",
"no_copy": 1,
"read_only": 1
},
{
"default": "1",
"fieldname": "distribute_equally",
"fieldtype": "Check",
"label": "Distribute Equally"
},
{
"fieldname": "section_break_nwug",
"fieldtype": "Section Break",
"hide_border": 1
},
{
"fieldname": "from_fiscal_year",
"fieldtype": "Link",
"label": "From Fiscal Year",
"options": "Fiscal Year",
"read_only_depends_on": "eval: doc.revision_of",
"reqd": 1
},
{
"fieldname": "to_fiscal_year",
"fieldtype": "Link",
"label": "To Fiscal Year",
"options": "Fiscal Year",
"read_only_depends_on": "eval: doc.revision_of",
"reqd": 1
},
{
"fieldname": "budget_start_date",
"fieldtype": "Date",
"hidden": 1,
"label": "Budget Start Date"
},
{
"fieldname": "budget_end_date",
"fieldtype": "Date",
"hidden": 1,
"label": "Budget End Date"
},
{
"default": "Monthly",
"fieldname": "distribution_frequency",
"fieldtype": "Select",
"label": "Distribution Frequency",
"options": "Monthly\nQuarterly\nHalf-Yearly\nYearly",
"read_only_depends_on": "eval: doc.revision_of",
"reqd": 1
},
{
"fieldname": "section_break_wkqb",
"fieldtype": "Section Break"
},
{
"fieldname": "column_break_paum",
"fieldtype": "Column Break"
},
{
"fieldname": "column_break_nwor",
"fieldtype": "Column Break"
},
{
"fieldname": "budget_distribution_total",
"fieldtype": "Currency",
"label": "Budget Distribution Total",
"no_copy": 1,
"read_only": 1
}
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"is_submittable": 1,
"links": [],
"modified": "2025-06-16 15:57:13.114981",
"modified": "2025-12-10 02:35:01.197613",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Budget",

View File

@@ -2,10 +2,14 @@
# For license information, please see license.txt
from datetime import date
import frappe
from frappe import _
from frappe.model.document import Document
from frappe.utils import add_months, flt, fmt_money, get_last_day, getdate
from frappe.query_builder.functions import Sum
from frappe.utils import add_months, flt, fmt_money, get_last_day, getdate, month_diff
from frappe.utils.data import get_first_day, nowdate
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
get_accounting_dimensions,
@@ -30,9 +34,9 @@ class Budget(Document):
if TYPE_CHECKING:
from frappe.types import DF
from erpnext.accounts.doctype.budget_account.budget_account import BudgetAccount
from erpnext.accounts.doctype.budget_distribution.budget_distribution import BudgetDistribution
accounts: DF.Table[BudgetAccount]
account: DF.Link
action_if_accumulated_monthly_budget_exceeded: DF.Literal["", "Stop", "Warn", "Ignore"]
action_if_accumulated_monthly_budget_exceeded_on_mr: DF.Literal["", "Stop", "Warn", "Ignore"]
action_if_accumulated_monthly_budget_exceeded_on_po: DF.Literal["", "Stop", "Warn", "Ignore"]
@@ -47,73 +51,118 @@ class Budget(Document):
applicable_on_material_request: DF.Check
applicable_on_purchase_order: DF.Check
budget_against: DF.Literal["", "Cost Center", "Project"]
budget_amount: DF.Currency
budget_distribution: DF.Table[BudgetDistribution]
budget_distribution_total: DF.Currency
budget_end_date: DF.Date | None
budget_start_date: DF.Date | None
company: DF.Link
cost_center: DF.Link | None
fiscal_year: DF.Link
monthly_distribution: DF.Link | None
naming_series: DF.Literal["BUDGET-.YYYY.-"]
distribute_equally: DF.Check
distribution_frequency: DF.Literal["Monthly", "Quarterly", "Half-Yearly", "Yearly"]
from_fiscal_year: DF.Link
naming_series: DF.Literal["BUDGET-.########"]
project: DF.Link | None
revision_of: DF.Data | None
to_fiscal_year: DF.Link
# end: auto-generated types
def validate(self):
if not self.get(frappe.scrub(self.budget_against)):
frappe.throw(_("{0} is mandatory").format(self.budget_against))
self.validate_budget_amount()
self.validate_fiscal_year()
self.set_fiscal_year_dates()
self.validate_duplicate()
self.validate_accounts()
self.validate_account()
self.set_null_value()
self.validate_applicable_for()
self.validate_existing_expenses()
def validate_budget_amount(self):
if self.budget_amount <= 0:
frappe.throw(_("Budget Amount can not be {0}.").format(self.budget_amount))
def validate_fiscal_year(self):
if self.from_fiscal_year:
self.validate_fiscal_year_company(self.from_fiscal_year, self.company)
if self.to_fiscal_year:
self.validate_fiscal_year_company(self.to_fiscal_year, self.company)
def validate_fiscal_year_company(self, fiscal_year, company):
linked_companies = frappe.get_all(
"Fiscal Year Company", filters={"parent": fiscal_year}, pluck="company"
)
if linked_companies and company not in linked_companies:
frappe.throw(_("Fiscal Year {0} is not available for Company {1}.").format(fiscal_year, company))
def set_fiscal_year_dates(self):
if self.from_fiscal_year:
self.budget_start_date = frappe.get_cached_value(
"Fiscal Year", self.from_fiscal_year, "year_start_date"
)
if self.to_fiscal_year:
self.budget_end_date = frappe.get_cached_value(
"Fiscal Year", self.to_fiscal_year, "year_end_date"
)
if self.budget_start_date > self.budget_end_date:
frappe.throw(_("From Fiscal Year cannot be greater than To Fiscal Year"))
def validate_duplicate(self):
budget_against_field = frappe.scrub(self.budget_against)
budget_against = self.get(budget_against_field)
account = self.account
if not account:
return
accounts = [d.account for d in self.accounts] or []
existing_budget = frappe.db.sql(
"""
select
b.name, ba.account from `tabBudget` b, `tabBudget Account` ba
where
ba.parent = b.name and b.docstatus < 2 and b.company = {} and {}={} and
b.fiscal_year={} and b.name != {} and ba.account in ({}) """.format(
"%s", budget_against_field, "%s", "%s", "%s", ",".join(["%s"] * len(accounts))
),
(self.company, budget_against, self.fiscal_year, self.name, *tuple(accounts)),
as_dict=1,
f"""
SELECT name, account
FROM `tabBudget`
WHERE
docstatus < 2
AND company = %s
AND {budget_against_field} = %s
AND account = %s
AND name != %s
AND (
(SELECT year_start_date FROM `tabFiscal Year` WHERE name = from_fiscal_year) <= %s
AND (SELECT year_end_date FROM `tabFiscal Year` WHERE name = to_fiscal_year) >= %s
)
""",
(self.company, budget_against, account, self.name, self.budget_end_date, self.budget_start_date),
as_dict=True,
)
for d in existing_budget:
if existing_budget:
d = existing_budget[0]
frappe.throw(
_(
"Another Budget record '{0}' already exists against {1} '{2}' and account '{3}' for fiscal year {4}"
).format(d.name, self.budget_against, budget_against, d.account, self.fiscal_year),
"Another Budget record '{0}' already exists against {1} '{2}' and account '{3}' with overlapping fiscal years."
).format(d.name, self.budget_against, budget_against, d.account),
DuplicateBudgetError,
)
def validate_accounts(self):
account_list = []
for d in self.get("accounts"):
if d.account:
account_details = frappe.get_cached_value(
"Account", d.account, ["is_group", "company", "report_type"], as_dict=1
def validate_account(self):
if not self.account:
frappe.throw(_("Account is mandatory"))
account_details = frappe.get_cached_value(
"Account", self.account, ["is_group", "company", "report_type"], as_dict=1
)
if account_details.is_group:
frappe.throw(_("Budget cannot be assigned against Group Account {0}").format(self.account))
elif account_details.company != self.company:
frappe.throw(_("Account {0} does not belong to company {1}").format(self.account, self.company))
elif account_details.report_type != "Profit and Loss":
frappe.throw(
_("Budget cannot be assigned against {0}, as it's not an Income or Expense account").format(
self.account
)
if account_details.is_group:
frappe.throw(_("Budget cannot be assigned against Group Account {0}").format(d.account))
elif account_details.company != self.company:
frappe.throw(
_("Account {0} does not belongs to company {1}").format(d.account, self.company)
)
elif account_details.report_type != "Profit and Loss":
frappe.throw(
_(
"Budget cannot be assigned against {0}, as it's not an Income or Expense account"
).format(d.account)
)
if d.account in account_list:
frappe.throw(_("Account {0} has been entered multiple times").format(d.account))
else:
account_list.append(d.account)
)
def set_null_value(self):
if self.budget_against == "Cost Center":
@@ -139,30 +188,232 @@ class Budget(Document):
):
self.applicable_on_booking_actual_expenses = 1
def validate_existing_expenses(self):
if self.is_new() and self.revision_of:
return
def validate_expense_against_budget(args, expense_amount=0):
args = frappe._dict(args)
params = frappe._dict(
{
"company": self.company,
"account": self.account,
"budget_start_date": self.budget_start_date,
"budget_end_date": self.budget_end_date,
"budget_against_field": frappe.scrub(self.budget_against),
"budget_against_doctype": frappe.unscrub(self.budget_against),
}
)
params[params.budget_against_field] = self.get(params.budget_against_field)
if frappe.get_cached_value("DocType", params.budget_against_doctype, "is_tree"):
params.is_tree = True
else:
params.is_tree = False
actual_spent = get_actual_expense(params)
if actual_spent > self.budget_amount:
frappe.throw(
_(
"Spending for Account {0} ({1}) between {2} and {3} "
"has already exceeded the new allocated budget. "
"Spent: {4}, Budget: {5}"
).format(
frappe.bold(self.account),
frappe.bold(self.company),
frappe.bold(self.budget_start_date),
frappe.bold(self.budget_end_date),
frappe.bold(frappe.utils.fmt_money(actual_spent)),
frappe.bold(frappe.utils.fmt_money(self.budget_amount)),
),
title=_("Budget Limit Exceeded"),
)
def before_save(self):
self.allocate_budget()
self.budget_distribution_total = sum(flt(row.amount) for row in self.budget_distribution)
def on_update(self):
self.validate_distribution_totals()
def allocate_budget(self):
if self._should_skip_allocation():
return
if self._should_recalculate_manual_distribution():
self._recalculate_manual_distribution()
return
if not self.should_regenerate_budget_distribution():
return
self._regenerate_distribution()
def _should_skip_allocation(self):
return self.revision_of and not self.distribute_equally
def _should_recalculate_manual_distribution(self):
return (
not self.distribute_equally
and bool(self.budget_distribution)
and self._is_only_budget_amount_changed()
)
def _is_only_budget_amount_changed(self):
old = self.get_doc_before_save()
if not old:
return False
return (
old.budget_amount != self.budget_amount
and old.distribution_frequency == self.distribution_frequency
and old.budget_start_date == self.budget_start_date
and old.budget_end_date == self.budget_end_date
)
def _recalculate_manual_distribution(self):
for row in self.budget_distribution:
row.amount = flt((row.percent / 100) * self.budget_amount, 3)
def should_regenerate_budget_distribution(self):
"""Check whether budget distribution should be recalculated."""
old_doc = self.get_doc_before_save() if not self.is_new() else None
if not old_doc or not self.budget_distribution:
return True
if old_doc:
changed_fields = [
"from_fiscal_year",
"to_fiscal_year",
"budget_amount",
"distribution_frequency",
]
for field in changed_fields:
if old_doc.get(field) != self.get(field):
return True
return bool(self.distribute_equally)
def _regenerate_distribution(self):
self.set("budget_distribution", [])
periods = self.get_budget_periods()
total_periods = len(periods)
row_percent = 100 / total_periods if total_periods else 0
for start_date, end_date in periods:
row = self.append("budget_distribution", {})
row.start_date = start_date
row.end_date = end_date
self.add_allocated_amount(row, row_percent)
self.budget_distribution_total = self.budget_amount
def get_budget_periods(self):
"""Return list of (start_date, end_date) tuples based on frequency."""
frequency = self.distribution_frequency
periods = []
start_date = getdate(self.budget_start_date)
end_date = getdate(self.budget_end_date)
while start_date <= end_date:
period_start = get_first_day(start_date)
period_end = self.get_period_end(period_start, frequency)
period_end = min(period_end, end_date)
periods.append((period_start, period_end))
start_date = add_months(period_start, self.get_month_increment(frequency))
return periods
def get_period_end(self, start_date, frequency):
"""Return the correct end date for a given frequency."""
if frequency == "Monthly":
return get_last_day(start_date)
elif frequency == "Quarterly":
return get_last_day(add_months(start_date, 2))
elif frequency == "Half-Yearly":
return get_last_day(add_months(start_date, 5))
else: # Yearly
return get_last_day(add_months(start_date, 11))
def get_month_increment(self, frequency):
"""Return how many months to move forward for the next period."""
return {
"Monthly": 1,
"Quarterly": 3,
"Half-Yearly": 6,
"Yearly": 12,
}.get(frequency, 1)
def add_allocated_amount(self, row, row_percent):
row.amount = flt(self.budget_amount * row_percent / 100, 3)
row.percent = flt(row_percent, 3)
def validate_distribution_totals(self):
if self.should_regenerate_budget_distribution():
return
total_amount = sum(d.amount for d in self.budget_distribution)
total_percent = sum(d.percent for d in self.budget_distribution)
if flt(abs(total_amount - self.budget_amount), 2) > 0.10:
frappe.throw(
_("Total distributed amount {0} must be equal to Budget Amount {1}").format(
flt(total_amount, 2), self.budget_amount
)
)
if flt(abs(total_percent - 100), 2) > 0.10:
frappe.throw(
_("Total distribution percent must equal 100 (currently {0})").format(round(total_percent, 2))
)
def validate_expense_against_budget(params, expense_amount=0):
params = frappe._dict(params)
if not frappe.db.count("Budget", cache=True):
return
if not args.fiscal_year:
args.fiscal_year = get_fiscal_year(args.get("posting_date"), company=args.get("company"))[0]
if not params.fiscal_year:
params.fiscal_year = get_fiscal_year(params.get("posting_date"), company=params.get("company"))[0]
if args.get("company"):
frappe.flags.exception_approver_role = frappe.get_cached_value(
"Company", args.get("company"), "exception_budget_approver_role"
)
posting_date = getdate(params.get("posting_date"))
posting_fiscal_year = get_fiscal_year(posting_date, company=params.get("company"))[0]
year_start_date, year_end_date = get_fiscal_year_date_range(posting_fiscal_year, posting_fiscal_year)
if not frappe.db.get_value("Budget", {"fiscal_year": args.fiscal_year, "company": args.company}):
budget_exists = frappe.db.sql(
"""
select name
from `tabBudget`
where company = %s
and docstatus = 1
and (SELECT year_start_date FROM `tabFiscal Year` WHERE name = from_fiscal_year) <= %s
and (SELECT year_end_date FROM `tabFiscal Year` WHERE name = to_fiscal_year) >= %s
limit 1
""",
(params.company, year_end_date, year_start_date),
)
if not budget_exists:
return
if not args.account:
args.account = args.get("expense_account")
if params.get("company"):
frappe.flags.exception_approver_role = frappe.get_cached_value(
"Company", params.get("company"), "exception_budget_approver_role"
)
if not (args.get("account") and args.get("cost_center")) and args.item_code:
args.cost_center, args.account = get_item_details(args)
if not params.account:
params.account = params.get("expense_account")
if not args.account:
if not params.get("expense_account") and params.get("account"):
params.expense_account = params.account
if not (params.get("account") and params.get("cost_center")) and params.item_code:
params.cost_center, params.account = get_item_details(params)
if not params.account:
return
default_dimensions = [
@@ -180,59 +431,78 @@ def validate_expense_against_budget(args, expense_amount=0):
budget_against = dimension.get("fieldname")
if (
args.get(budget_against)
and args.account
and (frappe.get_cached_value("Account", args.account, "root_type") == "Expense")
params.get(budget_against)
and params.account
and (frappe.get_cached_value("Account", params.account, "root_type") == "Expense")
):
doctype = dimension.get("document_type")
if frappe.get_cached_value("DocType", doctype, "is_tree"):
lft, rgt = frappe.get_cached_value(doctype, args.get(budget_against), ["lft", "rgt"])
lft, rgt = frappe.get_cached_value(doctype, params.get(budget_against), ["lft", "rgt"])
condition = f"""and exists(select name from `tab{doctype}`
where lft<={lft} and rgt>={rgt} and name=b.{budget_against})""" # nosec
args.is_tree = True
params.is_tree = True
else:
condition = f"and b.{budget_against}={frappe.db.escape(args.get(budget_against))}"
args.is_tree = False
condition = f"and b.{budget_against}={frappe.db.escape(params.get(budget_against))}"
params.is_tree = False
args.budget_against_field = budget_against
args.budget_against_doctype = doctype
params.budget_against_field = budget_against
params.budget_against_doctype = doctype
budget_records = frappe.db.sql(
f"""
select
b.{budget_against} as budget_against, ba.budget_amount, b.monthly_distribution,
ifnull(b.applicable_on_material_request, 0) as for_material_request,
ifnull(applicable_on_purchase_order, 0) as for_purchase_order,
ifnull(applicable_on_booking_actual_expenses,0) as for_actual_expenses,
b.action_if_annual_budget_exceeded, b.action_if_accumulated_monthly_budget_exceeded,
b.action_if_annual_budget_exceeded_on_mr, b.action_if_accumulated_monthly_budget_exceeded_on_mr,
b.action_if_annual_budget_exceeded_on_po, b.action_if_accumulated_monthly_budget_exceeded_on_po
from
`tabBudget` b, `tabBudget Account` ba
where
b.name=ba.parent and b.fiscal_year=%s
and ba.account=%s and b.docstatus=1
SELECT
b.name,
b.{budget_against} AS budget_against,
b.budget_amount,
b.from_fiscal_year,
b.to_fiscal_year,
b.budget_start_date,
b.budget_end_date,
IFNULL(b.applicable_on_material_request, 0) AS for_material_request,
IFNULL(b.applicable_on_purchase_order, 0) AS for_purchase_order,
IFNULL(b.applicable_on_booking_actual_expenses, 0) AS for_actual_expenses,
b.action_if_annual_budget_exceeded,
b.action_if_accumulated_monthly_budget_exceeded,
b.action_if_annual_budget_exceeded_on_mr,
b.action_if_accumulated_monthly_budget_exceeded_on_mr,
b.action_if_annual_budget_exceeded_on_po,
b.action_if_accumulated_monthly_budget_exceeded_on_po
FROM
`tabBudget` b
WHERE
b.company = %s
AND b.docstatus = 1
AND %s BETWEEN b.budget_start_date AND b.budget_end_date
AND b.account = %s
{condition}
""",
(args.fiscal_year, args.account),
""",
(params.company, params.posting_date, params.account),
as_dict=True,
) # nosec
if budget_records:
validate_budget_records(args, budget_records, expense_amount)
validate_budget_records(params, budget_records, expense_amount)
def validate_budget_records(args, budget_records, expense_amount):
def validate_budget_records(params, budget_records, expense_amount):
for budget in budget_records:
if flt(budget.budget_amount):
yearly_action, monthly_action = get_actions(args, budget)
args["for_material_request"] = budget.for_material_request
args["for_purchase_order"] = budget.for_purchase_order
yearly_action, monthly_action = get_actions(params, budget)
params["for_material_request"] = budget.for_material_request
params["for_purchase_order"] = budget.for_purchase_order
params["from_fiscal_year"], params["to_fiscal_year"] = (
budget.from_fiscal_year,
budget.to_fiscal_year,
)
params["budget_start_date"], params["budget_end_date"] = (
budget.budget_start_date,
budget.budget_end_date,
)
if yearly_action in ("Stop", "Warn"):
compare_expense_with_budget(
args,
params,
flt(budget.budget_amount),
_("Annual"),
yearly_action,
@@ -241,14 +511,12 @@ def validate_budget_records(args, budget_records, expense_amount):
)
if monthly_action in ["Stop", "Warn"]:
budget_amount = get_accumulated_monthly_budget(
budget.monthly_distribution, args.posting_date, args.fiscal_year, budget.budget_amount
)
budget_amount = get_accumulated_monthly_budget(budget.name, params.posting_date)
args["month_end_date"] = get_last_day(args.posting_date)
params["month_end_date"] = get_last_day(params.posting_date)
compare_expense_with_budget(
args,
params,
budget_amount,
_("Accumulated Monthly"),
monthly_action,
@@ -257,40 +525,41 @@ def validate_budget_records(args, budget_records, expense_amount):
)
def compare_expense_with_budget(args, budget_amount, action_for, action, budget_against, amount=0):
args.actual_expense, args.requested_amount, args.ordered_amount = get_actual_expense(args), 0, 0
def compare_expense_with_budget(params, budget_amount, action_for, action, budget_against, amount=0):
params.actual_expense, params.requested_amount, params.ordered_amount = get_actual_expense(params), 0, 0
if not amount:
args.requested_amount, args.ordered_amount = get_requested_amount(args), get_ordered_amount(args)
params.requested_amount, params.ordered_amount = (
get_requested_amount(params),
get_ordered_amount(params),
)
if args.get("doctype") == "Material Request" and args.for_material_request:
amount = args.requested_amount + args.ordered_amount
if params.get("doctype") == "Material Request" and params.for_material_request:
amount = params.requested_amount + params.ordered_amount
elif args.get("doctype") == "Purchase Order" and args.for_purchase_order:
amount = args.ordered_amount
elif params.get("doctype") == "Purchase Order" and params.for_purchase_order:
amount = params.ordered_amount
total_expense = args.actual_expense + amount
total_expense = params.actual_expense + amount
if total_expense > budget_amount:
if args.actual_expense > budget_amount:
error_tense = _("is already")
diff = args.actual_expense - budget_amount
if params.actual_expense > budget_amount:
diff = params.actual_expense - budget_amount
_msg = _("{0} Budget for Account {1} against {2} {3} is {4}. It is already exceeded by {5}.")
else:
error_tense = _("will be")
diff = total_expense - budget_amount
_msg = _("{0} Budget for Account {1} against {2} {3} is {4}. It will be exceeded by {5}.")
currency = frappe.get_cached_value("Company", args.company, "default_currency")
msg = _("{0} Budget for Account {1} against {2} {3} is {4}. It {5} exceed by {6}").format(
currency = frappe.get_cached_value("Company", params.company, "default_currency")
msg = _msg.format(
_(action_for),
frappe.bold(args.account),
frappe.unscrub(args.budget_against_field),
frappe.bold(params.account),
frappe.unscrub(params.budget_against_field),
frappe.bold(budget_against),
frappe.bold(fmt_money(budget_amount, currency=currency)),
error_tense,
frappe.bold(fmt_money(diff, currency=currency)),
)
msg += get_expense_breakup(args, currency, budget_against)
msg += get_expense_breakup(params, currency, budget_against)
if frappe.flags.exception_approver_role and frappe.flags.exception_approver_role in frappe.get_roles(
frappe.session.user
@@ -303,14 +572,25 @@ def compare_expense_with_budget(args, budget_amount, action_for, action, budget_
frappe.msgprint(msg, indicator="orange", title=_("Budget Exceeded"))
def get_expense_breakup(args, currency, budget_against):
msg = "<hr> {{ _('Total Expenses booked through') }} - <ul>"
def get_expense_breakup(params, currency, budget_against):
msg = "<hr> {} - <ul>".format(_("Total Expenses booked through"))
common_filters = frappe._dict(
{
args.budget_against_field: budget_against,
"account": args.account,
"company": args.company,
params.budget_against_field: budget_against,
"account": params.account,
"company": params.company,
}
)
from_date = frappe.get_cached_value("Fiscal Year", params.from_fiscal_year, "year_start_date")
to_date = frappe.get_cached_value("Fiscal Year", params.to_fiscal_year, "year_end_date")
gl_filters = common_filters.copy()
gl_filters.update(
{
"from_date": from_date,
"to_date": to_date,
"is_cancelled": 0,
}
)
@@ -319,18 +599,23 @@ def get_expense_breakup(args, currency, budget_against):
+ frappe.utils.get_link_to_report(
"General Ledger",
label=_("Actual Expenses"),
filters=common_filters.copy().update(
{
"from_date": frappe.get_cached_value("Fiscal Year", args.fiscal_year, "year_start_date"),
"to_date": frappe.get_cached_value("Fiscal Year", args.fiscal_year, "year_end_date"),
"is_cancelled": 0,
}
),
filters=gl_filters,
)
+ " - "
+ frappe.bold(fmt_money(args.actual_expense, currency=currency))
+ frappe.bold(fmt_money(params.actual_expense, currency=currency))
+ "</li>"
)
mr_filters = common_filters.copy()
mr_filters.update(
{
"status": [["!=", "Stopped"]],
"docstatus": 1,
"material_request_type": "Purchase",
"schedule_date": [["between", [from_date, to_date]]],
"item_code": params.item_code,
"per_ordered": [["<", 100]],
}
)
msg += (
"<li>"
@@ -339,22 +624,24 @@ def get_expense_breakup(args, currency, budget_against):
label=_("Material Requests"),
report_type="Report Builder",
doctype="Material Request",
filters=common_filters.copy().update(
{
"status": [["!=", "Stopped"]],
"docstatus": 1,
"material_request_type": "Purchase",
"schedule_date": [["fiscal year", "2023-2024"]],
"item_code": args.item_code,
"per_ordered": [["<", 100]],
}
),
filters=mr_filters,
)
+ " - "
+ frappe.bold(fmt_money(args.requested_amount, currency=currency))
+ frappe.bold(fmt_money(params.requested_amount, currency=currency))
+ "</li>"
)
po_filters = common_filters.copy()
po_filters.update(
{
"status": [["!=", "Closed"]],
"docstatus": 1,
"transaction_date": [["between", [from_date, to_date]]],
"item_code": params.item_code,
"per_billed": [["<", 100]],
}
)
msg += (
"<li>"
+ frappe.utils.get_link_to_report(
@@ -362,42 +649,34 @@ def get_expense_breakup(args, currency, budget_against):
label=_("Unbilled Orders"),
report_type="Report Builder",
doctype="Purchase Order",
filters=common_filters.copy().update(
{
"status": [["!=", "Closed"]],
"docstatus": 1,
"transaction_date": [["fiscal year", "2023-2024"]],
"item_code": args.item_code,
"per_billed": [["<", 100]],
}
),
filters=po_filters,
)
+ " - "
+ frappe.bold(fmt_money(args.ordered_amount, currency=currency))
+ frappe.bold(fmt_money(params.ordered_amount, currency=currency))
+ "</li></ul>"
)
return msg
def get_actions(args, budget):
def get_actions(params, budget):
yearly_action = budget.action_if_annual_budget_exceeded
monthly_action = budget.action_if_accumulated_monthly_budget_exceeded
if args.get("doctype") == "Material Request" and budget.for_material_request:
if params.get("doctype") == "Material Request" and budget.for_material_request:
yearly_action = budget.action_if_annual_budget_exceeded_on_mr
monthly_action = budget.action_if_accumulated_monthly_budget_exceeded_on_mr
elif args.get("doctype") == "Purchase Order" and budget.for_purchase_order:
elif params.get("doctype") == "Purchase Order" and budget.for_purchase_order:
yearly_action = budget.action_if_annual_budget_exceeded_on_po
monthly_action = budget.action_if_accumulated_monthly_budget_exceeded_on_po
return yearly_action, monthly_action
def get_requested_amount(args):
item_code = args.get("item_code")
condition = get_other_condition(args, "Material Request")
def get_requested_amount(params):
item_code = params.get("item_code")
condition = get_other_condition(params, "Material Request")
data = frappe.db.sql(
""" select ifnull((sum(child.stock_qty - child.ordered_qty) * rate), 0) as amount
@@ -411,9 +690,9 @@ def get_requested_amount(args):
return data[0][0] if data else 0
def get_ordered_amount(args):
item_code = args.get("item_code")
condition = get_other_condition(args, "Purchase Order")
def get_ordered_amount(params):
item_code = params.get("item_code")
condition = get_other_condition(params, "Purchase Order")
data = frappe.db.sql(
f""" select ifnull(sum(child.amount - child.billed_amt), 0) as amount
@@ -427,111 +706,102 @@ def get_ordered_amount(args):
return data[0][0] if data else 0
def get_other_condition(args, for_doc):
condition = "expense_account = '%s'" % (args.expense_account)
budget_against_field = args.get("budget_against_field")
def get_other_condition(params, for_doc):
condition = f"expense_account = '{params.expense_account}'"
budget_against_field = params.get("budget_against_field")
if budget_against_field and args.get(budget_against_field):
condition += f" and child.{budget_against_field} = '{args.get(budget_against_field)}'"
if budget_against_field and params.get(budget_against_field):
condition += f" and child.{budget_against_field} = '{params.get(budget_against_field)}'"
if args.get("fiscal_year"):
date_field = "schedule_date" if for_doc == "Material Request" else "transaction_date"
start_date, end_date = frappe.get_cached_value(
"Fiscal Year", args.get("fiscal_year"), ["year_start_date", "year_end_date"]
)
date_field = "schedule_date" if for_doc == "Material Request" else "transaction_date"
condition += f""" and parent.{date_field}
between '{start_date}' and '{end_date}' """
start_date = frappe.get_cached_value("Fiscal Year", params.from_fiscal_year, "year_start_date")
end_date = frappe.get_cached_value("Fiscal Year", params.to_fiscal_year, "year_end_date")
condition += f" and parent.{date_field} between '{start_date}' and '{end_date}'"
return condition
def get_actual_expense(args):
if not args.budget_against_doctype:
args.budget_against_doctype = frappe.unscrub(args.budget_against_field)
def get_actual_expense(params):
if not params.budget_against_doctype:
params.budget_against_doctype = frappe.unscrub(params.budget_against_field)
budget_against_field = args.get("budget_against_field")
condition1 = " and gle.posting_date <= %(month_end_date)s" if args.get("month_end_date") else ""
budget_against_field = params.get("budget_against_field")
condition1 = " and gle.posting_date <= %(month_end_date)s" if params.get("month_end_date") else ""
if args.is_tree:
date_condition = (
f"and gle.posting_date between '{params.budget_start_date}' and '{params.budget_end_date}'"
)
if params.is_tree:
lft_rgt = frappe.db.get_value(
args.budget_against_doctype, args.get(budget_against_field), ["lft", "rgt"], as_dict=1
params.budget_against_doctype, params.get(budget_against_field), ["lft", "rgt"], as_dict=1
)
params.update(lft_rgt)
args.update(lft_rgt)
condition2 = f"""and exists(select name from `tab{args.budget_against_doctype}`
where lft>=%(lft)s and rgt<=%(rgt)s
and name=gle.{budget_against_field})"""
condition2 = f"""
and exists(
select name from `tab{params.budget_against_doctype}`
where lft >= %(lft)s and rgt <= %(rgt)s
and name = gle.{budget_against_field}
)
"""
else:
condition2 = f"""and exists(select name from `tab{args.budget_against_doctype}`
where name=gle.{budget_against_field} and
gle.{budget_against_field} = %({budget_against_field})s)"""
condition2 = f"""
and gle.{budget_against_field} = %({budget_against_field})s
"""
amount = flt(
frappe.db.sql(
f"""
select sum(gle.debit) - sum(gle.credit)
from `tabGL Entry` gle
where
is_cancelled = 0
and gle.account=%(account)s
{condition1}
and gle.fiscal_year=%(fiscal_year)s
and gle.company=%(company)s
and gle.docstatus=1
{condition2}
""",
(args),
select sum(gle.debit) - sum(gle.credit)
from `tabGL Entry` gle
where
is_cancelled = 0
and gle.account = %(account)s
{condition1}
{date_condition}
and gle.company = %(company)s
and gle.docstatus = 1
{condition2}
""",
params,
)[0][0]
) # nosec
return amount
def get_accumulated_monthly_budget(monthly_distribution, posting_date, fiscal_year, annual_budget):
distribution = {}
if monthly_distribution:
mdp = frappe.qb.DocType("Monthly Distribution Percentage")
md = frappe.qb.DocType("Monthly Distribution")
def get_accumulated_monthly_budget(budget_name, posting_date):
posting_date = getdate(posting_date)
res = (
frappe.qb.from_(mdp)
.join(md)
.on(mdp.parent == md.name)
.select(mdp.month, mdp.percentage_allocation)
.where(md.fiscal_year == fiscal_year)
.where(md.name == monthly_distribution)
.run(as_dict=True)
)
bd = frappe.qb.DocType("Budget Distribution")
b = frappe.qb.DocType("Budget")
for d in res:
distribution.setdefault(d.month, d.percentage_allocation)
result = (
frappe.qb.from_(bd)
.join(b)
.on(bd.parent == b.name)
.select(Sum(bd.amount).as_("accumulated_amount"))
.where(b.name == budget_name)
.where(bd.start_date <= posting_date)
.run(as_dict=True)
)
dt = frappe.get_cached_value("Fiscal Year", fiscal_year, "year_start_date")
accumulated_percentage = 0.0
while dt <= getdate(posting_date):
if monthly_distribution and distribution:
accumulated_percentage += distribution.get(getdate(dt).strftime("%B"), 0)
else:
accumulated_percentage += 100.0 / 12
dt = add_months(dt, 1)
return annual_budget * accumulated_percentage / 100
return flt(result[0]["accumulated_amount"]) if result else 0.0
def get_item_details(args):
def get_item_details(params):
cost_center, expense_account = None, None
if not args.get("company"):
if not params.get("company"):
return cost_center, expense_account
if args.item_code:
if params.item_code:
item_defaults = frappe.db.get_value(
"Item Default",
{"parent": args.item_code, "company": args.get("company")},
{"parent": params.item_code, "company": params.get("company")},
["buying_cost_center", "expense_account"],
)
if item_defaults:
@@ -539,7 +809,7 @@ def get_item_details(args):
if not (cost_center and expense_account):
for doctype in ["Item Group", "Company"]:
data = get_expense_cost_center(doctype, args)
data = get_expense_cost_center(doctype, params)
if not cost_center and data:
cost_center = data[0]
@@ -553,14 +823,39 @@ def get_item_details(args):
return cost_center, expense_account
def get_expense_cost_center(doctype, args):
def get_expense_cost_center(doctype, params):
if doctype == "Item Group":
return frappe.db.get_value(
"Item Default",
{"parent": args.get(frappe.scrub(doctype)), "company": args.get("company")},
{"parent": params.get(frappe.scrub(doctype)), "company": params.get("company")},
["buying_cost_center", "expense_account"],
)
else:
return frappe.db.get_value(
doctype, args.get(frappe.scrub(doctype)), ["cost_center", "default_expense_account"]
doctype, params.get(frappe.scrub(doctype)), ["cost_center", "default_expense_account"]
)
def get_fiscal_year_date_range(from_fiscal_year, to_fiscal_year):
from_year = frappe.get_cached_value(
"Fiscal Year", from_fiscal_year, ["year_start_date", "year_end_date"], as_dict=True
)
to_year = frappe.get_cached_value(
"Fiscal Year", to_fiscal_year, ["year_start_date", "year_end_date"], as_dict=True
)
return from_year.year_start_date, to_year.year_end_date
@frappe.whitelist()
def revise_budget(budget_name):
old_budget = frappe.get_doc("Budget", budget_name)
if old_budget.docstatus == 1:
old_budget.cancel()
new_budget = frappe.copy_doc(old_budget)
new_budget.docstatus = 0
new_budget.revision_of = old_budget.name
new_budget.insert()
return new_budget.name

View File

@@ -3,12 +3,14 @@
import unittest
import frappe
from frappe.utils import now_datetime, nowdate
from frappe.client import submit
from frappe.utils import add_days, flt, get_first_day, get_last_day, getdate, now_datetime, nowdate
from erpnext.accounts.doctype.budget.budget import (
BudgetError,
get_accumulated_monthly_budget,
get_actual_expense,
revise_budget,
)
from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journal_entry
from erpnext.accounts.utils import get_fiscal_year
@@ -17,19 +19,17 @@ from erpnext.tests.utils import ERPNextTestSuite
class TestBudget(ERPNextTestSuite):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.make_monthly_distribution()
cls.make_projects()
def setUp(self):
frappe.db.set_single_value("Accounts Settings", "use_legacy_budget_controller", False)
self.company = "_Test Company"
self.fiscal_year = frappe.db.get_value("Fiscal Year", {}, "name")
self.account = "_Test Account Cost for Goods Sold - _TC"
self.cost_center = "_Test Cost Center - _TC"
def test_monthly_budget_crossed_ignore(self):
set_total_expense_zero(nowdate(), "cost_center")
budget = make_budget(budget_against="Cost Center")
budget = make_budget(budget_against="Cost Center", do_not_save=False, submit_budget=True)
jv = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
@@ -50,12 +50,13 @@ class TestBudget(ERPNextTestSuite):
def test_monthly_budget_crossed_stop1(self):
set_total_expense_zero(nowdate(), "cost_center")
budget = make_budget(budget_against="Cost Center")
budget = make_budget(budget_against="Cost Center", do_not_save=False, submit_budget=True)
frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
accumulated_limit = get_accumulated_monthly_budget(
budget.monthly_distribution, nowdate(), budget.fiscal_year, budget.accounts[0].budget_amount
budget.name,
nowdate(),
)
jv = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
@@ -73,13 +74,11 @@ class TestBudget(ERPNextTestSuite):
def test_exception_approver_role(self):
set_total_expense_zero(nowdate(), "cost_center")
budget = make_budget(budget_against="Cost Center")
budget = make_budget(budget_against="Cost Center", do_not_save=False, submit_budget=True)
frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
accumulated_limit = get_accumulated_monthly_budget(
budget.monthly_distribution, nowdate(), budget.fiscal_year, budget.accounts[0].budget_amount
)
accumulated_limit = get_accumulated_monthly_budget(budget.name, nowdate())
jv = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
"_Test Bank - _TC",
@@ -107,16 +106,16 @@ class TestBudget(ERPNextTestSuite):
applicable_on_purchase_order=1,
action_if_accumulated_monthly_budget_exceeded_on_mr="Stop",
budget_against="Cost Center",
do_not_save=False,
submit_budget=True,
)
fiscal_year = get_fiscal_year(nowdate())[0]
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
budget.name,
nowdate(),
)
mr = frappe.get_doc(
{
"doctype": "Material Request",
@@ -151,14 +150,15 @@ class TestBudget(ERPNextTestSuite):
applicable_on_purchase_order=1,
action_if_accumulated_monthly_budget_exceeded_on_po="Stop",
budget_against="Cost Center",
do_not_save=False,
submit_budget=True,
)
fiscal_year = get_fiscal_year(nowdate())[0]
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
budget.name,
nowdate(),
)
po = create_purchase_order(
transaction_date=nowdate(), qty=1, rate=accumulated_limit + 1, do_not_submit=True
@@ -175,13 +175,14 @@ class TestBudget(ERPNextTestSuite):
def test_monthly_budget_crossed_stop2(self):
set_total_expense_zero(nowdate(), "project")
budget = make_budget(budget_against="Project")
budget = make_budget(budget_against="Project", do_not_save=False, submit_budget=True)
frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
project = frappe.get_value("Project", {"project_name": "_Test Project"})
accumulated_limit = get_accumulated_monthly_budget(
budget.monthly_distribution, nowdate(), budget.fiscal_year, budget.accounts[0].budget_amount
budget.name,
nowdate(),
)
jv = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
@@ -200,7 +201,7 @@ class TestBudget(ERPNextTestSuite):
def test_yearly_budget_crossed_stop1(self):
set_total_expense_zero(nowdate(), "cost_center")
budget = make_budget(budget_against="Cost Center")
budget = make_budget(budget_against="Cost Center", do_not_save=False, submit_budget=True)
jv = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
@@ -217,7 +218,7 @@ class TestBudget(ERPNextTestSuite):
def test_yearly_budget_crossed_stop2(self):
set_total_expense_zero(nowdate(), "project")
budget = make_budget(budget_against="Project")
budget = make_budget(budget_against="Project", do_not_save=False, submit_budget=True)
project = frappe.get_value("Project", {"project_name": "_Test Project"})
@@ -237,7 +238,7 @@ class TestBudget(ERPNextTestSuite):
def test_monthly_budget_on_cancellation1(self):
set_total_expense_zero(nowdate(), "cost_center")
budget = make_budget(budget_against="Cost Center")
budget = make_budget(budget_against="Cost Center", do_not_save=False, submit_budget=True)
month = now_datetime().month
if month > 9:
month = 9
@@ -266,7 +267,7 @@ class TestBudget(ERPNextTestSuite):
def test_monthly_budget_on_cancellation2(self):
set_total_expense_zero(nowdate(), "project")
budget = make_budget(budget_against="Project")
budget = make_budget(budget_against="Project", do_not_save=False, submit_budget=True)
month = now_datetime().month
if month > 9:
month = 9
@@ -298,11 +299,17 @@ class TestBudget(ERPNextTestSuite):
set_total_expense_zero(nowdate(), "cost_center")
set_total_expense_zero(nowdate(), "cost_center", "_Test Cost Center 2 - _TC")
budget = make_budget(budget_against="Cost Center", cost_center="_Test Company - _TC")
budget = make_budget(
budget_against="Cost Center",
cost_center="_Test Company - _TC",
do_not_save=False,
submit_budget=True,
)
frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
accumulated_limit = get_accumulated_monthly_budget(
budget.monthly_distribution, nowdate(), budget.fiscal_year, budget.accounts[0].budget_amount
budget.name,
nowdate(),
)
jv = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
@@ -331,11 +338,14 @@ class TestBudget(ERPNextTestSuite):
}
).insert(ignore_permissions=True)
budget = make_budget(budget_against="Cost Center", cost_center=cost_center)
budget = make_budget(
budget_against="Cost Center", cost_center=cost_center, do_not_save=False, submit_budget=True
)
frappe.db.set_value("Budget", budget.name, "action_if_accumulated_monthly_budget_exceeded", "Stop")
accumulated_limit = get_accumulated_monthly_budget(
budget.monthly_distribution, nowdate(), budget.fiscal_year, budget.accounts[0].budget_amount
budget.name,
nowdate(),
)
jv = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
@@ -372,7 +382,12 @@ class TestBudget(ERPNextTestSuite):
{"Sub Budget Cost Center 1 - _TC": 60, "Sub Budget Cost Center 2 - _TC": 40},
)
make_budget(budget_against="Cost Center", cost_center="Main Budget Cost Center 1 - _TC")
make_budget(
budget_against="Cost Center",
cost_center="Main Budget Cost Center 1 - _TC",
do_not_save=False,
submit_budget=True,
)
jv = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
@@ -387,12 +402,15 @@ class TestBudget(ERPNextTestSuite):
def test_action_for_cumulative_limit(self):
set_total_expense_zero(nowdate(), "cost_center")
budget = make_budget(budget_against="Cost Center", applicable_on_cumulative_expense=True)
accumulated_limit = get_accumulated_monthly_budget(
budget.monthly_distribution, nowdate(), budget.fiscal_year, budget.accounts[0].budget_amount
budget = make_budget(
budget_against="Cost Center",
applicable_on_cumulative_expense=True,
do_not_save=False,
submit_budget=True,
)
accumulated_limit = get_accumulated_monthly_budget(budget.name, nowdate())
jv = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
"_Test Bank - _TC",
@@ -422,6 +440,165 @@ class TestBudget(ERPNextTestSuite):
po.cancel()
jv.cancel()
def test_fiscal_year_validation(self):
frappe.get_doc(
{
"doctype": "Fiscal Year",
"year": "2100",
"year_start_date": "2100-04-01",
"year_end_date": "2101-03-31",
"companies": [{"company": "_Test Company"}],
}
).insert(ignore_permissions=True)
budget = make_budget(
budget_against="Cost Center",
from_fiscal_year="2100",
to_fiscal_year="2099",
do_not_save=True,
submit_budget=False,
)
with self.assertRaises(frappe.ValidationError):
budget.save()
def test_total_distribution_equals_budget(self):
budget = make_budget(
budget_against="Cost Center",
applicable_on_cumulative_expense=True,
distribute_equally=0,
budget_amount=12000,
do_not_save=False,
submit_budget=False,
)
for row in budget.budget_distribution:
row.amount = 2000
with self.assertRaises(frappe.ValidationError):
budget.save()
def test_evenly_distribute_budget(self):
budget = make_budget(
budget_against="Cost Center", budget_amount=120000, do_not_save=False, submit_budget=True
)
total = sum([d.amount for d in budget.budget_distribution])
self.assertEqual(flt(total), 120000)
self.assertTrue(all(d.amount == 10000 for d in budget.budget_distribution))
def test_create_revised_budget(self):
budget = make_budget(
budget_against="Cost Center", budget_amount=120000, do_not_save=False, submit_budget=True
)
revised_name = revise_budget(budget.name)
revised_budget = frappe.get_doc("Budget", revised_name)
self.assertNotEqual(budget.name, revised_budget.name)
self.assertEqual(revised_budget.budget_against, budget.budget_against)
self.assertEqual(revised_budget.budget_amount, budget.budget_amount)
old_budget = frappe.get_doc("Budget", budget.name)
self.assertEqual(old_budget.docstatus, 2)
def test_revision_preserves_distribution(self):
set_total_expense_zero(nowdate(), "cost_center", "_Test Cost Center - _TC")
budget = make_budget(
budget_against="Cost Center", budget_amount=120000, do_not_save=False, submit_budget=True
)
revised_name = revise_budget(budget.name)
revised_budget = frappe.get_doc("Budget", revised_name)
self.assertGreater(len(revised_budget.budget_distribution), 0)
total = sum(row.amount for row in revised_budget.budget_distribution)
self.assertEqual(total, revised_budget.budget_amount)
def test_manual_budget_amount_total(self):
budget = make_budget(
budget_against="Cost Center",
distribute_equally=0,
budget_amount=30000,
budget_start_date="2025-04-01",
budget_end_date="2025-06-30",
do_not_save=False,
submit_budget=False,
)
budget.budget_distribution = []
for row in [
{"start_date": "2025-04-01", "end_date": "2025-04-30", "amount": 10000, "percent": 33.33},
{"start_date": "2025-05-01", "end_date": "2025-05-31", "amount": 15000, "percent": 50.00},
{"start_date": "2025-06-01", "end_date": "2025-06-30", "amount": 5000, "percent": 16.67},
]:
budget.append("budget_distribution", row)
budget.save()
total_child_amount = sum(row.amount for row in budget.budget_distribution)
self.assertEqual(total_child_amount, budget.budget_amount)
def test_fiscal_year_company_mismatch(self):
budget = make_budget(budget_against="Cost Center", do_not_save=True, submit_budget=False)
fy = frappe.get_doc(
{
"doctype": "Fiscal Year",
"year": "2099",
"year_start_date": "2099-04-01",
"year_end_date": "2100-03-31",
"companies": [{"company": "_Test Company 2"}],
}
).insert(ignore_permissions=True)
budget.from_fiscal_year = fy.name
budget.to_fiscal_year = fy.name
budget.company = "_Test Company"
with self.assertRaises(frappe.ValidationError):
budget.save()
def test_manual_distribution_total_equals_budget_amount(self):
budget = make_budget(
budget_against="Cost Center",
cost_center="_Test Cost Center - _TC",
distribute_equally=0,
budget_amount=12000,
do_not_save=False,
submit_budget=False,
)
for d in budget.budget_distribution:
d.amount = 2000
with self.assertRaises(frappe.ValidationError):
budget.save()
def test_duplicate_budget_validation(self):
budget = make_budget(
budget_against="Cost Center",
distribute_equally=1,
budget_amount=15000,
do_not_save=False,
submit_budget=True,
)
new_budget = frappe.new_doc("Budget")
new_budget.company = "_Test Company"
new_budget.from_fiscal_year = budget.from_fiscal_year
new_budget.to_fiscal_year = new_budget.from_fiscal_year
new_budget.budget_against = "Cost Center"
new_budget.cost_center = "_Test Cost Center - _TC"
new_budget.account = "_Test Account Cost for Goods Sold - _TC"
new_budget.budget_amount = 10000
with self.assertRaises(frappe.ValidationError):
new_budget.insert()
def set_total_expense_zero(posting_date, budget_against_field=None, budget_against_CC=None):
if budget_against_field == "project":
@@ -430,21 +607,32 @@ def set_total_expense_zero(posting_date, budget_against_field=None, budget_again
budget_against = budget_against_CC or "_Test Cost Center - _TC"
fiscal_year = get_fiscal_year(nowdate())[0]
fiscal_year_start_date, fiscal_year_end_date = get_fiscal_year(nowdate())[1:3]
args = frappe._dict(
{
"account": "_Test Account Cost for Goods Sold - _TC",
"cost_center": "_Test Cost Center - _TC",
"monthly_end_date": posting_date,
"month_end_date": posting_date,
"company": "_Test Company",
"fiscal_year": fiscal_year,
"from_fiscal_year": fiscal_year,
"to_fiscal_year": fiscal_year,
"budget_against_field": budget_against_field,
"budget_start_date": fiscal_year_start_date,
"budget_end_date": fiscal_year_end_date,
}
)
if not args.get(budget_against_field):
args[budget_against_field] = budget_against
args.budget_against_doctype = frappe.unscrub(budget_against_field)
if frappe.get_cached_value("DocType", args.budget_against_doctype, "is_tree"):
args.is_tree = True
else:
args.is_tree = False
existing_expense = get_actual_expense(args)
if existing_expense:
@@ -474,18 +662,33 @@ def make_budget(**args):
budget_against = args.budget_against
cost_center = args.cost_center
fiscal_year = get_fiscal_year(nowdate())[0]
if budget_against == "Project":
project_name = "{}%".format("_Test Project/" + fiscal_year)
budget_list = frappe.get_all("Budget", fields=["name"], filters={"name": ("like", project_name)})
project = frappe.get_value("Project", {"project_name": "_Test Project"})
budget_list = frappe.get_all(
"Budget",
filters={
"project": project,
"account": "_Test Account Cost for Goods Sold - _TC",
},
pluck="name",
)
else:
cost_center_name = "{}%".format(cost_center or "_Test Cost Center - _TC/" + fiscal_year)
budget_list = frappe.get_all("Budget", fields=["name"], filters={"name": ("like", cost_center_name)})
for d in budget_list:
frappe.db.sql("delete from `tabBudget` where name = %(name)s", d)
frappe.db.sql("delete from `tabBudget Account` where parent = %(name)s", d)
budget_list = frappe.get_all(
"Budget",
filters={
"cost_center": cost_center or "_Test Cost Center - _TC",
"account": "_Test Account Cost for Goods Sold - _TC",
},
pluck="name",
)
for name in budget_list:
doc = frappe.get_doc("Budget", name)
if doc.docstatus == 1:
doc.cancel()
frappe.delete_doc("Budget", name, force=True, ignore_missing=True)
budget = frappe.new_doc("Budget")
@@ -494,18 +697,18 @@ def make_budget(**args):
else:
budget.cost_center = cost_center or "_Test Cost Center - _TC"
monthly_distribution = frappe.get_doc("Monthly Distribution", "_Test Distribution")
monthly_distribution.fiscal_year = fiscal_year
monthly_distribution.save()
budget.fiscal_year = fiscal_year
budget.monthly_distribution = "_Test Distribution"
budget.from_fiscal_year = args.from_fiscal_year or fiscal_year
budget.to_fiscal_year = args.to_fiscal_year or fiscal_year
budget.company = "_Test Company"
budget.account = "_Test Account Cost for Goods Sold - _TC"
budget.budget_amount = args.budget_amount or 200000
budget.applicable_on_booking_actual_expenses = 1
budget.action_if_annual_budget_exceeded = "Stop"
budget.action_if_accumulated_monthly_budget_exceeded = "Ignore"
budget.budget_against = budget_against
budget.append("accounts", {"account": "_Test Account Cost for Goods Sold - _TC", "budget_amount": 200000})
budget.distribution_frequency = "Monthly"
budget.distribute_equally = args.get("distribute_equally", 1)
if args.applicable_on_material_request:
budget.applicable_on_material_request = 1
@@ -530,7 +733,13 @@ def make_budget(**args):
args.action_if_accumulated_monthly_exceeded_on_cumulative_expense or "Warn"
)
budget.insert()
budget.submit()
if not args.do_not_save:
try:
budget.insert(ignore_if_duplicate=True)
except frappe.DuplicateEntryError:
pass
if args.submit_budget:
budget.submit()
return budget

View File

@@ -0,0 +1,58 @@
{
"actions": [],
"allow_rename": 1,
"creation": "2025-10-12 23:31:03.841996",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"start_date",
"end_date",
"amount",
"percent"
],
"fields": [
{
"fieldname": "start_date",
"fieldtype": "Date",
"in_list_view": 1,
"label": "Start Date",
"read_only": 1,
"search_index": 1
},
{
"fieldname": "end_date",
"fieldtype": "Date",
"in_list_view": 1,
"label": "End Date",
"read_only": 1
},
{
"fieldname": "amount",
"fieldtype": "Currency",
"in_list_view": 1,
"label": "Amount"
},
{
"fieldname": "percent",
"fieldtype": "Percent",
"in_list_view": 1,
"label": "Percent"
}
],
"grid_page_length": 50,
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
"modified": "2025-11-03 13:18:28.398198",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Budget Distribution",
"owner": "Administrator",
"permissions": [],
"row_format": "Dynamic",
"rows_threshold_for_grid_search": 20,
"sort_field": "creation",
"sort_order": "DESC",
"states": []
}

View File

@@ -1,11 +1,11 @@
# Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and contributors
# 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 AdvanceTax(Document):
class BudgetDistribution(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
@@ -14,14 +14,13 @@ class AdvanceTax(Document):
if TYPE_CHECKING:
from frappe.types import DF
account_head: DF.Link | None
allocated_amount: DF.Currency
amount: DF.Currency
end_date: DF.Date | None
parent: DF.Data
parentfield: DF.Data
parenttype: DF.Data
reference_detail: DF.Data | None
reference_name: DF.DynamicLink | None
reference_type: DF.Link | None
percent: DF.Percent
start_date: DF.Date | None
# end: auto-generated types
pass

View File

@@ -2,8 +2,8 @@
# See license.txt
import unittest
from frappe.tests import IntegrationTestCase
from erpnext.tests.utils import ERPNextTestSuite
class TestCashierClosing(IntegrationTestCase):
class TestCashierClosing(ERPNextTestSuite):
pass

View File

@@ -2,8 +2,8 @@
# See license.txt
import unittest
from frappe.tests import IntegrationTestCase
from erpnext.tests.utils import ERPNextTestSuite
class TestChartofAccountsImporter(IntegrationTestCase):
class TestChartofAccountsImporter(ERPNextTestSuite):
pass

View File

@@ -2,8 +2,8 @@
# See license.txt
import unittest
from frappe.tests import IntegrationTestCase
from erpnext.tests.utils import ERPNextTestSuite
class TestChequePrintTemplate(IntegrationTestCase):
class TestChequePrintTemplate(ERPNextTestSuite):
pass

View File

@@ -126,7 +126,7 @@
"idx": 1,
"is_tree": 1,
"links": [],
"modified": "2025-01-22 10:46:42.904001",
"modified": "2026-04-14 18:15:27.367298",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Cost Center",
@@ -173,11 +173,20 @@
"role": "Employee",
"select": 1,
"share": 1
},
{
"role": "HR User",
"select": 1
},
{
"role": "HR Manager",
"select": 1
}
],
"row_format": "Dynamic",
"search_fields": "parent_cost_center, is_group",
"show_name_in_global_search": 1,
"sort_field": "creation",
"sort_order": "ASC",
"states": []
}
}

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