Compare commits

..

1024 Commits

Author SHA1 Message Date
Frappe PR Bot
bcd02df6fd chore(release): Bumped to Version 15.53.3
## [15.53.3](https://github.com/frappe/erpnext/compare/v15.53.2...v15.53.3) (2025-03-03)

### Bug Fixes

* stock qty not recalculate on changing of the qty ([9186f13](9186f13458))
2025-03-03 04:02:37 +00:00
rohitwaghchaure
7a71c24d5c Merge pull request #46232 from frappe/mergify/bp/version-15/pr-46224
fix: stock qty not recalculate on changing of the qty (backport #46219) (backport #46224)
2025-03-03 09:31:16 +05:30
Rohit Waghchaure
9186f13458 fix: stock qty not recalculate on changing of the qty
(cherry picked from commit 464e3339fe)
(cherry picked from commit 331798babc)
2025-03-03 03:57:22 +00:00
Frappe PR Bot
d9c1b58fc3 chore(release): Bumped to Version 15.53.2
## [15.53.2](https://github.com/frappe/erpnext/compare/v15.53.1...v15.53.2) (2025-02-26)

### Bug Fixes

* check value as int ([97d3e86](97d3e8648b))
* enable fetch_timesheet_in_sales_invoice in test ([feb64cb](feb64cb9b5))
* incorrect stock value difference for adjustment entry ([96d44e3](96d44e362d))
* inventory dimension for maintence visit ([ec3b281](ec3b281a3b))
* no permission to get project settings in sales invoice ([b8281c3](b8281c34e2))
* pos opening entry dialog not saving on change data (backport [#46066](https://github.com/frappe/erpnext/issues/46066)) ([#46067](https://github.com/frappe/erpnext/issues/46067)) ([0ae2d61](0ae2d61974))
* **project settings:** add checkbox to auto fetch timesheet in sales invoice ([b3c1df8](b3c1df8561))
* **sales invoice:** check fetch_timesheet_in_sales_invoice enabled before fetching the timesheet ([b1095bb](b1095bb91b))
* valuation rate for batch ([c72dab4](c72dab49f4))
2025-02-26 12:58:53 +00:00
ruthra kumar
f93d1a2633 Merge pull request #46132 from frappe/version-15-hotfix
chore: release v15
2025-02-26 18:27:33 +05:30
ruthra kumar
bc53365620 Merge pull request #46159 from frappe/mergify/bp/version-15-hotfix/pr-46156
fix: no permission to get project settings in sales invoice (backport #46156)
2025-02-26 14:34:36 +05:30
venkat102
b8281c34e2 fix: no permission to get project settings in sales invoice
(cherry picked from commit 221f1468cb)
2025-02-26 08:22:24 +00:00
rohitwaghchaure
81ff16248e Merge pull request #46143 from frappe/mergify/bp/version-15-hotfix/pr-46097
fix: valuation rate for batch (backport #46097)
2025-02-26 10:16:10 +05:30
ruthra kumar
8bb085a055 Merge pull request #46142 from frappe/mergify/bp/version-15-hotfix/pr-45908
fix(projects settings): add checkbox to auto fetch timesheet in sales invoice (backport #45908)
2025-02-26 06:23:58 +05:30
Rohit Waghchaure
c72dab49f4 fix: valuation rate for batch
(cherry picked from commit b88305a95f)
2025-02-25 17:45:05 +00:00
ruthra kumar
feec16b682 chore: resolve conflicts 2025-02-25 22:53:14 +05:30
venkat102
feb64cb9b5 fix: enable fetch_timesheet_in_sales_invoice in test
(cherry picked from commit 5880f1d5c6)

# Conflicts:
#	erpnext/projects/doctype/timesheet/test_timesheet.py
2025-02-25 16:56:57 +00:00
venkat102
97d3e8648b fix: check value as int
(cherry picked from commit 43b13b91be)
2025-02-25 16:56:56 +00:00
venkat102
b1095bb91b fix(sales invoice): check fetch_timesheet_in_sales_invoice enabled before fetching the timesheet
(cherry picked from commit 914ad357fd)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/sales_invoice.py
2025-02-25 16:56:56 +00:00
venkat102
b3c1df8561 fix(project settings): add checkbox to auto fetch timesheet in sales invoice
(cherry picked from commit 876082ea2f)

# Conflicts:
#	erpnext/projects/doctype/projects_settings/projects_settings.json
2025-02-25 16:56:56 +00:00
mergify[bot]
0ae2d61974 fix: pos opening entry dialog not saving on change data (backport #46066) (#46067)
fix: pos opening entry dialog not saving on change data (#46066)

(cherry picked from commit 8e6959dfad)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-02-21 17:53:59 +05:30
Frappe PR Bot
9e824fc4fe chore(release): Bumped to Version 15.53.1
## [15.53.1](https://github.com/frappe/erpnext/compare/v15.53.0...v15.53.1) (2025-02-21)

### Bug Fixes

* inventory dimension for maintence visit ([1d818e1](1d818e1510))
2025-02-21 10:01:58 +00:00
rohitwaghchaure
b6b47d6683 Merge pull request #46044 from frappe/mergify/bp/version-15/pr-46041
fix: inventory dimension for maintenance visit (backport #46037) (backport #46041)
2025-02-21 15:30:36 +05:30
Rohit Waghchaure
1d818e1510 fix: inventory dimension for maintence visit
(cherry picked from commit cd4ba69262)
(cherry picked from commit ec3b281a3b)
2025-02-20 07:37:38 +00:00
rohitwaghchaure
b00fa1dfee Merge pull request #46041 from frappe/mergify/bp/version-15-hotfix/pr-46037
fix: inventory dimension for maintenance visit (backport #46037)
2025-02-20 13:06:33 +05:30
Rohit Waghchaure
ec3b281a3b fix: inventory dimension for maintence visit
(cherry picked from commit cd4ba69262)
2025-02-20 06:13:19 +00:00
rohitwaghchaure
9318e4f0e8 Merge pull request #46028 from frappe/mergify/bp/version-15-hotfix/pr-46021
fix: incorrect stock value difference for adjustment entry (backport #46021)
2025-02-19 17:24:42 +05:30
Frappe PR Bot
16e8a00f45 chore(release): Bumped to Version 15.53.0
# [15.53.0](https://github.com/frappe/erpnext/compare/v15.52.0...v15.53.0) (2025-02-19)

### Bug Fixes

* add accounting dimensions section in sales order item ([b32e4da](b32e4daf2b))
* add is_new in if condition ([fc2ec7c](fc2ec7c495))
* add validate to allow equity account and party_type shareholder ([bb3eb81](bb3eb81170))
* allow scrap item with zero qty ([abe5384](abe5384449))
* auto create asset due to message error (backport [#45934](https://github.com/frappe/erpnext/issues/45934)) ([#45952](https://github.com/frappe/erpnext/issues/45952)) ([830edb8](830edb8f52))
* check if employee is currently working on another workstation ([22eaa14](22eaa14179))
* disable partial payment in pos (backport [#45752](https://github.com/frappe/erpnext/issues/45752)) ([#45945](https://github.com/frappe/erpnext/issues/45945)) ([38edc46](38edc46c46))
* do not reschedule depreciation for fully depreciated asset on scrap ([1e7c5ec](1e7c5ec0cb))
* fetch child account data for selected parent ([#45904](https://github.com/frappe/erpnext/issues/45904)) ([e36b860](e36b860a79))
* handle division by zero error (backport [#45966](https://github.com/frappe/erpnext/issues/45966)) ([#46015](https://github.com/frappe/erpnext/issues/46015)) ([15106b4](15106b49b6))
* include missing payment_gateway parameter in Payment Request URL ([18f9476](18f94765f7))
* letter head for quality inspection ([c289fef](c289fef3b5))
* link correct row item of purchase doc ([87f337b](87f337b605))
* make purchase_receipt_item and purchase_invoice_item fields of data type ([281431e](281431e041))
* millisecond issue for posting datetime ([4292365](42923656ee))
* patch for creating asset depreciation schedule records ([f043b46](f043b46696))
* pos accounting dimension fieldname error (backport [#45899](https://github.com/frappe/erpnext/issues/45899)) ([#45921](https://github.com/frappe/erpnext/issues/45921)) ([e998f06](e998f063a9))
* **pos profile:** check company while validating mandatory accounting dimension ([#45974](https://github.com/frappe/erpnext/issues/45974)) ([6a57743](6a577438aa))
* pos return validation on v15 ([#45951](https://github.com/frappe/erpnext/issues/45951)) ([dd34bbe](dd34bbe570))
* provision to enable naming series for SABB ([8fbfe14](8fbfe14c63))
* **quotation:** fetch exchange rate on currency change ([bd89c19](bd89c19c98))
* remove party type from validate ([0d21151](0d2115197e))
* remove public access to list items (backport [#45838](https://github.com/frappe/erpnext/issues/45838)) ([#46018](https://github.com/frappe/erpnext/issues/46018)) ([eead6d4](eead6d46ff))
* remove unused code ([dd5d144](dd5d144b55))
* **report:** add options to multiselectlist fields ([7e85a12](7e85a123b2))
* reset location only if there is value in row item location field ([a509568](a509568110))
* resolved conflicts ([84647a1](84647a1c73))
* round sum amount in JE auditing PF ([#45961](https://github.com/frappe/erpnext/issues/45961)) ([44e1ca9](44e1ca9d05))
* **send_message:** escape HTML in the text ([cbec989](cbec989a7c))
* serial no status for internal transfer delivery note ([2b80c00](2b80c009b3))
* set default value to 0 as per new logic ([1abe1a1](1abe1a1fd5))
* set sco_qty field of PO to non negative ([567fb8a](567fb8abd1))
* slow query ([8306d6f](8306d6fdb6))
* stock reservation for sales invoice ([1fb5586](1fb5586f56))
* stock reservation not working for sales invoice with update stock ([7d871f6](7d871f6bb5))
* tests ([f63a9db](f63a9dbf9b))
* throw correct exception ([5bccf9f](5bccf9f837))
* validate if no matching item found ([6183b38](6183b38089))
* validate payment request total of partly paid invoice ([c8881a9](c8881a9358))

### Features

* added ability to use custom html format for process statement of accounts (copy [#45746](https://github.com/frappe/erpnext/issues/45746)) ([#46012](https://github.com/frappe/erpnext/issues/46012)) ([1a4297a](1a4297ac35))
* added option to enforce free item qty in pricing rule ([8fb9228](8fb9228871))
* disable auto setting grand total to default mode of payment (backport [#45591](https://github.com/frappe/erpnext/issues/45591)) ([#45917](https://github.com/frappe/erpnext/issues/45917)) ([e271a5c](e271a5cba0))
2025-02-19 11:50:41 +00:00
ruthra kumar
2bb79c34c3 Merge pull request #45981 from frappe/version-15-hotfix
chore: release v15
2025-02-19 17:19:18 +05:30
mergify[bot]
eead6d46ff fix: remove public access to list items (backport #45838) (#46018)
fix: remove public access to list items

(cherry picked from commit 2bd596ee3d)

Co-authored-by: CaseSolved <richard@casesolved.co.uk>
2025-02-19 16:52:09 +05:30
mergify[bot]
15106b49b6 fix: handle division by zero error (backport #45966) (#46015)
fix: handle division by zero error (#45966)

Co-authored-by: Sanket322 <shahsanket322003.com>
(cherry picked from commit 24394765a6)

Co-authored-by: Sanket Shah <113279972+Sanket322@users.noreply.github.com>
2025-02-19 16:51:09 +05:30
Akhil Narang
452e4dcbad Merge pull request #46025 from frappe/mergify/bp/version-15-hotfix/pr-46003
fix(send_message): escape HTML in the text (backport #46003)
2025-02-19 16:43:06 +05:30
Rohit Waghchaure
96d44e362d fix: incorrect stock value difference for adjustment entry
(cherry picked from commit df83e427a3)
2025-02-19 11:11:15 +00:00
Khushi Rawat
5a17171bd1 Merge pull request #46013 from frappe/mergify/bp/version-15-hotfix/pr-45872
fix: enable asset value editing for duplicate item code (backport #45872)
2025-02-19 16:34:36 +05:30
Khushi Rawat
777daf6aee Merge pull request #46014 from frappe/mergify/bp/version-15-hotfix/pr-45898
fix: patch for creating asset depreciation schedule records (backport #45898)
2025-02-19 16:33:03 +05:30
ruthra kumar
9b866e8ee4 Merge pull request #46016 from frappe/mergify/bp/version-15-hotfix/pr-45974
fix(pos profile): check company while validating mandatory accounting dimension (backport #45974)
2025-02-19 16:28:42 +05:30
Akhil Narang
cbec989a7c fix(send_message): escape HTML in the text
Signed-off-by: Akhil Narang <me@akhilnarang.dev>
(cherry picked from commit 448a5db20f)
2025-02-19 10:45:49 +00:00
Khushi Rawat
dd5d144b55 fix: remove unused code 2025-02-19 16:00:31 +05:30
Khushi Rawat
9b8623dd64 chore: resolved conflicts 2025-02-19 15:50:53 +05:30
Khushi Rawat
84647a1c73 fix: resolved conflicts 2025-02-19 15:47:40 +05:30
mergify[bot]
1a4297ac35 feat: added ability to use custom html format for process statement of accounts (copy #45746) (#46012)
feat: added ability to use custom html format for process statement of accounts (#45746)

* feat: added ability to use custom print format for process statement of accounts documents.

* fix: handles missing hook issues

* chore: linter changes

---------

Co-authored-by: Boy4099 <mashtawayne4099@gmail.com>
Co-authored-by: ruthra kumar <ruthra@erpnext.com>
(cherry picked from commit a0cd08e9ea)

Co-authored-by: Steve Wilson <stevew9009@gmail.com>
2025-02-19 15:45:10 +05:30
Ejaaz Khan
236b502155 Merge pull request #46017 from frappe/mergify/bp/version-15-hotfix/pr-45961
fix: round sum amount in JE auditing PF (backport #45961)
2025-02-19 15:43:57 +05:30
mergify[bot]
830edb8f52 fix: auto create asset due to message error (backport #45934) (#45952)
fix: auto create asset due to message error (#45934)

* fix: auto create asset due to message error

* fix: linters

(cherry picked from commit 6f1bc5225a)

Co-authored-by: 0xD0M1M0 <76812428+0xD0M1M0@users.noreply.github.com>
2025-02-19 15:43:53 +05:30
Ejaaz Khan
44e1ca9d05 fix: round sum amount in JE auditing PF (#45961)
(cherry picked from commit 941085000a)
2025-02-19 10:11:36 +00:00
Venkatesh
6a577438aa fix(pos profile): check company while validating mandatory accounting dimension (#45974)
(cherry picked from commit 17a2f44290)
2025-02-19 10:10:20 +00:00
Nabin Hait
f043b46696 fix: patch for creating asset depreciation schedule records
(cherry picked from commit 7324dcb7c8)

# Conflicts:
#	erpnext/patches/v15_0/create_asset_depreciation_schedules_from_assets.py
2025-02-19 10:08:12 +00:00
Khushi Rawat
a509568110 fix: reset location only if there is value in row item location field
(cherry picked from commit 2bb79197aa)
2025-02-19 10:02:33 +00:00
Khushi Rawat
6183b38089 fix: validate if no matching item found
(cherry picked from commit 44c1425e73)
2025-02-19 10:02:33 +00:00
Khushi Rawat
87f337b605 fix: link correct row item of purchase doc
(cherry picked from commit da1b4cb9ab)
2025-02-19 10:02:33 +00:00
Khushi Rawat
281431e041 fix: make purchase_receipt_item and purchase_invoice_item fields of data type
(cherry picked from commit 8af9dcb33e)

# Conflicts:
#	erpnext/assets/doctype/asset/asset.json
2025-02-19 10:02:32 +00:00
rohitwaghchaure
be65cd4df6 Merge pull request #46005 from frappe/mergify/bp/version-15-hotfix/pr-45750
feat: added option to enforce free item qty in pricing rule (backport #45750)
2025-02-19 15:09:51 +05:30
Khushi Rawat
965dbb6d2b Merge pull request #46006 from frappe/mergify/bp/version-15-hotfix/pr-45895
fix: do not reschedule depreciation for fully depreciated asset on scrap (backport #45895)
2025-02-19 14:24:55 +05:30
ruthra kumar
07d4725810 Merge pull request #46008 from frappe/mergify/bp/version-15-hotfix/pr-45904
fix: fetch child account data for selected parent (backport #45904)
2025-02-19 14:21:48 +05:30
Bhavansathru
e36b860a79 fix: fetch child account data for selected parent (#45904)
* fix: fetch child account data for selected parent

* fix: change reference name

---------

Co-authored-by: venkat102 <venkatesharunachalam659@gmail.com>
(cherry picked from commit 73e82b7afa)
2025-02-19 08:28:59 +00:00
Khushi Rawat
1e7c5ec0cb fix: do not reschedule depreciation for fully depreciated asset on scrap
(cherry picked from commit fd4c4f98fa)
2025-02-19 07:37:42 +00:00
Mihir Kandoi
1abe1a1fd5 fix: set default value to 0 as per new logic
(cherry picked from commit 844f1636c0)
2025-02-19 07:21:54 +00:00
Mihir Kandoi
f782900a15 refactor: rename field
(cherry picked from commit f3d598881c)
2025-02-19 07:21:54 +00:00
Mihir Kandoi
fc2ec7c495 fix: add is_new in if condition
(cherry picked from commit 4dcac56486)
2025-02-19 07:21:53 +00:00
Mihir Kandoi
ad11208109 test: added test
(cherry picked from commit ac3259b8f1)
2025-02-19 07:21:53 +00:00
Mihir Kandoi
f63a9dbf9b fix: tests
(cherry picked from commit 366ae85d85)
2025-02-19 07:21:53 +00:00
Mihir Kandoi
8fb9228871 feat: added option to enforce free item qty in pricing rule
(cherry picked from commit 19c01b1457)
2025-02-19 07:21:53 +00:00
rohitwaghchaure
617a24d61e Merge pull request #45994 from frappe/mergify/bp/version-15-hotfix/pr-45980
fix: check if employee is currently working on another workstation (backport #45980)
2025-02-19 11:24:05 +05:30
ruthra kumar
6fad501aa0 Merge pull request #46001 from frappe/mergify/bp/version-15-hotfix/pr-45882
fix(quotation): fetch exchange rate on currency change (backport #45882)
2025-02-19 11:13:04 +05:30
venkat102
bd89c19c98 fix(quotation): fetch exchange rate on currency change
(cherry picked from commit 2f77a8bed1)
2025-02-19 05:21:57 +00:00
Mihir Kandoi
5bccf9f837 fix: throw correct exception
(cherry picked from commit 4487edb255)
2025-02-18 15:13:04 +00:00
Mihir Kandoi
22eaa14179 fix: check if employee is currently working on another workstation
(cherry picked from commit 8234e659c8)
2025-02-18 15:13:04 +00:00
rohitwaghchaure
d3d0aacd4c Merge pull request #45993 from frappe/mergify/bp/version-15-hotfix/pr-45977
fix: millisecond issue for posting datetime (backport #45977)
2025-02-18 20:31:20 +05:30
rohitwaghchaure
69f5be65f6 Merge pull request #45975 from frappe/mergify/bp/version-15-hotfix/pr-45970
fix: serial no status for internal transfer delivery note (backport #45970)
2025-02-18 20:23:20 +05:30
rohitwaghchaure
508efd1322 Merge pull request #45990 from frappe/mergify/bp/version-15-hotfix/pr-45976
fix: slow query (backport #45976)
2025-02-18 20:22:51 +05:30
rohitwaghchaure
ecc2de2709 Merge pull request #45992 from frappe/mergify/bp/version-15-hotfix/pr-45971
fix: set sco_qty field of PO to non negative (backport #45971)
2025-02-18 20:22:39 +05:30
rohitwaghchaure
2e3b19ebb2 chore: fix conflicts 2025-02-18 20:11:02 +05:30
rohitwaghchaure
050bb1eef5 chore: fix conflicts 2025-02-18 20:10:30 +05:30
Rohit Waghchaure
42923656ee fix: millisecond issue for posting datetime
(cherry picked from commit ac9e5c0163)

# Conflicts:
#	erpnext/patches.txt
#	erpnext/stock/utils.py
2025-02-18 14:39:39 +00:00
rohitwaghchaure
0acdae02c1 chore: fix conflicts 2025-02-18 20:00:08 +05:30
Mihir Kandoi
567fb8abd1 fix: set sco_qty field of PO to non negative
(cherry picked from commit dfc3dc4944)
2025-02-18 14:29:22 +00:00
Rohit Waghchaure
8306d6fdb6 fix: slow query
(cherry picked from commit 8cfab57fc8)

# Conflicts:
#	erpnext/stock/doctype/packed_item/packed_item.json
2025-02-18 14:28:19 +00:00
ruthra kumar
20709f1b3e Merge pull request #45979 from frappe/mergify/bp/version-15-hotfix/pr-45765
fix: add accounting dimensions section in sales order item (backport #45765)
2025-02-18 17:48:34 +05:30
ruthra kumar
52860cc566 chore: resolve conflict 2025-02-18 14:27:14 +05:30
Sugesh393
b32e4daf2b fix: add accounting dimensions section in sales order item
(cherry picked from commit 7d47869f4b)

# Conflicts:
#	erpnext/selling/doctype/sales_order_item/sales_order_item.json
2025-02-18 08:42:56 +00:00
Rohit Waghchaure
2b80c009b3 fix: serial no status for internal transfer delivery note
(cherry picked from commit 3333331a3d)
2025-02-18 08:22:03 +00:00
ruthra kumar
8da1348a48 Merge pull request #45973 from frappe/mergify/bp/version-15-hotfix/pr-45723
fix: validate payment request total of partly paid invoice (backport #45723)
2025-02-18 13:42:58 +05:30
Sugesh393
9a33b877f5 test: add unit test to validate payment request grand_total for partly paid invoice
(cherry picked from commit f8472c32d9)
2025-02-18 07:42:28 +00:00
Sugesh393
c8881a9358 fix: validate payment request total of partly paid invoice
(cherry picked from commit 899c18df18)
2025-02-18 07:42:28 +00:00
ruthra kumar
f6047d8491 Merge pull request #45968 from frappe/mergify/bp/version-15-hotfix/pr-45687
fix: add validation to allow equity account (backport #45687)
2025-02-18 12:12:09 +05:30
rethik
0d2115197e fix: remove party type from validate
(cherry picked from commit f82837a4a2)
2025-02-18 06:16:03 +00:00
rethik
552b5a79ce test: add unit test to validate account type and party type
(cherry picked from commit 9422ce5aee)
2025-02-18 06:16:02 +00:00
rethik
bb3eb81170 fix: add validate to allow equity account and party_type shareholder
(cherry picked from commit 2c8e3f3409)
2025-02-18 06:16:02 +00:00
rohitwaghchaure
7ab69cfe5f Merge pull request #45956 from frappe/mergify/bp/version-15-hotfix/pr-45946
fix: provision to enable naming series for SABB (backport #45946)
2025-02-18 07:44:18 +05:30
rohitwaghchaure
43d32eb10e chore: fix conflicts 2025-02-17 21:32:48 +05:30
rohitwaghchaure
697fdf5bc3 chore: fix conflicts 2025-02-17 21:30:15 +05:30
rohitwaghchaure
2f7f9c0bac chore: fix conflicts 2025-02-17 21:29:22 +05:30
Rohit Waghchaure
8fbfe14c63 fix: provision to enable naming series for SABB
(cherry picked from commit fe43975cdd)

# Conflicts:
#	erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json
#	erpnext/stock/doctype/serial_and_batch_bundle/test_serial_and_batch_bundle.py
#	erpnext/stock/doctype/stock_settings/stock_settings.json
2025-02-17 11:31:46 +00:00
mergify[bot]
38edc46c46 fix: disable partial payment in pos (backport #45752) (#45945)
* fix: disable partial payment in pos (#45752)

* fix: disable partial payment in pos

* test: disable partial payment

* test: removed print statement

* test: using save method to auto calculate paid_amount

* test: paid_amount calculation using save method

* test: added save method to calculate paid_amount

* test: outstanding amount

* test: added test for partial payments in pos invoice

* fix: custom validation error for partial payment

* test: using partial payment validation

* fix: validate only on submit

(cherry picked from commit d94802067b)

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

* chore: resolve conflict

* chore: resolve conflict

* chore: resolve linter issue

* test: fixed failing test

---------

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-02-17 17:01:34 +05:30
Diptanil Saha
dd34bbe570 fix: pos return validation on v15 (#45951) 2025-02-17 16:03:19 +05:30
rohitwaghchaure
11622f81f3 Merge pull request #45943 from frappe/mergify/bp/version-15-hotfix/pr-45941
fix: letter head for quality inspection (backport #45941)
2025-02-17 14:42:56 +05:30
mergify[bot]
e998f063a9 fix: pos accounting dimension fieldname error (backport #45899) (#45921)
* fix: pos accounting dimension fieldname error (#45899)

* fix: pos accounting dimension fieldname error

* fix: method to get enabled accounting dimensions

* fix: fetch enabled accounting dimensions

* fix: clear flags for accounting_dimensions_details on_update

* refactor: validation for doctype

* fix: using get_checks_for_pl_and_bs_accounts for accounting dimensions

(cherry picked from commit 60a5f4f30d)

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

* chore: resolve conflict

* chore: resolve linter issue

* fix: resolve linter issue

* chore: resolve linter issue

* chore: resolve linter issue

* chore: resolve linter issue

---------

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-02-17 14:13:34 +05:30
Rohit Waghchaure
c289fef3b5 fix: letter head for quality inspection
(cherry picked from commit cdd41373b6)
2025-02-17 08:28:52 +00:00
rohitwaghchaure
f8839957da Merge pull request #45913 from frappe/mergify/bp/version-15-hotfix/pr-45903
fix: allow scrap item with zero qty (backport #45903)
2025-02-16 13:28:00 +05:30
mergify[bot]
e271a5cba0 feat: disable auto setting grand total to default mode of payment (backport #45591) (#45917)
feat: disable auto setting grand total to default mode of payment (#45591)

(cherry picked from commit f0a6399056)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-02-14 17:34:37 +05:30
ruthra kumar
a486e2962e Merge pull request #45919 from frappe/mergify/bp/version-15-hotfix/pr-45912
fix: include missing payment_gateway parameter in Payment Request URL (backport #45912)
2025-02-14 17:13:29 +05:30
Navin-S-R
18f94765f7 fix: include missing payment_gateway parameter in Payment Request URL
(cherry picked from commit dbac8cfc94)
2025-02-14 11:20:17 +00:00
Rohit Waghchaure
abe5384449 fix: allow scrap item with zero qty
(cherry picked from commit 706cb64279)
2025-02-14 09:47:30 +00:00
rohitwaghchaure
698b7a9d00 Merge pull request #45764 from frappe/mergify/bp/version-15-hotfix/pr-45763
fix: stock reservation not working for sales invoice with update stock (backport #45763)
2025-02-14 15:16:11 +05:30
rohitwaghchaure
52761affe2 chore: fix test case 2025-02-13 16:32:56 +05:30
Rohit Waghchaure
1fb5586f56 fix: stock reservation for sales invoice 2025-02-13 16:04:05 +05:30
ruthra kumar
ef2cddd338 Merge pull request #45894 from frappe/mergify/bp/version-15-hotfix/pr-45804
fix(report): add options to multiselectlist fields (backport #45804)
2025-02-13 14:26:31 +05:30
ruthra kumar
dbe14d6fe4 chore: resolve conflicts 2025-02-13 14:23:46 +05:30
venkat102
7e85a123b2 fix(report): add options to multiselectlist fields
(cherry picked from commit 8785342fce)

# Conflicts:
#	erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.js
#	erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js
2025-02-13 08:47:15 +00:00
Frappe PR Bot
ce90d427e8 chore(release): Bumped to Version 15.52.0
# [15.52.0](https://github.com/frappe/erpnext/compare/v15.51.2...v15.52.0) (2025-02-12)

### Bug Fixes

* '0' rate LDC's Invoice net totals should be ignored ([96c19cd](96c19cd990))
* add allow_on_submit for party_balance, paid_from_account_balance and paid_to_account_balance ([086c36f](086c36fca6))
* add precision in serial_batch_bundle.py ([a85f6f5](a85f6f54fe))
* add total row in non_grouped_invoices ([e432ae9](e432ae98a9))
* added validation for required invoice_fields in POS (backport [#45780](https://github.com/frappe/erpnext/issues/45780)) ([#45868](https://github.com/frappe/erpnext/issues/45868)) ([4f9a7f5](4f9a7f5065))
* Attibute error `selling_price_list` ([6dc99f9](6dc99f95c0))
* changed naming series to random for SABB ([48a4eff](48a4effdb6))
* check_item_quality_inspection is not whitelisted ([0a4a093](0a4a09352a))
* correct amount in transaction currency for reverse gl entries (backport [#45794](https://github.com/frappe/erpnext/issues/45794)) ([#45849](https://github.com/frappe/erpnext/issues/45849)) ([b06bd82](b06bd825c1))
* correct amt in account currency for lcv with manually distributed charges. (backport [#45532](https://github.com/frappe/erpnext/issues/45532)) ([#45864](https://github.com/frappe/erpnext/issues/45864)) ([179cb1e](179cb1e6e5))
* correct pay amount in portal pages ([3ada520](3ada520618))
* create job card with wip warehouse set to source warehouse if material transfer to wip warehouse is skipped in work order ([9d6f318](9d6f3180d4))
* do not allow "Finance Book" in Accounting Dimensions (backport [#45696](https://github.com/frappe/erpnext/issues/45696)) ([#45856](https://github.com/frappe/erpnext/issues/45856)) ([0954aca](0954aca758))
* do not validate party against  Receivable and Payable account for cancelled gl entries ([6d777cd](6d777cdc68))
* dont update rate of free item on save ([1d3da4d](1d3da4d49a))
* handle response when json is None ([eeb322b](eeb322bd0e))
* map project from rfq to supplier quotation (backport [#45745](https://github.com/frappe/erpnext/issues/45745)) ([#45828](https://github.com/frappe/erpnext/issues/45828)) ([b112d88](b112d88767))
* not able to select the item in the sales invoice ([a649001](a649001886))
* Party name in Supplier Portal for Purchase Order (backport [#45772](https://github.com/frappe/erpnext/issues/45772)) ([#45858](https://github.com/frappe/erpnext/issues/45858)) ([435c354](435c35414f))
* pos numpad editable action buttons (backport [#45823](https://github.com/frappe/erpnext/issues/45823)) ([#45826](https://github.com/frappe/erpnext/issues/45826)) ([035758f](035758f47d))
* possible model sync issue ([ea01fa1](ea01fa135e))
* **regional:** removed payment schedule validation in sales invoice for italy (backport [#45852](https://github.com/frappe/erpnext/issues/45852)) ([#45854](https://github.com/frappe/erpnext/issues/45854)) ([2e9e355](2e9e355329))
* remove serial no if qty is zero ([1359a77](1359a77e72))
* skip warning for free items ([2adab1d](2adab1d36f))
* stock reco current valuation rate ([3b7c38d](3b7c38da10))
* the project document timed out while opening ([28cbce4](28cbce4356))
* unable to remove image from employee ([e3cceb8](e3cceb894b))
* update ctx to args ([d4bc3d1](d4bc3d182f))

### Features

* add repost accounting ledger entry for payment entry ([757dd3f](757dd3f0b6))
2025-02-12 12:09:09 +00:00
ruthra kumar
0eb4556c83 Merge pull request #45860 from frappe/version-15-hotfix
chore: release v15
2025-02-12 17:37:43 +05:30
rohitwaghchaure
45fa2eb542 Merge pull request #45884 from frappe/mergify/bp/version-15-hotfix/pr-45786
fix: skip warning for free items (backport #45786)
2025-02-12 15:16:29 +05:30
barredterra
2adab1d36f fix: skip warning for free items
(cherry picked from commit 772776ad8a)
2025-02-12 09:20:15 +00:00
rohitwaghchaure
162d1ba472 chore: fix test case 2025-02-12 14:32:06 +05:30
rohitwaghchaure
4889950a9e chore: fix conflicts 2025-02-12 14:32:05 +05:30
Rohit Waghchaure
7d871f6bb5 fix: stock reservation not working for sales invoice with update stock
(cherry picked from commit 0c9d0ea1f4)

# Conflicts:
#	erpnext/selling/doctype/sales_order/test_sales_order.py
2025-02-12 14:32:05 +05:30
rohitwaghchaure
70bac1ab17 Merge pull request #45748 from frappe/mergify/bp/version-15-hotfix/pr-45739
fix: create job card with wip warehouse set to source warehouse if material transfer to wip warehouse is skipped in work order (backport #45739)
2025-02-12 13:00:19 +05:30
rohitwaghchaure
0caaff0758 Merge pull request #45880 from frappe/mergify/bp/version-15-hotfix/pr-45879
fix: changed naming series to random for SABB (backport #45879)
2025-02-12 10:53:47 +05:30
rohitwaghchaure
4094fbd6c5 chore: fix conflicts 2025-02-12 10:21:44 +05:30
Rohit Waghchaure
48a4effdb6 fix: changed naming series to random for SABB
(cherry picked from commit a007dc285d)

# Conflicts:
#	erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json
2025-02-12 04:50:41 +00:00
rohitwaghchaure
68ea528841 Merge pull request #45877 from frappe/mergify/bp/version-15-hotfix/pr-45875
fix: add precision in serial_batch_bundle.py (backport #45875)
2025-02-12 09:25:31 +05:30
rohitwaghchaure
4aa7666e46 Merge pull request #45878 from frappe/mergify/bp/version-15-hotfix/pr-45865
fix: dont update rate of free item on save (backport #45865)
2025-02-12 09:25:08 +05:30
Mihir Kandoi
1d3da4d49a fix: dont update rate of free item on save
(cherry picked from commit 6591e76a63)
2025-02-12 03:13:41 +00:00
Mihir Kandoi
a85f6f54fe fix: add precision in serial_batch_bundle.py
(cherry picked from commit 4bf85d1a5a)
2025-02-12 03:06:27 +00:00
rohitwaghchaure
da08b4eeb9 Merge pull request #45870 from frappe/mergify/bp/version-15-hotfix/pr-45869
fix: stock reco current valuation rate (backport #45869)
2025-02-11 18:38:12 +05:30
rohitwaghchaure
b4f291d0ae Merge pull request #45871 from frappe/mergify/bp/version-15-hotfix/pr-45862
fix: remove serial no if qty is zero (backport #45862)
2025-02-11 18:21:21 +05:30
mergify[bot]
4f9a7f5065 fix: added validation for required invoice_fields in POS (backport #45780) (#45868)
* fix: added validation for required invoice_fields in POS (#45780)

fix: added missing validation for required invoice_fields
(cherry picked from commit b95b13ecd8)

# Conflicts:
#	erpnext/selling/page/point_of_sale/pos_payment.js

* fix: resolved merge conflict

---------

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-02-11 17:55:07 +05:30
Rohit Waghchaure
1359a77e72 fix: remove serial no if qty is zero
(cherry picked from commit 3a4ae8c463)
2025-02-11 11:28:16 +00:00
Rohit Waghchaure
3b7c38da10 fix: stock reco current valuation rate
(cherry picked from commit 8d8f3afb39)
2025-02-11 11:24:14 +00:00
mergify[bot]
179cb1e6e5 fix: correct amt in account currency for lcv with manually distributed charges. (backport #45532) (#45864)
fix: correct amt in account currency for lcv with manually distributed charges.

(cherry picked from commit db38e7bf5a)

Co-authored-by: ljain112 <ljain112@gmail.com>
2025-02-11 16:05:42 +05:30
mergify[bot]
435c35414f fix: Party name in Supplier Portal for Purchase Order (backport #45772) (#45858)
fix: Party name in Supplier Portal for Purchase Order

(cherry picked from commit fc8663421b)

Co-authored-by: ljain112 <ljain112@gmail.com>
2025-02-11 15:42:45 +05:30
mergify[bot]
0954aca758 fix: do not allow "Finance Book" in Accounting Dimensions (backport #45696) (#45856)
fix: do not allow "Finance Book" in Accounting Dimensions

(cherry picked from commit a44be73a98)

Co-authored-by: ljain112 <ljain112@gmail.com>
2025-02-11 15:42:36 +05:30
mergify[bot]
2e9e355329 fix(regional): removed payment schedule validation in sales invoice for italy (backport #45852) (#45854)
fix(regional): removed payment schedule validation in sales invoice for italy (#45852)

(cherry picked from commit 494310293c)

Co-authored-by: Lakshit Jain <108322669+ljain112@users.noreply.github.com>
2025-02-11 15:41:30 +05:30
Smit Vora
6b8826f234 Merge pull request #45773 from ljain112/fix-portalpay
fix: correct pay amount in portal pages
2025-02-11 14:59:03 +05:30
mergify[bot]
b112d88767 fix: map project from rfq to supplier quotation (backport #45745) (#45828)
* fix: map project from rfq to supplier quotation

(cherry picked from commit d0479036bb)

* fix: add project field map from mr to rfq

(cherry picked from commit 8fa39bec61)

---------

Co-authored-by: HenningWendtland <156231187+HenningWendtland@users.noreply.github.com>
2025-02-11 14:52:13 +05:30
mergify[bot]
b06bd825c1 fix: correct amount in transaction currency for reverse gl entries (backport #45794) (#45849)
fix: correct amount in tansaction currency for reverse gl entries

(cherry picked from commit 6077c248b0)

Co-authored-by: ljain112 <ljain112@gmail.com>
2025-02-11 14:49:27 +05:30
ruthra kumar
b084433158 Merge pull request #45847 from frappe/mergify/bp/version-15-hotfix/pr-45792
fix: do not validate party against Receivable and Payable account for cancelled gl entries (backport #45792)
2025-02-11 12:53:29 +05:30
ljain112
6d777cdc68 fix: do not validate party against Receivable and Payable account for cancelled gl entries
(cherry picked from commit 0809e00455)
2025-02-11 06:44:50 +00:00
ruthra kumar
ebce6be23f Merge pull request #45844 from frappe/mergify/bp/version-15-hotfix/pr-45781
fix: Added Total Row for `Gross Profit` Report in Non-Grouped Invoices (backport #45781)
2025-02-11 12:01:11 +05:30
Sanket322
e432ae98a9 fix: add total row in non_grouped_invoices
(cherry picked from commit 2d32ddacc3)
2025-02-11 04:51:47 +00:00
ruthra kumar
09114e6a7b Merge pull request #45842 from frappe/mergify/bp/version-15-hotfix/pr-45832
fix: possible model sync issue (backport #45832)
2025-02-11 10:20:21 +05:30
ruthra kumar
ea01fa135e fix: possible model sync issue
(cherry picked from commit 0069581aa3)
2025-02-11 04:25:34 +00:00
Frappe PR Bot
b0c9fbe9fc chore(release): Bumped to Version 15.51.2
## [15.51.2](https://github.com/frappe/erpnext/compare/v15.51.1...v15.51.2) (2025-02-10)

### Bug Fixes

* Attibute error `selling_price_list` ([e8fd2ee](e8fd2eeaa2))
* check_item_quality_inspection is not whitelisted ([d0dbfa1](d0dbfa1cbd))
2025-02-10 16:28:24 +00:00
rohitwaghchaure
0758192c53 Merge pull request #45836 from frappe/mergify/bp/version-15/pr-45835
fix: check_item_quality_inspection is not whitelisted (backport #45835)
2025-02-10 21:56:59 +05:30
rohitwaghchaure
d2cb659220 Merge pull request #45834 from frappe/mergify/bp/version-15/pr-45822
fix: AttributeError in `get_item_details` when selecting/scanning batch in Delivery Note (backport #45774) (backport #45822)
2025-02-10 21:56:40 +05:30
Rohit Waghchaure
d0dbfa1cbd fix: check_item_quality_inspection is not whitelisted
(cherry picked from commit 0a4a09352a)
2025-02-10 15:46:46 +00:00
rohitwaghchaure
b9b2fc5773 Merge pull request #45835 from rohitwaghchaure/fixed-support-31452
fix: check_item_quality_inspection is not whitelisted
2025-02-10 21:15:27 +05:30
Rohit Waghchaure
0a4a09352a fix: check_item_quality_inspection is not whitelisted 2025-02-10 19:09:02 +05:30
DaizyModi
e8fd2eeaa2 fix: Attibute error selling_price_list
(cherry picked from commit 820b32eb8a)
(cherry picked from commit 6dc99f95c0)
2025-02-10 13:34:14 +00:00
rohitwaghchaure
51545234d3 Merge pull request #45822 from frappe/mergify/bp/version-15-hotfix/pr-45774
fix: AttributeError in `get_item_details` when selecting/scanning batch in Delivery Note (backport #45774)
2025-02-10 19:02:51 +05:30
mergify[bot]
035758f47d fix: pos numpad editable action buttons (backport #45823) (#45826)
fix: pos numpad editable action buttons (#45823)

(cherry picked from commit 0b9c28620f)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-02-10 16:28:59 +05:30
DaizyModi
6dc99f95c0 fix: Attibute error selling_price_list
(cherry picked from commit 820b32eb8a)
2025-02-10 10:19:49 +00:00
ruthra kumar
f440795809 Merge pull request #45816 from frappe/mergify/bp/version-15-hotfix/pr-45747
fix: Handle Empty JSON in Report Parsing (backport #45747)
2025-02-10 12:10:43 +05:30
Sanket322
eeb322bd0e fix: handle response when json is None
(cherry picked from commit 133e0417b8)
2025-02-10 06:12:45 +00:00
ruthra kumar
9a5aa8eeb9 Merge pull request #45813 from frappe/mergify/bp/version-15-hotfix/pr-45793
fix: unable to remove image from employee (backport #45793)
2025-02-10 11:01:00 +05:30
ruthra kumar
1f967f7e9d Merge pull request #45814 from frappe/mergify/bp/version-15-hotfix/pr-45762
refactor: set received and paid amount based on each other, if unset (backport #45762)
2025-02-10 11:00:48 +05:30
rohitwaghchaure
3c386c2062 Merge pull request #45811 from frappe/mergify/bp/version-15-hotfix/pr-45810
fix: not able to select the item in the sales invoice (backport #45810)
2025-02-10 10:41:31 +05:30
ruthra kumar
1d6c50c9a1 chore: resolve conflict 2025-02-10 10:38:18 +05:30
ruthra kumar
e589c5b6ef refactor: set paid amount based on received amount if unset
(cherry picked from commit 99e721e622)
2025-02-10 05:08:05 +00:00
ruthra kumar
6638b391ff refactor: set received amount based on paid amount
(cherry picked from commit 5ff540bd82)
2025-02-10 05:08:05 +00:00
Asmita Hase
e3cceb894b fix: unable to remove image from employee
fix: employee image disappears when newly created user_id is linked to employee

(cherry picked from commit 0207d2d7b6)

# Conflicts:
#	erpnext/setup/doctype/employee/employee.json
2025-02-10 05:03:12 +00:00
Rohit Waghchaure
a649001886 fix: not able to select the item in the sales invoice
(cherry picked from commit 35388e7a04)
2025-02-10 04:39:40 +00:00
rohitwaghchaure
39e3746a62 Merge pull request #45775 from frappe/mergify/bp/version-15-hotfix/pr-45767
fix: the project document timed out while opening (backport #45767)
2025-02-10 10:09:38 +05:30
Frappe PR Bot
8c57e9f8c8 chore(release): Bumped to Version 15.51.1
## [15.51.1](https://github.com/frappe/erpnext/compare/v15.51.0...v15.51.1) (2025-02-07)

### Bug Fixes

* update ctx to args ([13bebe7](13bebe71b0))
2025-02-07 14:22:13 +00:00
ruthra kumar
5f62fc5a99 Merge pull request #45795 from frappe/mergify/bp/version-15/pr-45770
Fix: Update `ctx` to `args` for compatibility. (backport #45770)
2025-02-07 19:50:45 +05:30
Sanket322
13bebe71b0 fix: update ctx to args
(cherry picked from commit d4bc3d182f)
2025-02-07 14:14:41 +00:00
ruthra kumar
9702a192d7 Merge pull request #45770 from Sanket322/update_ctx_to_args
Fix: Update `ctx` to `args` for compatibility.
2025-02-07 19:43:53 +05:30
ruthra kumar
a051ddee6d Merge pull request #45788 from frappe/mergify/bp/version-15-hotfix/pr-45640
feat: add repost accounting ledger entry for payment entry (backport #45640)
2025-02-07 17:15:33 +05:30
ruthra kumar
be09700d8b Merge pull request #45789 from frappe/mergify/bp/version-15-hotfix/pr-45644
fix: add allow_on_submit for party_balance, paid_from_account_balance and paid_to_account_balance (backport #45644)
2025-02-07 17:15:22 +05:30
l0gesh29
757dd3f0b6 feat: add repost accounting ledger entry for payment entry
(cherry picked from commit 5676d60ed3)
2025-02-07 10:41:54 +00:00
Sugesh393
086c36fca6 fix: add allow_on_submit for party_balance, paid_from_account_balance and paid_to_account_balance
(cherry picked from commit 707c01487e)
2025-02-07 10:41:54 +00:00
ruthra kumar
a7d32b580f Merge pull request #45784 from frappe/mergify/bp/version-15-hotfix/pr-45639
fix: '0' rate LDC's Invoice net totals should be ignored (backport #45639)
2025-02-07 13:43:58 +05:30
ruthra kumar
43d75b96c6 chore: resolve conflict 2025-02-07 13:18:42 +05:30
ruthra kumar
3734289983 test: ldc @ 0 rate
(cherry picked from commit 0cdd346f8f)

# Conflicts:
#	erpnext/accounts/doctype/tax_withholding_category/test_tax_withholding_category.py
2025-02-07 07:44:11 +00:00
ruthra kumar
96c19cd990 fix: '0' rate LDC's Invoice net totals should be ignored
(cherry picked from commit 325c4e3536)
2025-02-07 07:44:11 +00:00
rohitwaghchaure
08a6f4e6d3 chore: fix conflicts 2025-02-06 22:09:44 +05:30
Rohit Waghchaure
28cbce4356 fix: the project document timed out while opening
(cherry picked from commit 33d03b1542)

# Conflicts:
#	erpnext/selling/doctype/sales_order/sales_order.json
2025-02-06 16:38:46 +00:00
ljain112
3ada520618 fix: correct pay amount in portal pages 2025-02-06 18:56:29 +05:30
Sanket322
d4bc3d182f fix: update ctx to args 2025-02-06 17:55:37 +05:30
Mihir Kandoi
4196986273 chore: resolve conflicts 2025-02-05 17:59:34 +05:30
Mihir Kandoi
9d6f3180d4 fix: create job card with wip warehouse set to source warehouse if material transfer to wip warehouse is skipped in work order
(cherry picked from commit 723e902470)

# Conflicts:
#	erpnext/manufacturing/doctype/work_order/work_order.py
2025-02-05 12:19:49 +00:00
Frappe PR Bot
b1161f446f chore(release): Bumped to Version 15.51.0
# [15.51.0](https://github.com/frappe/erpnext/compare/v15.50.1...v15.51.0) (2025-02-05)

### Bug Fixes

* actual qty showing blank for sub-assembly items ([d0748b1](d0748b1b67))
* added correct options for incoming_rate field of delivery note item ([cfc5007](cfc50073ed))
* allow multiple email ids ([2a25302](2a25302c35))
* attribute 'msgbox' not found in sales invoice.js ([f6b4984](f6b49845e2))
* bind this to function ([c0b32c4](c0b32c446b))
* check billing address ([44d9fb7](44d9fb7a69))
* closing stock balance report not generating ([47d1c3b](47d1c3b5a3))
* conflicts ([4aa072a](4aa072a8eb))
* consider process_loss_qty in work order ([1522d76](1522d76a3b))
* copy correct uom from devliery note when creating packing list ([f9794e5](f9794e5b44))
* correct error message in payment entry ([6ea5307](6ea5307b0e))
* default payment terms template selected while duplicating ([ca4bb96](ca4bb96fb4))
* Do not check for cancelled invoices ([84638f5](84638f58fd))
* Do not check for cancelled invoices ([b612ab5](b612ab5823))
* fetch rate from item price list when document is saved ([b140ce7](b140ce71d7))
* filter the item tax template using the input text ([8ea9a9e](8ea9a9e467))
* Gross Profit Report with Correct Totals and Gross Margin (backport [#45548](https://github.com/frappe/erpnext/issues/45548)) ([#45598](https://github.com/frappe/erpnext/issues/45598)) ([6301b32](6301b321d8))
* handling company in bank reconciliation tool ([#45582](https://github.com/frappe/erpnext/issues/45582)) ([aa27e19](aa27e19a58))
* ignore expired batch for pick list ([786db3d](786db3d0fa))
* loading print receipt only at order complete (backport [#45627](https://github.com/frappe/erpnext/issues/45627)) ([#45628](https://github.com/frappe/erpnext/issues/45628)) ([72868ee](72868eee04))
* logical error failing tests ([6a03f99](6a03f99546))
* not able to make manufacturing entry for alternate items ([eef2f3c](eef2f3c5d4))
* only system manager was able to create customer & prospect ([6149306](6149306b78))
* payment schedule table is empty while duplicating record ([c523625](c52362531c))
* point of sale padding (backport [#45697](https://github.com/frappe/erpnext/issues/45697)) ([#45699](https://github.com/frappe/erpnext/issues/45699)) ([b915e7f](b915e7f637))
* pos payment cash shortcut decimal (backport [#45702](https://github.com/frappe/erpnext/issues/45702)) ([#45705](https://github.com/frappe/erpnext/issues/45705)) ([6113cc1](6113cc1e43))
* pos print receipt on submit (backport [#45632](https://github.com/frappe/erpnext/issues/45632)) ([#45633](https://github.com/frappe/erpnext/issues/45633)) ([676dde5](676dde59c2))
* **pos:** add item in the existing item row when discount is applied ([0b54cb9](0b54cb9a7c))
* posting_date to posting_datetime in stock related queries ([cd5174e](cd5174e423))
* remove tds account in taxes table on change of Tax Withholding Category ([1ad16c3](1ad16c368e))
* removed unused field ([9a27d3c](9a27d3cedc))
* renamed Commments Tab to Notes tab in Lead doctype ([86edcfc](86edcfc1fd))
* reposting issue with s3 backup ([73c1bf9](73c1bf972e))
* resolved conflicts ([223fe62](223fe62638))
* respect user set account if not advance account for getting outstanding invoices in payment entry ([8108d7f](8108d7fdba))
* semgrep ([401fd7f](401fd7fca7))
* set asset value correctly after cancelling value adjustment ([7f7f403](7f7f403f5b))
* show only items with inspection enabled on create QI dialog ([34f8a37](34f8a370d1))
* slow SABB query ([7931c2d](7931c2d182))
* subcontracting valiation precision issue ([5319683](5319683dbf))
* track employee changes ([#45674](https://github.com/frappe/erpnext/issues/45674)) ([cf98ebf](cf98ebf7fe))
* validation message ([4742211](47422111b4))
* validation to prevent submission if the SABB is not linked to a stock transaction ([24a6f61](24a6f611d8))

### Features

* account heads changed along with journal entry type and descrip… ([#42845](https://github.com/frappe/erpnext/issues/42845)) ([bbecd36](bbecd36a5d))
* report to find incorrect SABB ([a948f2e](a948f2e095))
* set bank account of company to default company bank account from masters ([b840271](b840271d2a))

### Performance Improvements

* stock entry with batch (backport [#45486](https://github.com/frappe/erpnext/issues/45486)) ([#45602](https://github.com/frappe/erpnext/issues/45602)) ([8b75401](8b75401db9))
2025-02-05 12:08:00 +00:00
ruthra kumar
b8485e1d28 Merge pull request #45703 from frappe/version-15-hotfix
chore: release v15
2025-02-05 17:36:41 +05:30
ruthra kumar
e422ae16e5 Merge pull request #45743 from frappe/mergify/bp/version-15-hotfix/pr-45604
fix: filter the item tax template using the input text (backport #45604)
2025-02-05 17:13:07 +05:30
rohitwaghchaure
dcdd8e9824 Merge pull request #45742 from frappe/mergify/bp/version-15-hotfix/pr-45734
fix: added correct options for incoming_rate field of delivery note item (backport #45734)
2025-02-05 17:08:16 +05:30
rohitwaghchaure
9d98d0efc8 Merge pull request #45744 from frappe/mergify/bp/version-15-hotfix/pr-45741
fix: removed unused field (backport #45741)
2025-02-05 17:07:46 +05:30
rohitwaghchaure
af60368e54 Merge pull request #45740 from frappe/mergify/bp/version-15-hotfix/pr-45692
fix: fetch rate from item price list when document is saved (backport #45692)
2025-02-05 16:42:00 +05:30
rohitwaghchaure
ab37e5754b chore: fix conflicts 2025-02-05 16:40:20 +05:30
Rohit Waghchaure
9a27d3cedc fix: removed unused field
(cherry picked from commit 2d7a576da5)
2025-02-05 11:09:40 +00:00
ruthra kumar
0b591ba7eb chore: resolve conflicts 2025-02-05 16:37:09 +05:30
Bhavan23
8ea9a9e467 fix: filter the item tax template using the input text
(cherry picked from commit 4dd37ba033)

# Conflicts:
#	erpnext/controllers/queries.py
2025-02-05 11:01:21 +00:00
Mihir Kandoi
cfc50073ed fix: added correct options for incoming_rate field of delivery note item
(cherry picked from commit 417bf49a8d)

# Conflicts:
#	erpnext/stock/doctype/delivery_note_item/delivery_note_item.json
2025-02-05 10:48:01 +00:00
Mihir Kandoi
25075e5981 test: added test
(cherry picked from commit 07adfadd58)
2025-02-05 10:23:26 +00:00
Mihir Kandoi
6a03f99546 fix: logical error failing tests
(cherry picked from commit fee318a275)
2025-02-05 10:23:26 +00:00
Mihir Kandoi
b140ce71d7 fix: fetch rate from item price list when document is saved
(cherry picked from commit 1e4b9fbdf0)
2025-02-05 10:23:26 +00:00
Khushi Rawat
f72d4b6984 Merge pull request #45738 from frappe/mergify/bp/version-15-hotfix/pr-45735
fix: set asset value correctly after cancelling value adjustment (backport #45735)
2025-02-05 15:51:11 +05:30
ruthra kumar
d86f7839ab Merge pull request #45737 from frappe/mergify/bp/version-15-hotfix/pr-45717
fix(Purchase Invoice): default payment terms template selected while duplicating (backport #45717)
2025-02-05 15:30:48 +05:30
Khushi Rawat
7f7f403f5b fix: set asset value correctly after cancelling value adjustment
(cherry picked from commit fee3846144)
2025-02-05 09:56:11 +00:00
Ejaaz Khan
df0ca2d198 refactor: remove log
(cherry picked from commit bfc01441a0)
2025-02-05 09:47:59 +00:00
Ejaaz Khan
c52362531c fix: payment schedule table is empty while duplicating record
(cherry picked from commit fb3f08a441)
2025-02-05 09:47:59 +00:00
Ejaaz Khan
ca4bb96fb4 fix: default payment terms template selected while duplicating
(cherry picked from commit 18127603fe)
2025-02-05 09:47:59 +00:00
Khushi Rawat
50d10d5c8d Merge pull request #45733 from frappe/mergify/bp/version-15-hotfix/pr-42845
feat: account heads changed along with journal entry type and descrip… (backport #42845)
2025-02-05 15:03:27 +05:30
Khushi Rawat
4aa072a8eb fix: conflicts 2025-02-05 14:44:39 +05:30
Khushi Rawat
223fe62638 fix: resolved conflicts 2025-02-05 14:43:24 +05:30
rahulgupta8848
bbecd36a5d feat: account heads changed along with journal entry type and descrip… (#42845)
* feat: account heads changed along with journal entry type and description

* feat: added patch for difference_amount for asset value adjustment and refactor

---------

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

# Conflicts:
#	erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.json
#	erpnext/patches.txt
2025-02-05 09:09:49 +00:00
ruthra kumar
9f28993575 Merge pull request #45732 from frappe/mergify/bp/version-15-hotfix/pr-45590
fix: remove tds account in taxes table on change of Tax Withholding C… (backport #45590)
2025-02-05 14:28:07 +05:30
l0gesh29
1ad16c368e fix: remove tds account in taxes table on change of Tax Withholding Category
(cherry picked from commit 79b5a3e1dd)
2025-02-05 08:39:21 +00:00
ruthra kumar
c1002d3787 Merge pull request #45728 from frappe/mergify/bp/version-15-hotfix/pr-45686
fix: allow multiple email ids (backport #45686)
2025-02-05 14:08:48 +05:30
ruthra kumar
8ad32c4593 Merge pull request #45731 from frappe/mergify/bp/version-15-hotfix/pr-45447
fix(pos): add item in the existing item row when discount is applied (backport #45447)
2025-02-05 14:04:09 +05:30
venkat102
0b54cb9a7c fix(pos): add item in the existing item row when discount is applied
(cherry picked from commit bee2c04d0b)
2025-02-05 08:30:27 +00:00
Sudharsanan11
44d9fb7a69 fix: check billing address
(cherry picked from commit 9950e4aa0c)
2025-02-05 08:19:58 +00:00
Sudharsanan11
2a25302c35 fix: allow multiple email ids
(cherry picked from commit 423decb93c)
2025-02-05 08:19:58 +00:00
ruthra kumar
0cac9e9b9a Merge pull request #45727 from frappe/mergify/bp/version-15-hotfix/pr-45610
fix: respect user set account if not advance account for getting outsanding invoices in payment entry (backport #45610)
2025-02-05 13:40:05 +05:30
rohitwaghchaure
efa7602fae Merge pull request #45718 from frappe/mergify/bp/version-15-hotfix/pr-45710
fix: show only items with inspection enabled on create QI dialog (backport #45710)
2025-02-05 13:05:16 +05:30
ruthra kumar
b926b49afa chore: fix typo
(cherry picked from commit 85378f9d1a)
2025-02-05 06:40:22 +00:00
ljain112
8108d7fdba fix: respect user set account if not advance account for getting outstanding invoices in payment entry
(cherry picked from commit 9faf78d3e5)
2025-02-05 06:40:22 +00:00
Mihir Kandoi
3689a2deae chore: resolve conflicts 2025-02-05 12:00:01 +05:30
ruthra kumar
5a7b901327 Merge pull request #45719 from frappe/mergify/bp/version-15-hotfix/pr-45678
fix: copy correct uom from delivery note when creating packing list (backport #45678)
2025-02-05 10:38:13 +05:30
rohitwaghchaure
51b03d40aa Merge pull request #45721 from rohitwaghchaure/fixed-support-30732
fix: closing stock balance report not generating
2025-02-05 08:45:00 +05:30
Rohit Waghchaure
47d1c3b5a3 fix: closing stock balance report not generating 2025-02-05 05:29:23 +05:30
Mihir Kandoi
f9794e5b44 fix: copy correct uom from devliery note when creating packing list
(cherry picked from commit 3cdaa80526)
2025-02-04 19:06:15 +00:00
Mihir Kandoi
401fd7fca7 fix: semgrep
(cherry picked from commit ffd10d1fe9)
2025-02-04 19:04:57 +00:00
Mihir Kandoi
34f8a370d1 fix: show only items with inspection enabled on create QI dialog
(cherry picked from commit c92ec312b9)

# Conflicts:
#	erpnext/controllers/stock_controller.py
2025-02-04 19:04:57 +00:00
ruthra kumar
ac960d26e8 Merge pull request #45711 from frappe/mergify/bp/version-15-hotfix/pr-45582
fix: handling company in bank reconciliation tool (backport #45582)
2025-02-04 17:32:42 +05:30
Aayush Dalal
aa27e19a58 fix: handling company in bank reconciliation tool (#45582)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
(cherry picked from commit d1c927530e)
2025-02-04 11:45:01 +00:00
rohitwaghchaure
1ed52c3b41 Merge pull request #45708 from frappe/mergify/bp/version-15-hotfix/pr-45701
fix: subcontracting validation precision issue (backport #45701)
2025-02-04 15:56:44 +05:30
Frappe PR Bot
fea51b7086 chore(release): Bumped to Version 15.50.1
## [15.50.1](https://github.com/frappe/erpnext/compare/v15.50.0...v15.50.1) (2025-02-04)

### Bug Fixes

* not able to make manufacturing entry for alternate items ([32bfc2f](32bfc2f555))
2025-02-04 10:23:41 +00:00
rohitwaghchaure
49192d90d0 Merge pull request #45707 from frappe/mergify/bp/version-15/pr-45647
fix: not able to make manufacturing entry for alternate items (backport #45646) (backport #45647)
2025-02-04 15:52:11 +05:30
rohitwaghchaure
f9af53cd87 Merge pull request #45706 from frappe/mergify/bp/version-15-hotfix/pr-45698
feat: report to find incorrect SABB (backport #45698)
2025-02-04 15:45:40 +05:30
Mihir Kandoi
5319683dbf fix: subcontracting valiation precision issue
(cherry picked from commit 8720d412bd)
2025-02-04 09:54:08 +00:00
Rohit Waghchaure
32bfc2f555 fix: not able to make manufacturing entry for alternate items
(cherry picked from commit 1607aa1a44)
(cherry picked from commit eef2f3c5d4)
2025-02-04 09:52:11 +00:00
Rohit Waghchaure
a948f2e095 feat: report to find incorrect SABB
(cherry picked from commit 7e24395e00)
2025-02-04 09:47:04 +00:00
mergify[bot]
6113cc1e43 fix: pos payment cash shortcut decimal (backport #45702) (#45705)
fix: pos payment cash shortcut decimal (#45702)

(cherry picked from commit a20116816e)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-02-04 15:14:08 +05:30
mergify[bot]
b915e7f637 fix: point of sale padding (backport #45697) (#45699)
fix: point of sale padding (#45697)

(cherry picked from commit 51a65899ec)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-02-04 14:02:38 +05:30
Shariq Ansari
0d03e03925 Merge pull request #45695 from frappe/mergify/bp/version-15-hotfix/pr-45694
fix: only system manager was able to create customer & prospect (backport #45694)
2025-02-04 12:48:50 +05:30
Shariq Ansari
6149306b78 fix: only system manager was able to create customer & prospect
(cherry picked from commit 716edeb465)
2025-02-04 06:41:09 +00:00
rohitwaghchaure
a0523c7956 Merge pull request #45690 from frappe/mergify/bp/version-15-hotfix/pr-45680
fix: slow SABB query (backport #45680)
2025-02-03 23:10:46 +05:30
Rohit Waghchaure
7931c2d182 fix: slow SABB query
(cherry picked from commit 81978a0bd8)
2025-02-03 17:02:03 +00:00
rohitwaghchaure
7658053dbd Merge pull request #45665 from frappe/mergify/bp/version-15-hotfix/pr-45648
fix: consider process_loss_qty in work order (backport #45648)
2025-02-03 20:57:01 +05:30
ruthra kumar
1b85cdcf48 Merge pull request #45677 from frappe/mergify/bp/version-15-hotfix/pr-45674
fix: track employee changes (backport #45674)
2025-02-03 15:27:03 +05:30
ruthra kumar
16a80cc04a Merge pull request #45675 from frappe/mergify/bp/version-15-hotfix/pr-45631
fix: Do not check for cancelled invoices (backport #45631)
2025-02-03 14:32:00 +05:30
Ankush Menat
cf98ebf7fe fix: track employee changes (#45674)
closes https://github.com/frappe/erpnext/issues/45571

(cherry picked from commit 827afbfa2e)
2025-02-03 08:52:45 +00:00
Deepesh Garg
84638f58fd fix: Do not check for cancelled invoices
(cherry picked from commit 2c94867b0e)
2025-02-03 08:42:28 +00:00
Deepesh Garg
b612ab5823 fix: Do not check for cancelled invoices
(cherry picked from commit 701fc02050)
2025-02-03 08:42:27 +00:00
ruthra kumar
0d94eba021 Merge pull request #45669 from frappe/mergify/bp/version-15-hotfix/pr-45619
feat: set bank account of company to default company bank account fro… (backport #45619)
2025-02-03 14:05:23 +05:30
Shariq Ansari
7d95113499 Merge pull request #45673 from frappe/mergify/bp/version-15-hotfix/pr-45637
fix: renamed Comments Tab to Notes tab in Lead doctype (backport #45637)
2025-02-03 13:27:26 +05:30
Shariq Ansari
afd2529c2a chore: resolved conflict 2025-02-03 13:26:33 +05:30
Shariq Ansari
86edcfc1fd fix: renamed Commments Tab to Notes tab in Lead doctype
(cherry picked from commit 018df3135a)

# Conflicts:
#	erpnext/crm/doctype/lead/lead.json
2025-02-03 07:53:32 +00:00
Mihir Kandoi
b840271d2a feat: set bank account of company to default company bank account from masters
(cherry picked from commit ce7702cc19)
2025-02-03 06:31:55 +00:00
rohitwaghchaure
55ac00a510 Merge pull request #45667 from frappe/mergify/bp/version-15-hotfix/pr-45621
fix: delivered button of purchase order (backport #45621)
2025-02-03 11:58:35 +05:30
Mihir Kandoi
c0b32c446b fix: bind this to function
(cherry picked from commit 41649cf52d)
2025-02-03 06:22:47 +00:00
Mihir Kandoi
1522d76a3b fix: consider process_loss_qty in work order
(cherry picked from commit 95fda47b6c)
2025-02-03 06:21:40 +00:00
rohitwaghchaure
83e676f128 Merge pull request #45647 from frappe/mergify/bp/version-15-hotfix/pr-45646
fix: not able to make manufacturing entry for alternate items (backport #45646)
2025-02-03 11:48:03 +05:30
Rohit Waghchaure
eef2f3c5d4 fix: not able to make manufacturing entry for alternate items
(cherry picked from commit 1607aa1a44)
2025-01-31 18:18:37 +00:00
rohitwaghchaure
821cc215e3 Merge pull request #45645 from frappe/mergify/bp/version-15-hotfix/pr-45642
fix: actual qty showing blank for sub-assembly items (backport #45642)
2025-01-31 23:22:09 +05:30
rohitwaghchaure
3e09abc495 Merge pull request #45617 from rtdany10/expired-batch-pick
fix: ignore expired batch for pick list
2025-01-31 22:49:34 +05:30
Rohit Waghchaure
d0748b1b67 fix: actual qty showing blank for sub-assembly items
(cherry picked from commit 5be2e71a35)
2025-01-31 17:09:00 +00:00
rohitwaghchaure
7fc70e3f20 Merge pull request #45638 from frappe/mergify/bp/version-15-hotfix/pr-45626
fix: validation to prevent submission, if the SABB is not linked to a stock transaction (backport #45626)
2025-01-31 15:21:43 +05:30
Rohit Waghchaure
24a6f611d8 fix: validation to prevent submission if the SABB is not linked to a stock transaction
(cherry picked from commit f976115a2b)
2025-01-31 09:14:53 +00:00
ruthra kumar
4b91b7691a Merge pull request #45636 from frappe/mergify/bp/version-15-hotfix/pr-45615
fix: correct error message in payment entry (backport #45615)
2025-01-31 14:18:59 +05:30
ljain112
6ea5307b0e fix: correct error message in payment entry
(cherry picked from commit 592704cfd0)
2025-01-31 07:27:37 +00:00
rohitwaghchaure
d65101a5f2 Merge pull request #45634 from frappe/mergify/bp/version-15-hotfix/pr-45629
fix: attribute 'msgbox' not found in sales invoice.js (backport #45629)
2025-01-31 12:11:28 +05:30
rohitwaghchaure
bd8e4eeddc chore: fix conflicts 2025-01-31 12:09:50 +05:30
Mihir Kandoi
f6b49845e2 fix: attribute 'msgbox' not found in sales invoice.js
(cherry picked from commit 5643385c22)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/sales_invoice.js
2025-01-31 06:34:32 +00:00
mergify[bot]
676dde59c2 fix: pos print receipt on submit (backport #45632) (#45633)
fix: pos print receipt on submit (#45632)

(cherry picked from commit fe51535392)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-01-31 12:02:47 +05:30
mergify[bot]
72868eee04 fix: loading print receipt only at order complete (backport #45627) (#45628)
fix: loading print receipt only at order complete (#45627)

(cherry picked from commit 5a1851dfe3)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-01-31 11:19:23 +05:30
rohitwaghchaure
04c1fc71dd Merge pull request #45614 from frappe/mergify/bp/version-15-hotfix/pr-45612
fix: posting_date to posting_datetime in stock related queries (backport #45612)
2025-01-30 21:19:19 +05:30
Dany Robert
786db3d0fa fix: ignore expired batch for pick list 2025-01-30 19:34:06 +05:30
Rohit Waghchaure
cd5174e423 fix: posting_date to posting_datetime in stock related queries
(cherry picked from commit e61ab48145)
2025-01-30 11:36:10 +00:00
rohitwaghchaure
20d5a79839 Merge pull request #45613 from frappe/mergify/bp/version-15-hotfix/pr-45609
fix: reposting issue with s3 backup (backport #45609)
2025-01-30 17:05:16 +05:30
Rohit Waghchaure
73c1bf972e fix: reposting issue with s3 backup
(cherry picked from commit 6b454ca9a7)
2025-01-30 10:29:54 +00:00
mergify[bot]
6301b321d8 fix: Gross Profit Report with Correct Totals and Gross Margin (backport #45548) (#45598)
fix: Gross Profit Report with Correct Totals and Gross Margin (#45548)

Co-authored-by: Sanket322 <shahsanket322003.com>
(cherry picked from commit aaf720ab61)

Co-authored-by: Sanket Shah <113279972+Sanket322@users.noreply.github.com>
2025-01-30 11:21:52 +05:30
mergify[bot]
8b75401db9 perf: stock entry with batch (backport #45486) (#45602)
perf: stock entry with batch

(cherry picked from commit 0b1b964b77)

Co-authored-by: Rohit Waghchaure <rohitw1991@gmail.com>
2025-01-30 11:21:20 +05:30
rohitwaghchaure
b5856d4f1f Merge pull request #45601 from frappe/mergify/bp/version-15-hotfix/pr-45600
fix: validation message (backport #45600)
2025-01-29 20:48:56 +05:30
Rohit Waghchaure
47422111b4 fix: validation message
(cherry picked from commit 4c8dff942d)
2025-01-29 15:12:39 +00:00
Frappe PR Bot
c5cd0fcd29 chore(release): Bumped to Version 15.50.0
# [15.50.0](https://github.com/frappe/erpnext/compare/v15.49.3...v15.50.0) (2025-01-29)

### Bug Fixes

* add condition to check if item is delivered by supplier in make_purchase_order_for_default_supplier() (backport [#45370](https://github.com/frappe/erpnext/issues/45370)) ([#45410](https://github.com/frappe/erpnext/issues/45410)) ([5d7d3d8](5d7d3d8c19))
* add multiple item issue in stock entry (backport [#45544](https://github.com/frappe/erpnext/issues/45544)) ([#45580](https://github.com/frappe/erpnext/issues/45580)) ([8b0efab](8b0efab13e))
* added debounce to prevent multiple clicks (backport [#45369](https://github.com/frappe/erpnext/issues/45369)) ([#45376](https://github.com/frappe/erpnext/issues/45376)) ([bdc65da](bdc65daadd))
* added item_group filter in item_code field in stock balance report (backport [#45340](https://github.com/frappe/erpnext/issues/45340)) ([#45389](https://github.com/frappe/erpnext/issues/45389)) ([412e22f](412e22fb4e))
* allow to fix negative stock for batch using stock reco ([69c5695](69c5695f6e))
* batch qty calculation (backport [#45367](https://github.com/frappe/erpnext/issues/45367)) ([#45388](https://github.com/frappe/erpnext/issues/45388)) ([767529f](767529f0ec))
* Correct Party Bank Account mapping in `Payment Entry` ([4a390ae](4a390ae3de))
* currency decimal on POS Past Order List (backport [#45524](https://github.com/frappe/erpnext/issues/45524)) ([#45527](https://github.com/frappe/erpnext/issues/45527)) ([ff46ae5](ff46ae5bc1))
* disable load_after_mapping when purchase order created from sales order (backport [#45405](https://github.com/frappe/erpnext/issues/45405)) ([#45429](https://github.com/frappe/erpnext/issues/45429)) ([ae5ce97](ae5ce97fd0))
* Do no query GLs if no PCVs are posted ([ad06652](ad06652ed5))
* do not allow to manually submit the SABB ([2b16eb5](2b16eb5381))
* do not check budget during reposting ([#45432](https://github.com/frappe/erpnext/issues/45432)) ([f2b946d](f2b946d325))
* don't update party-type on change of cost center in Journal Entry ([#45291](https://github.com/frappe/erpnext/issues/45291)) ([fb75180](fb75180a7d))
* existing logical error ([6c4655d](6c4655dd72))
* fix creating documents from sales invoice (backport [#45346](https://github.com/frappe/erpnext/issues/45346)) ([#45408](https://github.com/frappe/erpnext/issues/45408)) ([73a21c2](73a21c294c))
* get stock balance filtered by company for validating stock value in jv (backport [#45549](https://github.com/frappe/erpnext/issues/45549)) ([#45578](https://github.com/frappe/erpnext/issues/45578)) ([ef2f411](ef2f4118d9))
* import ([d74c498](d74c498efe))
* import 2 ([b59d253](b59d253d93))
* JobCardTimeLog' object has no attribute 'remaining_time_in_mins' ([ef15429](ef15429d98))
* logical error in where condition of qb query ([c102e51](c102e51eb1))
* **material request:** mapping Sales Order Item Delivery Date to Mate… (backport [#45227](https://github.com/frappe/erpnext/issues/45227)) ([#45424](https://github.com/frappe/erpnext/issues/45424)) ([52fdc7c](52fdc7cecd))
* merge conflict ([57f79a2](57f79a2240))
* **payment entry:** get amount in transaction currency ([b37602c](b37602c716))
* postal_code_move_and_fixes ([0e088dd](0e088dde36))
* precision issue causing incorrect status ([46a2b7a](46a2b7a07e))
* precision issue in stock entry ([fe5e42d](fe5e42d2dc))
* **query:** remove duplicate docstatus condition ([#45586](https://github.com/frappe/erpnext/issues/45586)) ([2d2f30e](2d2f30e6cf))
* remove applied pricing rule ([4e347d8](4e347d835e))
* remove unnecessary auth from plaid connector (backport [#44305](https://github.com/frappe/erpnext/issues/44305)) ([#45421](https://github.com/frappe/erpnext/issues/45421)) ([d9b342f](d9b342f257))
* removed field not present in v15 ([1be1981](1be19819fb))
* resolved pos return setting to default mode of payment instead of user selection (backport [#45377](https://github.com/frappe/erpnext/issues/45377)) ([#45419](https://github.com/frappe/erpnext/issues/45419)) ([224a925](224a92587d))
* return qty error due to precision (backport [#45536](https://github.com/frappe/erpnext/issues/45536)) ([#45581](https://github.com/frappe/erpnext/issues/45581)) ([a2ffdc7](a2ffdc7805))
* secure bulk transaction (backport [#45386](https://github.com/frappe/erpnext/issues/45386)) ([#45426](https://github.com/frappe/erpnext/issues/45426)) ([f9d9672](f9d96726f0))
* set company related values ([1498275](149827562b))
* set expense_account and cost_center based on company in stock entry (backport [#45159](https://github.com/frappe/erpnext/issues/45159)) ([#45416](https://github.com/frappe/erpnext/issues/45416)) ([3eb28bb](3eb28bb0e0))
* set party_account_currency for pos_invoice returns ([172fdad](172fdad244))
* set preferred email in Employee via backend controller (backport [#45320](https://github.com/frappe/erpnext/issues/45320)) ([#45379](https://github.com/frappe/erpnext/issues/45379)) ([f8099a6](f8099a6847))
* Set right party name in bank transaction ([86f4bf6](86f4bf6e01))
* show payment entries in Tax Withheld Vouchers ([28bb9c3](28bb9c39e8))
* System was allowing to save payment schedule amount less than grand total (backport [#45322](https://github.com/frappe/erpnext/issues/45322)) ([#45381](https://github.com/frappe/erpnext/issues/45381)) ([2403cdc](2403cdc4d7))
* update fields on change of item code In `Update Items` of `Sales Order` ([#45125](https://github.com/frappe/erpnext/issues/45125)) ([f60a3bc](f60a3bcedf))
* update voucher outstanding from payment ledger ([e385594](e3855949e1))
* Use `process.extract` to get the corresponding party doc name of the result ([153e961](153e961df7))
* use frappe.datetime.str_to_user (backport [#45216](https://github.com/frappe/erpnext/issues/45216)) ([#45417](https://github.com/frappe/erpnext/issues/45417)) ([6c10393](6c10393164))
* use user defined discount amount or default ([e73aab0](e73aab0df5))
* validate items against selling settings (backport [#45288](https://github.com/frappe/erpnext/issues/45288)) ([#45431](https://github.com/frappe/erpnext/issues/45431)) ([7ff7ec7](7ff7ec7929))
* validate non-stock item for exchange loss/gain (backport [#45306](https://github.com/frappe/erpnext/issues/45306)) ([#45380](https://github.com/frappe/erpnext/issues/45380)) ([4e367de](4e367dedec))
* valuation for batch (backport [#45335](https://github.com/frappe/erpnext/issues/45335)) ([#45420](https://github.com/frappe/erpnext/issues/45420)) ([dec0cae](dec0caeac5))
* variable names ([8f73978](8f73978a26))
* Wrong `bank_ac_no` filter + simplify convoluted logic ([60feb7c](60feb7cbd4))

### Features

* Add chart of accounts for Switzerland ([de43c12](de43c123e2))
* add company level validation for accounting dimension ([8f0d270](8f0d270746))
* Add corrective job card operating cost as additional costs in stock entry ([efc7b9a](efc7b9ac56))
* full screen on pos (backport [#45404](https://github.com/frappe/erpnext/issues/45404)) ([#45418](https://github.com/frappe/erpnext/issues/45418)) ([aca8d66](aca8d663dd))
* pos configuration for print receipt on complete order ([#45392](https://github.com/frappe/erpnext/issues/45392)) ([b9b4f63](b9b4f6316d))
* **Sales Invoice:** allow linking to project without adding timesheets (backport [#44295](https://github.com/frappe/erpnext/issues/44295)) ([#45528](https://github.com/frappe/erpnext/issues/45528)) ([2c2a25a](2c2a25ab16))
* **translations:** add Bengali translations for signature and client details ([4952733](495273365b))
* **UX:** scroll to required field (backport [#44367](https://github.com/frappe/erpnext/issues/44367)) ([#45433](https://github.com/frappe/erpnext/issues/45433)) ([692a448](692a44816f))

### Performance Improvements

* optimize DB calls with frappe.get_all (backport [#45289](https://github.com/frappe/erpnext/issues/45289)) ([#45391](https://github.com/frappe/erpnext/issues/45391)) ([04f5a72](04f5a72e08))

### Reverts

* Revert "feat(Sales Invoice): allow linking to project without adding timesheets (backport [#44295](https://github.com/frappe/erpnext/issues/44295))" ([#45531](https://github.com/frappe/erpnext/issues/45531)) ([b004855](b004855e7c))
2025-01-29 11:28:47 +00:00
ruthra kumar
cae8cee398 Merge pull request #45566 from frappe/version-15-hotfix
chore: release v15
2025-01-29 16:57:29 +05:30
rohitwaghchaure
cc96145ac9 Merge pull request #45595 from rohitwaghchaure/fixed-support-29212
fix: do not allow to manually submit the SABB
2025-01-29 16:38:19 +05:30
Rohit Waghchaure
2b16eb5381 fix: do not allow to manually submit the SABB 2025-01-29 16:36:17 +05:30
ruthra kumar
97d9030f26 Merge pull request #45594 from frappe/mergify/bp/version-15-hotfix/pr-45569
fix: update voucher outstanding from payment ledger (backport #45569)
2025-01-29 16:30:52 +05:30
ruthra kumar
156dcf535d Merge pull request #45592 from frappe/mergify/bp/version-15-hotfix/pr-45586
fix(query): remove duplicate docstatus condition (backport #45586)
2025-01-29 16:19:25 +05:30
ljain112
e3855949e1 fix: update voucher outstanding from payment ledger
(cherry picked from commit dd77070351)
2025-01-29 10:42:27 +00:00
Safvan Huzain
2d2f30e6cf fix(query): remove duplicate docstatus condition (#45586)
fix: remove duplicate docstatus condition in query
(cherry picked from commit 3f2e93dcb6)
2025-01-29 10:29:11 +00:00
ruthra kumar
3117052779 Merge pull request #45589 from frappe/mergify/bp/version-15-hotfix/pr-45441
fix: show payment entries in tax withheld vouchers (backport #45441)
2025-01-29 15:53:46 +05:30
ruthra kumar
eac5c91c8f Merge pull request #45588 from frappe/mergify/bp/version-15-hotfix/pr-45585
refactor: auto add taxes from template (backport #45585)
2025-01-29 15:50:05 +05:30
mergify[bot]
ef2f4118d9 fix: get stock balance filtered by company for validating stock value in jv (backport #45549) (#45578)
* fix: get stock balance filtered by company for validating stock value in jv (#45549)

* fix: get stock balance filtered by company for validating stock value in jv

* test: error is raised  on validate

(cherry picked from commit 9f20854bd9)

* fix: correct args for test case function

---------

Co-authored-by: Lakshit Jain <108322669+ljain112@users.noreply.github.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: ljain112 <ljain112@gmail.com>
2025-01-29 15:39:30 +05:30
ljain112
8f73978a26 fix: variable names
(cherry picked from commit d97e78e5d3)
2025-01-29 10:06:33 +00:00
ljain112
28bb9c39e8 fix: show payment entries in Tax Withheld Vouchers
(cherry picked from commit 55733d4f18)
2025-01-29 10:06:33 +00:00
ruthra kumar
aef6b62f7d refactor: auto add taxes from template
(cherry picked from commit d1086722bf)
2025-01-29 09:59:20 +00:00
mergify[bot]
a2ffdc7805 fix: return qty error due to precision (backport #45536) (#45581)
fix: return qty error due to precision

(cherry picked from commit 3078578692)

Co-authored-by: Dany Robert <danyrt@wahni.com>
2025-01-29 12:46:44 +05:30
mergify[bot]
8b0efab13e fix: add multiple item issue in stock entry (backport #45544) (#45580)
fix: add multiple item issue in stock entry (#45544)

(cherry picked from commit 5a023dc8d4)

Co-authored-by: Ejaaz Khan <67804911+iamejaaz@users.noreply.github.com>
2025-01-29 12:45:34 +05:30
Mihir Kandoi
6323e641f6 Merge pull request #45542 from frappe/mergify/bp/version-15-hotfix/pr-45282 2025-01-28 18:36:59 +05:30
Mihir Kandoi
6c4655dd72 fix: existing logical error 2025-01-28 16:56:05 +05:30
ruthra kumar
33b5be03a8 Merge pull request #45563 from frappe/mergify/bp/version-15-hotfix/pr-45452
fix(payment entry): get amount in transaction currency (backport #45452)
2025-01-28 14:56:51 +05:30
venkat102
b37602c716 fix(payment entry): get amount in transaction currency
(cherry picked from commit af97f42429)
2025-01-28 09:04:35 +00:00
ruthra kumar
75a4c31948 Merge pull request #45558 from frappe/mergify/bp/version-15-hotfix/pr-45551
feat: Add chart of accounts for Switzerland (backport #45551)
2025-01-28 11:59:40 +05:30
ruthra kumar
eef907a275 chore: rename json to standard name format 2025-01-28 11:41:36 +05:30
eagleautomate
de43c123e2 feat: Add chart of accounts for Switzerland
240812 Schulkontenrahmen VEB - DE

(cherry picked from commit 2c644ec2ef)
2025-01-28 06:04:37 +00:00
ruthra kumar
0576c5c37f Merge pull request #45557 from frappe/mergify/bp/version-15-hotfix/pr-45125
fix: update fields on change of item code In `Update Items` of `Sales Order` (backport #45125)
2025-01-28 11:32:18 +05:30
Sanket Shah
f60a3bcedf fix: update fields on change of item code In Update Items of Sales Order (#45125)
* fix: update fields on change of item code

* fix: minor update

* fix: set the new values always

* Revert "fix: set the new values always"

This reverts commit 44daa0a641.

---------

Co-authored-by: Sanket322 <shahsanket322003.com>
Co-authored-by: ruthra kumar <ruthra@erpnext.com>
(cherry picked from commit 9933d3c8ff)
2025-01-28 05:58:28 +00:00
Mihir Kandoi
1be19819fb fix: removed field not present in v15 2025-01-28 10:09:31 +05:30
Mihir Kandoi
b59d253d93 fix: import 2 2025-01-27 22:55:33 +05:30
Mihir Kandoi
d74c498efe fix: import 2025-01-27 22:17:13 +05:30
Mihir Kandoi
57f79a2240 fix: merge conflict 2025-01-27 22:01:13 +05:30
Raffael Meyer
fb1ea9524b chore: bump actions/cache to v4 (#45541) 2025-01-27 13:29:51 +01:00
ruthra kumar
8d30b4d14e Merge pull request #45539 from frappe/mergify/bp/version-15-hotfix/pr-45345
fix:  maintain existing discounts in get_pricing_rule_for_item (backport #45345)
2025-01-27 17:35:27 +05:30
Mihir Kandoi
c102e51eb1 fix: logical error in where condition of qb query
(cherry picked from commit 47f8a86003)

# Conflicts:
#	erpnext/stock/doctype/landed_cost_taxes_and_charges/landed_cost_taxes_and_charges.json
2025-01-27 12:03:40 +00:00
Mihir Kandoi
d6e0c6c969 refactor: added condition which checks for corrective operation setting
(cherry picked from commit 063a205e5a)
2025-01-27 12:03:39 +00:00
Mihir Kandoi
5c9ac27478 test: Added test for new feature
(cherry picked from commit 4fb48b7f22)
2025-01-27 12:03:39 +00:00
Mihir Kandoi
efc7b9ac56 feat: Add corrective job card operating cost as additional costs in stock entry
(cherry picked from commit 2bf10f68a8)

# Conflicts:
#	erpnext/manufacturing/doctype/job_card/job_card.py
2025-01-27 12:03:38 +00:00
ruthra kumar
2c3e765896 Merge pull request #45534 from frappe/mergify/bp/version-15-hotfix/pr-45302
feat: add company level validation for accounting dimension (backport #45302)
2025-01-27 16:09:32 +05:30
Sanket322
4e347d835e fix: remove applied pricing rule
(cherry picked from commit 50223c6bec)
2025-01-27 10:32:53 +00:00
Sanket322
e73aab0df5 fix: use user defined discount amount or default
(cherry picked from commit e2a32b7257)
2025-01-27 10:32:53 +00:00
ruthra kumar
bcd3351999 refactor(test): update test data 2025-01-27 15:46:39 +05:30
Sugesh393
67e45cf002 chore: update variable names for improved readability
(cherry picked from commit 36bae55299)
2025-01-27 15:18:24 +05:30
Sugesh393
149827562b fix: set company related values
(cherry picked from commit 454067198e)
2025-01-27 15:18:19 +05:30
Sugesh393
fac4e99b0e test: add new unit test for company validation in accounting dimension
(cherry picked from commit c94091d68f)
2025-01-27 09:25:02 +00:00
Sugesh393
8f0d270746 feat: add company level validation for accounting dimension
(cherry picked from commit 60efd3e219)
2025-01-27 09:25:01 +00:00
ruthra kumar
a718737931 Merge pull request #45530 from frappe/mergify/bp/version-15-hotfix/pr-45284
fix: set party_account_currency for pos_invoice returns (backport #45284)
2025-01-27 14:54:11 +05:30
Nabin Hait
b004855e7c Revert "feat(Sales Invoice): allow linking to project without adding timesheets (backport #44295)" (#45531)
Revert "feat(Sales Invoice): allow linking to project without adding timeshee…"

This reverts commit 2c2a25ab16.
2025-01-27 14:31:44 +05:30
Sugesh393
6a382f1430 test: add new unit test to check payments amount of pos_invoice returns
(cherry picked from commit 484ecf2479)
2025-01-27 08:58:58 +00:00
Sugesh393
172fdad244 fix: set party_account_currency for pos_invoice returns
(cherry picked from commit 2af6fca7fa)
2025-01-27 08:58:58 +00:00
mergify[bot]
2c2a25ab16 feat(Sales Invoice): allow linking to project without adding timesheets (backport #44295) (#45528)
feat(Sales Invoice): allow linking to project without adding timesheets (#44295)

* feat(Sales Invoice): allow linking to project without adding timesheets

* test: add timesheet data

(cherry picked from commit 11f65f20a0)

Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2025-01-27 14:26:19 +05:30
mergify[bot]
ff46ae5bc1 fix: currency decimal on POS Past Order List (backport #45524) (#45527)
fix: currency decimal on POS Past Order List (#45524)

* fix: currency decimal on POS

* fix: removed precision

(cherry picked from commit 2ac8c92e7f)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-01-27 13:21:40 +05:30
mergify[bot]
692a44816f feat(UX): scroll to required field (backport #44367) (#45433)
feat(UX): scroll to required field (#44367)

(cherry picked from commit 4008ca5ddd)

Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2025-01-26 12:14:44 +05:30
rohitwaghchaure
f3b8d6867b Merge pull request #45448 from frappe/mergify/bp/version-15-hotfix/pr-45443
fix: allow to fix negative stock for batch using stock reco (backport #45443)
2025-01-25 15:21:16 +05:30
Rohit Waghchaure
69c5695f6e fix: allow to fix negative stock for batch using stock reco
(cherry picked from commit 2e8cde3378)
2025-01-25 09:34:11 +00:00
mergify[bot]
f9d96726f0 fix: secure bulk transaction (backport #45386) (#45426)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
fix: secure bulk transaction (#45386)
2025-01-24 17:18:50 +01:00
rohitwaghchaure
4aa92572ef Merge pull request #45438 from frappe/mergify/bp/version-15-hotfix/pr-45432
fix: do not check budget during reposting (backport #45432)
2025-01-24 20:09:22 +05:30
rohitwaghchaure
f2b946d325 fix: do not check budget during reposting (#45432)
(cherry picked from commit 53704b98b5)
2025-01-24 12:02:13 +00:00
rohitwaghchaure
13c7fceb91 Merge pull request #45435 from frappe/mergify/bp/version-15-hotfix/pr-45423
fix: precision issue in stock entry (backport #45423)
2025-01-24 17:25:43 +05:30
Rohit Waghchaure
fe5e42d2dc fix: precision issue in stock entry
(cherry picked from commit 9f3b8520fe)
2025-01-24 11:38:02 +00:00
mergify[bot]
7ff7ec7929 fix: validate items against selling settings (backport #45288) (#45431)
fix: validate items against selling settings (#45288)

fix: validate_for_duplicate_items

Co-authored-by: Sanket322 <shahsanket322003.com>
(cherry picked from commit d862e9b771)

Co-authored-by: Sanket Shah <113279972+Sanket322@users.noreply.github.com>
2025-01-24 16:37:36 +05:30
mergify[bot]
ae5ce97fd0 fix: disable load_after_mapping when purchase order created from sales order (backport #45405) (#45429)
fix: disable load_after_mapping when purchase order created from sales order (#45405)

(cherry picked from commit 97acbb3134)

Co-authored-by: Venkatesh <47534423+venkat102@users.noreply.github.com>
2025-01-24 15:23:27 +05:30
mergify[bot]
52fdc7cecd fix(material request): mapping Sales Order Item Delivery Date to Mate… (backport #45227) (#45424)
fix(material request): mapping Sales Order Item Delivery Date to Mate… (#45227)

* fix(material request): mapping Sales Order Item Delivery Date to Material Request Item Required By

as mentioned in https://discuss.frappe.io/t/item-delivery-date-on-sales-order-is-not-transferred-to-material-request-item-required-by-date/140479
fixing
When you create a Material Request directly on the Sales Order via → Create → Material Request, Delivery Date on Sales Order Item is not transferred to Material Request Item Required By date.

* fix(linters): meaningless linters formatting message applied

In order to pass the linters test which I find meaningless as it asks for the comma after the last item in a dictionary data type

* fix(linters): formatting code for linters pass

Linters formatting applied

(cherry picked from commit 42edb9f5b1)

Co-authored-by: Tufan Kaynak <31142607+toofun666@users.noreply.github.com>
2025-01-24 14:46:47 +05:30
mergify[bot]
d9b342f257 fix: remove unnecessary auth from plaid connector (backport #44305) (#45421)
fix: remove unnecessary auth from plaid connector (#44305)

(cherry picked from commit e82911041d)

Co-authored-by: Martin Luessi <mluessi@gmail.com>
2025-01-24 14:18:04 +05:30
mergify[bot]
dec0caeac5 fix: valuation for batch (backport #45335) (#45420)
* fix: valuation for batch

(cherry picked from commit 5088d8576f)

# Conflicts:
#	erpnext/stock/deprecated_serial_batch.py

* fix: version

(cherry picked from commit 8028dd2683)

# Conflicts:
#	.github/workflows/server-tests-mariadb.yml

* chore: fix conflicts

* chore: fix conflicts

* chore: fix conflicts

---------

Co-authored-by: Rohit Waghchaure <rohitw1991@gmail.com>
2025-01-24 13:13:57 +05:30
mergify[bot]
224a92587d fix: resolved pos return setting to default mode of payment instead of user selection (backport #45377) (#45419)
fix: resolved pos return setting to default mode of payment instead of user selection (#45377)

* fix: resolved pos return setting to default mode of payment instead of user selection

* refactor: removed console log statement

* refactor: moved get_payment_data to sales_and_purchase_return.py

(cherry picked from commit 54d234e05d)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-01-24 13:13:15 +05:30
mergify[bot]
aca8d663dd feat: full screen on pos (backport #45404) (#45418)
feat: full screen on pos (#45404)

* feat: full screen on pos

* refactor: variables for label

* fix: refactor and handled button label change

* refactor: rename enable fullscreen label

(cherry picked from commit 78c7c1c631)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-01-24 12:40:25 +05:30
mergify[bot]
6c10393164 fix: use frappe.datetime.str_to_user (backport #45216) (#45417)
fix: use frappe.datetime.str_to_user (#45216)

* fix: default_datetime_format

* fix: add_format_datetime

* fix: update to str_to_user  in point_of_sale/pos_controller.js

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

* fix: convert_to_str_to_user

* fix: linters

* fix: whitespace

---------

Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
(cherry picked from commit cd3f03696e)

Co-authored-by: mahsem <137205921+mahsem@users.noreply.github.com>
2025-01-24 12:19:02 +05:30
mergify[bot]
3eb28bb0e0 fix: set expense_account and cost_center based on company in stock entry (backport #45159) (#45416)
fix: set expense_account and cost_center based on company in stock entry (#45159)

* fix: set expense_account and cost_center based on company in stock entry

* fix: remove is_perpetual_inventory_enabled validation for cost_center

(cherry picked from commit 6ec18fb40d)

Co-authored-by: Sugesh G <73237300+Sugesh393@users.noreply.github.com>
2025-01-24 12:17:08 +05:30
Frappe PR Bot
de09da31bc chore(release): Bumped to Version 15.49.3
## [15.49.3](https://github.com/frappe/erpnext/compare/v15.49.2...v15.49.3) (2025-01-24)

### Bug Fixes

* decorator and merge conflicts ([2f60f23](2f60f235a8))
2025-01-24 05:14:20 +00:00
ruthra kumar
835abfd88e Merge pull request #45406 from frappe/auto-match-fix
fix: Wrong bank_ac_no filter + simplify logic in automatch
2025-01-24 10:43:13 +05:30
ruthra kumar
fd427ad2ef Merge pull request #45413 from frappe/mergify/bp/version-15/pr-44790
refactor: configurable posting date for Exc Gain / Loss journal (backport #44790)
2025-01-24 10:42:58 +05:30
ruthra kumar
2f60f235a8 fix: decorator and merge conflicts 2025-01-24 10:26:02 +05:30
ruthra kumar
1c10e4e92f refactor: support JE posting date in semi-auto reconciilation tool
(cherry picked from commit a71718883e)

# Conflicts:
#	erpnext/accounts/doctype/process_payment_reconciliation_log_allocations/process_payment_reconciliation_log_allocations.json
2025-01-24 04:50:33 +00:00
ruthra kumar
c90d33acc3 test: exc gain/loss posting date based on configuration
(cherry picked from commit 2f3281579a)
2025-01-24 04:50:32 +00:00
ruthra kumar
ccaf0d4b85 refactor: only apply configuration on normal payments
patch to update default value

(cherry picked from commit b2c3da135e)
2025-01-24 04:50:32 +00:00
ruthra kumar
d955986342 refactor: allow reconciliation date for exchange gain / loss
(cherry picked from commit 95af63e305)
2025-01-24 04:50:31 +00:00
ruthra kumar
c127cbac57 refactor: configurable posting date for Exc Gain / Loss journal
(cherry picked from commit 5257413a93)
2025-01-24 04:50:31 +00:00
ruthra kumar
c6bc5f5d7d refactor: configurable posting date for Exc Gain / Loss journal
(cherry picked from commit 3fbd2ca0d9)
2025-01-24 04:50:30 +00:00
ruthra kumar
1522600eb5 Merge pull request #45411 from frappe/mergify/bp/version-15-hotfix/pr-45291
fix: don't update party-type on change of cost center in Journal Entry (backport #45291)
2025-01-24 10:16:53 +05:30
Sanket Shah
fb75180a7d fix: don't update party-type on change of cost center in Journal Entry (#45291)
fix: don't update party-type on change of cost center

Co-authored-by: Sanket322 <shahsanket322003.com>
(cherry picked from commit 19c8708e5e)
2025-01-23 13:04:19 +00:00
mergify[bot]
5d7d3d8c19 fix: add condition to check if item is delivered by supplier in make_purchase_order_for_default_supplier() (backport #45370) (#45410)
fix: add condition to check if item is delivered by supplier in make_purchase_order_for_default_supplier() (#45370)

(cherry picked from commit 69464ab7ff)

Co-authored-by: Shanuka Hewage <89955436+Shanuka-98@users.noreply.github.com>
2025-01-23 18:18:48 +05:30
mergify[bot]
73a21c294c fix: fix creating documents from sales invoice (backport #45346) (#45408)
* fix: fix creating documents from sales invoice (#45346)

Co-authored-by: Meike Nedwidek <nedwidek@kk-software.de>
(cherry picked from commit 1758e125e0)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/sales_invoice.js

* fix: resolved conflict

---------

Co-authored-by: meike289 <63092915+meike289@users.noreply.github.com>
Co-authored-by: Nabin Hait <nabinhait@gmail.com>
2025-01-23 18:18:17 +05:30
marination
60feb7cbd4 fix: Wrong bank_ac_no filter + simplify convoluted logic 2025-01-23 13:14:25 +01:00
marination
153e961df7 fix: Use process.extract to get the corresponding party doc name of the result
- rapidfuzz accepts an iterable or a dict. dict input gives the dict key and value in the result
2025-01-23 13:13:12 +01:00
marination
86f4bf6e01 fix: Set right party name in bank transaction
- If party name and docname are different, set the docname in Bank Transaction
2025-01-23 13:12:59 +01:00
ruthra kumar
7fdf2a7d45 Merge pull request #45399 from frappe/mergify/bp/version-15-hotfix/pr-44790
refactor: configurable posting date for Exc Gain / Loss journal (backport #44790)
2025-01-23 17:30:38 +05:30
ruthra kumar
3906e5c33f chore: use correct decorator 2025-01-23 17:05:36 +05:30
ruthra kumar
72581dd0bf Merge pull request #45400 from ruthra-kumar/manual_addition_of_translation
refactor: more translation in bengali
2025-01-23 16:52:16 +05:30
ruthra kumar
10ee6f3e22 chore: resolve conflict 2025-01-23 16:36:55 +05:30
ruthra kumar
db4fe59bca Merge pull request #45398 from frappe/mergify/bp/version-15-hotfix/pr-44950
fix: postal_code_move_and_fixes (backport #44950)
2025-01-23 16:35:05 +05:30
samsul580
495273365b feat(translations): add Bengali translations for signature and client details 2025-01-23 16:31:59 +05:30
ruthra kumar
3c3f092382 refactor: support JE posting date in semi-auto reconciilation tool
(cherry picked from commit a71718883e)

# Conflicts:
#	erpnext/accounts/doctype/process_payment_reconciliation_log_allocations/process_payment_reconciliation_log_allocations.json
2025-01-23 10:59:54 +00:00
ruthra kumar
693687d8a3 test: exc gain/loss posting date based on configuration
(cherry picked from commit 2f3281579a)
2025-01-23 10:59:53 +00:00
ruthra kumar
c070a140f2 refactor: only apply configuration on normal payments
patch to update default value

(cherry picked from commit b2c3da135e)
2025-01-23 10:59:53 +00:00
ruthra kumar
f411bcc8b5 refactor: allow reconciliation date for exchange gain / loss
(cherry picked from commit 95af63e305)
2025-01-23 10:59:52 +00:00
ruthra kumar
763cc18aad refactor: configurable posting date for Exc Gain / Loss journal
(cherry picked from commit 5257413a93)
2025-01-23 10:59:52 +00:00
ruthra kumar
671f728c4a refactor: configurable posting date for Exc Gain / Loss journal
(cherry picked from commit 3fbd2ca0d9)
2025-01-23 10:59:52 +00:00
mahsem
0e088dde36 fix: postal_code_move_and_fixes
(cherry picked from commit 185bbb4c20)
2025-01-23 10:48:01 +00:00
Diptanil Saha
546da29761 chore: quickbooks migrator integration removal (#45393) 2025-01-23 14:17:14 +05:30
Frappe PR Bot
4573408866 chore(release): Bumped to Version 15.49.2
## [15.49.2](https://github.com/frappe/erpnext/compare/v15.49.1...v15.49.2) (2025-01-23)

### Bug Fixes

* batch qty calculation (backport [#45367](https://github.com/frappe/erpnext/issues/45367)) ([#45388](https://github.com/frappe/erpnext/issues/45388)) ([42f7ee9](42f7ee905c))
* JobCardTimeLog' object has no attribute 'remaining_time_in_mins' ([4542a75](4542a759ae))
2025-01-23 08:43:35 +00:00
rohitwaghchaure
94aefcc62d Merge pull request #45397 from frappe/mergify/bp/version-15/pr-45395
fix: JobCardTimeLog' object has no attribute 'remaining_time_in_mins' (backport #45394) (backport #45395)
2025-01-23 14:12:17 +05:30
rohitwaghchaure
9fc1c3550f Merge pull request #45396 from frappe/mergify/bp/version-15/pr-45388
fix: batch qty calculation (backport #45367) (backport #45388)
2025-01-23 14:11:50 +05:30
Rohit Waghchaure
4542a759ae fix: JobCardTimeLog' object has no attribute 'remaining_time_in_mins'
(cherry picked from commit 41dda35db7)
(cherry picked from commit ef15429d98)
2025-01-23 08:11:21 +00:00
mergify[bot]
42f7ee905c fix: batch qty calculation (backport #45367) (#45388)
fix: batch qty calculation

(cherry picked from commit f07a71a882)

Co-authored-by: Rohit Waghchaure <rohitw1991@gmail.com>
(cherry picked from commit 767529f0ec)
2025-01-23 08:11:20 +00:00
rohitwaghchaure
0eac720182 Merge pull request #45395 from frappe/mergify/bp/version-15-hotfix/pr-45394
fix: JobCardTimeLog' object has no attribute 'remaining_time_in_mins' (backport #45394)
2025-01-23 13:40:16 +05:30
Rohit Waghchaure
ef15429d98 fix: JobCardTimeLog' object has no attribute 'remaining_time_in_mins'
(cherry picked from commit 41dda35db7)
2025-01-23 07:53:24 +00:00
Diptanil Saha
b9b4f6316d feat: pos configuration for print receipt on complete order (#45392) 2025-01-23 13:07:27 +05:30
mergify[bot]
04f5a72e08 perf: optimize DB calls with frappe.get_all (backport #45289) (#45391)
perf: optimize DB calls with frappe.get_all (#45289)

* perf: reduce multiple db queries

* fix: use frappe._dict instread of extra iteration

---------

Co-authored-by: Sanket322 <shahsanket322003.com>
(cherry picked from commit 2a400dd3f8)

Co-authored-by: Sanket Shah <113279972+Sanket322@users.noreply.github.com>
2025-01-23 13:01:12 +05:30
mergify[bot]
412e22fb4e fix: added item_group filter in item_code field in stock balance report (backport #45340) (#45389)
fix: added item_group filter in item_code field in stock balance report (#45340)

* fix: added item_group filter in item_code field in stock balance report

* feat: added filter to not show non stock items

(cherry picked from commit fe43d20545)

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-01-23 11:25:33 +05:30
mergify[bot]
767529f0ec fix: batch qty calculation (backport #45367) (#45388)
fix: batch qty calculation

(cherry picked from commit f07a71a882)

Co-authored-by: Rohit Waghchaure <rohitw1991@gmail.com>
2025-01-23 11:17:14 +05:30
mergify[bot]
2403cdc4d7 fix: System was allowing to save payment schedule amount less than grand total (backport #45322) (#45381)
fix: System was allowing to save payment schedule amount less than grand total (#45322)

* fix: System was allowing to save payment schedule amount less than grand_total

* style: After run pre-commit

(cherry picked from commit b26f0b6633)

Co-authored-by: Diógenes Souza <103958767+devdiogenes@users.noreply.github.com>
2025-01-23 11:16:09 +05:30
mergify[bot]
4e367dedec fix: validate non-stock item for exchange loss/gain (backport #45306) (#45380)
fix: validate non-stock item for exchange loss/gain (#45306)

* fix: validate non-stock item

* test: add unit test to validate non-stock item exchange difference

* fix: use usd supplier

(cherry picked from commit 05579959f2)

Co-authored-by: Rethik M <85231069+rs-rethik@users.noreply.github.com>
2025-01-23 11:15:51 +05:30
mergify[bot]
f8099a6847 fix: set preferred email in Employee via backend controller (backport #45320) (#45379)
fix: set preferred email in Employee via backend controller (#45320)

fix: set preferred email in Employee (backend)

Set "Preferred Email" for Employee via validate. Unset value when
prefered_contact_email is also unset.

(cherry picked from commit 4481ca83ff)

Co-authored-by: gavin <gavin18d@gmail.com>
2025-01-23 11:15:22 +05:30
rohitwaghchaure
e7f1cda3c1 Merge pull request #45385 from frappe/mergify/bp/version-15-hotfix/pr-45382
fix: precision issue causing incorrect status (backport #45382)
2025-01-22 20:48:30 +05:30
Rohit Waghchaure
46a2b7a07e fix: precision issue causing incorrect status
(cherry picked from commit 4a7586cc01)
2025-01-22 14:48:23 +00:00
mergify[bot]
bdc65daadd fix: added debounce to prevent multiple clicks (backport #45369) (#45376)
fix: added debounce to prevent multiple clicks (#45369)

* fix: added debounce to prevent multiple clicks

* fix: linters check

(cherry picked from commit 9ff3101b2d)

Co-authored-by: Khushi Rawat <142375893+khushi8112@users.noreply.github.com>
2025-01-22 17:53:04 +05:30
Frappe PR Bot
89f7834517 chore(release): Bumped to Version 15.49.1
## [15.49.1](https://github.com/frappe/erpnext/compare/v15.49.0...v15.49.1) (2025-01-22)

### Bug Fixes

* Do no query GLs if no PCVs are posted ([5d04501](5d04501454))
2025-01-22 09:18:16 +00:00
Deepesh Garg
da8a712249 Merge pull request #45373 from frappe/mergify/bp/version-15/pr-45371
fix: Do no query GLs if no PCVs are posted (#45371)
2025-01-22 14:46:59 +05:30
Deepesh Garg
5d04501454 fix: Do no query GLs if no PCVs are posted
(cherry picked from commit f4d1a54588)
2025-01-22 09:15:09 +00:00
Deepesh Garg
7848f1146b Merge pull request #45372 from frappe/mergify/bp/version-15-hotfix/pr-45371
fix: Do no query GLs if no PCVs are posted (backport #45371)
2025-01-22 14:22:28 +05:30
Deepesh Garg
ad06652ed5 fix: Do no query GLs if no PCVs are posted
(cherry picked from commit f4d1a54588)
2025-01-22 08:33:40 +00:00
ruthra kumar
98797fa918 Merge pull request #45368 from frappe/mergify/bp/version-15-hotfix/pr-45202
fix: Correct Party Bank Account mapping in `Payment Entry` from Transactional Doctypes (backport #45202)
2025-01-22 13:00:13 +05:30
DaizyModi
4a390ae3de fix: Correct Party Bank Account mapping in Payment Entry
(cherry picked from commit 376bdc75f4)
2025-01-22 07:12:16 +00:00
Frappe PR Bot
b9fcc786fa chore(release): Bumped to Version 15.49.0
# [15.49.0](https://github.com/frappe/erpnext/compare/v15.48.4...v15.49.0) (2025-01-22)

### Bug Fixes

* Ambiguous column error while creating Sales Return ([#45275](https://github.com/frappe/erpnext/issues/45275)) ([842d72f](842d72f7c4))
* apply ruff formatter changes ([8e33d93](8e33d93273))
* calculate AED exchange rate based on pegged value with USD ([05e4255](05e42558d1))
* check if tds deducted based on Purchase Taxes and Charges ([#45161](https://github.com/frappe/erpnext/issues/45161)) ([ade8799](ade8799358))
* check if tds deducted based on Purchase Taxes and Charges (backport [#45161](https://github.com/frappe/erpnext/issues/45161)) ([#45277](https://github.com/frappe/erpnext/issues/45277)) ([3abca03](3abca03fc1))
* company in quality inspection ([c0cf1fe](c0cf1fed00))
* conflict ([bdaf376](bdaf3761c0))
* do not reset picked items ([fd83b52](fd83b52513))
* Does not allow to create Sub-Asseblies of Sub Assemblies ([d3c9092](d3c9092266))
* ensure multiple PCVs in same fiscal year are considered in patch ([fcd914c](fcd914cfa0))
* fetching items from blanket order to sales/purchase order ([#45262](https://github.com/frappe/erpnext/issues/45262)) ([7fc19e1](7fc19e19be))
* fixed typo in manufacturing settings and field rename ([#45238](https://github.com/frappe/erpnext/issues/45238)) ([7641627](7641627b71))
* getting scrap items from sub assemblies by fetching scrap items for parent BOM ([da7b691](da7b69109a))
* ignore crm deal in tax_rule search filter (backport [#45134](https://github.com/frappe/erpnext/issues/45134)) ([#45138](https://github.com/frappe/erpnext/issues/45138)) ([afab5be](afab5be63f))
* include pos invoice in modifing key for returned item validation ([70ed8b7](70ed8b78d2))
* linters ([61303db](61303db16d))
* precision on work order total qty ([#45341](https://github.com/frappe/erpnext/issues/45341)) ([5346820](53468202de))
* **Project:** re-phrase welcome email ([#45175](https://github.com/frappe/erpnext/issues/45175)) ([c94430a](c94430a472))
* round off tax withholding amount ([#45271](https://github.com/frappe/erpnext/issues/45271)) ([3c10d80](3c10d809b0))
* sales return for multi-uom ([#45303](https://github.com/frappe/erpnext/issues/45303)) ([e965b6e](e965b6ef45))
* set invoice start date to subscription start date (backport [#45342](https://github.com/frappe/erpnext/issues/45342)) ([#45343](https://github.com/frappe/erpnext/issues/45343)) ([7045c2c](7045c2cc3d))
* status of the serial no for the raw materials ([d956051](d956051e69))
* translation fixes ([e4f09ce](e4f09ce543))
* updated modified timestamp for stock entry type (backport [#45280](https://github.com/frappe/erpnext/issues/45280)) ([#45315](https://github.com/frappe/erpnext/issues/45315)) ([96a3a45](96a3a45078))
* use currency defined in plan for subscription invoice ([#45104](https://github.com/frappe/erpnext/issues/45104)) ([a27eac1](a27eac1ef6))
* use currency defined in plan for subscription invoice (backport [#45104](https://github.com/frappe/erpnext/issues/45104)) ([#45273](https://github.com/frappe/erpnext/issues/45273)) ([2c46be4](2c46be4cfb))
* validate linked sales person ([85910ec](85910ec2f9))

### Features

* add option to update modified on communication recieved (backport [#45307](https://github.com/frappe/erpnext/issues/45307)) ([#45310](https://github.com/frappe/erpnext/issues/45310)) ([bf8d6ae](bf8d6ae6bf))
* add Syscohada charts of accounts ([2667649](26676491e5))
* Added valuation of quantity for each age group in stock ageing … (backport [#45076](https://github.com/frappe/erpnext/issues/45076)) ([#45208](https://github.com/frappe/erpnext/issues/45208)) ([dd58e4c](dd58e4cb53))

### Performance Improvements

* Ignore is_opening column in GL Queries ([#45327](https://github.com/frappe/erpnext/issues/45327)) ([b7de26d](b7de26d123))

### Reverts

* avoid change to translatable string ([93e3847](93e3847e36))
2025-01-22 03:32:58 +00:00
ruthra kumar
15da04d7de Merge pull request #45357 from frappe/version-15-hotfix
chore: release v15
2025-01-22 09:01:34 +05:30
mergify[bot]
bf8d6ae6bf feat: add option to update modified on communication recieved (backport #45307) (#45310)
* feat: add option to update modified on communication recieved (#45307)

(cherry picked from commit aa38895caf)

# Conflicts:
#	erpnext/crm/doctype/crm_settings/crm_settings.json

* chore: resolve conflict

---------

Co-authored-by: Ejaaz Khan <67804911+iamejaaz@users.noreply.github.com>
Co-authored-by: ruthra kumar <ruthra@erpnext.com>
2025-01-21 20:21:46 +05:30
mergify[bot]
96a3a45078 fix: updated modified timestamp for stock entry type (backport #45280) (#45315)
* fix: updated modified timestamp for stock entry type (#45280)

(cherry picked from commit 2d45d0e5d5)

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

* fix: resolved conflict

---------

Co-authored-by: Nabin Hait <nabinhait@gmail.com>
2025-01-21 20:20:58 +05:30
Dany Robert
53468202de fix: precision on work order total qty (#45341)
* fix: precision on work order total qty

* chore: linters
2025-01-21 20:18:26 +05:30
ruthra kumar
10d99f4bc9 Merge pull request #45360 from frappe/mergify/bp/version-15-hotfix/pr-45242
fix: include pos invoice in modifing key for returned item validation (backport #45242)
2025-01-21 16:58:21 +05:30
venkat102
70ed8b78d2 fix: include pos invoice in modifing key for returned item validation
(cherry picked from commit 2936139c79)
2025-01-21 11:06:17 +00:00
ruthra kumar
abf93693e9 Merge pull request #45356 from frappe/mergify/bp/version-15-hotfix/pr-45215
fix: calculate AED exchange rate based on pegged value with USD (backport #45215)
2025-01-21 14:55:27 +05:30
ruthra kumar
61a506927f Merge pull request #45355 from frappe/mergify/bp/version-15-hotfix/pr-45327
perf: Ignore is_opening column in GL Queries (backport #45327)
2025-01-21 14:34:08 +05:30
ruthra kumar
87f1376d86 refactor: use dictionary for better expandability
(cherry picked from commit 2e535955b3)
2025-01-21 08:29:26 +00:00
ruthra kumar
05e5e43c06 refactor: fix type error
(cherry picked from commit dd923332cb)
2025-01-21 08:29:26 +00:00
Kavin
05e42558d1 fix: calculate AED exchange rate based on pegged value with USD
(cherry picked from commit 455ef6f084)
2025-01-21 08:29:26 +00:00
ruthra kumar
06c0547ca4 Merge pull request #45312 from frappe/mergify/bp/version-15-hotfix/pr-45175
fix(Project): re-phrase welcome email (backport #45175)
2025-01-21 13:56:51 +05:30
ruthra kumar
f97f7cead4 Merge pull request #45317 from frappe/mergify/bp/version-15-hotfix/pr-45262
fix: fetching items from blanket order to sales/purchase order (backport #45262)
2025-01-21 13:55:51 +05:30
ruthra kumar
c76ac04ddd Merge pull request #45314 from frappe/mergify/bp/version-15-hotfix/pr-45271
fix: round off tax withholding amount (backport #45271)
2025-01-21 13:55:03 +05:30
Deepesh Garg
b7de26d123 perf: Ignore is_opening column in GL Queries (#45327)
* perf: Ignore is_opening column in GL Queries

* chore: Remove unwanted changes

* chore: Remove unwanted changes

* chore: Remove unwanted changes

* chore: Remove unwanted changes

* chore: Remove unwanted changes

* chore: Remove unwanted changes

(cherry picked from commit 993f40fa43)
2025-01-21 08:20:18 +00:00
ruthra kumar
e63d3257a7 Merge pull request #45338 from frappe/mergify/bp/version-15-hotfix/pr-44453
feat: Create Syscohada charts of accounts (backport #44453)
2025-01-21 13:17:17 +05:30
mergify[bot]
7045c2cc3d fix: set invoice start date to subscription start date (backport #45342) (#45343)
fix: set invoice start date to subscription start date (#45342)

(cherry picked from commit 68fb1b28eb)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-01-20 17:34:20 +05:30
ruthra kumar
03219142e0 Merge pull request #45339 from frappe/mergify/bp/version-15-hotfix/pr-45334
fix: translation fixes (backport #45334)
2025-01-20 13:11:34 +05:30
ruthra kumar
085d80521c Merge pull request #45316 from frappe/mergify/bp/version-15-hotfix/pr-45275
fix: Ambiguous column error while creating Sales Return (backport #45275)
2025-01-20 12:13:39 +05:30
mahsem
61303db16d fix: linters
(cherry picked from commit 3697ba0772)
2025-01-20 06:42:02 +00:00
mahsem
e4f09ce543 fix: translation fixes
(cherry picked from commit 1d81a9f933)
2025-01-20 06:42:02 +00:00
Nelly Traore
26676491e5 feat: add Syscohada charts of accounts
(cherry picked from commit aa8254963c)
2025-01-20 06:39:12 +00:00
ruthra kumar
6120999632 Merge pull request #45337 from frappe/mergify/bp/version-15-hotfix/pr-45167
fix: validate linked sales person (backport #45167)
2025-01-20 12:08:26 +05:30
Sudharsanan11
85910ec2f9 fix: validate linked sales person
(cherry picked from commit e614f07795)
2025-01-20 06:20:29 +00:00
rohitwaghchaure
011519e3ea Merge pull request #45325 from frappe/mergify/bp/version-15-hotfix/pr-44783
fix: do not reset picked items (backport #44783)
2025-01-19 13:49:08 +05:30
Rohit Waghchaure
fd83b52513 fix: do not reset picked items
(cherry picked from commit 34a80bfcd3)
2025-01-18 08:54:05 +00:00
rohitwaghchaure
5b3a97d8a5 Merge pull request #45324 from frappe/mergify/bp/version-15-hotfix/pr-45298
fix: company in quality inspection (backport #45298)
2025-01-18 12:48:59 +05:30
Rohit Waghchaure
c0cf1fed00 fix: company in quality inspection
(cherry picked from commit 397cd79e1e)
2025-01-18 06:45:58 +00:00
rohitwaghchaure
9e353e218b Merge pull request #45321 from frappe/mergify/bp/version-15-hotfix/pr-45238
fix: fixed typo in manufacturing settings and field rename (backport #45238)
2025-01-17 19:50:55 +05:30
barredterra
93e3847e36 revert: avoid change to translatable string 2025-01-17 14:34:44 +01:00
rohitwaghchaure
2226cc556f Merge pull request #45309 from frappe/mergify/bp/version-15-hotfix/pr-45303
fix: sales return for multi-uom (backport #45303)
2025-01-17 18:41:04 +05:30
ruthra kumar
e84fdd9a7a Merge pull request #45319 from frappe/mergify/bp/version-15-hotfix/pr-44811
fix!: ensure multiple PCVs in same fiscal year are considered in patch (backport #44811)
2025-01-17 17:29:53 +05:30
Diptanil Saha
7641627b71 fix: fixed typo in manufacturing settings and field rename (#45238)
* chore: field rename and patch entry

* chore: patch file rename and description improvement

---------

Co-authored-by: Nabin Hait <nabinhait@gmail.com>
(cherry picked from commit 97e3770872)
2025-01-17 11:56:17 +00:00
Sagar Vora
fcd914cfa0 fix: ensure multiple PCVs in same fiscal year are considered in patch
(cherry picked from commit 84e0b41c4f)
2025-01-17 11:32:06 +00:00
mergify[bot]
afab5be63f fix: ignore crm deal in tax_rule search filter (backport #45134) (#45138)
fix: ignore crm deal in tax_rule search filter (#45134)

(cherry picked from commit dc5bff9008)

Co-authored-by: Venkatesh <47534423+venkat102@users.noreply.github.com>
2025-01-17 17:01:28 +05:30
mergify[bot]
dd58e4cb53 feat: Added valuation of quantity for each age group in stock ageing … (backport #45076) (#45208)
* feat: Added valuation of quantity for each age group in stock ageing report

(cherry picked from commit 2f80c4dee5)

* fix: Test case for ageing report

(cherry picked from commit 839b79ffd0)

* fix: Fixed more test cases

(cherry picked from commit f996f71d16)

* fix: Fixed final test case

(cherry picked from commit 1f2d7da426)

* test: Valuation of ageing stock

(cherry picked from commit dbb572eec1)

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2025-01-17 16:56:58 +05:30
Diptanil Saha
7fc19e19be fix: fetching items from blanket order to sales/purchase order (#45262)
* fix: blanket order with zero item quantity

* fix: item quantity validation

* refactor: resolve linter issue

(cherry picked from commit 98d401bee4)
2025-01-17 11:24:06 +00:00
Nabin Hait
842d72f7c4 fix: Ambiguous column error while creating Sales Return (#45275)
(cherry picked from commit ec487c14d9)
2025-01-17 11:22:22 +00:00
Lakshit Jain
3c10d809b0 fix: round off tax withholding amount (#45271)
(cherry picked from commit ada272a29b)
2025-01-17 11:21:15 +00:00
Patrick Eißler
c94430a472 fix(Project): re-phrase welcome email (#45175)
(cherry picked from commit 8d66142865)
2025-01-17 11:19:08 +00:00
rohitwaghchaure
e965b6ef45 fix: sales return for multi-uom (#45303)
(cherry picked from commit 9163f60191)
2025-01-17 11:07:38 +00:00
rohitwaghchaure
c789171a15 Merge pull request #45293 from frappe/mergify/bp/version-15-hotfix/pr-45283
fix: Does not allow to create Sub-Asseblies of Sub Assemblies (backport #45283)
2025-01-16 16:58:27 +05:30
Rohit Waghchaure
d3c9092266 fix: Does not allow to create Sub-Asseblies of Sub Assemblies
(cherry picked from commit 318a945d66)
2025-01-16 09:28:49 +00:00
rohitwaghchaure
a11c15a6cb Merge pull request #42928 from Axentorllc/Fix-BOM-Scrap
fix: getting scrap items from sub assemblies by fetching scrap items for parent BOM
2025-01-16 14:55:54 +05:30
rohitwaghchaure
b6ff79f34c Merge pull request #45281 from frappe/mergify/bp/version-15-hotfix/pr-45278
fix: status of the serial no for the raw materials (backport #45278)
2025-01-16 11:54:50 +05:30
rohitwaghchaure
e2d711540f chore: fix conflicts 2025-01-15 18:17:04 +05:30
Rohit Waghchaure
d956051e69 fix: status of the serial no for the raw materials
(cherry picked from commit 9607b16dcf)

# Conflicts:
#	erpnext/stock/doctype/serial_no/serial_no.json
2025-01-15 12:45:05 +00:00
Smit Vora
2c46be4cfb fix: use currency defined in plan for subscription invoice (backport #45104) (#45273)
Co-authored-by: ljain112 <ljain112@gmail.com>
fix: use currency defined in plan for subscription invoice (#45104)
2025-01-15 18:09:01 +05:30
Smit Vora
3abca03fc1 fix: check if tds deducted based on Purchase Taxes and Charges (backport #45161) (#45277)
fix: check if tds deducted based on Purchase Taxes and Charges (#45161)
2025-01-15 18:08:18 +05:30
Frappe PR Bot
d1fee96f75 chore(release): Bumped to Version 15.48.4
## [15.48.4](https://github.com/frappe/erpnext/compare/v15.48.3...v15.48.4) (2025-01-15)

### Bug Fixes

* auto fetch batch and serial no for draft stock transactions ([2f2554e](2f2554e9e5))
* batch number search on pos ([#45209](https://github.com/frappe/erpnext/issues/45209)) ([fe5c458](fe5c458c45))
* change string to be able to translate ([#45090](https://github.com/frappe/erpnext/issues/45090)) ([7a3687c](7a3687ca8e))
* deduct tds on excess amount if checked ([07c3605](07c3605905))
* delivery_document_no column issue ([0df1808](0df18080c7))
* do not add ordered items from Quotation to new Sales Order ([f414fa4](f414fa4981))
* don't create invoice if invoice start date is in future ([3f6d774](3f6d7741d9))
* incorrect label in Item-wise sales register ([36d1fbd](36d1fbd6a3))
* incorrect valuation for sales return with different warhouse ([9ee5651](9ee5651848))
* incorrect valuation rate for PI based revaluation ([f7e3854](f7e3854641))
* linter issue ([af21bca](af21bca231))
* minor update for readability ([abfcfdf](abfcfdfe7e))
* not able to see create Quality Inspection button ([a79cae1](a79cae1fef))
* pass right existing address ([80e6112](80e6112549))
* precision loss causing process loss variance ([d84601b](d84601b2a3))
* Semgrep rules ([1d5a73a](1d5a73a325))
* set billing and shipping address on change of company ([42eb88f](42eb88f5f6))
* Skip WIP Warehouse transfer ([bb0695a](bb0695a883))
* test case ([f5667f5](f5667f56e4))
* test case ([7d66e4e](7d66e4efb0))
* tests ([8ba42cf](8ba42cfbf0))
* timeout error for work order ([122b966](122b966a7b))
* **Timesheet:** ignore permissions when updating Task and Project (backport [#45168](https://github.com/frappe/erpnext/issues/45168)) ([#45170](https://github.com/frappe/erpnext/issues/45170)) ([f7448c6](f7448c6f79))
* typo in manufacturing settings (backport [#45190](https://github.com/frappe/erpnext/issues/45190)) ([#45193](https://github.com/frappe/erpnext/issues/45193)) ([47c6e5a](47c6e5a931))
* update  discounting on mixed conditions ([38cb5a9](38cb5a98bf))
2025-01-15 12:28:46 +00:00
rohitwaghchaure
5e13dcfe55 Merge pull request #45263 from frappe/version-15-hotfix
chore: release v15
2025-01-15 17:57:26 +05:30
rohitwaghchaure
80b80e77d8 Merge pull request #45274 from frappe/mergify/bp/version-15-hotfix/pr-45270
fix: Skip WIP Warehouse transfer (backport #45270)
2025-01-15 17:37:33 +05:30
Rohit Waghchaure
f5667f56e4 fix: test case 2025-01-15 16:20:17 +05:30
ljain112
bdaf3761c0 fix: conflict 2025-01-15 15:39:48 +05:30
Lakshit Jain
ade8799358 fix: check if tds deducted based on Purchase Taxes and Charges (#45161)
(cherry picked from commit 37a5767be5)
2025-01-15 10:03:19 +00:00
Mihir Kandoi
4e1d4005d9 test: Added new test to check wip skip
(cherry picked from commit 6edb454eea)
2025-01-15 09:37:03 +00:00
Mihir Kandoi
8ba42cfbf0 fix: tests
(cherry picked from commit 09d26a835f)
2025-01-15 09:37:03 +00:00
Mihir Kandoi
bb0695a883 fix: Skip WIP Warehouse transfer
(cherry picked from commit bbb5f8056b)
2025-01-15 09:37:03 +00:00
Lakshit Jain
a27eac1ef6 fix: use currency defined in plan for subscription invoice (#45104)
(cherry picked from commit a4453fb77b)
2025-01-15 09:23:51 +00:00
rohitwaghchaure
88c10fa7b6 Merge pull request #45268 from frappe/mergify/bp/version-15-hotfix/pr-45259
fix: incorrect valuation for sales return with different warhouse (backport #45259)
2025-01-14 20:35:44 +05:30
rohitwaghchaure
1c6fe9da3b chore: fix conflicts 2025-01-14 18:36:27 +05:30
Rohit Waghchaure
9ee5651848 fix: incorrect valuation for sales return with different warhouse
(cherry picked from commit 3a2e816759)

# Conflicts:
#	erpnext/stock/doctype/delivery_note/test_delivery_note.py
2025-01-14 13:04:36 +00:00
rohitwaghchaure
1be8051f7a Merge pull request #45258 from frappe/mergify/bp/version-15-hotfix/pr-45241
fix: auto fetch batch and serial no for draft stock transactions (backport #45241)
2025-01-14 18:33:08 +05:30
Rohit Waghchaure
af21bca231 fix: linter issue 2025-01-14 18:15:32 +05:30
ruthra kumar
d508ea2420 Merge pull request #45267 from frappe/mergify/bp/version-15-hotfix/pr-45211
refactor: allow users to configure interval for Semi-Auto payment reconciliation (backport #45211)
2025-01-14 17:35:56 +05:30
ruthra kumar
e1405a5c4f refactor: allow users to configure interval for Semi-Auto payment reconciliation (#45211)
* refactor: configurable interval for reconciliation trigger

* refactor: set default value for interval

* refactor: configurable queue size

* refactor: use patch to setup default cron job

* refactor: use 'after_migrate' to setup cron for reconciliation

User specified interval will be used

* chore: type casting

* refactor: use scheduler_event to persist cron

* chore: rename field

* chore: use configured queue size

* chore: remove unwanted field

(cherry picked from commit ce9c606f71)
2025-01-14 11:46:48 +00:00
ruthra kumar
f91eb3ef9f Merge pull request #45265 from frappe/mergify/bp/version-15-hotfix/pr-45182
refactor: configurable reconciliation dates for Advance Payments (backport #45182)
2025-01-14 16:57:56 +05:30
ruthra kumar
14d1f67ba9 chore: resolve conflicts 2025-01-14 15:24:24 +05:30
ruthra kumar
18946f8495 refactor: only update reconcile_effect_on advance in separate acc
(cherry picked from commit 9ee5fcc602)
2025-01-14 09:50:26 +00:00
ruthra kumar
8f431041f8 refactor: backwards compatibility
(cherry picked from commit 9fa1865cb7)
2025-01-14 09:50:25 +00:00
ruthra kumar
e7571c1a32 refactor: save reconcile effect on reference table
(cherry picked from commit a4271aa5d1)
2025-01-14 09:50:25 +00:00
ruthra kumar
a438520549 refactor: store reconciliation date in reference
Helps with reposting

(cherry picked from commit 7e7775aa44)
2025-01-14 09:50:25 +00:00
ruthra kumar
2cdfa91725 test: ensure reconciliation date config takes effect
(cherry picked from commit e0517852bc)
2025-01-14 09:50:24 +00:00
ruthra kumar
be8e1c0520 refactor: hide old checkbox
(cherry picked from commit c8e93e7a61)
2025-01-14 09:50:24 +00:00
ruthra kumar
74f00bb51b refactor: payment entry to handle posting date on configuation
(cherry picked from commit bb8d2c994c)
2025-01-14 09:50:24 +00:00
ruthra kumar
34b336ca80 refactor: test cases updated
(cherry picked from commit fb6c72a247)
2025-01-14 09:50:23 +00:00
ruthra kumar
55d699ee01 refactor: patch to migrate checkbox to select
(cherry picked from commit a8a8ac71b6)

# Conflicts:
#	erpnext/patches.txt
2025-01-14 09:50:23 +00:00
ruthra kumar
ad9e5d41b2 refactor: introduce select fields in company and payment entry
(cherry picked from commit 8b2c981fc3)

# Conflicts:
#	erpnext/accounts/doctype/payment_entry/payment_entry.py
2025-01-14 09:50:22 +00:00
ruthra kumar
8ab39f5160 Merge pull request #45261 from frappe/mergify/bp/version-15-hotfix/pr-45260
fix: incorrect label in Item-wise sales register (backport #45260)
2025-01-14 14:05:58 +05:30
ruthra kumar
36d1fbd6a3 fix: incorrect label in Item-wise sales register
(cherry picked from commit d9013e1054)
2025-01-14 08:26:06 +00:00
ruthra kumar
b4bcb7f9ac Merge pull request #45257 from frappe/mergify/bp/version-15-hotfix/pr-45090
fix: change string to be able to translate (backport #45090)
2025-01-14 13:35:13 +05:30
rohitwaghchaure
2676e0ea1f chore: fix conflicts 2025-01-14 12:49:17 +05:30
Rohit Waghchaure
2f2554e9e5 fix: auto fetch batch and serial no for draft stock transactions
(cherry picked from commit 88ab9be79c)

# Conflicts:
#	erpnext/stock/get_item_details.py
2025-01-14 07:06:32 +00:00
mahsem
7a3687ca8e fix: change string to be able to translate (#45090)
* fix: change_string_to_translate

* fix: debit note translation

* chore: update 'modified' field

---------

Co-authored-by: ruthra kumar <ruthra@erpnext.com>
(cherry picked from commit a3165c5719)
2025-01-14 06:26:50 +00:00
ruthra kumar
f954b241a8 Merge pull request #45234 from frappe/mergify/bp/version-15-hotfix/pr-45209
fix: batch number search on pos (backport #45209)
2025-01-14 11:42:04 +05:30
ruthra kumar
13c3483669 Merge pull request #45256 from frappe/mergify/bp/version-15-hotfix/pr-45078
fix: don't create invoice if `current_invoice_start ` is in future (backport #45078)
2025-01-14 10:43:19 +05:30
ruthra kumar
74a256ad57 Merge pull request #45255 from frappe/mergify/bp/version-15-hotfix/pr-45074
fix: set billing and shipping address on change of company (backport #45074)
2025-01-14 10:22:42 +05:30
ruthra kumar
f897999d79 Merge pull request #45254 from frappe/mergify/bp/version-15-hotfix/pr-45001
fix: deduct tds on excess amount if checked (backport #45001)
2025-01-14 10:21:57 +05:30
Sanket322
abfcfdfe7e fix: minor update for readability
(cherry picked from commit 61d4593236)
2025-01-14 04:43:28 +00:00
Sanket322
3f6d7741d9 fix: don't create invoice if invoice start date is in future
(cherry picked from commit 058fdca981)
2025-01-14 04:43:28 +00:00
ruthra kumar
9757c92635 Merge pull request #45252 from frappe/mergify/bp/version-15-hotfix/pr-44798
fix: update  discounting on mixed conditions (backport #44798)
2025-01-14 10:09:52 +05:30
Sanket322
80e6112549 fix: pass right existing address
(cherry picked from commit ce99764772)
2025-01-14 04:35:20 +00:00
Sanket322
42eb88f5f6 fix: set billing and shipping address on change of company
(cherry picked from commit f46f1bead4)
2025-01-14 04:35:20 +00:00
ljain112
07c3605905 fix: deduct tds on excess amount if checked
(cherry picked from commit a203e3ffaf)
2025-01-14 04:33:18 +00:00
DHINESH00
1d5a73a325 fix: Semgrep rules
(cherry picked from commit 547c8004eb)
2025-01-14 04:29:07 +00:00
DHINESH00
38cb5a98bf fix: update discounting on mixed conditions
(cherry picked from commit d541259da9)
2025-01-14 04:29:06 +00:00
Frappe PR Bot
74650217c1 chore(release): Bumped to Version 15.48.3
## [15.48.3](https://github.com/frappe/erpnext/compare/v15.48.2...v15.48.3) (2025-01-13)

### Bug Fixes

* delivery_document_no column issue ([47a622d](47a622d0cb))
* incorrect valuation rate for PI based revaluation ([23b846e](23b846ef39))
* test case ([b75c736](b75c7364d6))
2025-01-13 08:20:40 +00:00
rohitwaghchaure
47ab3c5dbe Merge pull request #45235 from frappe/mergify/bp/version-15/pr-45218
fix: incorrect valuation rate for PI based revaluation (backport #45207) (backport #45218)
2025-01-13 13:49:25 +05:30
rohitwaghchaure
b6f5208e29 Merge pull request #45236 from frappe/mergify/bp/version-15/pr-45217
fix: delivery_document_no column issue (backport #45214) (backport #45217)
2025-01-13 13:49:11 +05:30
Rohit Waghchaure
b75c7364d6 fix: test case
(cherry picked from commit 7d66e4efb0)
2025-01-13 06:56:46 +00:00
rohitwaghchaure
85c2d32de6 chore: fix conflicts
(cherry picked from commit bb170c024f)
2025-01-13 06:56:46 +00:00
rohitwaghchaure
120bccdad3 chore: fix conflicts
(cherry picked from commit 9426a32184)
2025-01-13 06:56:45 +00:00
Rohit Waghchaure
47a622d0cb fix: delivery_document_no column issue
(cherry picked from commit 61efb2bb39)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/sales_invoice.py
#	erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.py
(cherry picked from commit 0df18080c7)
2025-01-13 06:56:45 +00:00
Rohit Waghchaure
23b846ef39 fix: incorrect valuation rate for PI based revaluation
(cherry picked from commit 14ce2337df)
(cherry picked from commit f7e3854641)
2025-01-13 06:56:40 +00:00
rohitwaghchaure
136333377a Merge pull request #45217 from frappe/mergify/bp/version-15-hotfix/pr-45214
fix: delivery_document_no column issue (backport #45214)
2025-01-13 12:25:50 +05:30
rohitwaghchaure
4ee6a4eab6 Merge pull request #45218 from frappe/mergify/bp/version-15-hotfix/pr-45207
fix: incorrect valuation rate for PI based revaluation (backport #45207)
2025-01-13 12:25:44 +05:30
mergify[bot]
f7448c6f79 fix(Timesheet): ignore permissions when updating Task and Project (backport #45168) (#45170)
* fix(Timesheet): ignore permissions when updating Task and Project (#45168)

(cherry picked from commit 9e760e54a5)

# Conflicts:
#	erpnext/projects/doctype/timesheet/timesheet.py

* chore: resolve conflicts

---------

Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2025-01-13 12:08:17 +05:30
Diptanil Saha
fe5c458c45 fix: batch number search on pos (#45209)
* fix: price of items with batch number not having seperate item price on pos search bar

* fix: introduced batch number based sorting

(cherry picked from commit e529f82392)
2025-01-13 06:37:26 +00:00
mergify[bot]
47c6e5a931 fix: typo in manufacturing settings (backport #45190) (#45193)
fix: typo in manufacturing settings

(cherry picked from commit a9b761f862)

Co-authored-by: diptanilsaha <diptanil@frappe.io>
2025-01-13 11:59:27 +05:30
mergify[bot]
0665bc4a28 chore: removal of decapitalization feature (backport #45162) (#45173)
* chore: removal of decapitalization feature (#45162)

* chore: removal of decapitalization feature

* fix: rearrangement of asset capitalization doctype fields

(cherry picked from commit 7ea73d8265)

# Conflicts:
#	erpnext/assets/doctype/asset_capitalization/asset_capitalization.json

* fix: resolved conflicts

---------

Co-authored-by: Khushi Rawat <142375893+khushi8112@users.noreply.github.com>
2025-01-13 11:58:53 +05:30
Rohit Waghchaure
7d66e4efb0 fix: test case 2025-01-11 11:06:13 +05:30
rohitwaghchaure
bb170c024f chore: fix conflicts 2025-01-11 11:00:20 +05:30
rohitwaghchaure
9426a32184 chore: fix conflicts 2025-01-11 10:59:26 +05:30
Rohit Waghchaure
f7e3854641 fix: incorrect valuation rate for PI based revaluation
(cherry picked from commit 14ce2337df)
2025-01-11 04:39:31 +00:00
Rohit Waghchaure
0df18080c7 fix: delivery_document_no column issue
(cherry picked from commit 61efb2bb39)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/sales_invoice.py
#	erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.py
2025-01-11 04:38:31 +00:00
Frappe PR Bot
625ff4b276 chore(release): Bumped to Version 15.48.2
## [15.48.2](https://github.com/frappe/erpnext/compare/v15.48.1...v15.48.2) (2025-01-10)

### Bug Fixes

* precision loss causing process loss variance ([ac18c56](ac18c56a0b))
* timeout error for work order ([d6614f2](d6614f2848))
2025-01-10 06:31:50 +00:00
rohitwaghchaure
da11589b74 Merge pull request #45203 from frappe/mergify/bp/version-15/pr-45197
fix: precision loss causing process loss variance (backport #45197)
2025-01-10 12:00:25 +05:30
rohitwaghchaure
7344e46717 Merge pull request #45205 from frappe/mergify/bp/version-15/pr-45179
fix: timeout error for work order (backport #45177) (backport #45179)
2025-01-10 11:59:50 +05:30
Rohit Waghchaure
d6614f2848 fix: timeout error for work order
(cherry picked from commit b4ceda6f2c)
(cherry picked from commit 122b966a7b)
2025-01-10 06:10:09 +00:00
FATHIH MOHAMMED
ac18c56a0b fix: precision loss causing process loss variance
(cherry picked from commit d84601b2a3)
2025-01-10 05:49:26 +00:00
rohitwaghchaure
f5c9ab054f Merge pull request #45197 from FathihMohammed/qty_precision_fix
fix: precision loss causing process loss variance
2025-01-10 11:18:21 +05:30
ruthra kumar
698b6e6caf Merge pull request #45140 from frappe/mergify/bp/version-15-hotfix/pr-45100
chore: removal of tally migration feature (backport #45100)
2025-01-09 19:56:16 +05:30
FATHIH MOHAMMED
d84601b2a3 fix: precision loss causing process loss variance 2025-01-09 13:27:27 +00:00
rohitwaghchaure
ef3e442684 Merge pull request #45186 from frappe/mergify/bp/version-15-hotfix/pr-45180
fix: do not add ordered items from Quotation to new Sales Order (backport #45180)
2025-01-09 16:26:56 +05:30
Frappe PR Bot
246f4373b5 chore(release): Bumped to Version 15.48.1
## [15.48.1](https://github.com/frappe/erpnext/compare/v15.48.0...v15.48.1) (2025-01-09)

### Bug Fixes

* not able to see create Quality Inspection button ([5d7a3b5](5d7a3b5979))
2025-01-09 09:31:15 +00:00
rohitwaghchaure
430c4825c0 Merge pull request #45187 from frappe/mergify/bp/version-15/pr-45184
fix: not able to see create Quality Inspection button (backport #45183) (backport #45184)
2025-01-09 14:59:54 +05:30
Rohit Waghchaure
5d7a3b5979 fix: not able to see create Quality Inspection button
(cherry picked from commit b291835ccd)
(cherry picked from commit a79cae1fef)
2025-01-09 09:21:29 +00:00
rohitwaghchaure
01c7956329 Merge pull request #45184 from frappe/mergify/bp/version-15-hotfix/pr-45183
fix: not able to see create Quality Inspection button (backport #45183)
2025-01-09 14:50:24 +05:30
Rohit Waghchaure
f414fa4981 fix: do not add ordered items from Quotation to new Sales Order
(cherry picked from commit 2e930eb97b)
2025-01-09 09:09:55 +00:00
Rohit Waghchaure
a79cae1fef fix: not able to see create Quality Inspection button
(cherry picked from commit b291835ccd)
2025-01-09 09:07:50 +00:00
rohitwaghchaure
5e32796987 Merge pull request #45179 from frappe/mergify/bp/version-15-hotfix/pr-45177
fix: timeout error for work order (backport #45177)
2025-01-09 14:06:58 +05:30
Rohit Waghchaure
122b966a7b fix: timeout error for work order
(cherry picked from commit b4ceda6f2c)
2025-01-09 08:18:25 +00:00
Frappe PR Bot
6a869139a6 chore(release): Bumped to Version 15.48.0
# [15.48.0](https://github.com/frappe/erpnext/compare/v15.47.5...v15.48.0) (2025-01-08)

### Bug Fixes

* add monthly distributation and write query in qb ([03b06fc](03b06fc3ff))
* Alternative Item button dissapearing on Save event ([642b897](642b89782d))
* Alternative Items button in Work Order ([3194807](3194807a41))
* Bank Reconciliation Statement Report Company Filter ([622bfa6](622bfa6633))
* consider expired batches in stock reco ([c924feb](c924feb0d0))
* discount resetting on date change ([af53381](af53381163)), closes [#44989](https://github.com/frappe/erpnext/issues/44989)
* Hold_to_On_Hold ([9ecafdc](9ecafdc680))
* ignore currency validation while canceling the voucher ([8874f4a](8874f4a9e4))
* ignore party account validation while canceling the voucher ([0f1c6ff](0f1c6ff1c9))
* invoice against purchase receipt with returned quantity ([9daabfc](9daabfca8a))
* issue in returning components against the SCO ([87405f0](87405f0753))
* load price list rate for pos search term ([452dffa](452dffab48))
* load search term price with customer default price list ([59af144](59af144e29))
* Missing company filter breaks `get_account_balance` in Bank Reco ([931b516](931b5166a8))
* Override pre-commit behaviour due to conflicts with CI ([754845a](754845a935))
* **Project:** make status in confirmation dialog translatable ([#45118](https://github.com/frappe/erpnext/issues/45118)) ([0001d86](0001d868c7))
* removed unmerged patches ([4227d76](4227d76f08))
* resolved conflicts ([e9be858](e9be8583b0))
* resolved conflicts ([7318748](7318748a4c))
* Returned Qty in Work Order Consumed Materials report ([f7b501b](f7b501b29b))
* serial and batch no. buttons on pos ([#45048](https://github.com/frappe/erpnext/issues/45048)) ([54e3a74](54e3a74936))
* show new button in coa if create access ([89155f5](89155f529e))
* update customer contact details on pos (backport [#45071](https://github.com/frappe/erpnext/issues/45071)) ([#45106](https://github.com/frappe/erpnext/issues/45106)) ([01254da](01254da4e0))

### Features

* validate discount date in payment schedule (backport [#44646](https://github.com/frappe/erpnext/issues/44646)) ([#44727](https://github.com/frappe/erpnext/issues/44727)) ([500deff](500deff3e9))
* work in progress status for asset ([#45066](https://github.com/frappe/erpnext/issues/45066)) ([1ea36bb](1ea36bba88))
2025-01-08 10:29:45 +00:00
ruthra kumar
e240ff4f6c Merge pull request #45131 from frappe/version-15-hotfix
chore: release v15
2025-01-08 15:58:27 +05:30
Khushi Rawat
9e60d1ad79 Merge pull request #45149 from frappe/mergify/bp/version-15-hotfix/pr-45066
feat: work in progress status for asset (backport #45066)
2025-01-08 11:45:46 +05:30
Khushi Rawat
4227d76f08 fix: removed unmerged patches 2025-01-08 11:23:38 +05:30
Khushi Rawat
e9be8583b0 fix: resolved conflicts 2025-01-08 11:08:27 +05:30
Khushi Rawat
7318748a4c fix: resolved conflicts 2025-01-08 11:07:30 +05:30
ruthra kumar
19dc9975dd Merge pull request #45157 from frappe/mergify/bp/version-15-hotfix/pr-45154
fix: possible deadlock while using auto reconciliation (backport #45154)
2025-01-08 10:05:34 +05:30
ruthra kumar
36dbb867ed chore: resolve conflict 2025-01-08 09:19:53 +05:30
ruthra kumar
e578ab2c86 refactor: remove tally migration doctype 2025-01-08 09:16:53 +05:30
ruthra kumar
c45f22c776 Merge pull request #45139 from frappe/mergify/bp/version-15-hotfix/pr-45130
refactor: change sales invoice button position (backport #45130)
2025-01-08 09:01:59 +05:30
ruthra kumar
acd66fa00c chore: remove 'Experimental' tag
(cherry picked from commit 4620025dcd)

# Conflicts:
#	erpnext/accounts/doctype/process_payment_reconciliation_log/process_payment_reconciliation_log.json
2025-01-08 03:31:35 +00:00
ruthra kumar
04384c47f8 Merge pull request #45153 from frappe/mergify/bp/version-15-hotfix/pr-45112
fix: Missing company filter breaks `get_account_balance` in Bank Reco (backport #45112)
2025-01-08 09:00:01 +05:30
marination
754845a935 fix: Override pre-commit behaviour due to conflicts with CI
(cherry picked from commit d7bf73cffa)
2025-01-08 02:47:22 +00:00
marination
931b5166a8 fix: Missing company filter breaks get_account_balance in Bank Reco
(cherry picked from commit 8de0fe78ea)
2025-01-08 02:47:21 +00:00
Khushi Rawat
1ea36bba88 feat: work in progress status for asset (#45066)
* feat: work in progress status for asset

* fix: test case correction

* fix(patch): added patch to update status of assets

* fix: updated tests

(cherry picked from commit 6850019649)

# Conflicts:
#	erpnext/assets/doctype/asset/asset.json
#	erpnext/patches.txt
2025-01-07 18:14:22 +00:00
rohitwaghchaure
807d591e7e Merge pull request #45145 from frappe/mergify/bp/version-15-hotfix/pr-45144
fix: issue in returning components against the SCO (backport #45144)
2025-01-07 23:41:03 +05:30
Rohit Waghchaure
87405f0753 fix: issue in returning components against the SCO
(cherry picked from commit 729ce1dc50)
2025-01-07 13:02:09 +00:00
rohitwaghchaure
e36bd5fe26 Merge pull request #45143 from frappe/mergify/bp/version-15-hotfix/pr-45048
fix: serial and batch no. buttons on pos (backport #45048)
2025-01-07 18:32:05 +05:30
Diptanil Saha
54e3a74936 fix: serial and batch no. buttons on pos (#45048)
(cherry picked from commit 31dd32dcdf)
2025-01-07 12:36:46 +00:00
Diptanil Saha
296d5d2295 chore: removal of tally migration feature (#45100)
(cherry picked from commit 9f77793f16)

# Conflicts:
#	erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.json
#	erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.py
#	erpnext/erpnext_integrations/doctype/tally_migration/test_tally_migration.py
2025-01-07 12:00:01 +00:00
Ejaaz Khan
f654c2d156 refactor: change sales invoice button position (#45130)
(cherry picked from commit a0f17f8e73)
2025-01-07 11:49:24 +00:00
ruthra kumar
cac35246f1 Merge pull request #45123 from frappe/mergify/bp/version-15-hotfix/pr-45121
fix: discount resetting on date change (backport #45121)
2025-01-07 11:32:09 +05:30
ruthra kumar
af53381163 fix: discount resetting on date change
revert #44989

(cherry picked from commit 886281f81a)
2025-01-07 05:51:48 +00:00
ruthra kumar
1c06831b11 Merge pull request #45109 from frappe/mergify/bp/version-15-hotfix/pr-45107
fix: Returned Qty in Work Order Consumed Materials report (backport #45107)
2025-01-07 10:12:43 +05:30
ruthra kumar
616a2b7675 Merge pull request #45120 from frappe/mergify/bp/version-15-hotfix/pr-45118
fix(Project): make status in confirmation dialog translatable (backport #45118)
2025-01-07 10:11:56 +05:30
Raffael Meyer
0001d868c7 fix(Project): make status in confirmation dialog translatable (#45118)
(cherry picked from commit 9eede907f8)
2025-01-06 22:13:47 +00:00
mergify[bot]
0abace7911 refactor(Project): extract custom button function (backport #45116) (#45117)
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2025-01-06 23:04:30 +01:00
Rohit Waghchaure
f7b501b29b fix: Returned Qty in Work Order Consumed Materials report
(cherry picked from commit 30d68a31e0)
2025-01-06 10:37:32 +00:00
mergify[bot]
01254da4e0 fix: update customer contact details on pos (backport #45071) (#45106)
fix: update customer contact details on pos (#45071)

* fix: update customer contact details on pos

* refactor: removed console log statement

(cherry picked from commit d79e561248)

Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2025-01-06 15:01:23 +05:30
rohitwaghchaure
dadc8266dc Merge pull request #45098 from frappe/mergify/bp/version-15-hotfix/pr-45084
fix: Alternative Items button in Work Order (backport #45084)
2025-01-06 14:48:02 +05:30
ruthra kumar
100b4e9274 Merge pull request #45103 from frappe/mergify/bp/version-15-hotfix/pr-45006
fix: pos search by term items price (backport #45006)
2025-01-06 14:43:56 +05:30
diptanilsaha
59af144e29 fix: load search term price with customer default price list
(cherry picked from commit 2beb485d77)
2025-01-06 08:39:58 +00:00
diptanilsaha
452dffab48 fix: load price list rate for pos search term
(cherry picked from commit 4b6cae156e)
2025-01-06 08:39:57 +00:00
ruthra kumar
eff12cbfbe Merge pull request #45101 from frappe/mergify/bp/version-15-hotfix/pr-45099
fix: show new button in coa if create access (backport #45099)
2025-01-06 13:56:43 +05:30
sokumon
89155f529e fix: show new button in coa if create access
(cherry picked from commit 3125bc8a16)
2025-01-06 08:20:01 +00:00
Mihir Kandoi
642b89782d fix: Alternative Item button dissapearing on Save event
(cherry picked from commit b8838bd9b9)
2025-01-06 06:52:16 +00:00
Mihir Kandoi
3194807a41 fix: Alternative Items button in Work Order
(cherry picked from commit e28382afc1)
2025-01-06 06:52:16 +00:00
ruthra kumar
2333d33362 Merge pull request #45095 from frappe/mergify/bp/version-15-hotfix/pr-44943
fix: Bank Reconciliation Statement Report Company Filter (backport #44943)
2025-01-06 10:51:48 +05:30
creative-paramu
622bfa6633 fix: Bank Reconciliation Statement Report Company Filter
(cherry picked from commit 50c92034ba)
2025-01-06 10:30:24 +05:30
ruthra kumar
e22771c729 Merge pull request #45080 from frappe/mergify/bp/version-15-hotfix/pr-44983
fix: add monthly distributation and write query in qb (backport #44983)
2025-01-06 10:28:18 +05:30
Frappe PR Bot
08e58e13ac chore(release): Bumped to Version 15.47.5
## [15.47.5](https://github.com/frappe/erpnext/compare/v15.47.4...v15.47.5) (2025-01-06)

### Bug Fixes

* ignore currency validation while canceling the voucher ([8076942](807694206b))
* ignore party account validation while canceling the voucher ([bc0be5a](bc0be5a00a))
2025-01-06 04:42:56 +00:00
ruthra kumar
c513c7f73d Merge pull request #45094 from frappe/mergify/bp/version-15/pr-45051
fix: ignore currency validation while canceling the voucher (backport #45051)
2025-01-06 10:11:41 +05:30
ruthra kumar
5b066f4a59 Merge pull request #45096 from frappe/mergify/bp/version-15-hotfix/pr-44952
fix: Hold_to_On_Hold (backport #44952)
2025-01-06 10:09:35 +05:30
mahsem
9ecafdc680 fix: Hold_to_On_Hold
(cherry picked from commit 92b1f314ef)
2025-01-06 03:15:30 +00:00
ruthra kumar
05763d226a Merge pull request #45093 from frappe/mergify/bp/version-15-hotfix/pr-45051
fix: ignore currency validation while canceling the voucher (backport #45051)
2025-01-06 08:44:46 +05:30
venkat102
bc0be5a00a fix: ignore party account validation while canceling the voucher
(cherry picked from commit 49885f8eae)
2025-01-06 02:59:36 +00:00
venkat102
807694206b fix: ignore currency validation while canceling the voucher
(cherry picked from commit 15d488b9aa)
2025-01-06 02:59:35 +00:00
venkat102
0f1c6ff1c9 fix: ignore party account validation while canceling the voucher
(cherry picked from commit 49885f8eae)
2025-01-06 02:55:50 +00:00
venkat102
8874f4a9e4 fix: ignore currency validation while canceling the voucher
(cherry picked from commit 15d488b9aa)
2025-01-06 02:55:49 +00:00
rohitwaghchaure
21a83c508a Merge pull request #45089 from frappe/mergify/bp/version-15-hotfix/pr-45087
fix: invoice against purchase receipt with returned quantity (backport #45087)
2025-01-05 19:02:07 +05:30
rohitwaghchaure
90b8860a40 chore: fix conflicts 2025-01-05 16:24:15 +05:30
Rohit Waghchaure
9daabfca8a fix: invoice against purchase receipt with returned quantity
(cherry picked from commit d5babf4237)

# Conflicts:
#	erpnext/accounts/doctype/purchase_invoice/test_purchase_invoice.py
2025-01-04 15:08:10 +00:00
rohitwaghchaure
10a4b54a67 Merge pull request #45086 from frappe/mergify/bp/version-15-hotfix/pr-45083
fix: consider expired batches in stock reco (backport #45083)
2025-01-04 20:37:16 +05:30
Rohit Waghchaure
c924feb0d0 fix: consider expired batches in stock reco
(cherry picked from commit f51c9f578c)
2025-01-04 13:57:04 +00:00
Joseph Mania
cfa062df86 refactor: phone number field when channel is phone on Payment Request (#44949)
Co-authored-by: maniamartial <martialamania19@gmail.com>
2025-01-04 05:23:41 +05:30
ruthra kumar
2e67a33412 refactor: store result in variable before enumeration
helps to inspect result while debugging

(cherry picked from commit b60bd17d1d)
2025-01-03 23:48:40 +00:00
Sanket322
03b06fc3ff fix: add monthly distributation and write query in qb
(cherry picked from commit 27195c7c96)
2025-01-03 23:48:40 +00:00
mergify[bot]
500deff3e9 feat: validate discount date in payment schedule (backport #44646) (#44727)
Co-authored-by: barredterra <14891507+barredterra@users.noreply.github.com>
2025-01-03 13:19:34 +01:00
Frappe PR Bot
c3d1e122be chore(release): Bumped to Version 15.47.4
## [15.47.4](https://github.com/frappe/erpnext/compare/v15.47.3...v15.47.4) (2025-01-03)

### Bug Fixes

* Added patch and fallback code to prevent future issues similiar to helpdesk ticket 28246 ([ab87265](ab87265395))
* Added patch and fallback code to prevent future issues similiar to helpdesk ticket 28246 ([66544bf](66544bfa10))
* BOM cost update issue ([00102a1](00102a15e3))
* Fixed logic in if condition causing tests to fail ([b3b8083](b3b808335f))
* Removed patch as instructed by mentor ([3049027](3049027f43))
* Removed patch as instructed by mentor ([163af91](163af91c37))
* removed unknown patch? ([f9d038e](f9d038ee4a))
* removed unused code ([d31b0a5](d31b0a507f))
* slow stock transactions (backport [#45025](https://github.com/frappe/erpnext/issues/45025)) ([#45027](https://github.com/frappe/erpnext/issues/45027)) ([85ba96e](85ba96e0f3))
* **style:** set image width in BOM ([6247d5a](6247d5aadb))
* validate components and their qty as per BOM in the stock entry ([b5f6926](b5f6926140))
2025-01-03 01:24:44 +00:00
ruthra kumar
d5fed84182 Merge pull request #45063 from frappe/version-15-hotfix
chore: release v15
2025-01-03 06:53:23 +05:30
ruthra kumar
7f96aee06f Merge pull request #45060 from frappe/mergify/bp/version-15/pr-45056
chore: partial revert #44989 (backport #45056)
2025-01-02 21:10:08 +05:30
ruthra kumar
2c487af2df Merge pull request #45058 from frappe/mergify/bp/version-15-hotfix/pr-45056
chore: partial revert #44989 (backport #45056)
2025-01-02 21:04:22 +05:30
ruthra kumar
a5a219cd6e chore: partial revert #44989
(cherry picked from commit 63d547fb4a)
2025-01-02 15:29:55 +00:00
ruthra kumar
4dfc5a664a chore: partial revert #44989
(cherry picked from commit 63d547fb4a)
2025-01-02 15:27:40 +00:00
rohitwaghchaure
d3ea8b8e77 Merge pull request #45054 from frappe/mergify/bp/version-15-hotfix/pr-45053
fix(style): set image width in BOM (backport #45053)
2025-01-02 19:07:29 +05:30
sokumon
6247d5aadb fix(style): set image width in BOM
(cherry picked from commit b634ba7f54)
2025-01-02 13:31:21 +00:00
rohitwaghchaure
85167bf934 Merge pull request #45044 from frappe/mergify/bp/version-15-hotfix/pr-45043
fix: validate components and their qty as per BOM in the stock entry (backport #45043)
2025-01-02 14:19:38 +05:30
Rohit Waghchaure
b5f6926140 fix: validate components and their qty as per BOM in the stock entry
(cherry picked from commit b1de82ddad)
2025-01-02 08:16:03 +00:00
rohitwaghchaure
c615df5ac4 Merge pull request #45042 from frappe/mergify/bp/version-15-hotfix/pr-45039
fix: removed unused code (backport #45039)
2025-01-02 12:36:25 +05:30
rohitwaghchaure
d26d0c6282 Merge pull request #45031 from frappe/mergify/bp/version-15-hotfix/pr-44999
fix: Added patch and fallback code to prevent future issues similar … (backport #44999)
2025-01-02 12:18:18 +05:30
Rohit Waghchaure
d31b0a507f fix: removed unused code
(cherry picked from commit dc5f2d35ac)
2025-01-02 06:47:38 +00:00
rohitwaghchaure
bd12c1475a Merge pull request #45038 from frappe/mergify/bp/version-15-hotfix/pr-45036
fix: Auto BOM cost update issue (backport #45036)
2025-01-02 12:15:50 +05:30
Mihir Kandoi
f9d038ee4a fix: removed unknown patch? 2025-01-02 10:51:11 +05:30
Rohit Waghchaure
00102a15e3 fix: BOM cost update issue
(cherry picked from commit 28ea3ddd51)
2025-01-02 04:55:22 +00:00
Mihir Kandoi
3049027f43 fix: Removed patch as instructed by mentor 2025-01-01 17:13:49 +05:30
Mihir Kandoi
ab87265395 fix: Added patch and fallback code to prevent future issues similiar to helpdesk ticket 28246 2025-01-01 17:12:10 +05:30
Mihir Kandoi
163af91c37 fix: Removed patch as instructed by mentor
(cherry picked from commit d1d01482df)

# Conflicts:
#	erpnext/patches.txt
2025-01-01 11:06:27 +00:00
Mihir Kandoi
b3b808335f fix: Fixed logic in if condition causing tests to fail
(cherry picked from commit 575fb43f9c)
2025-01-01 11:06:27 +00:00
Mihir Kandoi
66544bfa10 fix: Added patch and fallback code to prevent future issues similiar to helpdesk ticket 28246
(cherry picked from commit 65dc3505c4)

# Conflicts:
#	erpnext/patches.txt
2025-01-01 11:06:27 +00:00
Frappe PR Bot
005df08656 chore(release): Bumped to Version 15.47.3
## [15.47.3](https://github.com/frappe/erpnext/compare/v15.47.2...v15.47.3) (2025-01-01)

### Bug Fixes

* slow stock transactions (backport [#45025](https://github.com/frappe/erpnext/issues/45025)) ([#45027](https://github.com/frappe/erpnext/issues/45027)) ([bb75adb](bb75adb59c))
2025-01-01 10:00:40 +00:00
rohitwaghchaure
059cb6d8b3 Merge pull request #45028 from frappe/mergify/bp/version-15/pr-45027
fix: slow stock transactions (backport #45025) (backport #45027)
2025-01-01 15:29:24 +05:30
mergify[bot]
bb75adb59c fix: slow stock transactions (backport #45025) (#45027)
fix: slow stock transactions (#45025)

(cherry picked from commit e92af10f14)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
(cherry picked from commit 85ba96e0f3)
2025-01-01 09:42:01 +00:00
mergify[bot]
85ba96e0f3 fix: slow stock transactions (backport #45025) (#45027)
fix: slow stock transactions (#45025)

(cherry picked from commit e92af10f14)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-01-01 15:11:01 +05:30
Frappe PR Bot
3a5959e023 chore(release): Bumped to Version 15.47.2
## [15.47.2](https://github.com/frappe/erpnext/compare/v15.47.1...v15.47.2) (2025-01-01)

### Bug Fixes

* add company filter to project ([d550b43](d550b433c1))
* allow zero valuation rate (backport [#44902](https://github.com/frappe/erpnext/issues/44902)) ([#44910](https://github.com/frappe/erpnext/issues/44910)) ([9060e4c](9060e4ce57))
* apply apply_pricing_rule date change ([f09acc7](f09acc784f))
* apply discount on qty change ([c19725c](c19725ca74))
* clear payment schedule in purchase invoice for is_paid ([6cc7060](6cc70605fa))
* copy accounting dimensions to asset and sales invoice ([#44964](https://github.com/frappe/erpnext/issues/44964)) ([839ffb3](839ffb3f2a))
* duplicate validate for closing stock balance ([#45015](https://github.com/frappe/erpnext/issues/45015)) ([8d650e5](8d650e56ba))
* failing tests fixed ([61367ee](61367ee1ed))
* fetch advance payment entries on pos invoice (backport [#44856](https://github.com/frappe/erpnext/issues/44856)) ([#44931](https://github.com/frappe/erpnext/issues/44931)) ([cc827c8](cc827c8077))
* fetch amount in company  currency ([b135a68](b135a684a5))
* get item tax template based on posting date ([2feeebb](2feeebb5fb))
* ignore duplicate while creating default templates ([6c206c1](6c206c1cb3))
* ignore inventory dimension for SABB and Pick List (backport [#44933](https://github.com/frappe/erpnext/issues/44933)) ([#44941](https://github.com/frappe/erpnext/issues/44941)) ([772b7b9](772b7b95ac))
* ignore validate while making WO from MR (backport [#44939](https://github.com/frappe/erpnext/issues/44939)) ([#44942](https://github.com/frappe/erpnext/issues/44942)) ([c33e075](c33e07550c))
* in_contex_translation_fixes ([1353a14](1353a14a6b))
* include company in filter condition ([7422043](74220430e5))
* incorrect filter for BOM (backport [#44954](https://github.com/frappe/erpnext/issues/44954)) ([#44956](https://github.com/frappe/erpnext/issues/44956)) ([9853bd9](9853bd9ba1))
* incorrect quality inspection linked in purchase receipt (backport [#44985](https://github.com/frappe/erpnext/issues/44985)) ([#45020](https://github.com/frappe/erpnext/issues/45020)) ([0a2cc6b](0a2cc6bcd7))
* limit discount value to 100 in pos cart (backport [#44916](https://github.com/frappe/erpnext/issues/44916)) ([#44932](https://github.com/frappe/erpnext/issues/44932)) ([28442f3](28442f3414))
* load customer default price list in pos during item selection (backport [#44991](https://github.com/frappe/erpnext/issues/44991)) ([#44993](https://github.com/frappe/erpnext/issues/44993)) ([20efe7b](20efe7bb80))
* material request status (backport [#44917](https://github.com/frappe/erpnext/issues/44917)) ([#44918](https://github.com/frappe/erpnext/issues/44918)) ([042d12b](042d12b2c1))
* move code from purchase invoice to buying controller ([98631eb](98631eb266))
* negative stock balance (backport [#44990](https://github.com/frappe/erpnext/issues/44990)) ([#44996](https://github.com/frappe/erpnext/issues/44996)) ([6f71389](6f7138996a))
* not able to make purchase receipt from SCR (backport [#44919](https://github.com/frappe/erpnext/issues/44919)) ([#44925](https://github.com/frappe/erpnext/issues/44925)) ([c241262](c241262266))
* pos payment using non-default mode of payment (backport [#44920](https://github.com/frappe/erpnext/issues/44920)) ([#44971](https://github.com/frappe/erpnext/issues/44971)) ([7dd2b0c](7dd2b0c189)), closes [#41108](https://github.com/frappe/erpnext/issues/41108)
* precision issue (backport [#45013](https://github.com/frappe/erpnext/issues/45013)) ([#45019](https://github.com/frappe/erpnext/issues/45019)) ([52bdf5b](52bdf5b170))
* refactor query in get_total_allocated_amount in bank_transaction ([944dc96](944dc966bc))
* relabel rate to tax rate ([991a336](991a3366a8))
* remove unused variable ([b892282](b8922823a3))
* **report:** Purchase Order Analysis pymysql.err (backport [#44957](https://github.com/frappe/erpnext/issues/44957)) ([#44994](https://github.com/frappe/erpnext/issues/44994)) ([ea4b6e8](ea4b6e8dd7))
* resolved conflicts ([00ae829](00ae829d89))
* set paid amount in party currency in bank reco payment entry ([6703a45](6703a457fe))
* set/update billing address on change of company ([cfa432d](cfa432dbca))
* Show order tax amount in customer currency on the portal (backport [#44915](https://github.com/frappe/erpnext/issues/44915)) ([#44923](https://github.com/frappe/erpnext/issues/44923)) ([5cc9e10](5cc9e10923))
* SQL syntax error in Purchase Receipt query for empty filters ([#44636](https://github.com/frappe/erpnext/issues/44636)) ([2f279a6](2f279a6eb4))
* strings for translation (backport [#44816](https://github.com/frappe/erpnext/issues/44816)) ([#44927](https://github.com/frappe/erpnext/issues/44927)) ([488d808](488d8080c8))
* update item_tax_rate in backend ([8885b07](8885b07114))
* use meta to check field instead of doctype ([e582ff8](e582ff862e))
* Validate party on non receivable / payable account (backport [#44883](https://github.com/frappe/erpnext/issues/44883)) ([#44973](https://github.com/frappe/erpnext/issues/44973)) ([d6903fb](d6903fbc8d))
* whitespace ([2efc701](2efc701e4e))
2025-01-01 08:37:05 +00:00
ruthra kumar
140b62a1e3 Merge pull request #45005 from frappe/version-15-hotfix
chore: release v15
2025-01-01 14:05:41 +05:30
ruthra kumar
1a1476afa4 Merge pull request #45008 from frappe/mergify/bp/version-15-hotfix/pr-44884
fix: update item_tax_rate in backend (backport #44884)
2025-01-01 13:48:50 +05:30
ruthra kumar
e7f4a9bf77 Merge pull request #45023 from frappe/mergify/bp/version-15-hotfix/pr-44989
fix: apply apply_pricing_rule on date change (backport #44989)
2025-01-01 10:19:11 +05:30
DHINESH00
f09acc784f fix: apply apply_pricing_rule date change
(cherry picked from commit 2cbab9b875)
2025-01-01 04:42:48 +00:00
mergify[bot]
0a2cc6bcd7 fix: incorrect quality inspection linked in purchase receipt (backport #44985) (#45020)
* fix: incorrect quality inspection linked in purchase receipt (#44985)

(cherry picked from commit b84c8ff960)

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

* chore: fix conflicts

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-01-01 09:24:48 +05:30
mergify[bot]
52bdf5b170 fix: precision issue (backport #45013) (#45019)
fix: precision issue (#45013)

(cherry picked from commit 7db9bcaeac)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2025-01-01 09:08:16 +05:30
rohitwaghchaure
8d650e56ba fix: duplicate validate for closing stock balance (#45015) 2025-01-01 08:29:02 +05:30
ruthra kumar
e09fb87597 refactor: use existing method parameters 2024-12-31 17:12:34 +05:30
ruthra kumar
a11aee3ab3 Merge pull request #44936 from frappe/mergify/bp/version-15-hotfix/pr-44904
fix: ignore duplicate while creating default templates (backport #44904)
2024-12-31 17:01:03 +05:30
ruthra kumar
92ad2ce554 Merge pull request #44979 from frappe/mergify/bp/version-15-hotfix/pr-44855
fix: in_context_translation_fixes (backport #44855)
2024-12-31 16:59:05 +05:30
ruthra kumar
3533c25969 Merge pull request #45011 from frappe/mergify/bp/version-15-hotfix/pr-44940
fix(Bank Reconciliation Tool): fetch amount in company  currency (backport #44940)
2024-12-31 16:22:00 +05:30
ruthra kumar
aff83051a6 Merge pull request #45010 from frappe/mergify/bp/version-15-hotfix/pr-44903
fix: set paid amount in party currency in bank reco payment entry (backport #44903)
2024-12-31 16:16:16 +05:30
DHINESH00
b135a684a5 fix: fetch amount in company currency
(cherry picked from commit a984aaae36)
2024-12-31 10:28:46 +00:00
ruthra kumar
885dd31c5c chore: resolve conflict 2024-12-31 15:54:06 +05:30
ljain112
6703a457fe fix: set paid amount in party currency in bank reco payment entry
(cherry picked from commit 70b1077286)
2024-12-31 10:23:42 +00:00
ljain112
8885b07114 fix: update item_tax_rate in backend
(cherry picked from commit de54c0b41f)

# Conflicts:
#	erpnext/controllers/taxes_and_totals.py
2024-12-31 10:21:39 +00:00
mergify[bot]
6f7138996a fix: negative stock balance (backport #44990) (#44996)
* fix: negative stock balance (#44990)

(cherry picked from commit 7c4aecf834)

# Conflicts:
#	erpnext/stock/deprecated_serial_batch.py

* chore: fix conflicts

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-31 13:17:18 +05:30
Khushi Rawat
8d5fe20c7c Merge pull request #44997 from frappe/mergify/bp/version-15-hotfix/pr-44964
fix: copy accounting dimensions to asset and sales invoice (backport #44964)
2024-12-31 13:13:15 +05:30
Khushi Rawat
b8922823a3 fix: remove unused variable 2024-12-31 12:55:41 +05:30
mergify[bot]
20efe7bb80 fix: load customer default price list in pos during item selection (backport #44991) (#44993)
fix: load customer default price list in pos during item selection (#44991)

fix: load customer default price list in pos
(cherry picked from commit d1ae0d784e)

Co-authored-by: Diptanil Saha <diptanil.dev@gmail.com>
2024-12-31 12:52:23 +05:30
mergify[bot]
ea4b6e8dd7 fix(report): Purchase Order Analysis pymysql.err (backport #44957) (#44994)
fix(report): Purchase Order Analysis pymysql.err (#44957)

(cherry picked from commit d6980a9493)

Co-authored-by: Vishnu  VS <Vishnuviswambaran2002@gmail.com>
2024-12-31 12:52:13 +05:30
Khushi Rawat
00ae829d89 fix: resolved conflicts 2024-12-31 12:43:38 +05:30
Khushi Rawat
839ffb3f2a fix: copy accounting dimensions to asset and sales invoice (#44964)
* fix: copy accounting dimensions to asset and sales invoice

* fix: replace sql query with query builder

* refactor: reuse function for accounting dimensions

* fix: loop handling

* fix: use explicit param

(cherry picked from commit 079ec864de)

# Conflicts:
#	erpnext/controllers/buying_controller.py
2024-12-31 07:07:16 +00:00
mergify[bot]
d6903fbc8d fix: Validate party on non receivable / payable account (backport #44883) (#44973)
* fix: validate party on non receivable / payable account

(cherry picked from commit c6a2d86ba6)

* test: add unit test to validate on non receivable / payable account

(cherry picked from commit a10a15b2c3)

* fix: Set account type payable for advance account

(cherry picked from commit 8abbece7c4)

---------

Co-authored-by: Karuppasamy923 <karuppasamylivak@gmail.com>
2024-12-31 12:09:33 +05:30
mergify[bot]
9853bd9ba1 fix: incorrect filter for BOM (backport #44954) (#44956)
fix: incorrect filter for BOM (#44954)

(cherry picked from commit 9fdeb5f826)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-30 23:38:49 +05:30
mergify[bot]
c33e07550c fix: ignore validate while making WO from MR (backport #44939) (#44942)
fix: ignore validate while making WO from MR (#44939)

(cherry picked from commit 9661c1d081)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-30 23:38:14 +05:30
mergify[bot]
772b7b95ac fix: ignore inventory dimension for SABB and Pick List (backport #44933) (#44941)
fix: ignore inventory dimension for SABB and Pick List (#44933)

(cherry picked from commit 303c52f134)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-30 23:37:52 +05:30
ruthra kumar
2e9c507dfa chore: resolve conflicts 2024-12-30 16:18:18 +05:30
ruthra kumar
e3dc5d0de4 Merge pull request #44897 from frappe/mergify/bp/version-15-hotfix/pr-44787
fix: refactor query in`get_total_allocated_amount` in bank_transaction (backport #44787)
2024-12-30 16:16:15 +05:30
mahsem
2efc701e4e fix: whitespace
(cherry picked from commit 1f4e1811de)
2024-12-30 10:27:17 +00:00
mahsem
1353a14a6b fix: in_contex_translation_fixes
(cherry picked from commit a87e7fde03)

# Conflicts:
#	erpnext/accounts/utils.py
#	erpnext/templates/pages/order.html
2024-12-30 10:27:17 +00:00
ruthra kumar
8b4f5261b4 Merge pull request #44978 from frappe/mergify/bp/version-15-hotfix/pr-44975
fix: add company filter to project (backport #44975)
2024-12-30 15:55:00 +05:30
venkat102
74220430e5 fix: include company in filter condition
(cherry picked from commit b92f8bc514)
2024-12-30 09:59:09 +00:00
venkat102
d550b433c1 fix: add company filter to project
(cherry picked from commit 1a7b09e576)
2024-12-30 09:59:09 +00:00
ruthra kumar
8e55d5cc39 Merge pull request #44974 from frappe/mergify/bp/version-15-hotfix/pr-44552
Fix: Added Order Number and Order Date fields to the Blanket Order form. (backport #44552)
2024-12-30 15:27:50 +05:30
ruthra kumar
4a74ee7b6e Merge pull request #44977 from frappe/mergify/bp/version-15-hotfix/pr-44761
fix: apply discount on qty change (backport #44761)
2024-12-30 15:04:22 +05:30
DHINESH00
c19725ca74 fix: apply discount on qty change
(cherry picked from commit 352b82bc0b)
2024-12-30 09:27:31 +00:00
ruthra kumar
7b90742409 chore: resolve conflict 2024-12-30 14:50:23 +05:30
Himanshu Shivhare
583182180a refactor: Order Number and Order Date fields to Blanket Order
(cherry picked from commit 5a284df51d)

# Conflicts:
#	erpnext/manufacturing/doctype/blanket_order/blanket_order.json
2024-12-30 08:32:49 +00:00
mergify[bot]
28442f3414 fix: limit discount value to 100 in pos cart (backport #44916) (#44932)
fix: limit discount value to 100 in pos cart (#44916)

* fix: limit discount value to 100 in pos cart

* fix: error message on invalid discount

(cherry picked from commit ac26622d6e)

Co-authored-by: Diptanil Saha <50792171+diptanilsaha@users.noreply.github.com>
2024-12-30 14:00:08 +05:30
mergify[bot]
cc827c8077 fix: fetch advance payment entries on pos invoice (backport #44856) (#44931)
fix: fetch advance payment entries on pos invoice

(cherry picked from commit a7078e5702)

Co-authored-by: Diptanil Saha <diptanilsaha@Diptanils-MacBook-Air.local>
2024-12-30 13:59:42 +05:30
mergify[bot]
40f46b76fa fix (pos closing entry): validation for 100 pc discount on pos invoice (backport #44899) (#44930)
fix (pos closing entry): validation for 100 pc discount on pos invoice (#44899)

(cherry picked from commit cfcc24a341)

Co-authored-by: Diptanil Saha <50792171+diptanilsaha@users.noreply.github.com>
2024-12-30 13:58:58 +05:30
mergify[bot]
7dd2b0c189 fix: pos payment using non-default mode of payment (backport #44920) (#44971)
fix: pos payment using non-default mode of payment (#44920)

* fix: pos payment using non-default mode of payment (#41108)

* fix: included css syntax

* refactor: created a function to sanitize the class name

* refactor: reusing method to sanitize class name

* refactor: function rename

(cherry picked from commit 98cbb7e900)

Co-authored-by: Diptanil Saha <diptanil.dev@gmail.com>
2024-12-30 13:56:55 +05:30
ruthra kumar
3a361eac4e Merge pull request #44966 from frappe/mergify/bp/version-15-hotfix/pr-44921
fix: get item tax template based on posting date (backport #44921)
2024-12-30 13:09:15 +05:30
ruthra kumar
61ee292957 Merge pull request #44955 from frappe/mergify/bp/version-15-hotfix/pr-44636
fix: SQL syntax error in Purchase Receipt query for empty filters (backport #44636)
2024-12-30 12:38:02 +05:30
ruthra kumar
c2d9ac11f0 Merge pull request #44960 from frappe/mergify/bp/version-15-hotfix/pr-44958
refactor(test): make manufacturing test idempotent (backport #44958)
2024-12-30 12:37:37 +05:30
ljain112
2feeebb5fb fix: get item tax template based on posting date
(cherry picked from commit 976e35d547)
2024-12-30 12:35:07 +05:30
ruthra kumar
f6a9051291 Merge pull request #44963 from frappe/mergify/bp/version-15-hotfix/pr-44906
fix: set/update billing address on change of company (backport #44906)
2024-12-30 12:27:59 +05:30
Sanket322
e582ff862e fix: use meta to check field instead of doctype
(cherry picked from commit 187c74ae09)
2024-12-30 06:52:56 +00:00
Sanket322
98631eb266 fix: move code from purchase invoice to buying controller
(cherry picked from commit cb197fd01f)
2024-12-30 06:52:55 +00:00
Sanket322
cfa432dbca fix: set/update billing address on change of company
(cherry picked from commit 0adfebee85)
2024-12-30 06:52:55 +00:00
ruthra kumar
a11f7d5a82 chore: fix linter 2024-12-30 12:18:09 +05:30
ruthra kumar
f83112520d refactor(test): make manufacturing test idempotent
(cherry picked from commit f3be246df3)
2024-12-30 12:02:01 +05:30
Navin R C
2f279a6eb4 fix: SQL syntax error in Purchase Receipt query for empty filters (#44636)
fix(po-analysis): handle SQL error due to empty data in IN() clause

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
(cherry picked from commit 48b49cdea4)
2024-12-30 04:11:08 +00:00
Sanket322
6c206c1cb3 fix: ignore duplicate while creating default templates
(cherry picked from commit 9368485594)
2024-12-27 09:17:44 +00:00
ruthra kumar
6bb2b76040 Merge pull request #44935 from frappe/mergify/bp/version-15-hotfix/pr-44892
fix: clear payment schedule in purchase invoice for is_paid (backport #44892)
2024-12-27 13:52:26 +05:30
ruthra kumar
508435ac9f refactor: early return is always better
validate_advance_entries() has a heavy IO bound operation. Early
return on unwanted cases is always better.

(cherry picked from commit 0589fa7f3e)
2024-12-27 07:54:44 +00:00
Sanket322
6cc70605fa fix: clear payment schedule in purchase invoice for is_paid
(cherry picked from commit e1fc239f3d)
2024-12-27 07:54:44 +00:00
mergify[bot]
488d8080c8 fix: strings for translation (backport #44816) (#44927)
* fix: strings for translation

(cherry picked from commit 3be633f6f1)

# Conflicts:
#	erpnext/accounts/utils.py

* fix: resolved conflict

---------

Co-authored-by: mahsem <137205921+mahsem@users.noreply.github.com>
Co-authored-by: Nabin Hait <nabinhait@gmail.com>
2024-12-27 11:33:09 +05:30
mergify[bot]
5cc9e10923 fix: Show order tax amount in customer currency on the portal (backport #44915) (#44923)
fix: Show order tax amount in customer currency on the portal (#44915)

(cherry picked from commit b998933ef0)

Co-authored-by: Nabin Hait <nabinhait@gmail.com>
2024-12-27 11:24:57 +05:30
ruthra kumar
b45b77df93 Merge pull request #44926 from frappe/mergify/bp/version-15-hotfix/pr-44815
fix: relabel rate to tax rate (backport #44815)
2024-12-27 10:55:54 +05:30
mahsem
991a3366a8 fix: relabel rate to tax rate
(cherry picked from commit 1eb8b0ceef)
2024-12-27 05:25:16 +00:00
mergify[bot]
042d12b2c1 fix: material request status (backport #44917) (#44918)
* fix: material request status (#44917)

(cherry picked from commit 1319ce4bc1)

* chore: fix test case

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-26 22:58:29 +05:30
mergify[bot]
c241262266 fix: not able to make purchase receipt from SCR (backport #44919) (#44925)
* fix: not able to make purchase receipt from SCR (#44919)

(cherry picked from commit ab1cca0c40)

* chore: fix test case

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-26 22:58:11 +05:30
Frappe PR Bot
f25d65ecc4 chore(release): Bumped to Version 15.47.1
## [15.47.1](https://github.com/frappe/erpnext/compare/v15.47.0...v15.47.1) (2024-12-26)

### Bug Fixes

* allow zero valuation rate (backport [#44902](https://github.com/frappe/erpnext/issues/44902)) (backport [#44910](https://github.com/frappe/erpnext/issues/44910)) ([#44913](https://github.com/frappe/erpnext/issues/44913)) ([763951a](763951af27))
2024-12-26 06:02:20 +00:00
mergify[bot]
763951af27 fix: allow zero valuation rate (backport #44902) (backport #44910) (#44913)
fix: allow zero valuation rate (backport #44902) (#44910)

fix: allow zero valuation rate (#44902)

(cherry picked from commit 614a8f106d)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
(cherry picked from commit 9060e4ce57)

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2024-12-26 11:30:55 +05:30
mergify[bot]
9060e4ce57 fix: allow zero valuation rate (backport #44902) (#44910)
fix: allow zero valuation rate (#44902)

(cherry picked from commit 614a8f106d)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-26 11:03:13 +05:30
Frappe PR Bot
139a56b8a4 chore(release): Bumped to Version 15.47.0
# [15.47.0](https://github.com/frappe/erpnext/compare/v15.46.2...v15.47.0) (2024-12-25)

### Bug Fixes

* 'str' object has no attribute 'get_sql' ([8b810f5](8b810f5fb8))
* add `Stock UOM` when adding new item in POS list ([#44780](https://github.com/frappe/erpnext/issues/44780)) ([96cc9e2](96cc9e29a1))
* Add hooks for repost allowed doctypes ([b5596d9](b5596d98e3))
* added docs.frappe.io in documentation_url ([#44776](https://github.com/frappe/erpnext/issues/44776)) ([0fd7792](0fd7792f49))
* asset field precision check ([516a325](516a325a31))
* avg. buying amount for product bundle item with serial and batch no in gross profit report ([2edb6f3](2edb6f3224))
* better indicator base amount for Tax Witholding in Journal Entry ([218e777](218e777423))
* buying rate for service item in gross profit report ([a55aaea](a55aaea5a1))
* closing stock balance permissions (backport [#44791](https://github.com/frappe/erpnext/issues/44791)) ([#44793](https://github.com/frappe/erpnext/issues/44793)) ([cdeec8d](cdeec8d24c))
* correct args for get_advance_payment_entries_for_regional ([875797e](875797e655))
* correct tds rate with lower deduction certificate ([5ca60f3](5ca60f3e0a))
* do not set cost_center update_voucher_balance as it is set in init_voucher_balance ([19a8ea2](19a8ea217e))
* do not validate qc for scrap item (backport [#44844](https://github.com/frappe/erpnext/issues/44844)) ([#44853](https://github.com/frappe/erpnext/issues/44853)) ([8092d58](8092d58d9c))
* Duplicate entry ' EF1DE8B2E1B6' for key 'PRIMARY' (backport [#44809](https://github.com/frappe/erpnext/issues/44809)) ([#44814](https://github.com/frappe/erpnext/issues/44814)) ([16b013f](16b013fab2))
* fetch tax withholding category from the voucher ([8f8dd1c](8f8dd1c088))
* incoming rate should be zero for rejected items (backport [#44857](https://github.com/frappe/erpnext/issues/44857)) ([#44859](https://github.com/frappe/erpnext/issues/44859)) ([0969877](0969877cd7))
* incorrect Material Transferred for Manufacturing qty (backport [#44823](https://github.com/frappe/erpnext/issues/44823)) ([#44832](https://github.com/frappe/erpnext/issues/44832)) ([497029f](497029f958))
* Ledger repost support for extending app doctypes ([d137f78](d137f780bd))
* Paid + Write Off Amount issue in Sales Invoice (backport [#44763](https://github.com/frappe/erpnext/issues/44763)) ([#44874](https://github.com/frappe/erpnext/issues/44874)) ([ca7c229](ca7c229e86))
* permissions for marking Quotation as lost ([e6390bf](e6390bfba1))
* POS Closing entry issue (backport [#44772](https://github.com/frappe/erpnext/issues/44772)) ([#44781](https://github.com/frappe/erpnext/issues/44781)) ([2032422](20324224d3))
* posting_time issue ([#44870](https://github.com/frappe/erpnext/issues/44870)) ([7a5c30f](7a5c30fe9b))
* Remove typo ([13a3c81](13a3c816d7))
* set project in GL from the SLE (backport [#44879](https://github.com/frappe/erpnext/issues/44879)) ([#44885](https://github.com/frappe/erpnext/issues/44885)) ([57e6ed4](57e6ed4645))
* show profit and loss after period closing ([771632a](771632a5e2))
* slow posting datetime update (backport [#44799](https://github.com/frappe/erpnext/issues/44799)) ([#44805](https://github.com/frappe/erpnext/issues/44805)) ([ad57e33](ad57e33cd7))
* stock entry not fetching expired batches (backport [#44863](https://github.com/frappe/erpnext/issues/44863)) ([#44868](https://github.com/frappe/erpnext/issues/44868)) ([d6001e5](d6001e5ef9))
* Stock Entry uses incorrect company when generated from Pick List ([#44679](https://github.com/frappe/erpnext/issues/44679)) ([58e8467](58e846709e))
* Swedish tax templates ([cc1834b](cc1834b0cc))
* test case correction ([ddfead2](ddfead2cde))
* typerror on TDS payable monthly report (backport [#37707](https://github.com/frappe/erpnext/issues/37707)) ([db9a319](db9a319104))
* update correct cost center in Accounts Receivable Report ([4c5540a](4c5540aef9))
* update query ([3ab4acf](3ab4acfafa))
* use utility method to generate url ([75aee42](75aee42635))
* **ux:** purchase invoice link in error message ([#44797](https://github.com/frappe/erpnext/issues/44797)) ([01c1ed9](01c1ed98ac))
* Warehouse wise Stock Value chart roles (backport [#44865](https://github.com/frappe/erpnext/issues/44865)) ([#44867](https://github.com/frappe/erpnext/issues/44867)) ([f32cf84](f32cf84413))

### Features

* add difference_posting_date field ([bec1f97](bec1f972b3))
* **subcontracting:** Added provision to create multiple Subcontracting Orders against a single Purchase Order (backport [#44711](https://github.com/frappe/erpnext/issues/44711)) ([#44782](https://github.com/frappe/erpnext/issues/44782)) ([8f81172](8f811728d9))
* swedish COA ([98cc79d](98cc79d942))
* use difference_posting_date for journal entry posting_date ([7498cdf](7498cdf644))

### Performance Improvements

* SABB (backport [#44764](https://github.com/frappe/erpnext/issues/44764)) ([#44789](https://github.com/frappe/erpnext/issues/44789)) ([b706a82](b706a8274f))
* slow query related to stock ledger entry (backport [#44861](https://github.com/frappe/erpnext/issues/44861)) ([#44862](https://github.com/frappe/erpnext/issues/44862)) ([3f3df7e](3f3df7ef2a))
2024-12-25 03:36:34 +00:00
ruthra kumar
b718ca4489 Merge pull request #44887 from frappe/version-15-hotfix
chore: release v15
2024-12-25 09:05:15 +05:30
vishakhdesai
61367ee1ed fix: failing tests fixed
(cherry picked from commit 2ce07865d3)
2024-12-24 12:23:58 +00:00
vishakhdesai
944dc966bc fix: refactor query in get_total_allocated_amount in bank_transaction
(cherry picked from commit 6b847cdb62)
2024-12-24 12:23:58 +00:00
ruthra kumar
9c6832a622 Merge pull request #44894 from frappe/mergify/bp/version-15-hotfix/pr-44878
fix: show profit and loss after period closing (backport #44878)
2024-12-24 17:52:53 +05:30
venkat102
771632a5e2 fix: show profit and loss after period closing
(cherry picked from commit dc5cd93bf0)
2024-12-24 11:33:39 +00:00
ruthra kumar
7a81c0f10f Merge pull request #44891 from frappe/mergify/bp/version-15-hotfix/pr-44889
refactor: use db_set instead of set_value to trigger notification (backport #44889)
2024-12-24 17:02:58 +05:30
venkat102
69ed2a9dfe refactor: use db_set instead of set_value to trigger notification
(cherry picked from commit f8b923edfe)
2024-12-24 11:12:44 +00:00
mergify[bot]
57e6ed4645 fix: set project in GL from the SLE (backport #44879) (#44885)
fix: set project in GL from the SLE (#44879)

(cherry picked from commit 021d077808)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-24 15:12:32 +05:30
ruthra kumar
b48f46ed5a Merge pull request #44882 from frappe/mergify/bp/version-15-hotfix/pr-44794
fix: correct tds rate with lower deduction certificate (backport #44794)
2024-12-24 14:37:35 +05:30
ruthra kumar
72b720477c Merge pull request #44872 from frappe/mergify/bp/version-15-hotfix/pr-44870
fix: posting_time issue (backport #44870)
2024-12-24 13:56:10 +05:30
ljain112
5ca60f3e0a fix: correct tds rate with lower deduction certificate
(cherry picked from commit cb9c12d495)
2024-12-24 08:16:03 +00:00
ruthra kumar
ddc58f0146 Merge pull request #44877 from Abdeali099/backport-uom-handle
fix: add `Stock UOM` when adding new item in POS list (#44780)
2024-12-24 11:18:47 +05:30
Abdeali Chharchhodawala
96cc9e29a1 fix: add Stock UOM when adding new item in POS list (#44780) 2024-12-24 11:08:54 +05:30
mergify[bot]
ca7c229e86 fix: Paid + Write Off Amount issue in Sales Invoice (backport #44763) (#44874)
fix: Paid + Write Off Amount issue in Sales Invoice

(cherry picked from commit 1fd7ba7c88)

Co-authored-by: vishakhdesai <vishakhdesai@gmail.com>
2024-12-24 10:48:15 +05:30
rohitwaghchaure
90aadcdcbc chore: fix conflicts 2024-12-24 10:16:53 +05:30
rohitwaghchaure
7a5c30fe9b fix: posting_time issue (#44870)
(cherry picked from commit 079b86044e)

# Conflicts:
#	erpnext/stock/deprecated_serial_batch.py
2024-12-24 03:37:25 +00:00
Khushi Rawat
f0671d45de Merge pull request #44871 from frappe/mergify/bp/version-15-hotfix/pr-44854
fix: asset fields precision check (backport #44854)
2024-12-24 00:21:26 +05:30
Khushi Rawat
ddfead2cde fix: test case correction
(cherry picked from commit 2f7e6230a6)
2024-12-23 18:31:28 +00:00
Khushi Rawat
516a325a31 fix: asset field precision check
(cherry picked from commit 92b8768ae2)
2024-12-23 18:31:28 +00:00
mergify[bot]
d6001e5ef9 fix: stock entry not fetching expired batches (backport #44863) (#44868)
fix: stock entry not fetching expired batches (#44863)

(cherry picked from commit c9b143b509)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-23 22:31:16 +05:30
mergify[bot]
f32cf84413 fix: Warehouse wise Stock Value chart roles (backport #44865) (#44867)
fix: Warehouse wise Stock Value chart roles (#44865)

(cherry picked from commit 7d41805d0e)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-23 22:30:58 +05:30
mergify[bot]
8092d58d9c fix: do not validate qc for scrap item (backport #44844) (#44853)
fix: do not validate qc for scrap item (#44844)

(cherry picked from commit a2c2b8b5ad)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-23 19:15:46 +05:30
mergify[bot]
3f3df7ef2a perf: slow query related to stock ledger entry (backport #44861) (#44862)
perf: slow query related to stock ledger entry (#44861)

(cherry picked from commit 54d7b742ab)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-23 19:15:32 +05:30
mergify[bot]
0969877cd7 fix: incoming rate should be zero for rejected items (backport #44857) (#44859)
fix: incoming rate should be zero for rejected items (#44857)

(cherry picked from commit a515a399cf)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-23 18:11:53 +05:30
ruthra kumar
9543a4c66f Merge pull request #44852 from frappe/mergify/bp/version-15-hotfix/pr-44716
fix: avg. buying amount for product bundle item with serial and batch no in gross profit report (backport #44716)
2024-12-23 15:35:43 +05:30
ruthra kumar
3eb56cbbfb Merge pull request #44841 from frappe/mergify/bp/version-15-hotfix/pr-44808
feat: Added difference_posting_date field in Sales Invoice Advance and Purchase Invoice Advance (backport #44808)
2024-12-23 15:18:16 +05:30
ruthra kumar
dc1ed406a1 Merge pull request #44849 from frappe/mergify/bp/version-15-hotfix/pr-44797
fix(ux): purchase invoice link in error message (backport #44797)
2024-12-23 15:17:47 +05:30
ljain112
2edb6f3224 fix: avg. buying amount for product bundle item with serial and batch no in gross profit report
(cherry picked from commit cc3f4bb0b0)
2024-12-23 09:34:15 +00:00
ruthra kumar
4e23e3191d Merge pull request #44847 from frappe/mergify/bp/version-15-hotfix/pr-44738
fix: fetch tax withholding category from the voucher (backport #44738)
2024-12-23 15:03:02 +05:30
ruthra kumar
55470fefdb Merge pull request #44843 from frappe/mergify/bp/version-15-hotfix/pr-44813
fix: update correct cost center in Accounts Receivable Report (backport #44813)
2024-12-23 14:55:45 +05:30
ruthra kumar
33fc987d95 refactor(test): remove hardcoded names 2024-12-23 14:52:02 +05:30
Nijith anil
01c1ed98ac fix(ux): purchase invoice link in error message (#44797)
* fix(ux): purchase invoice link in error message

* chore: fix linter

---------

Co-authored-by: ruthra kumar <ruthra@erpnext.com>
(cherry picked from commit 6f00a87a9c)
2024-12-23 09:20:17 +00:00
venkat102
8f8dd1c088 fix: fetch tax withholding category from the voucher
(cherry picked from commit 09e64594db)
2024-12-23 09:07:13 +00:00
venkat102
f005bef218 chore: use get function
(cherry picked from commit 1663c7983e)
2024-12-23 09:07:13 +00:00
vishakhdesai
19a8ea217e fix: do not set cost_center update_voucher_balance as it is set in init_voucher_balance
(cherry picked from commit 3b36ce560c)
2024-12-23 08:51:37 +00:00
vishakhdesai
4c5540aef9 fix: update correct cost center in Accounts Receivable Report
(cherry picked from commit 09776e9a5a)
2024-12-23 08:51:36 +00:00
ruthra kumar
cf4068d1a3 chore: resolve conflicts 2024-12-23 14:11:05 +05:30
rs-rethik
3ab4acfafa fix: update query
(cherry picked from commit 854e37c05c)
2024-12-23 08:39:55 +00:00
rs-rethik
13123a0412 refactor: convert sql query to query builder
(cherry picked from commit 2d58e845e6)
2024-12-23 08:39:54 +00:00
rs-rethik
4884849f23 test: add unit test to validate journal entry posting date
(cherry picked from commit c14a2d73bf)
2024-12-23 08:39:54 +00:00
rs-rethik
7498cdf644 feat: use difference_posting_date for journal entry posting_date
(cherry picked from commit ff1d040a6e)
2024-12-23 08:39:54 +00:00
rs-rethik
bec1f972b3 feat: add difference_posting_date field
(cherry picked from commit 225e56cbca)

# Conflicts:
#	erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.json
#	erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.json
2024-12-23 08:39:54 +00:00
mergify[bot]
497029f958 fix: incorrect Material Transferred for Manufacturing qty (backport #44823) (#44832)
* fix: incorrect Material Transferred for Manufacturing qty (#44823)

(cherry picked from commit fe0036e707)

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

* chore: fix conflicts

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-23 13:38:21 +05:30
ruthra kumar
b0a10c6b2a Merge pull request #44840 from frappe/mergify/bp/version-15-hotfix/pr-44786
fix: correct args for get_advance_payment_entries_for_regional (backport #44786)
2024-12-23 13:23:27 +05:30
ljain112
875797e655 fix: correct args for get_advance_payment_entries_for_regional
(cherry picked from commit df13a4cc2f)
2024-12-23 07:28:34 +00:00
ruthra kumar
1a9dfec115 Merge pull request #44838 from frappe/mergify/bp/version-15-hotfix/pr-44751
fix: buying rate for service item in gross profit report (backport #44751)
2024-12-23 12:06:23 +05:30
ruthra kumar
59841408ac Merge pull request #44836 from frappe/mergify/bp/version-15-hotfix/pr-44681
fix: Stock Entry uses incorrect company when generated from Pick List (backport #44679) (backport #44681)
2024-12-23 11:56:32 +05:30
Frappe PR Bot
1900cebf52 chore(release): Bumped to Version 15.46.2
## [15.46.2](https://github.com/frappe/erpnext/compare/v15.46.1...v15.46.2) (2024-12-23)

### Bug Fixes

* Add hooks for repost allowed doctypes ([640c13a](640c13a5f3))
* Ledger repost support for extending app doctypes ([a79d294](a79d2946a1))
2024-12-23 06:17:04 +00:00
ljain112
a55aaea5a1 fix: buying rate for service item in gross profit report
(cherry picked from commit 8d6e79a16f)
2024-12-23 06:16:24 +00:00
ruthra kumar
f7d860daf1 Merge pull request #44835 from frappe/mergify/bp/version-15/pr-44825
fix: Ledger repost support for extending app doctypes (backport #44825)
2024-12-23 11:45:49 +05:30
ruthra kumar
041d94f3cf Merge pull request #44834 from frappe/mergify/bp/version-15-hotfix/pr-44644
fix: permissions for marking Quotation as lost (backport #44644)
2024-12-23 11:31:47 +05:30
Nicolas Pereira
58e846709e fix: Stock Entry uses incorrect company when generated from Pick List (#44679)
(cherry picked from commit 00898be8e4)
(cherry picked from commit cd693b5fa4)
2024-12-23 05:59:10 +00:00
Deepesh Garg
640c13a5f3 fix: Add hooks for repost allowed doctypes
(cherry picked from commit 919abd2c03)
2024-12-23 05:57:55 +00:00
Deepesh Garg
a79d2946a1 fix: Ledger repost support for extending app doctypes
(cherry picked from commit ed231abb54)
2024-12-23 05:57:54 +00:00
ruthra kumar
7f5c19a81e Merge pull request #44830 from frappe/mergify/bp/version-15-hotfix/pr-44826
fix: Remove typo from `Bank Account` on trash (backport #44826)
2024-12-23 11:26:19 +05:30
ruthra kumar
3d4a4e661c chore: resolve conflicts 2024-12-23 11:14:33 +05:30
barredterra
e6390bfba1 fix: permissions for marking Quotation as lost
(cherry picked from commit 4d5241486f)

# Conflicts:
#	erpnext/crm/doctype/competitor/competitor.json
#	erpnext/setup/doctype/quotation_lost_reason/quotation_lost_reason.json
2024-12-23 05:41:57 +00:00
Abdeali Chharchhoda
13a3c816d7 fix: Remove typo
(cherry picked from commit ba28f6bf73)
2024-12-23 04:52:25 +00:00
ruthra kumar
4869847bc7 Merge pull request #44828 from frappe/mergify/bp/version-15-hotfix/pr-44825
fix: Ledger repost support for extending app doctypes (backport #44825)
2024-12-23 10:19:08 +05:30
Deepesh Garg
b5596d98e3 fix: Add hooks for repost allowed doctypes
(cherry picked from commit 919abd2c03)
2024-12-23 04:19:48 +00:00
Deepesh Garg
d137f780bd fix: Ledger repost support for extending app doctypes
(cherry picked from commit ed231abb54)
2024-12-23 04:19:48 +00:00
mergify[bot]
16b013fab2 fix: Duplicate entry ' EF1DE8B2E1B6' for key 'PRIMARY' (backport #44809) (#44814)
fix: Duplicate entry ' EF1DE8B2E1B6' for key 'PRIMARY' (#44809)

(cherry picked from commit 56f561cdaa)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-21 10:26:25 +05:30
mergify[bot]
ad57e33cd7 fix: slow posting datetime update (backport #44799) (#44805)
fix: slow posting datetime update (#44799)

(cherry picked from commit a7b5e2565b)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-20 19:38:52 +05:30
Smit Vora
58c0e24f2d Merge pull request #44735 from frappe/mergify/bp/version-15-hotfix/pr-44660
fix: better indicator base amount for Tax Witholding in Journal Entry (backport #44660)
2024-12-20 16:28:43 +05:30
ruthra kumar
162380d9da Merge pull request #44810 from frappe/mergify/bp/version-15-hotfix/pr-44703
fix: Swedish tax templates (backport #44703)
2024-12-20 14:32:41 +05:30
mahsem
cc1834b0cc fix: Swedish tax templates
(cherry picked from commit 73112fa3c9)
2024-12-20 08:42:38 +00:00
ruthra kumar
9449055b1e Merge pull request #44807 from frappe/mergify/bp/version-15-hotfix/pr-44665
fix: add Swedish_2024_COA (backport #44665)
2024-12-20 12:24:44 +05:30
mergify[bot]
8f811728d9 feat(subcontracting): Added provision to create multiple Subcontracting Orders against a single Purchase Order (backport #44711) (#44782)
* feat(subcontracting): Added provision to create multiple Subcontracting Orders against a single Purchase Order (#44711)

* feat(subcontracting): Added provision to create multiple Subcontracting Orders from a single Subcontracted Purchase Order

* refactor(new_sc_flow_2): Fixed error thrown by semgrep

(cherry picked from commit 3eba6bf3dd)

# Conflicts:
#	erpnext/buying/doctype/purchase_order/purchase_order.js
#	erpnext/buying/doctype/purchase_order/test_purchase_order.py
#	erpnext/buying/doctype/purchase_order_item/purchase_order_item.json
#	erpnext/subcontracting/doctype/subcontracting_order_item/subcontracting_order_item.json
#	erpnext/subcontracting/doctype/subcontracting_order_service_item/subcontracting_order_service_item.json

* feat(subcontracting): Added provision to create multiple Subcontracting Orders against a single Purchase Order (#44711)

* feat(subcontracting): Added provision to create multiple Subcontracting Orders from a single Subcontracted Purchase Order

* refactor(new_sc_flow_2): Fixed error thrown by semgrep

* fix: Resolved errors and removed code from develop branch merged by mistake

---------

Co-authored-by: Mihir Kandoi <kandoimihir@gmail.com>
2024-12-20 12:18:01 +05:30
mahsem
98cc79d942 feat: swedish COA
(cherry picked from commit 8a5f7ec4d7)
2024-12-20 06:27:14 +00:00
Smit Vora
db9a319104 fix: typerror on TDS payable monthly report (backport #37707) 2024-12-20 11:02:33 +05:30
mergify[bot]
cdeec8d24c fix: closing stock balance permissions (backport #44791) (#44793)
* fix: closing stock balance permissions (#44791)

(cherry picked from commit 3662a6a41d)

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

* chore: fix conflicts

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-20 09:35:51 +05:30
mergify[bot]
b706a8274f perf: SABB (backport #44764) (#44789)
perf: SABB (#44764)

(cherry picked from commit 90baa38f64)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-19 13:31:28 +05:30
mergify[bot]
20324224d3 fix: POS Closing entry issue (backport #44772) (#44781)
fix: POS Closing entry issue (#44772)

(cherry picked from commit 779dd2d798)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-18 20:38:56 +05:30
ruthra kumar
418ef81dbc Merge pull request #44778 from frappe/mergify/bp/version-15-hotfix/pr-44776
fix: added docs.frappe.io in documentation_url (backport #44776)
2024-12-18 17:53:31 +05:30
Nabin Hait
0fd7792f49 fix: added docs.frappe.io in documentation_url (#44776)
(cherry picked from commit febdf4c61e)
2024-12-18 11:59:50 +00:00
Frappe PR Bot
9aed428939 chore(release): Bumped to Version 15.46.1
## [15.46.1](https://github.com/frappe/erpnext/compare/v15.46.0...v15.46.1) (2024-12-18)

### Bug Fixes

* 'str' object has no attribute 'get_sql' ([8eb8cc5](8eb8cc5d3c))
2024-12-18 09:10:34 +00:00
ruthra kumar
cd497743f4 Merge pull request #44767 from frappe/mergify/bp/version-15/pr-44765
fix: 'str' object has no attribute 'get_sql' (backport #44765)
2024-12-18 14:39:16 +05:30
ruthra kumar
7350aa299e Merge pull request #44770 from frappe/mergify/bp/version-15-hotfix/pr-44765
fix: 'str' object has no attribute 'get_sql' (backport #44765)
2024-12-18 14:34:09 +05:30
ljain112
8b810f5fb8 fix: 'str' object has no attribute 'get_sql'
(cherry picked from commit 9a43acb65c)
2024-12-18 08:44:27 +00:00
ljain112
8eb8cc5d3c fix: 'str' object has no attribute 'get_sql'
(cherry picked from commit 9a43acb65c)
2024-12-18 08:43:16 +00:00
ruthra kumar
3ed7f761ba Merge pull request #44760 from frappe/mergify/bp/version-15-hotfix/pr-44758
fix: use utility method to generate url (backport #44758)
2024-12-18 11:17:09 +05:30
ruthra kumar
75aee42635 fix: use utility method to generate url
(cherry picked from commit b970eb8b15)
2024-12-18 05:33:31 +00:00
Frappe PR Bot
375b48699f chore(release): Bumped to Version 15.46.0
# [15.46.0](https://github.com/frappe/erpnext/compare/v15.45.5...v15.46.0) (2024-12-18)

### Bug Fixes

* add doc.status to translation from POS ([0ba6e60](0ba6e60608))
* allow all dispatch address for drop ship invoice ([db3a87c](db3a87c837))
* broken CI ([78d7d71](78d7d7148f))
* delink SABB from cancelled SLEs (backport [#44691](https://github.com/frappe/erpnext/issues/44691)) ([#44719](https://github.com/frappe/erpnext/issues/44719)) ([8940747](8940747161))
* duplicate Use Multi-Level BOM checkbox ([#44757](https://github.com/frappe/erpnext/issues/44757)) ([3ac801c](3ac801c884))
* handle zero salvage value case ([632a45d](632a45d82e))
* make rate of depreciation mandatory ([ed42ed0](ed42ed04d2))
* pos invoice return reference missing (backport [#44720](https://github.com/frappe/erpnext/issues/44720)) ([#44729](https://github.com/frappe/erpnext/issues/44729)) ([8aec131](8aec13115c))
* purchase return entry issue (backport [#44721](https://github.com/frappe/erpnext/issues/44721)) ([#44737](https://github.com/frappe/erpnext/issues/44737)) ([8ba7424](8ba7424996))
* remove invalid filter in Account Receivable report ([fdfbb57](fdfbb57779))
* set company bank account if default account not set in mode of payment ([a8f7393](a8f7393706))
* switched asset terminology from cost to value ([47c7356](47c7356b38))
* unsupported operand type (backport [#44722](https://github.com/frappe/erpnext/issues/44722)) ([#44723](https://github.com/frappe/erpnext/issues/44723)) ([158a480](158a4803ca))
* update cc_to multiselect in process statement of accounts ([df9bc33](df9bc33f34))
* update discount when pricing rule is changed ([f1a5000](f1a5000872))
* User permissions in financial statements ([83aeb2e](83aeb2e475))
* using query.walk() for escaping ([40a8ed8](40a8ed8571))
* Wrong allocated_amount for sales_team in gross_profit report ([#42989](https://github.com/frappe/erpnext/issues/42989)) ([328b9e7](328b9e7d9e))

### Features

* change type link to multiselect ([7665eac](7665eac277))
2024-12-18 05:32:46 +00:00
ruthra kumar
bc601f36c9 Merge pull request #44741 from frappe/version-15-hotfix
chore: release v15
2024-12-18 11:01:28 +05:30
rohitwaghchaure
3ac801c884 fix: duplicate Use Multi-Level BOM checkbox (#44757) 2024-12-18 10:41:24 +05:30
ruthra kumar
2c0468e784 Merge pull request #44753 from frappe/mergify/bp/version-15-hotfix/pr-44695
fix: User permissions in financial statements (backport #44695)
2024-12-17 21:19:11 +05:30
ruthra kumar
cb03fed5d8 Merge pull request #44755 from frappe/mergify/bp/version-15-hotfix/pr-44708
fix: update discount when pricing rule is changed (backport #44708)
2024-12-17 21:10:27 +05:30
venkat102
f1a5000872 fix: update discount when pricing rule is changed
(cherry picked from commit 8338d1d5b4)
2024-12-17 15:13:22 +00:00
ljain112
40a8ed8571 fix: using query.walk() for escaping
(cherry picked from commit 5ea131c763)
2024-12-17 15:09:25 +00:00
ljain112
83aeb2e475 fix: User permissions in financial statements
(cherry picked from commit a626372d66)
2024-12-17 15:09:25 +00:00
ruthra kumar
2b27892fc2 Merge pull request #44750 from ruthra-kumar/backport_v15_pr_44581
fix: allow all dispatch address for drop ship invoice (backport #44581)
2024-12-17 17:52:14 +05:30
ruthra kumar
db3a87c837 fix: allow all dispatch address for drop ship invoice 2024-12-17 17:43:31 +05:30
ruthra kumar
09b28e89a9 Merge pull request #44748 from frappe/mergify/bp/version-15-hotfix/pr-44685
fix: set company bank account if default account not set in mode of p… (backport #44685)
2024-12-17 17:29:37 +05:30
ruthra kumar
96691bfdce Merge pull request #44731 from frappe/mergify/bp/version-15-hotfix/pr-44650
feat: Multiselect cc in process statement of accounts (backport #44650)
2024-12-17 17:28:51 +05:30
venkat102
a8f7393706 fix: set company bank account if default account not set in mode of payment
(cherry picked from commit 91c7e3d5f3)
2024-12-17 11:50:10 +00:00
mergify[bot]
8ba7424996 fix: purchase return entry issue (backport #44721) (#44737)
fix: purchase return entry issue (#44721)

(cherry picked from commit 1f5d7072e7)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-17 14:48:18 +05:30
mergify[bot]
8aec13115c fix: pos invoice return reference missing (backport #44720) (#44729)
fix: pos invoice return reference missing (#44720)

(cherry picked from commit 852596dbe6)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-17 12:29:42 +05:30
Khushi Rawat
6176411bcf Merge pull request #44732 from khushi8112/bp-version-15-hotfix-pr-44690
fix: handle zero salvage value case backport-pr-44690
2024-12-17 12:27:53 +05:30
Smit Vora
218e777423 fix: better indicator base amount for Tax Witholding in Journal Entry
(cherry picked from commit 56a0a0db18)
2024-12-17 06:20:31 +00:00
Khushi Rawat
96dac012b6 Merge pull request #44710 from khushi8112/backport-pr-44647
fix: switched asset terminology from cost to value backport
2024-12-17 11:44:30 +05:30
Khushi Rawat
ed42ed04d2 fix: make rate of depreciation mandatory 2024-12-17 11:39:36 +05:30
ruthra kumar
f9a904c584 chore: resolve conflict 2024-12-17 11:38:45 +05:30
Khushi Rawat
632a45d82e fix: handle zero salvage value case 2024-12-17 11:37:05 +05:30
rs-rethik
5b4eb5ea9a chore: remove irrelevant import
(cherry picked from commit 5401cf9647)
2024-12-17 06:06:30 +00:00
rs-rethik
082fd27938 refactor: convert sql query to query builder
(cherry picked from commit 494ac04f8e)
2024-12-17 06:06:30 +00:00
rs-rethik
df9bc33f34 fix: update cc_to multiselect in process statement of accounts
(cherry picked from commit 2a6be127ef)

# Conflicts:
#	erpnext/patches.txt
2024-12-17 06:06:30 +00:00
rs-rethik
7665eac277 feat: change type link to multiselect
(cherry picked from commit 4de180feee)
2024-12-17 06:06:29 +00:00
Khushi Rawat
02c5f7e9d1 chore: Merge branch 'version-15-hotfix' 2024-12-17 11:20:39 +05:30
mergify[bot]
8940747161 fix: delink SABB from cancelled SLEs (backport #44691) (#44719)
fix: delink SABB from cancelled SLEs (#44691)

(cherry picked from commit 5f539619bc)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-17 11:04:54 +05:30
mergify[bot]
158a4803ca fix: unsupported operand type (backport #44722) (#44723)
fix: unsupported operand type (#44722)

(cherry picked from commit 95da0913f6)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-17 11:04:40 +05:30
ruthra kumar
06c3eaecc5 Merge pull request #44724 from frappe/mergify/bp/version-15-hotfix/pr-44713
fix: broken CI (backport #44713)
2024-12-17 10:02:45 +05:30
ruthra kumar
78d7d7148f fix: broken CI
- always install wkhtmltopdf
- remove specific version on mariadb-client

(cherry picked from commit eb1e36ca22)
2024-12-17 04:12:58 +00:00
Khushi Rawat
47c7356b38 fix: switched asset terminology from cost to value 2024-12-16 11:58:38 +05:30
ruthra kumar
440e0aa521 Merge pull request #44698 from ruthra-kumar/backport_v15_pr_44676
fix: remove invalid filter in Account Receivable report (backport #44676)
2024-12-13 17:45:19 +05:30
ljain112
fdfbb57779 fix: remove invalid filter in Account Receivable report 2024-12-13 17:27:14 +05:30
ruthra kumar
1c5178f202 Merge pull request #44686 from ruthra-kumar/backport_v15_pr_42989
fix: Wrong allocated_amount for sales_team in gross_profit report (backport 42989)
2024-12-13 12:39:38 +05:30
Diógenes Souza
328b9e7d9e fix: Wrong allocated_amount for sales_team in gross_profit report (#42989)
* fix: Wrong allocated_amount for sales_team in gross_profit report

* style: Removes whitespaces

---------

Co-authored-by: ruthra kumar <ruthra@erpnext.com>
2024-12-13 11:58:37 +05:30
ruthra kumar
eebb1a24bc Merge pull request #44684 from frappe/backport_v15_pr_44621
fix: add doc.status to translation from POS (backport #44621)
2024-12-13 10:33:49 +05:30
mahsem
0ba6e60608 fix: add doc.status to translation from POS 2024-12-13 10:31:47 +05:30
Frappe PR Bot
6e01a9b84d chore(release): Bumped to Version 15.45.5
## [15.45.5](https://github.com/frappe/erpnext/compare/v15.45.4...v15.45.5) (2024-12-12)

### Bug Fixes

* 'Use Multi-Level BOM' checkbox default value (backport [#44618](https://github.com/frappe/erpnext/issues/44618)) ([#44620](https://github.com/frappe/erpnext/issues/44620)) ([5cd3994](5cd39941ee))
* add docstatus for translation ([47e1ed1](47e1ed1eff))
* add label strings for translation in pos_controller.js ([ffdd7cf](ffdd7cfa86))
* add labels for translation in production_analytics.py ([7a6cb0f](7a6cb0f157))
* add labels for translation in purchase_order_analysis.py ([f06827c](f06827c6fb))
* add labels for translation in quality_inspection_summary.py ([dd3a747](dd3a747af4))
* add labels for translation in sales_order_analysis.py ([6980d1e](6980d1e142))
* add labels for translation in sales_order.js ([283043e](283043eba7))
* add string for translation in delayed_tasks_summary.py ([43fc8bf](43fc8bf74e))
* add strings for translation in pos_item_cart.js ([71d8dfb](71d8dfb401))
* add strings for translation in timesheet.js ([#44496](https://github.com/frappe/erpnext/issues/44496)) ([106671a](106671a414))
* add strings for translation payment_terms_status_for_sales_order.py ([773e03f](773e03f84f))
* add title for translation in  asset.js ([843ff18](843ff18cf9))
* **Bank Transaction:** error in party matching should not block submitting (backport [#44416](https://github.com/frappe/erpnext/issues/44416)) ([#44574](https://github.com/frappe/erpnext/issues/44574)) ([31c2b81](31c2b818bd))
* BOM for variant items (backport [#44580](https://github.com/frappe/erpnext/issues/44580)) ([#44584](https://github.com/frappe/erpnext/issues/44584)) ([0b26827](0b268279cf))
* BOM has not attr required items (backport [#44598](https://github.com/frappe/erpnext/issues/44598)) ([#44600](https://github.com/frappe/erpnext/issues/44600)) ([608eaaa](608eaaa482))
* BOM name issue (backport [#44575](https://github.com/frappe/erpnext/issues/44575)) ([#44579](https://github.com/frappe/erpnext/issues/44579)) ([03ae9e2](03ae9e27be))
* BOM name issue (backport [#44586](https://github.com/frappe/erpnext/issues/44586)) ([#44589](https://github.com/frappe/erpnext/issues/44589)) ([a5cc307](a5cc307417))
* consider zero valuation rate for serial nos (backport [#44532](https://github.com/frappe/erpnext/issues/44532)) ([#44534](https://github.com/frappe/erpnext/issues/44534)) ([3771c6e](3771c6eeae))
* correct color for draft in list view ([cce1cc6](cce1cc6674))
* currency symbol in SCO and SCR (backport [#44577](https://github.com/frappe/erpnext/issues/44577)) ([#44594](https://github.com/frappe/erpnext/issues/44594)) ([2a17ecd](2a17ecdc39))
* description overwrite on qty change (backport [#44606](https://github.com/frappe/erpnext/issues/44606)) ([#44609](https://github.com/frappe/erpnext/issues/44609)) ([243bf54](243bf542c4))
* do not allow to inward same serial nos multiple times (backport [#44617](https://github.com/frappe/erpnext/issues/44617)) ([#44619](https://github.com/frappe/erpnext/issues/44619)) ([bdb60a5](bdb60a51c3))
* duplicate required items in the CSV (backport [#44498](https://github.com/frappe/erpnext/issues/44498)) ([#44507](https://github.com/frappe/erpnext/issues/44507)) ([539c5b7](539c5b7974))
* incorrect stock UOM for BOM raw materials (backport [#44528](https://github.com/frappe/erpnext/issues/44528)) ([#44531](https://github.com/frappe/erpnext/issues/44531)) ([f4aa4c9](f4aa4c9466))
* inv dimensions fields not creating for standard doctype (backport [#44504](https://github.com/frappe/erpnext/issues/44504)) ([#44515](https://github.com/frappe/erpnext/issues/44515)) ([8733eda](8733eda576))
* make projected qty editable after submit (backport [#44670](https://github.com/frappe/erpnext/issues/44670)) ([#44671](https://github.com/frappe/erpnext/issues/44671)) ([bd9c84d](bd9c84d3b7))
* not able to make PO for returned qty from material request (backport [#44540](https://github.com/frappe/erpnext/issues/44540)) ([#44547](https://github.com/frappe/erpnext/issues/44547)) ([5ef063c](5ef063c634))
* not able to make sales return entry (backport [#44605](https://github.com/frappe/erpnext/issues/44605)) ([#44613](https://github.com/frappe/erpnext/issues/44613)) ([04b07a9](04b07a9e1c))
* precision check for salvage value ([ef5a564](ef5a5643dc))
* prevent set_payment_schedule on return documents ([2560beb](2560beb695))
* required by date in the reorder material request (backport [#44497](https://github.com/frappe/erpnext/issues/44497)) ([#44509](https://github.com/frappe/erpnext/issues/44509)) ([07df87a](07df87ab69))
* restrict advance payment entries with flag ([98bd5f2](98bd5f20c4))
* strings for translation in pos_past_order_summary.js ([ceec5fd](ceec5fdb6c))
* update free item qty while adding same item in seperate row ([f88dc26](f88dc263d5))
* update qty in SABB if qty changed in stock reco (backport [#44542](https://github.com/frappe/erpnext/issues/44542)) ([#44546](https://github.com/frappe/erpnext/issues/44546)) ([99a3271](99a327155e))
* validate returned serial nos and batches (backport [#44669](https://github.com/frappe/erpnext/issues/44669)) ([#44674](https://github.com/frappe/erpnext/issues/44674)) ([33273fa](33273faccb))
* valuation rate for batch in stock reconciliation  (backport [#44657](https://github.com/frappe/erpnext/issues/44657)) ([#44664](https://github.com/frappe/erpnext/issues/44664)) ([2466e4c](2466e4c2fd))
* variant qty while making work order from BOM (backport [#44548](https://github.com/frappe/erpnext/issues/44548)) ([#44551](https://github.com/frappe/erpnext/issues/44551)) ([63b1df3](63b1df38a8))
2024-12-12 10:45:52 +00:00
ruthra kumar
911ec37d13 Merge pull request #44640 from frappe/version-15-hotfix
chore: release v15
2024-12-12 16:14:23 +05:30
mergify[bot]
33273faccb fix: validate returned serial nos and batches (backport #44669) (#44674)
fix: validate returned serial nos and batches (#44669)

(cherry picked from commit 4385349e36)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-12 15:44:28 +05:30
mergify[bot]
bd9c84d3b7 fix: make projected qty editable after submit (backport #44670) (#44671)
* fix: make projected qty editable after submit (#44670)

(cherry picked from commit 9ef9ff3de8)

# Conflicts:
#	erpnext/selling/doctype/quotation_item/quotation_item.json

* chore: fix conflicts

---------

Co-authored-by: Venkatesh <47534423+venkat102@users.noreply.github.com>
Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-12 15:24:32 +05:30
mergify[bot]
2466e4c2fd fix: valuation rate for batch in stock reconciliation (backport #44657) (#44664)
fix: valuation rate for batch in stock reconciliation  (#44657)

fix: valuation rate for batch in stock reco
(cherry picked from commit 15c7d26378)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-11 21:33:36 +05:30
Kerolles Fathy
8e33d93273 fix: apply ruff formatter changes 2024-12-11 14:14:02 +02:00
KerollesFathy
6a84f0b027 chore: resync version-15-hotfix with feature branch 2024-12-11 13:48:01 +02:00
rohitwaghchaure
44f798c3e1 Merge branch 'version-15' into version-15-hotfix 2024-12-11 16:34:48 +05:30
ruthra kumar
20186fb8fa Merge pull request #44656 from aerele/free-item-row
fix: update free item qty while adding same item in seperate row
2024-12-11 16:26:16 +05:30
ruthra kumar
282f133500 Merge pull request #44655 from ruthra-kumar/manual_backport_pr_44533
refactor: consider against_voucher_no when voucher_no is filtered (backport 44533)
2024-12-11 16:03:37 +05:30
venkat102
f88dc263d5 fix: update free item qty while adding same item in seperate row 2024-12-11 15:55:22 +05:30
ruthra kumar
7e0ff851ab refactor: consider against voucher when not filtered on voucher_no 2024-12-11 15:40:56 +05:30
Khushi Rawat
f3cf28a4f4 Merge pull request #44642 from khushi8112/backport-v15-pr-44631
fix: precision check for salvage value (backport #44631)
2024-12-10 16:23:13 +05:30
Khushi Rawat
ef5a5643dc fix: precision check for salvage value 2024-12-10 15:17:04 +05:30
Deepesh Garg
925eb4449e Merge pull request #44637 from frappe/mergify/bp/version-15/pr-44554
chore: Ignore stock validation for non-stock invoices (#44549)
2024-12-10 14:47:29 +05:30
mergify[bot]
815c6b4234 chore: Ignore stock validation for non stock invoices (backport #44549) (#44554)
chore: Ignore stock validation for non stock invoices (#44549)

* chore: Ignore stock validation for non stock invoices

* chore: Ignore stock validation for non stock invoices

(cherry picked from commit 1ac292285e)

Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
(cherry picked from commit 06ac21dd85)
2024-12-10 09:16:37 +00:00
mergify[bot]
5cd39941ee fix: 'Use Multi-Level BOM' checkbox default value (backport #44618) (#44620)
fix: 'Use Multi-Level BOM' checkbox default value (#44618)

(cherry picked from commit f5c038cd1b)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-10 10:57:20 +05:30
ruthra kumar
eae5996c4c Merge pull request #44622 from ruthra-kumar/backport_v15_pr_44545
fix: only show advance payment entries where "book_advance_payments_in_separate_party_account" is true (backport #44545)
2024-12-10 07:28:53 +05:30
ljain112
98bd5f20c4 fix: restrict advance payment entries with flag
where "book_advance_payments_in_separate_party_account" is true
2024-12-09 20:57:24 +05:30
mergify[bot]
bdb60a51c3 fix: do not allow to inward same serial nos multiple times (backport #44617) (#44619)
* fix: do not allow to inward same serial nos multiple times (#44617)

(cherry picked from commit 616bb383c5)

# Conflicts:
#	erpnext/patches.txt

* chore: fix conflicts

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-09 20:30:45 +05:30
mergify[bot]
04b07a9e1c fix: not able to make sales return entry (backport #44605) (#44613)
fix: not able to make sales return entry (#44605)

(cherry picked from commit 314c7b8d2a)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-09 19:11:49 +05:30
mergify[bot]
243bf542c4 fix: description overwrite on qty change (backport #44606) (#44609)
fix: description overwrite on qty change (#44606)

(cherry picked from commit 9ad79625e0)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-09 14:56:10 +05:30
ruthra kumar
0bb7c889ae Merge pull request #44612 from frappe/mergify/bp/version-15-hotfix/pr-44513
fix: correct color for draft in list view (backport #44513)
2024-12-09 14:08:04 +05:30
ljain112
cce1cc6674 fix: correct color for draft in list view
(cherry picked from commit 143acf2330)
2024-12-09 08:04:53 +00:00
ruthra kumar
c6c5587cc6 Merge pull request #44610 from ruthra-kumar/backport_v15_44495
fix: prevent set_payment_schedule on return documents
2024-12-09 13:34:07 +05:30
ruthra kumar
2560beb695 fix: prevent set_payment_schedule on return documents 2024-12-09 12:58:20 +05:30
ruthra kumar
80f2fc8e64 Merge pull request #44603 from frappe/mergify/bp/version-15-hotfix/pr-44582
fix: add doc.status for translation (backport #44582)
2024-12-09 12:09:13 +05:30
mahsem
47e1ed1eff fix: add docstatus for translation
(cherry picked from commit dda272220b)
2024-12-09 05:52:16 +00:00
Frappe PR Bot
3c8abe41e7 chore(release): Bumped to Version 15.45.4
## [15.45.4](https://github.com/frappe/erpnext/compare/v15.45.3...v15.45.4) (2024-12-08)

### Bug Fixes

* BOM has not attr required items (backport [#44598](https://github.com/frappe/erpnext/issues/44598)) ([#44600](https://github.com/frappe/erpnext/issues/44600)) ([971e474](971e474640))
2024-12-08 11:01:12 +00:00
rohitwaghchaure
70e44a4df1 Merge pull request #44601 from frappe/mergify/bp/version-15/pr-44600
fix: BOM has not attr required items (backport #44598) (backport #44600)
2024-12-08 16:29:57 +05:30
mergify[bot]
971e474640 fix: BOM has not attr required items (backport #44598) (#44600)
fix: BOM has not attr required items (#44598)

(cherry picked from commit 42d238da14)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
(cherry picked from commit 608eaaa482)
2024-12-08 10:37:46 +00:00
mergify[bot]
2a17ecdc39 fix: currency symbol in SCO and SCR (backport #44577) (#44594)
* fix: currency symbol in SCO and SCR (#44577)

(cherry picked from commit 8806d17ef1)

# Conflicts:
#	erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.json
#	erpnext/subcontracting/doctype/subcontracting_order_item/subcontracting_order_item.json
#	erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json
#	erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json

* chore: fix conflicts

* chore: fix conflicts

* chore: fix conflicts

* chore: fix conflicts

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-08 16:07:06 +05:30
mergify[bot]
608eaaa482 fix: BOM has not attr required items (backport #44598) (#44600)
fix: BOM has not attr required items (#44598)

(cherry picked from commit 42d238da14)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-08 16:06:41 +05:30
Frappe PR Bot
6f80af0355 chore(release): Bumped to Version 15.45.3
## [15.45.3](https://github.com/frappe/erpnext/compare/v15.45.2...v15.45.3) (2024-12-08)

### Bug Fixes

* duplicate buttons ([11fc560](11fc560a88))
2024-12-08 09:23:09 +00:00
rohitwaghchaure
0c3bf2daf1 Merge pull request #44597 from rohitwaghchaure/fixed-duplicate-buttons
fix: duplicate buttons
2024-12-08 14:51:46 +05:30
Rohit Waghchaure
11fc560a88 fix: duplicate buttons 2024-12-08 14:44:19 +05:30
Frappe PR Bot
0cd495a128 chore(release): Bumped to Version 15.45.2
## [15.45.2](https://github.com/frappe/erpnext/compare/v15.45.1...v15.45.2) (2024-12-07)

### Bug Fixes

* BOM name issue (backport [#44586](https://github.com/frappe/erpnext/issues/44586)) ([#44589](https://github.com/frappe/erpnext/issues/44589)) ([408a092](408a09233b))
2024-12-07 08:18:12 +00:00
rohitwaghchaure
3a98660739 Merge pull request #44593 from frappe/mergify/bp/version-15/pr-44589
fix: BOM name issue (backport #44586) (backport #44589)
2024-12-07 13:46:44 +05:30
rohitwaghchaure
97c91c2217 Merge branch 'version-15' into mergify/bp/version-15/pr-44589 2024-12-07 13:12:59 +05:30
rohitwaghchaure
a204abcaa5 chore: fix conflicts 2024-12-07 13:10:40 +05:30
Frappe PR Bot
3b57767d36 chore(release): Bumped to Version 15.45.1
## [15.45.1](https://github.com/frappe/erpnext/compare/v15.45.0...v15.45.1) (2024-12-07)

### Bug Fixes

* BOM for variant items (backport [#44580](https://github.com/frappe/erpnext/issues/44580)) ([#44584](https://github.com/frappe/erpnext/issues/44584)) ([2a2d8da](2a2d8da628))
* BOM name issue (backport [#44575](https://github.com/frappe/erpnext/issues/44575)) ([#44579](https://github.com/frappe/erpnext/issues/44579)) ([27b63be](27b63beb18))
* variant qty while making work order from BOM (backport [#44548](https://github.com/frappe/erpnext/issues/44548)) ([#44551](https://github.com/frappe/erpnext/issues/44551)) ([3c50cfe](3c50cfef4e))
2024-12-07 07:35:56 +00:00
rohitwaghchaure
dc74912f5d Merge pull request #44592 from frappe/mergify/bp/version-15/pr-44584
fix: BOM for variant items (backport #44580) (backport #44584)
2024-12-07 13:04:33 +05:30
rohitwaghchaure
d860a5b35d Merge pull request #44591 from frappe/mergify/bp/version-15/pr-44579
fix: BOM name issue (backport #44575) (backport #44579)
2024-12-07 13:04:03 +05:30
rohitwaghchaure
b00cc83ae6 Merge pull request #44590 from frappe/mergify/bp/version-15/pr-44551
fix: variant qty while making work order from BOM (backport #44548) (backport #44551)
2024-12-07 13:03:47 +05:30
mergify[bot]
408a09233b fix: BOM name issue (backport #44586) (#44589)
fix: BOM name issue (#44586)

(cherry picked from commit d871e21a40)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
(cherry picked from commit a5cc307417)

# Conflicts:
#	erpnext/manufacturing/doctype/bom/bom.py
2024-12-07 07:29:44 +00:00
mergify[bot]
a5cc307417 fix: BOM name issue (backport #44586) (#44589)
fix: BOM name issue (#44586)

(cherry picked from commit d871e21a40)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-07 12:58:34 +05:30
mergify[bot]
2a2d8da628 fix: BOM for variant items (backport #44580) (#44584)
fix: BOM for variant items (#44580)

(cherry picked from commit 93e9517f5d)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
(cherry picked from commit 0b268279cf)
2024-12-07 06:57:37 +00:00
mergify[bot]
27b63beb18 fix: BOM name issue (backport #44575) (#44579)
fix: BOM name issue (#44575)

fix: bom name issue
(cherry picked from commit b7a3c6b6ca)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
(cherry picked from commit 03ae9e27be)
2024-12-07 06:56:36 +00:00
mergify[bot]
3c50cfef4e fix: variant qty while making work order from BOM (backport #44548) (#44551)
fix: variant qty while making work order from BOM (#44548)

(cherry picked from commit 1571dff3ef)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
(cherry picked from commit 63b1df38a8)
2024-12-07 06:56:31 +00:00
mergify[bot]
0b268279cf fix: BOM for variant items (backport #44580) (#44584)
fix: BOM for variant items (#44580)

(cherry picked from commit 93e9517f5d)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-06 22:35:37 +05:30
mergify[bot]
03ae9e27be fix: BOM name issue (backport #44575) (#44579)
fix: BOM name issue (#44575)

fix: bom name issue
(cherry picked from commit b7a3c6b6ca)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-06 21:50:49 +05:30
mergify[bot]
31c2b818bd fix(Bank Transaction): error in party matching should not block submitting (backport #44416) (#44574)
fix(Bank Transaction): error in party matching should not block submitting (#44416)

(cherry picked from commit 72256565bb)

Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2024-12-06 11:57:48 +01:00
ruthra kumar
f4cdf02e85 Merge pull request #44572 from frappe/mergify/bp/version-15-hotfix/pr-44538
fix: add labels for translation in purchase_order_analysis.py (backport #44538)
2024-12-06 12:21:17 +05:30
mahsem
f06827c6fb fix: add labels for translation in purchase_order_analysis.py
(cherry picked from commit 342a398bec)
2024-12-06 06:49:55 +00:00
ruthra kumar
672aa42d03 Merge pull request #44570 from frappe/mergify/bp/version-15-hotfix/pr-44539
fix: add labels for translation in production_analytics.py (backport #44539)
2024-12-06 12:17:11 +05:30
mahsem
7a6cb0f157 fix: add labels for translation in production_analytics.py
(cherry picked from commit 9b09116576)
2024-12-06 06:46:29 +00:00
ruthra kumar
7940feaa1c Merge pull request #44568 from frappe/mergify/bp/version-15-hotfix/pr-44541
fix: add labels for translation in quality_inspection_summary.py (backport #44541)
2024-12-06 12:16:21 +05:30
ruthra kumar
3bfb271ddc Merge pull request #44566 from frappe/mergify/bp/version-15-hotfix/pr-44558
fix: add string for translation in delayed_tasks_summary.py (backport #44558)
2024-12-06 12:15:57 +05:30
mahsem
dd3a747af4 fix: add labels for translation in quality_inspection_summary.py
(cherry picked from commit 6ff4704345)
2024-12-06 06:45:26 +00:00
mahsem
43fc8bf74e fix: add string for translation in delayed_tasks_summary.py
(cherry picked from commit 84b54f549a)
2024-12-06 06:44:55 +00:00
ruthra kumar
33d69222ca Merge pull request #44564 from frappe/mergify/bp/version-15-hotfix/pr-44559
fix: add strings for translation payment_terms_status_for_sales_order.py (backport #44559)
2024-12-06 12:13:12 +05:30
mahsem
773e03f84f fix: add strings for translation payment_terms_status_for_sales_order.py
(cherry picked from commit 7d244051c8)
2024-12-06 06:38:31 +00:00
ruthra kumar
e6d1f1af91 Merge pull request #44562 from frappe/mergify/bp/version-15-hotfix/pr-44560
fix: add labels for translation in sales_order_analysis.py (backport #44560)
2024-12-06 12:07:15 +05:30
mahsem
6980d1e142 fix: add labels for translation in sales_order_analysis.py
(cherry picked from commit 8a554a5538)
2024-12-06 06:09:36 +00:00
mergify[bot]
06ac21dd85 chore: Ignore stock validation for non stock invoices (backport #44549) (#44554)
chore: Ignore stock validation for non stock invoices (#44549)

* chore: Ignore stock validation for non stock invoices

* chore: Ignore stock validation for non stock invoices

(cherry picked from commit 1ac292285e)

Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
2024-12-05 22:57:09 +05:30
mergify[bot]
63b1df38a8 fix: variant qty while making work order from BOM (backport #44548) (#44551)
fix: variant qty while making work order from BOM (#44548)

(cherry picked from commit 1571dff3ef)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-05 16:01:04 +05:30
mergify[bot]
5ef063c634 fix: not able to make PO for returned qty from material request (backport #44540) (#44547)
fix: not able to make PO for returned qty from material request (#44540)

(cherry picked from commit 024c442087)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-05 15:52:04 +05:30
mergify[bot]
99a327155e fix: update qty in SABB if qty changed in stock reco (backport #44542) (#44546)
fix: update qty in SABB if qty changed in stock reco (#44542)

(cherry picked from commit 7249cf0001)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-05 15:51:44 +05:30
Khushi Rawat
59c7b80a2f Merge pull request #44544 from frappe/mergify/bp/version-15-hotfix/pr-44537
fix: add title for translation in  asset.js (backport #44537)
2024-12-05 15:42:22 +05:30
mahsem
843ff18cf9 fix: add title for translation in asset.js
(cherry picked from commit 61439132a4)
2024-12-05 09:47:58 +00:00
mergify[bot]
3771c6eeae fix: consider zero valuation rate for serial nos (backport #44532) (#44534)
fix: consider zero valuation rate for serial nos (#44532)

(cherry picked from commit 14f2b0ab0e)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-05 13:46:23 +05:30
mergify[bot]
f4aa4c9466 fix: incorrect stock UOM for BOM raw materials (backport #44528) (#44531)
fix: incorrect stock UOM for BOM raw materials (#44528)

fix: incorrect stock uom for BOM raw materials
(cherry picked from commit 5413cf9f1f)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-05 12:51:25 +05:30
ruthra kumar
4f05e45698 Merge pull request #44529 from frappe/mergify/bp/version-15-hotfix/pr-44503
fix: add strings for translation in pos_item_cart.js (backport #44503)
2024-12-05 10:25:23 +05:30
ruthra kumar
d540c99934 chore: linter fix
(cherry picked from commit 31efaf6dbf)
2024-12-05 04:49:18 +00:00
mahsem
71d8dfb401 fix: add strings for translation in pos_item_cart.js
(cherry picked from commit 4b72b60f1a)
2024-12-05 04:49:18 +00:00
ruthra kumar
71d53dd5ef Merge pull request #44526 from frappe/mergify/bp/version-15-hotfix/pr-44512
fix: add label strings for translation in pos_controller.js (backport #44512)
2024-12-05 10:19:15 +05:30
mahsem
ffdd7cfa86 fix: add label strings for translation in pos_controller.js
(cherry picked from commit bd77a5557d)
2024-12-05 04:43:16 +00:00
ruthra kumar
3d6d560777 Merge pull request #44524 from frappe/mergify/bp/version-15-hotfix/pr-44501
fix: strings for translation in pos_past_order_summary.js (backport #44501)
2024-12-05 10:12:55 +05:30
ruthra kumar
2139e6fba2 Merge pull request #44522 from frappe/mergify/bp/version-15-hotfix/pr-42081
Use better description in pos_payment.js (backport #42081)
2024-12-05 10:12:27 +05:30
ruthra kumar
6c0949e6dd Merge pull request #44520 from frappe/mergify/bp/version-15-hotfix/pr-44500
fix: add labels for translation in sales_order.js (backport #44500)
2024-12-05 10:11:59 +05:30
mahsem
ceec5fdb6c fix: strings for translation in pos_past_order_summary.js
(cherry picked from commit 23c846d4b9)
2024-12-05 04:32:03 +00:00
mahsem
af97d3e341 refactor: translatable label on pos payments (#42081)
* Use better description in pos_payment.js

Use Change Amount instead of Change and To Be Paid in pos_payment.js and be consistent with other strings

* change_amount_pos_payment.js

(cherry picked from commit 138ffc4e93)
2024-12-05 04:31:01 +00:00
mahsem
283043eba7 fix: add labels for translation in sales_order.js
(cherry picked from commit d544328ffe)
2024-12-05 04:29:43 +00:00
mergify[bot]
8733eda576 fix: inv dimensions fields not creating for standard doctype (backport #44504) (#44515)
fix: inv dimensions fields not creating for standard doctype (#44504)

(cherry picked from commit 353610ce61)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-05 09:45:17 +05:30
mergify[bot]
07df87ab69 fix: required by date in the reorder material request (backport #44497) (#44509)
fix: required by date in the reorder material request (#44497)

(cherry picked from commit 4001166ecc)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-04 19:02:45 +05:30
mergify[bot]
539c5b7974 fix: duplicate required items in the CSV (backport #44498) (#44507)
* fix: duplicate required items in the CSV (#44498)

(cherry picked from commit b4534e56e4)

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

* chore: fix conflicts

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-12-04 19:02:26 +05:30
ruthra kumar
94a0725917 Merge pull request #44499 from frappe/mergify/bp/version-15-hotfix/pr-44496
fix: add strings for translation in timesheet.js (backport #44496)
2024-12-04 16:21:10 +05:30
mahsem
106671a414 fix: add strings for translation in timesheet.js (#44496)
(cherry picked from commit 6585fabdb1)
2024-12-04 07:36:49 +00:00
Frappe PR Bot
1d158d58f6 chore(release): Bumped to Version 15.45.0
# [15.45.0](https://github.com/frappe/erpnext/compare/v15.44.0...v15.45.0) (2024-12-04)

### Bug Fixes

* Add filter for `outstanding_amount` to fetch open PRs ([5999a8e](5999a8e24f))
* Add translation for showing mandatory fields in error msg ([0e1f5ff](0e1f5ff391))
* added fieldname to avoid fieldname to translate ([17c2734](17c2734042))
* Added translation for `Account` column ([eb4a485](eb4a485df6))
* adjusted incoming rate for zero rated item in purchase receipt ([435280d](435280d626))
* always set sales incoming rate for internal transfers ([05795af](05795af471))
* calculate submitted payment entry as paid amount ([ebdacc0](ebdacc094c))
* correct buying amount for product bundel ([f165e17](f165e1732b))
* Dashboard for `Payment Request` ([0d67c62](0d67c62f43))
* Data Should be Computed in Backend to Maintain Consistent Behaviour ([#44195](https://github.com/frappe/erpnext/issues/44195)) ([8ab9fc7](8ab9fc7f55))
* do not validate stock during inward (backport [#44417](https://github.com/frappe/erpnext/issues/44417)) ([#44427](https://github.com/frappe/erpnext/issues/44427)) ([e607795](e607795bae))
* handle multi currency in common party journal entry ([c8e2c9a](c8e2c9aa25))
* incorrect Gross Margin on project (backport [#44461](https://github.com/frappe/erpnext/issues/44461)) ([#44468](https://github.com/frappe/erpnext/issues/44468)) ([0a9c92f](0a9c92fce9))
* IndexError in Asset Depreciation Ledger when query result is empty ([c3bc724](c3bc724523))
* link cash flow rows and fix summary linking ([633be8d](633be8d06b))
* move validate_total_debit_and_credit from validate to on_submit in Journal Entry ([63de576](63de576be6))
* number format in the message (backport [#44435](https://github.com/frappe/erpnext/issues/44435)) ([#44438](https://github.com/frappe/erpnext/issues/44438)) ([579d8e2](579d8e293e))
* precision calculation causing 0.1 discrepancy (backport [#44431](https://github.com/frappe/erpnext/issues/44431)) ([#44436](https://github.com/frappe/erpnext/issues/44436)) ([0d41c23](0d41c23383))
* remove queries ([ea57f2b](ea57f2b292))
* SABB print for packed items (backport [#44413](https://github.com/frappe/erpnext/issues/44413)) ([#44428](https://github.com/frappe/erpnext/issues/44428)) ([0e39aa3](0e39aa349e))
* set correct unallocated amount in Payment Entry ([#43958](https://github.com/frappe/erpnext/issues/43958)) ([ae93f7f](ae93f7f967))
* show "Send SMS" only when enabled (backport [#43941](https://github.com/frappe/erpnext/issues/43941)) ([#43970](https://github.com/frappe/erpnext/issues/43970)) ([0fbc60a](0fbc60a20e))
* source warehouse not set in required items of WO (backport [#44426](https://github.com/frappe/erpnext/issues/44426)) ([#44434](https://github.com/frappe/erpnext/issues/44434)) ([c81b5e3](c81b5e3d9c))
* Translate `Party Account` column label ([fdda864](fdda86455a))
* typeerror on transaction.js ([173d60f](173d60fb7d))

### Features

* add Company Contact Person in selling transactions (backport [#44362](https://github.com/frappe/erpnext/issues/44362)) ([#44398](https://github.com/frappe/erpnext/issues/44398)) ([70b5b08](70b5b08d58))
* **Dunning:** separate tab "Address & Contact" ([#44363](https://github.com/frappe/erpnext/issues/44363)) ([e0cb5f9](e0cb5f9ba8))

### Performance Improvements

* cache product bundle items at document level ([#44440](https://github.com/frappe/erpnext/issues/44440)) ([1f97979](1f97979059))
* reduce queries during transaction save ([48059a7](48059a7c74))

### Reverts

* remove default `Payment Request` indicator color ([9c4b581](9c4b5814a6))
2024-12-04 04:38:06 +00:00
ruthra kumar
cd57f5cd0a Merge pull request #44483 from frappe/version-15-hotfix
chore: release v15
2024-12-04 10:06:46 +05:30
ruthra kumar
3e2bc139ab Merge pull request #44491 from frappe/mergify/bp/version-15-hotfix/pr-44339
fix: move `validate_total_debit_and_credit` from`validate` to`on_submit` in Journal Entry (backport #44339)
2024-12-03 19:52:30 +05:30
ruthra kumar
16d0d42afe refactor: validate debit and credit on before_submit
(cherry picked from commit c3ace82db8)
2024-12-03 13:47:27 +00:00
vishakhdesai
63de576be6 fix: move validate_total_debit_and_credit from validate to on_submit in Journal Entry
(cherry picked from commit 8b5d4c0236)
2024-12-03 13:47:27 +00:00
ruthra kumar
d5a544ca69 Merge pull request #44485 from frappe/mergify/bp/version-15-hotfix/pr-44467
fix: Multiple Fixes in Gross Profit Report (backport #44467)
2024-12-03 19:15:15 +05:30
ruthra kumar
4a713f6b5e chore: fix typo
(cherry picked from commit fc0122ce76)
2024-12-03 12:01:07 +00:00
ljain112
f165e1732b fix: correct buying amount for product bundel
(cherry picked from commit 4e6a5893e7)
2024-12-03 12:01:07 +00:00
ljain112
ea57f2b292 fix: remove queries
(cherry picked from commit a86b223aed)
2024-12-03 12:01:07 +00:00
ruthra kumar
c880476cbe Merge pull request #44481 from frappe/mergify/bp/version-15-hotfix/pr-44450
fix: calculate submitted payment entry amount for grand total (backport #44450)
2024-12-03 15:15:40 +05:30
mergify[bot]
0a9c92fce9 fix: incorrect Gross Margin on project (backport #44461) (#44468)
* fix: incorrect Gross Margin on project (#44461)

(cherry picked from commit 7de9c14a2c)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py

* chore: resolve conflict

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
Co-authored-by: ruthra kumar <ruthra@erpnext.com>
2024-12-03 15:09:09 +05:30
Sugesh393
aa090beae0 test: add new unit test to validate paid amount in payment request
(cherry picked from commit 9bee2d430c)
2024-12-03 09:22:23 +00:00
Sugesh393
ebdacc094c fix: calculate submitted payment entry as paid amount
(cherry picked from commit 561a159aec)
2024-12-03 09:22:23 +00:00
ruthra kumar
0c28726ce2 Merge pull request #44480 from frappe/mergify/bp/version-15-hotfix/pr-44415
fix: adjusted incoming rate for zero rated item in purchase receipt (backport #44415)
2024-12-03 14:48:51 +05:30
ruthra kumar
be0604f7cf Merge pull request #44478 from frappe/mergify/bp/version-15-hotfix/pr-44373
fix: Always Calculate `sales_incoming_rate` for Internal Transfers (backport #44373)
2024-12-03 14:48:14 +05:30
ljain112
435280d626 fix: adjusted incoming rate for zero rated item in purchase receipt
(cherry picked from commit 3182c6981c)
2024-12-03 08:56:10 +00:00
Ninad1306
558d49b3d3 test: validate buying workflow
(cherry picked from commit 94d3fc9fde)
2024-12-03 08:48:52 +00:00
Ninad1306
05795af471 fix: always set sales incoming rate for internal transfers
(cherry picked from commit d049c97884)
2024-12-03 08:48:51 +00:00
ruthra kumar
38aa3769bb Merge pull request #44477 from frappe/mergify/bp/version-15-hotfix/pr-44470
refactor(UI): Rearranging fields under new sections (backport #44470)
2024-12-03 11:13:37 +05:30
ruthra kumar
5c6d9c9812 refactor(UI): Rearranging fields under new sections
(cherry picked from commit 7244754d28)
2024-12-03 05:00:17 +00:00
ruthra kumar
85fda71835 Merge pull request #44368 from frappe/mergify/bp/version-15-hotfix/pr-44363
feat(Dunning): separate tab "Address & Contact" (backport #44363)
2024-12-03 10:21:22 +05:30
ruthra kumar
7150aff520 Merge pull request #44466 from frappe/mergify/bp/version-15-hotfix/pr-43958
fix: set correct unallocated amount in Payment Entry (backport #43958)
2024-12-02 16:15:53 +05:30
ruthra kumar
c157978912 chore: resolve conflicts 2024-12-02 15:24:32 +05:30
Sagar Vora
ae93f7f967 fix: set correct unallocated amount in Payment Entry (#43958)
* fix: set correct unallocated amount in Payment Entry

* fix: add checkbox and other logic fix

* fix: patch to set is_exchange_gain_loss in Payment Entry deductions

* fix: consider deductions except exch. gain/loss

* fix: set exchange gain loss in payment entry

* fix: separate function to set exchange gain loss

* fix: failing test cases

* fix: add cash disc. row first

* fix: review changes

* fix: changes as per review

* fix: failing test cases

* fix: review

* fix: wait for request to complete before updating exchange gain loss

* fix: review

---------

Co-authored-by: vishakhdesai <vishakhdesai@gmail.com>
Co-authored-by: ruthra kumar <ruthra@erpnext.com>
(cherry picked from commit 7cc111f790)

# Conflicts:
#	erpnext/accounts/doctype/payment_entry_deduction/payment_entry_deduction.json
#	erpnext/patches.txt
2024-12-02 09:25:55 +00:00
ruthra kumar
f5ddc9a543 Merge pull request #44465 from frappe/mergify/bp/version-15-hotfix/pr-44412
fix: handle multi currency in common party journal entry (backport #44412)
2024-12-02 14:35:44 +05:30
ruthra kumar
4c5570ae7d chore: resolve conflict 2024-12-02 13:46:39 +05:30
ruthra kumar
d0356f81ba Merge pull request #44463 from frappe/mergify/bp/version-15-hotfix/pr-44437
fix: Added translation for `Account` column (backport #44437)
2024-12-02 13:39:50 +05:30
ljain112
c8e2c9aa25 fix: handle multi currency in common party journal entry
(cherry picked from commit e371f68d66)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
2024-12-02 07:10:11 +00:00
Abdeali Chharchhoda
fdda86455a fix: Translate Party Account column label
(cherry picked from commit a4f8315602)
2024-12-02 06:53:42 +00:00
Abdeali Chharchhoda
eb4a485df6 fix: Added translation for Account column
(cherry picked from commit de6cbd382f)
2024-12-02 06:53:41 +00:00
mergify[bot]
579d8e293e fix: number format in the message (backport #44435) (#44438)
fix: number format in the message (#44435)

(cherry picked from commit 810c72a30c)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-11-30 13:42:54 +05:30
Sagar Vora
a807776f83 Merge pull request #44447 from frappe/mergify/bp/version-15-hotfix/pr-44443
perf: reduce queries during transaction save (backport #44443)
2024-11-30 00:48:36 +05:30
Sagar Vora
48059a7c74 perf: reduce queries during transaction save
(cherry picked from commit b6b8a06fda)
2024-11-29 19:17:31 +00:00
Sagar Vora
0199bc127a Merge pull request #44445 from frappe/mergify/bp/version-15-hotfix/pr-44439
fix: added fieldname to avoid fieldname to translate (backport #44439)
2024-11-30 00:30:01 +05:30
Abdeali Chharchhoda
17c2734042 fix: added fieldname to avoid fieldname to translate
(cherry picked from commit b80022133c)
2024-11-29 18:56:45 +00:00
Sagar Vora
a1643ad292 Merge pull request #44442 from frappe/mergify/bp/version-15-hotfix/pr-44440
perf: cache product bundle items at document level (backport #44440)
2024-11-29 23:04:14 +05:30
Sagar Vora
1f97979059 perf: cache product bundle items at document level (#44440)
(cherry picked from commit 6de7320ef4)
2024-11-29 17:23:36 +00:00
mergify[bot]
c81b5e3d9c fix: source warehouse not set in required items of WO (backport #44426) (#44434)
fix: source warehouse not set in required items of WO (#44426)

fix: source warehouse not set in required items of WO on data import
(cherry picked from commit 4050ea07eb)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-11-29 18:13:05 +05:30
mergify[bot]
0d41c23383 fix: precision calculation causing 0.1 discrepancy (backport #44431) (#44436)
fix: precision calculation causing 0.1 discrepancy (#44431)

(cherry picked from commit 7f7564b581)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-11-29 18:12:24 +05:30
mergify[bot]
0e39aa349e fix: SABB print for packed items (backport #44413) (#44428)
fix: SABB print for packed items (#44413)

(cherry picked from commit 5266f236b7)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-11-29 17:00:59 +05:30
mergify[bot]
e607795bae fix: do not validate stock during inward (backport #44417) (#44427)
fix: do not validate stock during inward (#44417)

(cherry picked from commit d37d7b9811)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-11-29 15:49:18 +05:30
ruthra kumar
821f39203c Merge pull request #44391 from frappe/mergify/bp/version-15-hotfix/pr-44386
fix: Add translation for showing mandatory fields in error msg (backport #44386)
2024-11-29 15:38:35 +05:30
ruthra kumar
35e365c263 Merge pull request #44425 from frappe/mergify/bp/version-15-hotfix/pr-44302
fix: Minor Updates in `Payment Request` and `Payment Entry`  (backport #44302)
2024-11-29 15:38:01 +05:30
ruthra kumar
1c50111371 chore: resolve conflict 2024-11-29 14:50:41 +05:30
Abdeali Chharchhoda
5999a8e24f fix: Add filter for outstanding_amount to fetch open PRs
(cherry picked from commit 214dfab269)
2024-11-29 09:11:11 +00:00
Abdeali Chharchhoda
4b046160f8 refactor: Move PR link filters to client side
(cherry picked from commit 2db2c8bce1)
2024-11-29 09:11:11 +00:00
Abdeali Chharchhoda
9c4b5814a6 revert: remove default Payment Request indicator color
(cherry picked from commit 37ceb09955)

# Conflicts:
#	erpnext/accounts/doctype/payment_request/payment_request_list.js
2024-11-29 09:11:11 +00:00
Abdeali Chharchhoda
0d67c62f43 fix: Dashboard for Payment Request
(cherry picked from commit 91955e27c3)
2024-11-29 09:11:10 +00:00
Abdeali Chharchhoda
5f785ede16 refactor: Used object to get payment request status indicator
(cherry picked from commit e1c4d6e1e6)

# Conflicts:
#	erpnext/accounts/doctype/payment_request/payment_request_list.js
2024-11-29 09:11:10 +00:00
ruthra kumar
5b2fce2df7 Merge pull request #44419 from frappe/mergify/bp/version-15-hotfix/pr-42524
fix: link cash flow rows and fix summary linking (backport #42524)
2024-11-29 12:22:51 +05:30
ruthra kumar
ae81bb3c1b chore: revert 'stub' 2024-11-29 10:52:38 +05:30
ruthra kumar
48d6fcaab8 chore: resolve conflict 2024-11-29 10:43:36 +05:30
David
633be8d06b fix: link cash flow rows and fix summary linking
(cherry picked from commit b94af28587)

# Conflicts:
#	erpnext/public/js/financial_statements.js
2024-11-29 05:00:48 +00:00
Khushi Rawat
651d7e4cfc Merge pull request #44402 from frappe/mergify/bp/version-15-hotfix/pr-44400
fix: IndexError in Asset Depreciation Ledger when query result is empty (backport #44400)
2024-11-28 18:59:11 +05:30
Smit Vora
0084f45629 Merge pull request #44410 from frappe/mergify/bp/version-15-hotfix/pr-44195
fix: Data Should be Computed in Backend to Maintain Consistent Behaviour (backport #44195)
2024-11-28 16:27:05 +05:30
Ninad Parikh
8ab9fc7f55 fix: Data Should be Computed in Backend to Maintain Consistent Behaviour (#44195)
(cherry picked from commit 69bd90b038)
2024-11-28 10:31:27 +00:00
ruthra kumar
11c54d27f2 Merge pull request #44407 from frappe/mergify/bp/version-15-hotfix/pr-44405
fix: typeerror on transaction.js (backport #44405)
2024-11-28 15:02:04 +05:30
ruthra kumar
173d60fb7d fix: typeerror on transaction.js
(cherry picked from commit 46ce8780f2)
2024-11-28 09:20:38 +00:00
Khushi Rawat
5bbef90f08 chore: removed print statement
(cherry picked from commit 1737de7c10)
2024-11-28 07:27:42 +00:00
Khushi Rawat
c3bc724523 fix: IndexError in Asset Depreciation Ledger when query result is empty
(cherry picked from commit 7c393e5aa0)
2024-11-28 07:27:42 +00:00
mergify[bot]
0fbc60a20e fix: show "Send SMS" only when enabled (backport #43941) (#43970)
fix: show "Send SMS" only when enabled (#43941)

(cherry picked from commit 65088cbb1b)

Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2024-11-27 23:52:16 +01:00
mergify[bot]
70b5b08d58 feat: add Company Contact Person in selling transactions (backport #44362) (#44398)
* feat: add Company Contact Person in selling transactions (#44362)

(cherry picked from commit f6776c7d6b)

* chore: resolve merge conflicts

---------

Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2024-11-27 18:55:43 +01:00
Frappe PR Bot
294ded2030 chore(release): Bumped to Version 15.44.0
# [15.44.0](https://github.com/frappe/erpnext/compare/v15.43.3...v15.44.0) (2024-11-27)

### Bug Fixes

*  correct placeholder index in message ([a523c14](a523c14fd5))
* add company dynamic filters in number cards ([db21def](db21def58b))
* added Stock UOM field for RM in work order (backport [#44185](https://github.com/frappe/erpnext/issues/44185)) ([#44237](https://github.com/frappe/erpnext/issues/44237)) ([d4f0512](d4f0512a10))
* added validation for quality inspection (backport [#44351](https://github.com/frappe/erpnext/issues/44351)) ([#44357](https://github.com/frappe/erpnext/issues/44357)) ([89bd4eb](89bd4eba46))
* billed qty and received amount in PO analysis report (backport [#44349](https://github.com/frappe/erpnext/issues/44349)) ([#44354](https://github.com/frappe/erpnext/issues/44354)) ([ea0f24a](ea0f24aa57))
* check difference with company currency ([d6ef438](d6ef43858c))
* filter item with search fields ([d073b00](d073b005a8))
* filter with item group only if it is mentioned in pos profile ([a439862](a4398626f6))
* Get submitted documents in validate_for_closed_fiscal_year ([af74a3c](af74a3c32f))
* gp for return invoice ([f4518ca](f4518cac9a))
* include current invoice amount when tax_on_excess_amount is checked ([0ffeb9f](0ffeb9f6ad))
* Increase quantity by `1 UOM` when adding an item from the selector in POS ([0d38028](0d3802873b))
* initially closing amt should be equal to expected amt ([3f57777](3f577779be))
* make free qty round on large transaction qty ([4856a96](4856a9633e))
* no permission to read Doctype (backport [#44256](https://github.com/frappe/erpnext/issues/44256)) ([#44258](https://github.com/frappe/erpnext/issues/44258)) ([8b15a96](8b15a965dd))
* not able to fetch batch item price ([97f2341](97f2341b98))
* patch ([#44191](https://github.com/frappe/erpnext/issues/44191)) ([8b02402](8b02402f62))
* reduce paid amount from grand total ([d0d97c2](d0d97c26a0))
* remove field precision in SO and PO for percentage fields ([860350a](860350a5b3))
* remove irrelavent filters ([7423d7d](7423d7d337))
* set debit transaction currency in gl entry ([a2612d5](a2612d5f36))
* set outstanding amount while creating payment request for invoices ([8d8027d](8d8027d423))
* set price_list_currency only if it exists ([8cd455b](8cd455b050))
* Show available stock qty in `stock_uom` instead of `uom` ([49dad1a](49dad1a456))
* show cc on the email ([67809c7](67809c781a))
* test case ([66af7f4](66af7f4a14))
* toggle debit credit amounts for transaction currency too; minor refactor ([7f8334f](7f8334f29a))
* unify company address query in sales transactions (backport [#44361](https://github.com/frappe/erpnext/issues/44361)) ([#44365](https://github.com/frappe/erpnext/issues/44365)) ([7e61aca](7e61aca512))
* update gross profit for returned invoices ([ca56709](ca56709295))
* use field precision instead of hardcoded precision in so and po ([cde1906](cde19066fe))

### Features

* available qty at company in sales transactions (backport [#44260](https://github.com/frappe/erpnext/issues/44260)) ([#44325](https://github.com/frappe/erpnext/issues/44325)) ([20d0e95](20d0e95d7c))
* provision to disable item attribute (backport [#44358](https://github.com/frappe/erpnext/issues/44358)) ([#44370](https://github.com/frappe/erpnext/issues/44370)) ([ef882de](ef882de509))
* Show Aggregate Value from Subsidiary Companies ([0469b0d](0469b0d1ec))

### Reverts

* use `+ flt(value)` instead of direct increment ([b65e16a](b65e16a91b))
2024-11-27 16:01:32 +00:00
ruthra kumar
9f3ae08e3b Merge pull request #44341 from frappe/version-15-hotfix
chore: release v15
2024-11-27 21:30:10 +05:30
ruthra kumar
1f683afa43 Merge pull request #44396 from frappe/mergify/bp/version-15-hotfix/pr-44346
fix: reduce paid amount from grand total (backport #44346)
2024-11-27 21:12:51 +05:30
ruthra kumar
0ab0b4f716 chore: resolve conflict 2024-11-27 20:52:14 +05:30
ruthra kumar
4be6a78691 Merge pull request #44394 from frappe/mergify/bp/version-15-hotfix/pr-44392
chore: Fix typo "Purchase Reecipt" (backport #44392)
2024-11-27 20:24:46 +05:30
Sugesh393
d0d97c26a0 fix: reduce paid amount from grand total
(cherry picked from commit 82907672d9)
2024-11-27 14:41:46 +00:00
Sugesh393
81b9832917 test: add unit test to validate outstanding amount in payment request
(cherry picked from commit bbe3bc95d0)

# Conflicts:
#	erpnext/accounts/doctype/payment_request/test_payment_request.py
2024-11-27 14:41:46 +00:00
Sugesh393
8d8027d423 fix: set outstanding amount while creating payment request for invoices
(cherry picked from commit 38e7d0a41e)
2024-11-27 14:41:44 +00:00
ruthra kumar
9a374ddbd4 Merge pull request #44395 from frappe/mergify/bp/version-15-hotfix/pr-44316
fix: Initially Closing Amount Should be Equal to Expected Amount (backport #44316)
2024-11-27 20:08:33 +05:30
Ninad1306
3f577779be fix: initially closing amt should be equal to expected amt
(cherry picked from commit af9524920b)
2024-11-27 14:28:47 +00:00
vimalraj27
fd1cbf4b6f chore: Fix typo "Purchase Reecipt"
(cherry picked from commit 21049bae91)
2024-11-27 14:28:00 +00:00
ruthra kumar
5e7cfeb514 Merge pull request #44388 from frappe/mergify/bp/version-15-hotfix/pr-44378
fix: filter item with search fields (backport #44378)
2024-11-27 17:53:51 +05:30
ruthra kumar
223d30ecd8 Merge pull request #44389 from frappe/mergify/bp/version-15-hotfix/pr-44327
fix: set debit transaction currency in gl entry (backport #44327)
2024-11-27 17:53:37 +05:30
Abdeali Chharchhoda
0e1f5ff391 fix: Add translation for showing mandatory fields in error msg
(cherry picked from commit f42ec6a124)
2024-11-27 12:01:10 +00:00
venkat102
a2612d5f36 fix: set debit transaction currency in gl entry
(cherry picked from commit 6e19c06e58)
2024-11-27 11:59:09 +00:00
ruthra kumar
632412bd72 Merge pull request #44383 from frappe/mergify/bp/version-15-hotfix/pr-44376
fix: remove field precision in Sales and Purchase Order for percentage fields (backport #44376)
2024-11-27 17:27:06 +05:30
ruthra kumar
09c28760e4 Merge pull request #44385 from frappe/mergify/bp/version-15-hotfix/pr-44323
fix: update gross profit for returned invoices (backport #44323)
2024-11-27 17:21:26 +05:30
ruthra kumar
7c85e4056f Merge pull request #44387 from frappe/mergify/bp/version-15-hotfix/pr-44359
fix: check difference with company currency (backport #44359)
2024-11-27 17:21:00 +05:30
venkat102
d073b005a8 fix: filter item with search fields
(cherry picked from commit ebfbee3da5)
2024-11-27 11:50:51 +00:00
ruthra kumar
45e41827c7 chore: resolve conflict 2024-11-27 17:20:36 +05:30
venkat102
d6ef43858c fix: check difference with company currency
(cherry picked from commit e2bae4cf07)
2024-11-27 11:26:58 +00:00
ljain112
66af7f4a14 fix: test case
(cherry picked from commit af5a3e5a48)
2024-11-27 11:20:34 +00:00
ljain112
f4518cac9a fix: gp for return invoice
(cherry picked from commit 00403515a8)
2024-11-27 11:20:34 +00:00
ljain112
ca56709295 fix: update gross profit for returned invoices
(cherry picked from commit 8a42601e99)
2024-11-27 11:20:34 +00:00
vishakhdesai
860350a5b3 fix: remove field precision in SO and PO for percentage fields
(cherry picked from commit eff9cd10cd)

# Conflicts:
#	erpnext/selling/doctype/sales_order/sales_order_list.js
2024-11-27 11:19:13 +00:00
ruthra kumar
6a34abefba Merge pull request #44379 from frappe/mergify/bp/version-15-hotfix/pr-44377
fix:  correct placeholder index in message (backport #44377)
2024-11-27 15:38:48 +05:30
ljain112
a523c14fd5 fix: correct placeholder index in message
(cherry picked from commit d61cb9a4bf)
2024-11-27 09:26:09 +00:00
ruthra kumar
6f798ab288 Merge pull request #44372 from frappe/mergify/bp/version-15-hotfix/pr-44343
fix: show cc on the process statement of accounts email (backport #44343)
2024-11-27 10:47:15 +05:30
mergify[bot]
ef882de509 feat: provision to disable item attribute (backport #44358) (#44370)
* feat: provision to disable item attribute (#44358)

(cherry picked from commit 123e3ef263)

# Conflicts:
#	erpnext/stock/doctype/item_attribute/item_attribute.json
#	erpnext/stock/doctype/item_variant_attribute/item_variant_attribute.json

* chore: fix conflicts

* chore: fix conflicts

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-11-27 10:31:30 +05:30
venkat102
67809c781a fix: show cc on the email
(cherry picked from commit 2dd5699f6d)
2024-11-27 04:53:16 +00:00
Raffael Meyer
c20def5d59 chore: resolve conflicts 2024-11-26 21:12:39 +01:00
Raffael Meyer
e0cb5f9ba8 feat(Dunning): separate tab "Address & Contact" (#44363)
(cherry picked from commit e094473c65)

# Conflicts:
#	erpnext/accounts/doctype/dunning/dunning.json
2024-11-26 20:11:37 +00:00
mergify[bot]
7e61aca512 fix: unify company address query in sales transactions (backport #44361) (#44365)
fix: unify company address query in sales transactions (#44361)

* fix: unify company address query in sales transactions

* refactor: get the correct field label

(cherry picked from commit 3f92a57d63)

Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2024-11-26 20:16:24 +01:00
mergify[bot]
89bd4eba46 fix: added validation for quality inspection (backport #44351) (#44357)
fix: added validation for quality inspection (#44351)

(cherry picked from commit 0fd50b5048)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-11-26 21:18:26 +05:30
mergify[bot]
ea0f24aa57 fix: billed qty and received amount in PO analysis report (backport #44349) (#44354)
fix: billed qty and received amount in PO analysis report (#44349)

(cherry picked from commit 2ab7ec5437)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-11-26 19:43:51 +05:30
ruthra kumar
069c763010 Merge pull request #44338 from frappe/mergify/bp/version-15-hotfix/pr-44319
fix: use field precision in Sales and Purchase Order (backport #44319)
2024-11-26 14:02:33 +05:30
ruthra kumar
bc93de682b chore: resolve conflict 2024-11-26 13:48:00 +05:30
ruthra kumar
8aa4779191 Merge pull request #44335 from frappe/mergify/bp/version-15-hotfix/pr-44304
chore: Add translations to QI validations in Update stock_controller.py (backport #44304)
2024-11-26 12:09:56 +05:30
vishakhdesai
cde19066fe fix: use field precision instead of hardcoded precision in so and po
(cherry picked from commit 1a1e2c7e01)

# Conflicts:
#	erpnext/buying/doctype/purchase_order/purchase_order.js
2024-11-26 06:18:33 +00:00
Ernesto Ruiz
465a26f714 chore: Add translations to QI validations in Update stock_controller.py
chore: Add translations to QI validations in Update stock_controller.py
(cherry picked from commit 6754f15487)
2024-11-26 06:07:15 +00:00
ruthra kumar
ca8e7e9891 Merge pull request #44332 from frappe/mergify/bp/version-15-hotfix/pr-44257
fix: add company dynamic filters in number cards (backport #44257)
2024-11-26 11:19:43 +05:30
Sugesh393
7423d7d337 fix: remove irrelavent filters
(cherry picked from commit 29762c4826)
2024-11-26 05:24:57 +00:00
Sugesh393
db21def58b fix: add company dynamic filters in number cards
(cherry picked from commit 4e7725de66)
2024-11-26 05:24:57 +00:00
ruthra kumar
6a4058052b Merge pull request #44331 from frappe/mergify/bp/version-15-hotfix/pr-44320
fix: Increase quantity by `1 UOM` when adding an item from the selector in `POS` (backport #44320)
2024-11-26 10:40:45 +05:30
Abdeali Chharchhoda
b65e16a91b revert: use + flt(value) instead of direct increment
(cherry picked from commit 112b4c705b)
2024-11-26 05:00:41 +00:00
Abdeali Chharchhoda
49dad1a456 fix: Show available stock qty in stock_uom instead of uom
(cherry picked from commit 84dcbe6639)
2024-11-26 05:00:40 +00:00
Abdeali Chharchhoda
0d3802873b fix: Increase quantity by 1 UOM when adding an item from the selector in POS
(cherry picked from commit bbab850135)
2024-11-26 05:00:40 +00:00
mergify[bot]
20d0e95d7c feat: available qty at company in sales transactions (backport #44260) (#44325)
* feat: available qty at company in sales transactions

(cherry picked from commit d8b9aef14f)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json
#	erpnext/selling/doctype/quotation_item/quotation_item.json
#	erpnext/selling/doctype/sales_order_item/sales_order_item.json
#	erpnext/stock/doctype/delivery_note_item/delivery_note_item.json

* chore: fix conflicts

* chore: fix conflicts

* chore: fix conflicts

* chore: fix conflicts

---------

Co-authored-by: Rohit Waghchaure <rohitw1991@gmail.com>
2024-11-25 20:29:13 +05:30
ruthra kumar
d77a880a62 Merge pull request #44318 from frappe/mergify/bp/version-15-hotfix/pr-44274
fix: set price_list_currency only if it exists (backport #44274)
2024-11-25 12:57:02 +05:30
ruthra kumar
7ccb2ead09 Merge pull request #44317 from frappe/mergify/bp/version-15-hotfix/pr-44163
feat: Show Aggregate Value from Subsidiary Companies (backport #44163)
2024-11-25 12:56:37 +05:30
Sugesh393
8cd455b050 fix: set price_list_currency only if it exists
(cherry picked from commit f0b9cb4019)
2024-11-25 07:10:04 +00:00
ruthra kumar
072c5b7753 chore: resolve conflict 2024-11-25 12:28:02 +05:30
l0gesh29
0469b0d1ec feat: Show Aggregate Value from Subsidiary Companies
(cherry picked from commit c23af6af41)

# Conflicts:
#	erpnext/selling/report/sales_analytics/sales_analytics.js
2024-11-25 06:40:00 +00:00
rohitwaghchaure
74af7d01a2 Merge pull request #44312 from rohitwaghchaure/fixed-support-25969
fix: not able to fetch batch item price
2024-11-25 11:22:43 +05:30
ruthra kumar
c545de7bc6 Merge pull request #44315 from frappe/mergify/bp/version-15-hotfix/pr-44297
refactor: added translate function for some columns of report (backport #44297)
2024-11-25 10:28:02 +05:30
Abdeali Chharchhoda
8928e062b1 refactor: added translate function for some columns of report
(cherry picked from commit e545c913b5)
2024-11-25 04:39:36 +00:00
Rohit Waghchaure
97f2341b98 fix: not able to fetch batch item price 2024-11-24 22:23:11 +05:30
Smit Vora
aa2ae5e408 Merge pull request #44279 from frappe/mergify/bp/version-15-hotfix/pr-44263
fix: toggle debit credit amounts for transaction currency too; minor refactor (backport #44263)
2024-11-22 18:38:26 +05:30
ruthra kumar
6d10ccfc15 Merge pull request #44287 from frappe/mergify/bp/version-15-hotfix/pr-44246
fix: Get submitted documents in validate_for_closed_fiscal_year (backport #44246)
2024-11-22 16:15:48 +05:30
ruthra kumar
dc99e74ae3 Merge pull request #44285 from frappe/mergify/bp/version-15-hotfix/pr-44266
fix: make free qty round on large transaction qty (backport #44266)
2024-11-22 16:15:35 +05:30
ruthra kumar
fd9aa288c4 Merge pull request #44283 from frappe/mergify/bp/version-15-hotfix/pr-44277
fix: filter with item group only if it is mentioned in pos profile (backport #44277)
2024-11-22 16:15:08 +05:30
vimalraj27
af74a3c32f fix: Get submitted documents in validate_for_closed_fiscal_year
(cherry picked from commit c607e5f940)
2024-11-22 10:23:11 +00:00
venkat102
db1bc8a3db test: add unit test to validate free qty round on large transaction qty
(cherry picked from commit 013a6fc6ec)
2024-11-22 10:20:57 +00:00
venkat102
4856a9633e fix: make free qty round on large transaction qty
(cherry picked from commit f9b8165385)
2024-11-22 10:20:56 +00:00
venkat102
a4398626f6 fix: filter with item group only if it is mentioned in pos profile
(cherry picked from commit 09641073e3)
2024-11-22 10:15:50 +00:00
Frappe PR Bot
17e00b397f chore(release): Bumped to Version 15.43.3
## [15.43.3](https://github.com/frappe/erpnext/compare/v15.43.2...v15.43.3) (2024-11-22)

### Bug Fixes

* patch ([#44191](https://github.com/frappe/erpnext/issues/44191)) ([5f752e2](5f752e29f9))
2024-11-22 09:19:30 +00:00
rohitwaghchaure
1261513ab2 Merge pull request #44280 from frappe/mergify/bp/version-15/pr-44275
fix: patch (backport #44191) (backport #44275)
2024-11-22 14:48:13 +05:30
rohitwaghchaure
5f752e29f9 fix: patch (#44191)
(cherry picked from commit 495528a758)
(cherry picked from commit 8b02402f62)
2024-11-22 06:48:01 +00:00
rohitwaghchaure
c0e6f3f4df Merge pull request #44275 from frappe/mergify/bp/version-15-hotfix/pr-44191
fix: patch (backport #44191)
2024-11-22 12:17:11 +05:30
Smit Vora
11deff98d9 test: test case for toggling debit and credit if negative
(cherry picked from commit a10e175bc9)
2024-11-22 06:39:56 +00:00
Smit Vora
7f8334f29a fix: toggle debit credit amounts for transaction currency too; minor refactor
(cherry picked from commit 8e759c32c4)
2024-11-22 06:39:56 +00:00
rohitwaghchaure
8b02402f62 fix: patch (#44191)
(cherry picked from commit 495528a758)
2024-11-22 06:23:24 +00:00
ruthra kumar
723d10241b Merge pull request #44272 from frappe/mergify/bp/version-15-hotfix/pr-44194
fix: include current invoice amount when tax_on_excess_amount is checked (backport #44194)
2024-11-22 11:25:35 +05:30
venkat102
08b896fc2c test: add unit test for tax on excess amount
(cherry picked from commit 4820273595)
2024-11-22 05:37:50 +00:00
venkat102
0ffeb9f6ad fix: include current invoice amount when tax_on_excess_amount is checked
(cherry picked from commit b74f2896cd)
2024-11-22 05:37:50 +00:00
mergify[bot]
d4f0512a10 fix: added Stock UOM field for RM in work order (backport #44185) (#44237)
* fix: added Stock UOM field for RM in work order (#44185)

fix: added UOM field for RM in work order
(cherry picked from commit cc571aca8f)

# Conflicts:
#	erpnext/manufacturing/doctype/work_order_item/work_order_item.json
#	erpnext/patches.txt

* chore: fix conflicts

* chore: fix conflicts

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-11-21 14:52:37 +05:30
mergify[bot]
8b15a965dd fix: no permission to read Doctype (backport #44256) (#44258)
fix: no permission to read Doctype (#44256)

(cherry picked from commit 57293aa18a)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2024-11-21 14:51:33 +05:30
KerollesFathy
5db66bd6dd test: get scrap items from sub assemblies consider the parent BOM 2024-08-28 12:59:18 +03:00
KerollesFathy
b62df307d3 style: format code 2024-08-26 18:09:09 +03:00
Carlos9K
da7b69109a fix: getting scrap items from sub assemblies by fetching scrap items for parent BOM 2024-08-26 18:00:45 +03:00
440 changed files with 128037 additions and 6559 deletions

View File

@@ -10,6 +10,7 @@ WEBSITE_REPOS = [
DOCUMENTATION_DOMAINS = [
"docs.erpnext.com",
"docs.frappe.io",
"frappeframework.com",
]

View File

@@ -6,7 +6,7 @@ cd ~ || exit
sudo apt update
sudo apt remove mysql-server mysql-client
sudo apt install libcups2-dev redis-server mariadb-client-10.6
sudo apt install libcups2-dev redis-server mariadb-client
pip install frappe-bench
@@ -44,13 +44,9 @@ fi
install_whktml() {
if [ "$(lsb_release -rs)" = "22.04" ]; then
wget -O /tmp/wkhtmltox.deb https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
sudo apt install /tmp/wkhtmltox.deb
else
echo "Please update this script to support wkhtmltopdf for $(lsb_release -ds)"
exit 1
fi
wget -O /tmp/wkhtmltox.deb https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_amd64.deb
sudo apt install /tmp/wkhtmltox.deb
}
install_whktml &
wkpid=$!

View File

@@ -57,7 +57,7 @@ jobs:
run: echo "127.0.0.1 test_site" | sudo tee -a /etc/hosts
- name: Cache pip
uses: actions/cache@v2
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/*requirements.txt', '**/pyproject.toml') }}
@@ -66,7 +66,7 @@ jobs:
${{ runner.os }}-
- name: Cache node modules
uses: actions/cache@v2
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
@@ -81,7 +81,7 @@ jobs:
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- uses: actions/cache@v2
- uses: actions/cache@v4
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}

View File

@@ -76,7 +76,7 @@ jobs:
run: echo "127.0.0.1 test_site" | sudo tee -a /etc/hosts
- name: Cache pip
uses: actions/cache@v2
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/*requirements.txt', '**/pyproject.toml') }}
@@ -85,7 +85,7 @@ jobs:
${{ runner.os }}-
- name: Cache node modules
uses: actions/cache@v2
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
@@ -100,7 +100,7 @@ jobs:
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- uses: actions/cache@v2
- uses: actions/cache@v4
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}

View File

@@ -66,7 +66,7 @@ jobs:
run: echo "127.0.0.1 test_site" | sudo tee -a /etc/hosts
- name: Cache pip
uses: actions/cache@v2
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/*requirements.txt', '**/pyproject.toml') }}
@@ -75,7 +75,7 @@ jobs:
${{ runner.os }}-
- name: Cache node modules
uses: actions/cache@v2
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
@@ -90,7 +90,7 @@ jobs:
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- uses: actions/cache@v2
- uses: actions/cache@v4
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}

View File

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

View File

@@ -128,7 +128,7 @@
"description": "Rate at which this tax is applied",
"fieldname": "tax_rate",
"fieldtype": "Float",
"label": "Rate",
"label": "Tax Rate",
"oldfieldname": "tax_rate",
"oldfieldtype": "Currency"
},

View File

@@ -237,19 +237,22 @@ frappe.treeview_settings["Account"] = {
},
post_render: function (treeview) {
frappe.treeview_settings["Account"].treeview["tree"] = treeview.tree;
treeview.page.set_primary_action(
__("New"),
function () {
let root_company = treeview.page.fields_dict.root_company.get_value();
if (root_company) {
frappe.throw(__("Please add the account to root level Company - {0}"), [root_company]);
} else {
treeview.new_node();
}
},
"add"
);
if (treeview.can_create) {
treeview.page.set_primary_action(
__("New"),
function () {
let root_company = treeview.page.fields_dict.root_company.get_value();
if (root_company) {
frappe.throw(__("Please add the account to root level Company - {0}"), [
root_company,
]);
} else {
treeview.new_node();
}
},
"add"
);
}
},
toolbar: [
{

View File

@@ -0,0 +1,532 @@
{
"country_code": "ch",
"name": "240812 Schulkontenrahmen VEB - DE",
"tree": {
"Aktiven": {
"account_number": "1",
"is_group": 1,
"root_type": "Asset",
"Umlaufvermögen": {
"account_number": "10",
"is_group": 1,
"Flüssige Mittel": {
"account_number": "100",
"is_group": 1,
"Kasse": {
"account_number": "1000",
"account_type": "Cash"
},
"Bankguthaben": {
"account_number": "1020",
"account_type": "Bank"
}
},
"Kurzfristig gehaltene Aktiven mit Börsenkurs": {
"account_number": "106",
"is_group": 1,
"Wertschriften": {
"account_number": "1060"
},
"Wertberichtigungen Wertschriften": {
"account_number": "1069"
}
},
"Forderungen aus Lieferungen und Leistungen": {
"account_number": "110",
"is_group": 1,
"Forderungen aus Lieferungen und Leistungen (Debitoren)": {
"account_number": "1100"
},
"Delkredere": {
"account_number": "1109"
}
},
"Übrige kurzfristige Forderungen": {
"account_number": "114",
"is_group": 1,
"Vorschüsse und Darlehen": {
"account_number": "1140"
},
"Wertberichtigungen Vorschüsse und Darlehen": {
"account_number": "1149"
},
"Vorsteuer MWST Material, Waren, Dienstleistungen, Energie": {
"account_number": "1170"
},
"Vorsteuer MWST Investitionen, übriger Betriebsaufwand": {
"account_number": "1171"
},
"Verrechnungssteuer": {
"account_number": "1176"
},
"Forderungen gegenüber Sozialversicherungen und Vorsorgeeinrichtungen": {
"account_number": "1180"
},
"Quellensteuer": {
"account_number": "1189"
},
"Sonstige kurzfristige Forderungen": {
"account_number": "1190"
},
"Wertberichtigungen sonstige kurzfristige Forderungen": {
"account_number": "1199"
}
},
"Vorräte und nicht fakturierte Dienstleistungen": {
"account_number": "120",
"is_group": 1,
"Handelswaren": {
"account_number": "1200"
},
"Rohstoffe": {
"account_number": "1210"
},
"Werkstoffe": {
"account_number": "1220"
},
"Hilfs- und Verbrauchsmaterial": {
"account_number": "1230"
},
"Handelswaren in Konsignation": {
"account_number": "1250"
},
"Fertige Erzeugnisse": {
"account_number": "1260"
},
"Unfertige Erzeugnisse": {
"account_number": "1270"
},
"Nicht fakturierte Dienstleistungen": {
"account_number": "1280"
}
},
"Aktive Rechnungsabgrenzungen": {
"account_number": "130",
"is_group": 1,
"Bezahlter Aufwand des Folgejahres": {
"account_number": "1300"
},
"Noch nicht erhaltener Ertrag": {
"account_number": "1301"
}
}
},
"Anlagevermögen": {
"account_number": "14",
"is_group": 1,
"Finanzanlagen": {
"account_number": "140",
"is_group": 1,
"Wertschriften": {
"account_number": "1400"
},
"Wertberichtigungen Wertschriften": {
"account_number": "1409"
},
"Darlehen": {
"account_number": "1440"
},
"Hypotheken": {
"account_number": "1441"
},
"Wertberichtigungen langfristige Forderungen": {
"account_number": "1449"
}
},
"Beteiligungen": {
"account_number": "148",
"is_group": 1,
"Beteiligungen": {
"account_number": "1480"
},
"Wertberichtigungen Beteiligungen": {
"account_number": "1489"
}
},
"Mobile Sachanlagen": {
"account_number": "150",
"is_group": 1,
"Maschinen und Apparate": {
"account_number": "1500"
},
"Wertberichtigungen Maschinen und Apparate": {
"account_number": "1509"
},
"Mobiliar und Einrichtungen": {
"account_number": "1510"
},
"Wertberichtigungen Mobiliar und Einrichtungen": {
"account_number": "1519"
},
"Büromaschinen, Informatik, Kommunikationstechnologie": {
"account_number": "1520"
},
"Wertberichtigungen Büromaschinen, Informatik, Kommunikationstechnologie": {
"account_number": "1529"
},
"Fahrzeuge": {
"account_number": "1530"
},
"Wertberichtigungen Fahrzeuge": {
"account_number": "1539"
},
"Werkzeuge und Geräte": {
"account_number": "1540"
},
"Wertberichtigungen Werkzeuge und Geräte": {
"account_number": "1549"
}
},
"Immobile Sachanlagen": {
"account_number": "160",
"is_group": 1,
"Geschäftsliegenschaften": {
"account_number": "1600"
},
"Wertberichtigungen Geschäftsliegenschaften": {
"account_number": "1609"
}
},
"Immaterielle Werte": {
"account_number": "170",
"is_group": 1,
"Patente, Know-how, Lizenzen, Rechte, Entwicklungen": {
"account_number": "1700"
},
"Wertberichtigungen Patente, Know-how, Lizenzen, Rechte, Entwicklungen": {
"account_number": "1709"
},
"Goodwill": {
"account_number": "1770"
},
"Wertberichtigungen Goodwill": {
"account_number": "1779"
}
},
"Nicht einbezahltes Grund-, Gesellschafter- oder Stiftungskapital": {
"account_number": "180",
"is_group": 1,
"Nicht einbezahltes Aktien-, Stamm-, Anteilschein- oder Stiftungskapital": {
"account_number": "1850"
}
}
}
},
"Passiven": {
"account_number": "2",
"is_group": 1,
"root_type": "Liability",
"Kurzfristiges Fremdkapital": {
"account_number": "20",
"is_group": 1,
"Verbindlichkeiten aus Lieferungen und Leistungen": {
"account_number": "200",
"is_group": 1,
"Verbindlichkeiten aus Lieferungen und Leistungen (Kreditoren)": {
"account_number": "2000"
},
"Erhaltene Anzahlungen": {
"account_number": "2030"
}
},
"Kurzfristige verzinsliche Verbindlichkeiten": {
"account_number": "210",
"is_group": 1,
"Bankverbindlichkeiten": {
"account_number": "2100"
},
"Verbindlichkeiten aus Finanzierungsleasing": {
"account_number": "2120"
},
"Übrige verzinsliche Verbindlichkeiten": {
"account_number": "2140"
}
},
"Übrige kurzfristige Verbindlichkeiten": {
"account_number": "220",
"is_group": 1,
"Geschuldete MWST (Umsatzsteuer)": {
"account_number": "2200"
},
"Abrechnungskonto MWST": {
"account_number": "2201"
},
"Verrechnungssteuer": {
"account_number": "2206"
},
"Direkte Steuern": {
"account_number": "2208"
},
"Sonstige kurzfristige Verbindlichkeiten": {
"account_number": "2210"
},
"Beschlossene Ausschüttungen": {
"account_number": "2261"
},
"Sozialversicherungen und Vorsorgeeinrichtungen": {
"account_number": "2270"
},
"Quellensteuer": {
"account_number": "2279"
}
},
"Passive Rechnungsabgrenzungen und kurzfristige Rückstellungen": {
"account_number": "230",
"is_group": 1,
"Noch nicht bezahlter Aufwand": {
"account_number": "2300"
},
"Erhaltener Ertrag des Folgejahres": {
"account_number": "2301"
},
"Kurzfristige Rückstellungen": {
"account_number": "2330"
}
}
},
"Langfristiges Fremdkapital": {
"account_number": "24",
"is_group": 1,
"Langfristige verzinsliche Verbindlichkeiten": {
"account_number": "240",
"is_group": 1,
"Bankverbindlichkeiten": {
"account_number": "2400"
},
"Verbindlichkeiten aus Finanzierungsleasing": {
"account_number": "2420"
},
"Obligationenanleihen": {
"account_number": "2430"
},
"Darlehen": {
"account_number": "2450"
},
"Hypotheken": {
"account_number": "2451"
}
},
"Übrige langfristige Verbindlichkeiten": {
"account_number": "250",
"is_group": 1,
"Übrige langfristige Verbindlichkeiten (unverzinslich)": {
"account_number": "2500"
}
},
"Rückstellungen sowie vom Gesetz vorgesehene ähnliche Positionen": {
"account_number": "260",
"is_group": 1,
"Rückstellungen": {
"account_number": "2600"
}
}
},
"Eigenkapital (juristische Personen)": {
"account_number": "28",
"is_group": 1,
"Grund-, Gesellschafter- oder Stiftungskapital": {
"account_number": "280",
"is_group": 1,
"Aktien-, Stamm-, Anteilschein- oder Stiftungskapital": {
"account_number": "2800"
}
},
"Reserven und Jahresgewinn oder Jahresverlust": {
"account_number": "290",
"is_group": 1,
"Gesetzliche Kapitalreserve": {
"account_number": "2900"
},
"Reserve für eigene Kapitalanteile": {
"account_number": "2930"
},
"Aufwertungsreserve": {
"account_number": "2940"
},
"Gesetzliche Gewinnreserve": {
"account_number": "2950"
},
"Freiwillige Gewinnreserven": {
"account_number": "2960"
},
"Gewinnvortrag oder Verlustvortrag": {
"account_number": "2970"
},
"Jahresgewinn oder Jahresverlust": {
"account_number": "2979"
},
"Eigene Aktien, Stammanteile oder Anteilscheine (Minusposten)": {
"account_number": "2980"
}
}
}
},
"Betrieblicher Ertrag aus Lieferungen und Leistungen": {
"account_number": "3",
"is_group": 1,
"root_type": "Income",
"Produktionserlöse": {
"account_number": "3000"
},
"Handelserlöse": {
"account_number": "3200"
},
"Dienstleistungserlöse": {
"account_number": "3400"
},
"Übrige Erlöse aus Lieferungen und Leistungen": {
"account_number": "3600"
},
"Eigenleistungen": {
"account_number": "3700"
},
"Eigenverbrauch": {
"account_number": "3710"
},
"Erlösminderungen": {
"account_number": "3800"
},
"Verluste Forderungen (Debitoren), Veränderung Delkredere": {
"account_number": "3805"
},
"Bestandesänderungen unfertige Erzeugnisse": {
"account_number": "3900"
},
"Bestandesänderungen fertige Erzeugnisse": {
"account_number": "3901"
},
"Bestandesänderungen nicht fakturierte Dienstleistungen": {
"account_number": "3940"
}
},
"Aufwand für Material, Handelswaren, Dienstleistungen und Energie": {
"account_number": "4",
"is_group": 1,
"root_type": "Expense",
"Materialaufwand Produktion": {
"account_number": "4000"
},
"Handelswarenaufwand": {
"account_number": "4200"
},
"Aufwand für bezogene Dienstleistungen": {
"account_number": "4400"
},
"Energieaufwand zur Leistungserstellung": {
"account_number": "4500"
},
"Aufwandminderungen": {
"account_number": "4900"
}
},
"Personalaufwand": {
"account_number": "5",
"is_group": 1,
"root_type": "Expense",
"Lohnaufwand": {
"account_number": "5000"
},
"Sozialversicherungsaufwand": {
"account_number": "5700"
},
"Übriger Personalaufwand": {
"account_number": "5800"
},
"Leistungen Dritter": {
"account_number": "5900"
}
},
"Übriger betrieblicher Aufwand, Abschreibungen und Wertberichtigungen sowie Finanzergebnis": {
"account_number": "6",
"is_group": 1,
"root_type": "Expense",
"Raumaufwand": {
"account_number": "6000"
},
"Unterhalt, Reparaturen, Ersatz mobile Sachanlagen": {
"account_number": "6100"
},
"Leasingaufwand mobile Sachanlagen": {
"account_number": "6105"
},
"Fahrzeug- und Transportaufwand": {
"account_number": "6200"
},
"Fahrzeugleasing und -mieten": {
"account_number": "6260"
},
"Sachversicherungen, Abgaben, Gebühren, Bewilligungen": {
"account_number": "6300"
},
"Energie- und Entsorgungsaufwand": {
"account_number": "6400"
},
"Verwaltungsaufwand": {
"account_number": "6500"
},
"Informatikaufwand inkl. Leasing": {
"account_number": "6570"
},
"Werbeaufwand": {
"account_number": "6600"
},
"Sonstiger betrieblicher Aufwand": {
"account_number": "6700"
},
"Abschreibungen und Wertberichtigungen auf Positionen des Anlagevermögens": {
"account_number": "6800"
},
"Finanzaufwand": {
"account_number": "6900"
},
"Finanzertrag": {
"account_number": "6950"
}
},
"Betrieblicher Nebenerfolg": {
"account_number": "7",
"is_group": 1,
"root_type": "Income",
"Ertrag Nebenbetrieb": {
"account_number": "7000"
},
"Aufwand Nebenbetrieb": {
"account_number": "7010"
},
"Ertrag betriebliche Liegenschaft": {
"account_number": "7500"
},
"Aufwand betriebliche Liegenschaft": {
"account_number": "7510"
}
},
"Betriebsfremder, ausserordentlicher, einmaliger oder periodenfremder Aufwand und Ertrag": {
"account_number": "8",
"is_group": 1,
"root_type": "Expense",
"Betriebsfremder Aufwand": {
"account_number": "8000"
},
"Betriebsfremder Ertrag": {
"account_number": "8100"
},
"Ausserordentlicher, einmaliger oder periodenfremder Aufwand": {
"account_number": "8500"
},
"Ausserordentlicher, einmaliger oder periodenfremder Ertrag": {
"account_number": "8510"
},
"Direkte Steuern": {
"account_number": "8900"
}
},
"Abschluss": {
"account_number": "9",
"is_group": 1,
"root_type": "Equity",
"Jahresgewinn oder Jahresverlust": {
"account_number": "9200"
}
}
}
}

View File

@@ -0,0 +1,34 @@
import json
from pathlib import Path
syscohada_countries = [
"bj", # Bénin
"bf", # Burkina-Faso
"cm", # Cameroun
"cf", # Centrafrique
"ci", # Côte d'Ivoire
"cg", # Congo
"km", # Comores
"ga", # Gabon
"gn", # Guinée
"gw", # Guinée-Bissau
"gq", # Guinée Equatoriale
"ml", # Mali
"ne", # Niger
"cd", # République Démocratique du Congo
"sn", # Sénégal
"td", # Tchad
"tg", # Togo
]
folder = Path(__file__).parent
generic_charts = Path(folder).glob("syscohada*.json")
for file in generic_charts:
with open(file) as f:
chart = json.load(f)
for country in syscohada_countries:
chart["country_code"] = country
json_object = json.dumps(chart, indent=4)
with open(Path(folder, file.name.replace("syscohada", country)), "w") as outfile:
outfile.write(json_object)

View File

@@ -31,7 +31,8 @@
"label": "Reference Document Type",
"options": "DocType",
"read_only_depends_on": "eval:!doc.__islocal",
"reqd": 1
"reqd": 1,
"search_index": 1
},
{
"default": "0",

View File

@@ -41,6 +41,11 @@ class AccountingDimension(Document):
self.set_fieldname_and_label()
def validate(self):
self.validate_doctype()
validate_column_name(self.fieldname)
self.validate_dimension_defaults()
def validate_doctype(self):
if self.document_type in (
*core_doctypes_list,
"Accounting Dimension",
@@ -49,6 +54,7 @@ class AccountingDimension(Document):
"Accounting Dimension Detail",
"Company",
"Account",
"Finance Book",
):
msg = _("Not allowed to create accounting dimension for {0}").format(self.document_type)
frappe.throw(msg)
@@ -61,9 +67,6 @@ class AccountingDimension(Document):
if not self.is_new():
self.validate_document_type_change()
validate_column_name(self.fieldname)
self.validate_dimension_defaults()
def validate_document_type_change(self):
doctype_before_save = frappe.db.get_value("Accounting Dimension", self.name, "document_type")
if doctype_before_save != self.document_type:
@@ -102,6 +105,7 @@ class AccountingDimension(Document):
def on_update(self):
frappe.flags.accounting_dimensions = None
frappe.flags.accounting_dimensions_details = None
def make_dimension_in_accounting_doctypes(doc, doclist=None):
@@ -262,7 +266,7 @@ def get_checks_for_pl_and_bs_accounts():
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
FROM `tabAccounting Dimension`p ,`tabAccounting Dimension Detail` c
WHERE p.name = c.parent""",
WHERE p.name = c.parent AND p.disabled = 0""",
as_dict=1,
)

View File

@@ -12,7 +12,7 @@ frappe.ui.form.on("Accounts Settings", {
msg += " ";
msg += __("Please enable only if the understand the effects of enabling this.");
msg += "<br>";
msg += "Do you still want to enable immutable ledger?";
msg += __("Do you still want to enable immutable ledger?");
frappe.confirm(
msg,

View File

@@ -40,9 +40,14 @@
"show_payment_schedule_in_print",
"currency_exchange_section",
"allow_stale",
"column_break_yuug",
"stale_days",
"section_break_jpd0",
"auto_reconcile_payments",
"stale_days",
"auto_reconciliation_job_trigger",
"reconciliation_queue_size",
"column_break_resa",
"exchange_gain_loss_posting_date",
"invoicing_settings_tab",
"accounts_transactions_settings_section",
"over_billing_allowance",
@@ -72,6 +77,7 @@
"reports_tab",
"remarks_section",
"general_ledger_remarks_length",
"ignore_is_opening_check_for_reporting",
"column_break_lvjk",
"receivable_payable_remarks_length",
"payment_request_settings",
@@ -384,7 +390,7 @@
{
"fieldname": "section_break_jpd0",
"fieldtype": "Section Break",
"label": "Payment Reconciliations"
"label": "Payment Reconciliation Settings"
},
{
"default": "0",
@@ -489,6 +495,43 @@
"fieldname": "create_pr_in_draft_status",
"fieldtype": "Check",
"label": "Create in Draft Status"
},
{
"fieldname": "column_break_yuug",
"fieldtype": "Column Break"
},
{
"fieldname": "column_break_resa",
"fieldtype": "Column Break"
},
{
"default": "15",
"description": "Interval should be between 1 to 59 MInutes",
"fieldname": "auto_reconciliation_job_trigger",
"fieldtype": "Int",
"label": "Auto Reconciliation Job Trigger"
},
{
"default": "5",
"description": "Documents Processed on each trigger. Queue Size should be between 5 and 100",
"fieldname": "reconciliation_queue_size",
"fieldtype": "Int",
"label": "Reconciliation Queue Size"
},
{
"default": "0",
"description": "Ignores legacy Is Opening field in GL Entry that allows adding opening balance post the system is in use while generating reports",
"fieldname": "ignore_is_opening_check_for_reporting",
"fieldtype": "Check",
"label": "Ignore Is Opening check for reporting"
},
{
"default": "Payment",
"description": "Only applies for Normal Payments",
"fieldname": "exchange_gain_loss_posting_date",
"fieldtype": "Select",
"label": "Posting Date Inheritance for Exchange Gain / Loss",
"options": "Invoice\nPayment\nReconciliation Date"
}
],
"icon": "icon-cog",
@@ -496,7 +539,7 @@
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
"modified": "2024-07-26 06:48:52.714630",
"modified": "2025-01-23 13:15:44.077853",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Accounts Settings",

View File

@@ -10,6 +10,7 @@ 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.utils import sync_auto_reconcile_config
from erpnext.stock.utils import check_pending_reposting
@@ -27,6 +28,7 @@ class AccountsSettings(Document):
allow_multi_currency_invoices_against_single_party_account: DF.Check
allow_stale: DF.Check
auto_reconcile_payments: DF.Check
auto_reconciliation_job_trigger: DF.Int
automatically_fetch_payment_terms: DF.Check
automatically_process_deferred_accounting_entry: DF.Check
book_asset_depreciation_entry_automatically: DF.Check
@@ -43,14 +45,17 @@ class AccountsSettings(Document):
enable_fuzzy_matching: DF.Check
enable_immutable_ledger: DF.Check
enable_party_matching: DF.Check
exchange_gain_loss_posting_date: DF.Literal["Invoice", "Payment", "Reconciliation Date"]
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
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_remarks_length: DF.Int
reconciliation_queue_size: DF.Int
role_allowed_to_over_bill: DF.Link | None
round_row_wise_tax: DF.Check
show_balance_in_coa: DF.Check
@@ -90,6 +95,8 @@ class AccountsSettings(Document):
if clear_cache:
frappe.clear_cache()
self.validate_and_sync_auto_reconcile_config()
def validate_stale_days(self):
if not self.allow_stale and cint(self.stale_days) <= 0:
frappe.msgprint(
@@ -114,3 +121,17 @@ class AccountsSettings(Document):
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 (
cint(self.auto_reconciliation_job_trigger) > 0
and cint(self.auto_reconciliation_job_trigger) < 60
):
sync_auto_reconcile_config(self.auto_reconciliation_job_trigger)
else:
frappe.throw(_("Cron Interval should be between 1 and 59 Min"))
if self.has_value_changed("reconciliation_queue_size"):
if cint(self.reconciliation_queue_size) < 5 or cint(self.reconciliation_queue_size) > 100:
frappe.throw(_("Queue Size should be between 5 and 100"))

View File

@@ -101,7 +101,7 @@
"fieldname": "rate",
"fieldtype": "Float",
"in_list_view": 1,
"label": "Rate",
"label": "Tax Rate",
"oldfieldname": "rate",
"oldfieldtype": "Currency"
},

View File

@@ -48,7 +48,7 @@ class BankAccount(Document):
self.name = self.account_name + " - " + self.bank
def on_trash(self):
delete_contact_and_address("BankAccount", self.name)
delete_contact_and_address("Bank Account", self.name)
def validate(self):
self.validate_company()

View File

@@ -117,9 +117,9 @@ class BankClearance(Document):
)
else:
frappe.db.set_value(
d.payment_document, d.payment_entry, "clearance_date", d.clearance_date
)
# using db_set to trigger notification
payment_entry = frappe.get_doc(d.payment_document, d.payment_entry)
payment_entry.db_set("clearance_date", d.clearance_date)
clearance_date_updated = True

View File

@@ -19,10 +19,15 @@ frappe.ui.form.on("Bank Reconciliation Tool", {
},
onload: function (frm) {
if (!frm.doc.company) {
frm.set_value("company", frappe.defaults.get_default("company"));
}
// Set default filter dates
let today = frappe.datetime.get_today();
frm.doc.bank_statement_from_date = frappe.datetime.add_months(today, -1);
frm.doc.bank_statement_to_date = today;
frm.trigger("bank_account");
},
@@ -98,7 +103,7 @@ frappe.ui.form.on("Bank Reconciliation Tool", {
make_reconciliation_tool(frm) {
frm.get_field("reconciliation_tool_cards").$wrapper.empty();
if (frm.doc.bank_account && frm.doc.bank_statement_to_date) {
if (frm.doc.company && frm.doc.bank_account && frm.doc.bank_statement_to_date) {
frm.trigger("get_cleared_balance").then(() => {
if (
frm.doc.bank_account &&
@@ -114,12 +119,13 @@ frappe.ui.form.on("Bank Reconciliation Tool", {
},
get_account_opening_balance(frm) {
if (frm.doc.bank_account && frm.doc.bank_statement_from_date) {
if (frm.doc.company && frm.doc.bank_account && frm.doc.bank_statement_from_date) {
frappe.call({
method: "erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool.get_account_balance",
args: {
bank_account: frm.doc.bank_account,
till_date: frappe.datetime.add_days(frm.doc.bank_statement_from_date, -1),
company: frm.doc.company,
},
callback: (response) => {
frm.set_value("account_opening_balance", response.message);
@@ -129,12 +135,13 @@ frappe.ui.form.on("Bank Reconciliation Tool", {
},
get_cleared_balance(frm) {
if (frm.doc.bank_account && frm.doc.bank_statement_to_date) {
if (frm.doc.company && frm.doc.bank_account && frm.doc.bank_statement_to_date) {
return frappe.call({
method: "erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool.get_account_balance",
args: {
bank_account: frm.doc.bank_account,
till_date: frm.doc.bank_statement_to_date,
company: frm.doc.company,
},
callback: (response) => {
frm.cleared_balance = response.message;

View File

@@ -12,6 +12,7 @@ from frappe.utils import cint, flt
from erpnext import get_default_cost_center
from erpnext.accounts.doctype.bank_transaction.bank_transaction import get_total_allocated_amount
from erpnext.accounts.party import get_party_account
from erpnext.accounts.report.bank_reconciliation_statement.bank_reconciliation_statement import (
get_amounts_not_reflected_in_system,
get_entries,
@@ -78,10 +79,17 @@ def get_bank_transactions(bank_account, from_date=None, to_date=None):
@frappe.whitelist()
def get_account_balance(bank_account, till_date):
def get_account_balance(bank_account, till_date, company):
# returns account balance till the specified date
account = frappe.db.get_value("Bank Account", bank_account, "account")
filters = frappe._dict({"account": account, "report_date": till_date, "include_pos_transactions": 1})
filters = frappe._dict(
{
"account": account,
"report_date": till_date,
"include_pos_transactions": 1,
"company": company,
}
)
data = get_entries(filters)
balance_as_per_system = get_balance_on(filters["account"], filters["report_date"])
@@ -93,11 +101,7 @@ def get_account_balance(bank_account, till_date):
amounts_not_reflected_in_system = get_amounts_not_reflected_in_system(filters)
bank_bal = (
flt(balance_as_per_system) - flt(total_debit) + flt(total_credit) + amounts_not_reflected_in_system
)
return bank_bal
return flt(balance_as_per_system) - flt(total_debit) + flt(total_credit) + amounts_not_reflected_in_system
@frappe.whitelist()
@@ -304,54 +308,56 @@ def create_payment_entry_bts(
bank_transaction = frappe.db.get_values(
"Bank Transaction",
bank_transaction_name,
fieldname=["name", "unallocated_amount", "deposit", "bank_account"],
fieldname=["name", "unallocated_amount", "deposit", "bank_account", "currency"],
as_dict=True,
)[0]
paid_amount = bank_transaction.unallocated_amount
payment_type = "Receive" if bank_transaction.deposit > 0.0 else "Pay"
company_account = frappe.get_value("Bank Account", bank_transaction.bank_account, "account")
company = frappe.get_value("Account", company_account, "company")
payment_entry_dict = {
"company": company,
"payment_type": payment_type,
"reference_no": reference_number,
"reference_date": reference_date,
"party_type": party_type,
"party": party,
"posting_date": posting_date,
"paid_amount": paid_amount,
"received_amount": paid_amount,
}
payment_entry = frappe.new_doc("Payment Entry")
bank_account = frappe.get_cached_value("Bank Account", bank_transaction.bank_account, "account")
company = frappe.get_cached_value("Account", bank_account, "company")
party_account = get_party_account(party_type, party, company)
payment_entry.update(payment_entry_dict)
bank_currency = bank_transaction.currency
party_currency = frappe.get_cached_value("Account", party_account, "account_currency")
if mode_of_payment:
payment_entry.mode_of_payment = mode_of_payment
if project:
payment_entry.project = project
if cost_center:
payment_entry.cost_center = cost_center
if payment_type == "Receive":
payment_entry.paid_to = company_account
else:
payment_entry.paid_from = company_account
exc_rate = get_exchange_rate(bank_currency, party_currency, posting_date)
payment_entry.validate()
amt_in_bank_acc_currency = bank_transaction.unallocated_amount
amount_in_party_currency = bank_transaction.unallocated_amount * exc_rate
pe = frappe.new_doc("Payment Entry")
pe.payment_type = payment_type
pe.company = company
pe.reference_no = reference_number
pe.reference_date = reference_date
pe.party_type = party_type
pe.party = party
pe.posting_date = posting_date
pe.paid_from = party_account if payment_type == "Receive" else bank_account
pe.paid_to = party_account if payment_type == "Pay" else bank_account
pe.paid_from_account_currency = party_currency if payment_type == "Receive" else bank_currency
pe.paid_to_account_currency = party_currency if payment_type == "Pay" else bank_currency
pe.paid_amount = amount_in_party_currency if payment_type == "Receive" else amt_in_bank_acc_currency
pe.received_amount = amount_in_party_currency if payment_type == "Pay" else amt_in_bank_acc_currency
pe.mode_of_payment = mode_of_payment
pe.project = project
pe.cost_center = cost_center
pe.validate()
if allow_edit:
return payment_entry
return pe
payment_entry.insert()
pe.insert()
pe.submit()
payment_entry.submit()
vouchers = json.dumps(
[
{
"payment_doctype": "Payment Entry",
"payment_name": payment_entry.name,
"amount": paid_amount,
"payment_name": pe.name,
"amount": amt_in_bank_acc_currency,
}
]
)
@@ -480,8 +486,12 @@ def get_linked_payments(
def subtract_allocations(gl_account, vouchers):
"Look up & subtract any existing Bank Transaction allocations"
copied = []
voucher_docs = [(voucher.get("doctype"), voucher.get("name")) for voucher in vouchers]
voucher_allocated_amounts = get_total_allocated_amount(voucher_docs)
for voucher in vouchers:
rows = get_total_allocated_amount(voucher.get("doctype"), voucher.get("name"))
rows = voucher_allocated_amounts.get((voucher.get("doctype"), voucher.get("name"))) or []
filtered_row = list(filter(lambda row: row.get("gl_account") == gl_account, rows))
if amount := None if not filtered_row else filtered_row[0]["total"]:
@@ -719,7 +729,7 @@ def get_pe_matching_query(
(ref_rank + amount_rank + party_rank + 1).as_("rank"),
ConstantColumn("Payment Entry").as_("doctype"),
pe.name,
pe.paid_amount_after_tax.as_("paid_amount"),
pe.base_paid_amount_after_tax.as_("paid_amount"),
pe.reference_no,
pe.reference_date,
pe.party,
@@ -792,7 +802,6 @@ def get_je_matching_query(
.where(je.clearance_date.isnull())
.where(jea.account == common_filters.bank_account)
.where(amount_equality if exact_match else getattr(jea, amount_field) > 0.0)
.where(je.docstatus == 1)
.where(filter_by_date)
.orderby(je.cheque_date if cint(filter_by_reference_date) else je.posting_date)
)

View File

@@ -45,45 +45,41 @@ class AutoMatchbyAccountIBAN:
if not (self.bank_party_account_number or self.bank_party_iban):
return None
result = self.match_account_in_party()
return result
return self.match_account_in_party()
def match_account_in_party(self) -> tuple | None:
"""Check if there is a IBAN/Account No. match in Customer/Supplier/Employee"""
result = None
parties = get_parties_in_order(self.deposit)
or_filters = self.get_or_filters()
"""
Returns (Party Type, Party) if a matching account is found in Bank Account or Employee:
1. Get party from a matching (iban/account no) Bank Account
2. If not found, get party from Employee with matching bank account details (iban/account no)
"""
if not (self.bank_party_account_number or self.bank_party_iban):
# Nothing to match
return None
for party in parties:
party_result = frappe.db.get_all(
"Bank Account", or_filters=or_filters, pluck="party", limit_page_length=1
)
# Search for a matching Bank Account that has party set
party_result = frappe.db.get_all(
"Bank Account",
or_filters=self.get_or_filters(),
filters={"party_type": ("is", "set"), "party": ("is", "set")},
fields=["party", "party_type"],
limit_page_length=1,
)
if result := party_result[0] if party_result else None:
return (result["party_type"], result["party"])
if party == "Employee" and not party_result:
# Search in Bank Accounts first for Employee, and then Employee record
if "bank_account_no" in or_filters:
or_filters["bank_ac_no"] = or_filters.pop("bank_account_no")
# If no party is found, search in Employee (since it has bank account details)
if employee_result := frappe.db.get_all(
"Employee", or_filters=self.get_or_filters("Employee"), pluck="name", limit_page_length=1
):
return ("Employee", employee_result[0])
party_result = frappe.db.get_all(
party, or_filters=or_filters, pluck="name", limit_page_length=1
)
if "bank_ac_no" in or_filters:
or_filters["bank_account_no"] = or_filters.pop("bank_ac_no")
if party_result:
result = (
party,
party_result[0],
)
break
return result
def get_or_filters(self) -> dict:
def get_or_filters(self, party: str | None = None) -> dict:
"""Return OR filters for Bank Account and IBAN"""
or_filters = {}
if self.bank_party_account_number:
or_filters["bank_account_no"] = self.bank_party_account_number
bank_ac_field = "bank_ac_no" if party == "Employee" else "bank_account_no"
or_filters[bank_ac_field] = self.bank_party_account_number
if self.bank_party_iban:
or_filters["iban"] = self.bank_party_iban
@@ -103,8 +99,7 @@ class AutoMatchbyPartyNameDescription:
if not (self.bank_party_name or self.description):
return None
result = self.match_party_name_desc_in_party()
return result
return self.match_party_name_desc_in_party()
def match_party_name_desc_in_party(self) -> tuple | None:
"""Fuzzy search party name and/or description against parties in the system"""
@@ -113,7 +108,8 @@ class AutoMatchbyPartyNameDescription:
for party in parties:
filters = {"status": "Active"} if party == "Employee" else {"disabled": 0}
names = frappe.get_all(party, filters=filters, pluck=party.lower() + "_name")
field = f"{party.lower()}_name"
names = frappe.get_all(party, filters=filters, fields=[f"{field} as party_name", "name"])
for field in ["bank_party_name", "description"]:
if not self.get(field):
@@ -132,16 +128,14 @@ class AutoMatchbyPartyNameDescription:
def fuzzy_search_and_return_result(self, party, names, field) -> tuple | None:
skip = False
result = process.extract(query=self.get(field), choices=names, scorer=fuzz.token_set_ratio)
result = process.extract(
query=self.get(field),
choices={row.get("name"): row.get("party_name") for row in names},
scorer=fuzz.token_set_ratio,
)
party_name, skip = self.process_fuzzy_result(result)
if not party_name:
return None, skip
return (
party,
party_name,
), skip
return ((party, party_name), skip) if party_name else (None, skip)
def process_fuzzy_result(self, result: list | None):
"""
@@ -150,30 +144,30 @@ class AutoMatchbyPartyNameDescription:
Returns: Result, Skip (whether or not to discontinue matching)
"""
PARTY, SCORE, CUTOFF = 0, 1, 80
SCORE, PARTY_ID, CUTOFF = 1, 2, 80
if not result or not len(result):
return None, False
first_result = result[0]
if len(result) == 1:
return (first_result[PARTY] if first_result[SCORE] > CUTOFF else None), True
return (first_result[PARTY_ID] if first_result[SCORE] > CUTOFF else None), True
second_result = result[1]
if first_result[SCORE] > CUTOFF:
second_result = result[1]
# If multiple matches with the same score, return None but discontinue matching
# Matches were found but were too close to distinguish between
if first_result[SCORE] == second_result[SCORE]:
return None, True
return first_result[PARTY], True
return first_result[PARTY_ID], True
else:
return None, False
def get_parties_in_order(deposit: float) -> list:
parties = ["Supplier", "Employee", "Customer"] # most -> least likely to receive
if flt(deposit) > 0:
parties = ["Customer", "Supplier", "Employee"] # most -> least likely to pay
return parties
return (
["Customer", "Supplier", "Employee"] # most -> least likely to pay us
if flt(deposit) > 0
else ["Supplier", "Employee", "Customer"] # most -> least likely to receive from us
)

View File

@@ -154,10 +154,16 @@ class BankTransaction(Document):
"""
remaining_amount = self.unallocated_amount
to_remove = []
payment_entry_docs = [(pe.payment_document, pe.payment_entry) for pe in self.payment_entries]
pe_bt_allocations = get_total_allocated_amount(payment_entry_docs)
for payment_entry in self.payment_entries:
if payment_entry.allocated_amount == 0.0:
unallocated_amount, should_clear, latest_transaction = get_clearance_details(
self, payment_entry
self,
payment_entry,
pe_bt_allocations.get((payment_entry.payment_document, payment_entry.payment_entry))
or [],
)
if 0.0 == unallocated_amount:
@@ -208,13 +214,17 @@ class BankTransaction(Document):
if self.party_type and self.party:
return
result = AutoMatchParty(
bank_party_account_number=self.bank_party_account_number,
bank_party_iban=self.bank_party_iban,
bank_party_name=self.bank_party_name,
description=self.description,
deposit=self.deposit,
).match()
result = None
try:
result = AutoMatchParty(
bank_party_account_number=self.bank_party_account_number,
bank_party_iban=self.bank_party_iban,
bank_party_name=self.bank_party_name,
description=self.description,
deposit=self.deposit,
).match()
except Exception:
frappe.log_error(title=_("Error in party matching for Bank Transaction {0}").format(self.name))
if not result:
return
@@ -228,7 +238,7 @@ def get_doctypes_for_bank_reconciliation():
return frappe.get_hooks("bank_reconciliation_doctypes")
def get_clearance_details(transaction, payment_entry):
def get_clearance_details(transaction, payment_entry, bt_allocations):
"""
There should only be one bank gle for a voucher.
Could be none for a Bank Transaction.
@@ -237,7 +247,6 @@ def get_clearance_details(transaction, payment_entry):
"""
gl_bank_account = frappe.db.get_value("Bank Account", transaction.bank_account, "account")
gles = get_related_bank_gl_entries(payment_entry.payment_document, payment_entry.payment_entry)
bt_allocations = get_total_allocated_amount(payment_entry.payment_document, payment_entry.payment_entry)
unallocated_amount = min(
transaction.unallocated_amount,
@@ -290,44 +299,52 @@ def get_related_bank_gl_entries(doctype, docname):
)
def get_total_allocated_amount(doctype, docname):
def get_total_allocated_amount(docs):
"""
Gets the sum of allocations for a voucher on each bank GL account
along with the latest bank transaction name & date
NOTE: query may also include just saved vouchers/payments but with zero allocated_amount
"""
if not docs:
return {}
# nosemgrep: frappe-semgrep-rules.rules.frappe-using-db-sql
result = frappe.db.sql(
"""
SELECT total, latest_name, latest_date, gl_account FROM (
SELECT total, latest_name, latest_date, gl_account, payment_document, payment_entry FROM (
SELECT
ROW_NUMBER() OVER w AS rownum,
SUM(btp.allocated_amount) OVER(PARTITION BY ba.account) AS total,
SUM(btp.allocated_amount) OVER(PARTITION BY ba.account, btp.payment_document, btp.payment_entry) AS total,
FIRST_VALUE(bt.name) OVER w AS latest_name,
FIRST_VALUE(bt.date) OVER w AS latest_date,
ba.account AS gl_account
ba.account AS gl_account,
btp.payment_document,
btp.payment_entry
FROM
`tabBank Transaction Payments` btp
LEFT JOIN `tabBank Transaction` bt ON bt.name=btp.parent
LEFT JOIN `tabBank Account` ba ON ba.name=bt.bank_account
WHERE
btp.payment_document = %(doctype)s
AND btp.payment_entry = %(docname)s
(btp.payment_document, btp.payment_entry) IN %(docs)s
AND bt.docstatus = 1
WINDOW w AS (PARTITION BY ba.account ORDER BY bt.date desc)
WINDOW w AS (PARTITION BY ba.account, btp.payment_document, btp.payment_entry ORDER BY bt.date DESC)
) temp
WHERE
rownum = 1
""",
dict(doctype=doctype, docname=docname),
dict(docs=docs),
as_dict=True,
)
payment_allocation_details = {}
for row in result:
# Why is this *sometimes* a byte string?
if isinstance(row["latest_name"], bytes):
row["latest_name"] = row["latest_name"].decode()
row["latest_date"] = frappe.utils.getdate(row["latest_date"])
return result
payment_allocation_details.setdefault((row["payment_document"], row["payment_entry"]), []).append(row)
return payment_allocation_details
def get_paid_amount(payment_entry, currency, gl_bank_account):

View File

@@ -490,13 +490,20 @@ def get_actual_expense(args):
def get_accumulated_monthly_budget(monthly_distribution, posting_date, fiscal_year, annual_budget):
distribution = {}
if monthly_distribution:
for d in frappe.db.sql(
"""select mdp.month, mdp.percentage_allocation
from `tabMonthly Distribution Percentage` mdp, `tabMonthly Distribution` md
where mdp.parent=md.name and md.fiscal_year=%s""",
fiscal_year,
as_dict=1,
):
mdp = frappe.qb.DocType("Monthly Distribution Percentage")
md = frappe.qb.DocType("Monthly Distribution")
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)
)
for d in res:
distribution.setdefault(d.month, d.percentage_allocation)
dt = frappe.get_cached_value("Fiscal Year", fiscal_year, "year_start_date")

View File

@@ -19,16 +19,6 @@
"currency",
"column_break_11",
"conversion_rate",
"address_and_contact_section",
"customer_address",
"address_display",
"contact_person",
"contact_display",
"column_break_16",
"company_address",
"company_address_display",
"contact_mobile",
"contact_email",
"section_break_6",
"dunning_type",
"column_break_8",
@@ -56,7 +46,21 @@
"income_account",
"column_break_48",
"cost_center",
"amended_from"
"amended_from",
"address_and_contact_tab",
"address_and_contact_section",
"customer_address",
"address_display",
"column_break_vodj",
"contact_person",
"contact_display",
"contact_mobile",
"contact_email",
"section_break_xban",
"column_break_16",
"company_address",
"company_address_display",
"column_break_lqmf"
],
"fields": [
{
@@ -178,10 +182,8 @@
"label": "Rate of Interest (%) Yearly"
},
{
"collapsible": 1,
"fieldname": "address_and_contact_section",
"fieldtype": "Section Break",
"label": "Address and Contact"
"fieldtype": "Section Break"
},
{
"fieldname": "address_display",
@@ -377,11 +379,28 @@
{
"fieldname": "column_break_48",
"fieldtype": "Column Break"
},
{
"fieldname": "address_and_contact_tab",
"fieldtype": "Tab Break",
"label": "Address & Contact"
},
{
"fieldname": "column_break_vodj",
"fieldtype": "Column Break"
},
{
"fieldname": "section_break_xban",
"fieldtype": "Section Break"
},
{
"fieldname": "column_break_lqmf",
"fieldtype": "Column Break"
}
],
"is_submittable": 1,
"links": [],
"modified": "2023-06-15 15:46:53.865712",
"modified": "2024-11-26 13:46:07.760867",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Dunning",
@@ -435,4 +454,4 @@
"states": [],
"title_field": "customer_name",
"track_changes": 1
}
}

View File

@@ -188,7 +188,7 @@ class TestExchangeRateRevaluation(AccountsTestMixin, FrappeTestCase):
pe = get_payment_entry(si.doctype, si.name)
pe.paid_amount = 95
pe.source_exchange_rate = 84.211
pe.source_exchange_rate = 84.2105
pe.received_amount = 8000
pe.references = []
pe.save().submit()
@@ -229,7 +229,7 @@ class TestExchangeRateRevaluation(AccountsTestMixin, FrappeTestCase):
row = next(x for x in je.accounts if x.account == self.debtors_usd)
self.assertEqual(flt(row.credit_in_account_currency, precision), 5.0) # in USD
row = next(x for x in je.accounts if x.account != self.debtors_usd)
self.assertEqual(flt(row.debit_in_account_currency, precision), 421.06) # in INR
self.assertEqual(flt(row.debit_in_account_currency, precision), 421.05) # in INR
# total_debit and total_credit will be 0.0, as JV is posting only to account currency fields
self.assertEqual(flt(je.total_debit, precision), 0.0)

View File

@@ -13,7 +13,11 @@ import erpnext
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
get_checks_for_pl_and_bs_accounts,
)
from erpnext.accounts.party import validate_party_frozen_disabled, validate_party_gle_currency
from erpnext.accounts.party import (
validate_account_party_type,
validate_party_frozen_disabled,
validate_party_gle_currency,
)
from erpnext.accounts.utils import get_account_currency, get_fiscal_year
from erpnext.exceptions import InvalidAccountCurrency
@@ -125,7 +129,7 @@ class GLEntry(Document):
if not self.get(k):
frappe.throw(_("{0} is required").format(_(self.meta.get_label(k))))
if not (self.party_type and self.party):
if not self.is_cancelled and not (self.party_type and self.party):
account_type = frappe.get_cached_value("Account", self.account, "account_type")
if account_type == "Receivable":
frappe.throw(
@@ -268,8 +272,12 @@ class GLEntry(Document):
def validate_party(self):
validate_party_frozen_disabled(self.party_type, self.party)
validate_account_party_type(self)
def validate_currency(self):
if self.is_cancelled:
return
company_currency = erpnext.get_company_currency(self.company)
account_currency = get_account_currency(self.account)

View File

@@ -79,3 +79,65 @@ class TestGLEntry(unittest.TestCase):
"SELECT current from tabSeries where name = %s", naming_series
)[0][0]
self.assertEqual(old_naming_series_current_value + 2, new_naming_series_current_value)
def test_validate_account_party_type(self):
jv = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
"_Test Bank - _TC",
100,
"_Test Cost Center - _TC",
save=False,
submit=False,
)
for row in jv.accounts:
row.party_type = "Supplier"
break
jv.save()
try:
jv.submit()
except Exception as e:
self.assertEqual(
str(e),
"Party Type and Party can only be set for Receivable / Payable account_Test Account Cost for Goods Sold - _TC",
)
jv1 = make_journal_entry(
"_Test Account Cost for Goods Sold - _TC",
"_Test Bank - _TC",
100,
"_Test Cost Center - _TC",
save=False,
submit=False,
)
for row in jv.accounts:
row.party_type = "Customer"
break
jv1.save()
try:
jv1.submit()
except Exception as e:
self.assertEqual(
str(e),
"Party Type and Party can only be set for Receivable / Payable account_Test Account Cost for Goods Sold - _TC",
)
def test_validate_account_party_type_shareholder(self):
jv = make_journal_entry(
"Opening Balance Equity - _TC",
"Cash - _TC",
100,
"_Test Cost Center - _TC",
save=False,
submit=False,
)
for row in jv.accounts:
row.party_type = "Shareholder"
break
jv.save().submit()
self.assertEqual(1, jv.docstatus)

View File

@@ -430,12 +430,6 @@ frappe.ui.form.on("Journal Entry Account", {
});
}
},
cost_center: function (frm, dt, dn) {
// Don't reset for Gain/Loss type journals, as it will make Debit and Credit values '0'
if (frm.doc.voucher_type != "Exchange Gain Or Loss") {
erpnext.journal_entry.set_account_details(frm, dt, dn);
}
},
account: function (frm, dt, dn) {
erpnext.journal_entry.set_account_details(frm, dt, dn);

View File

@@ -127,9 +127,6 @@ class JournalEntry(AccountsController):
self.set_amounts_in_company_currency()
self.validate_debit_credit_amount()
self.set_total_debit_credit()
# Do not validate while importing via data import
if not frappe.flags.in_import:
self.validate_total_debit_and_credit()
if not frappe.flags.is_reverse_depr_entry:
self.validate_against_jv()
@@ -184,6 +181,11 @@ class JournalEntry(AccountsController):
else:
return self._cancel()
def before_submit(self):
# Do not validate while importing via data import
if not frappe.flags.in_import:
self.validate_total_debit_and_credit()
def on_submit(self):
self.validate_cheque_info()
self.check_credit_limit()

View File

@@ -146,10 +146,9 @@ class TestJournalEntry(unittest.TestCase):
"credit_in_account_currency": 0 if diff > 0 else abs(diff),
},
)
jv.insert()
if account_bal == stock_bal:
self.assertRaises(StockAccountInvalidTransaction, jv.submit)
self.assertRaises(StockAccountInvalidTransaction, jv.save)
frappe.db.rollback()
else:
jv.submit()
@@ -515,6 +514,55 @@ class TestJournalEntry(unittest.TestCase):
self.assertEqual(row.debit_in_account_currency, 100)
self.assertEqual(row.credit_in_account_currency, 100)
def test_toggle_debit_credit_if_negative(self):
from erpnext.accounts.general_ledger import process_gl_map
# Create JV with defaut cost center - _Test Cost Center
frappe.db.set_single_value("Accounts Settings", "merge_similar_account_heads", 0)
jv = frappe.new_doc("Journal Entry")
jv.posting_date = nowdate()
jv.company = "_Test Company"
jv.user_remark = "test"
jv.extend(
"accounts",
[
{
"account": "_Test Cash - _TC",
"debit": 100 * -1,
"debit_in_account_currency": 100 * -1,
"exchange_rate": 1,
},
{
"account": "_Test Bank - _TC",
"credit": 100 * -1,
"credit_in_account_currency": 100 * -1,
"exchange_rate": 1,
},
],
)
jv.flags.ignore_validate = True
jv.save()
self.assertEqual(len(jv.accounts), 2)
gl_map = jv.build_gl_map()
for row in gl_map:
if row.account == "_Test Cash - _TC":
self.assertEqual(row.debit, 100 * -1)
self.assertEqual(row.debit_in_account_currency, 100 * -1)
self.assertEqual(row.debit_in_transaction_currency, 100 * -1)
gl_map = process_gl_map(gl_map, False)
for row in gl_map:
if row.account == "_Test Cash - _TC":
self.assertEqual(row.credit, 100)
self.assertEqual(row.credit_in_account_currency, 100)
self.assertEqual(row.credit_in_transaction_currency, 100)
def test_transaction_exchange_rate_on_journals(self):
jv = make_journal_entry("_Test Bank - _TC", "_Test Receivable USD - _TC", 100, save=False)
jv.accounts[0].update({"debit_in_account_currency": 8500, "exchange_rate": 1})

View File

@@ -27,6 +27,18 @@ frappe.ui.form.on("Payment Entry", {
erpnext.accounts.dimensions.setup_dimension_filters(frm, frm.doctype);
// project excluded in setup_dimension_filters
frm.set_query("project", function (doc) {
let filters = {
company: doc.company,
};
if (doc.party_type == "Customer") filters.customer = doc.party;
return {
query: "erpnext.controllers.queries.get_project_name",
filters,
};
});
if (frm.is_new()) {
set_default_party_type(frm);
}
@@ -185,6 +197,10 @@ frappe.ui.form.on("Payment Entry", {
filters: {
reference_doctype: row.reference_doctype,
reference_name: row.reference_name,
company: doc.company,
status: ["!=", "Paid"],
outstanding_amount: [">", 0], // for compatibility with old data
docstatus: 1,
},
};
});
@@ -320,11 +336,6 @@ frappe.ui.form.on("Payment Entry", {
"write_off_difference_amount",
frm.doc.difference_amount && frm.doc.party && frm.doc.total_allocated_amount > party_amount
);
frm.toggle_display(
"set_exchange_gain_loss",
frm.doc.paid_amount && frm.doc.received_amount && frm.doc.difference_amount
);
},
set_dynamic_labels: function (frm) {
@@ -801,27 +812,41 @@ frappe.ui.form.on("Payment Entry", {
paid_amount: function (frm) {
frm.set_value("base_paid_amount", flt(frm.doc.paid_amount) * flt(frm.doc.source_exchange_rate));
let company_currency = frappe.get_doc(":Company", frm.doc.company).default_currency;
if (!frm.doc.received_amount) {
if (frm.doc.paid_from_account_currency == frm.doc.paid_to_account_currency) {
frm.set_value("received_amount", frm.doc.paid_amount);
} else if (company_currency == frm.doc.paid_to_account_currency) {
frm.set_value("received_amount", frm.doc.base_paid_amount);
frm.set_value("base_received_amount", frm.doc.base_paid_amount);
}
}
frm.trigger("reset_received_amount");
frm.events.hide_unhide_fields(frm);
},
received_amount: function (frm) {
let company_currency = frappe.get_doc(":Company", frm.doc.company).default_currency;
frm.set_paid_amount_based_on_received_amount = true;
if (!frm.doc.paid_amount && frm.doc.paid_from_account_currency == frm.doc.paid_to_account_currency) {
frm.set_value("paid_amount", frm.doc.received_amount);
if (frm.doc.target_exchange_rate) {
frm.set_value("source_exchange_rate", frm.doc.target_exchange_rate);
}
frm.set_value("base_paid_amount", frm.doc.base_received_amount);
}
frm.set_value(
"base_received_amount",
flt(frm.doc.received_amount) * flt(frm.doc.target_exchange_rate)
);
if (!frm.doc.paid_amount) {
if (frm.doc.paid_from_account_currency == frm.doc.paid_to_account_currency) {
frm.set_value("paid_amount", frm.doc.received_amount);
if (frm.doc.target_exchange_rate) {
frm.set_value("source_exchange_rate", frm.doc.target_exchange_rate);
}
frm.set_value("base_paid_amount", frm.doc.base_received_amount);
} else if (company_currency == frm.doc.paid_from_account_currency) {
frm.set_value("paid_amount", frm.doc.base_received_amount);
frm.set_value("base_paid_amount", frm.doc.base_received_amount);
}
}
if (frm.doc.payment_type == "Pay")
frm.events.allocate_party_amount_against_ref_docs(frm, frm.doc.received_amount, true);
else frm.events.set_unallocated_amount(frm);
@@ -1115,36 +1140,34 @@ frappe.ui.form.on("Payment Entry", {
},
set_unallocated_amount: function (frm) {
var unallocated_amount = 0;
var total_deductions = frappe.utils.sum(
$.map(frm.doc.deductions || [], function (d) {
return flt(d.amount);
})
);
let unallocated_amount = 0;
let deductions_to_consider = 0;
for (const row of frm.doc.deductions || []) {
if (!row.is_exchange_gain_loss) deductions_to_consider += flt(row.amount);
}
const included_taxes = get_included_taxes(frm);
if (frm.doc.party) {
if (
frm.doc.payment_type == "Receive" &&
frm.doc.base_total_allocated_amount < frm.doc.base_received_amount + total_deductions &&
frm.doc.total_allocated_amount <
frm.doc.paid_amount + total_deductions / frm.doc.source_exchange_rate
) {
unallocated_amount =
(frm.doc.base_received_amount +
total_deductions -
flt(frm.doc.base_total_taxes_and_charges) -
frm.doc.base_total_allocated_amount) /
frm.doc.source_exchange_rate;
} else if (
frm.doc.payment_type == "Pay" &&
frm.doc.base_total_allocated_amount < frm.doc.base_paid_amount - total_deductions &&
frm.doc.total_allocated_amount <
frm.doc.received_amount + total_deductions / frm.doc.target_exchange_rate
frm.doc.base_total_allocated_amount < frm.doc.base_paid_amount + deductions_to_consider
) {
unallocated_amount =
(frm.doc.base_paid_amount +
flt(frm.doc.base_total_taxes_and_charges) -
(total_deductions + frm.doc.base_total_allocated_amount)) /
deductions_to_consider -
frm.doc.base_total_allocated_amount -
included_taxes) /
frm.doc.source_exchange_rate;
} else if (
frm.doc.payment_type == "Pay" &&
frm.doc.base_total_allocated_amount < frm.doc.base_received_amount - deductions_to_consider
) {
unallocated_amount =
(frm.doc.base_received_amount -
deductions_to_consider -
frm.doc.base_total_allocated_amount -
included_taxes) /
frm.doc.target_exchange_rate;
}
}
@@ -1238,77 +1261,85 @@ frappe.ui.form.on("Payment Entry", {
},
write_off_difference_amount: function (frm) {
frm.events.set_deductions_entry(frm, "write_off_account");
frm.events.set_write_off_deduction(frm);
},
set_exchange_gain_loss: function (frm) {
frm.events.set_deductions_entry(frm, "exchange_gain_loss_account");
base_paid_amount: function (frm) {
frm.events.set_exchange_gain_loss_deduction(frm);
},
set_deductions_entry: function (frm, account) {
if (frm.doc.difference_amount) {
frappe.call({
method: "erpnext.accounts.doctype.payment_entry.payment_entry.get_company_defaults",
args: {
company: frm.doc.company,
},
callback: function (r, rt) {
if (r.message) {
const write_off_row = $.map(frm.doc["deductions"] || [], function (t) {
return t.account == r.message[account] ? t : null;
});
base_received_amount: function (frm) {
frm.events.set_exchange_gain_loss_deduction(frm);
},
const difference_amount = flt(
frm.doc.difference_amount,
precision("difference_amount")
);
set_exchange_gain_loss_deduction: async function (frm) {
// wait for allocate_party_amount_against_ref_docs to finish
await frappe.after_ajax();
const base_paid_amount = frm.doc.base_paid_amount || 0;
const base_received_amount = frm.doc.base_received_amount || 0;
const exchange_gain_loss = flt(
base_paid_amount - base_received_amount,
get_deduction_amount_precision()
);
const add_deductions = (details) => {
let row = null;
if (!write_off_row.length && difference_amount) {
row = frm.add_child("deductions");
row.account = details[account];
row.cost_center = details["cost_center"];
} else {
row = write_off_row[0];
}
if (row) {
row.amount = flt(row.amount) + difference_amount;
} else {
frappe.msgprint(__("No gain or loss in the exchange rate"));
}
refresh_field("deductions");
};
if (!r.message[account]) {
frappe.prompt(
{
label: __("Please Specify Account"),
fieldname: account,
fieldtype: "Link",
options: "Account",
get_query: () => ({
filters: {
company: frm.doc.company,
},
}),
},
(values) => {
const details = Object.assign({}, r.message, values);
add_deductions(details);
},
__(frappe.unscrub(account))
);
} else {
add_deductions(r.message);
}
frm.events.set_unallocated_amount(frm);
}
},
});
if (!exchange_gain_loss) {
frm.events.delete_exchange_gain_loss(frm);
return;
}
const account_fieldname = "exchange_gain_loss_account";
let row = (frm.doc.deductions || []).find((t) => t.is_exchange_gain_loss);
if (!row) {
const response = await get_company_defaults(frm.doc.company);
const account =
response.message?.[account_fieldname] ||
(await prompt_for_missing_account(frm, account_fieldname));
row = frm.add_child("deductions");
row.account = account;
row.cost_center = response.message?.cost_center;
row.is_exchange_gain_loss = 1;
}
row.amount = exchange_gain_loss;
frm.refresh_field("deductions");
frm.events.set_unallocated_amount(frm);
},
delete_exchange_gain_loss: function (frm) {
const exchange_gain_loss_row = (frm.doc.deductions || []).find((row) => row.is_exchange_gain_loss);
if (!exchange_gain_loss_row) return;
exchange_gain_loss_row.amount = 0;
frm.get_field("deductions").grid.grid_rows[exchange_gain_loss_row.idx - 1].remove();
frm.refresh_field("deductions");
},
set_write_off_deduction: async function (frm) {
const difference_amount = flt(frm.doc.difference_amount, get_deduction_amount_precision());
if (!difference_amount) return;
const account_fieldname = "write_off_account";
const response = await get_company_defaults(frm.doc.company);
const write_off_account =
response.message?.[account_fieldname] ||
(await prompt_for_missing_account(frm, account_fieldname));
if (!write_off_account) return;
let row = (frm.doc["deductions"] || []).find((t) => t.account == write_off_account);
if (!row) {
row = frm.add_child("deductions");
row.account = write_off_account;
row.cost_center = response.message?.cost_center;
}
row.amount = flt(row.amount) + difference_amount;
frm.refresh_field("deductions");
frm.events.set_unallocated_amount(frm);
},
bank_account: function (frm) {
@@ -1323,6 +1354,24 @@ frappe.ui.form.on("Payment Entry", {
if (r.message) {
if (!frm.doc.mode_of_payment) {
frm.set_value(field, r.message.account);
} else {
frappe.call({
method: "frappe.client.get_value",
args: {
doctype: "Mode of Payment Account",
filters: {
parent: frm.doc.mode_of_payment,
company: frm.doc.company,
},
fieldname: "default_account",
parent: "Mode of Payment",
},
callback: function (res) {
if (!res.message.default_account) {
frm.set_value(field, r.message.account);
}
},
});
}
frm.set_value("bank", r.message.bank);
frm.set_value("bank_account_no", r.message.bank_account_no);
@@ -1774,6 +1823,13 @@ frappe.ui.form.on("Advance Taxes and Charges", {
});
frappe.ui.form.on("Payment Entry Deduction", {
before_deductions_remove: function (doc, cdt, cdn) {
const row = frappe.get_doc(cdt, cdn);
if (row.is_exchange_gain_loss && row.amount) {
frappe.throw(__("Cannot delete Exchange Gain/Loss row"));
}
},
amount: function (frm) {
frm.events.set_unallocated_amount(frm);
},
@@ -1795,3 +1851,53 @@ function set_default_party_type(frm) {
if (party_type) frm.set_value("party_type", party_type);
}
function get_included_taxes(frm) {
let included_taxes = 0;
for (const tax of frm.doc.taxes) {
if (!tax.included_in_paid_amount) continue;
if (tax.add_deduct_tax == "Add") {
included_taxes += tax.base_tax_amount;
} else {
included_taxes -= tax.base_tax_amount;
}
}
return included_taxes;
}
function get_company_defaults(company) {
return frappe.call({
method: "erpnext.accounts.doctype.payment_entry.payment_entry.get_company_defaults",
args: {
company: company,
},
});
}
function prompt_for_missing_account(frm, account) {
return new Promise((resolve) => {
const dialog = frappe.prompt(
{
label: __(frappe.unscrub(account)),
fieldname: account,
fieldtype: "Link",
options: "Account",
get_query: () => ({
filters: {
company: frm.doc.company,
},
}),
},
(values) => resolve(values?.[account]),
__("Please Specify Account")
);
dialog.on_hide = () => resolve("");
});
}
function get_deduction_amount_precision() {
return frappe.meta.get_field_precision(frappe.meta.get_field("Payment Entry Deduction", "amount"));
}

View File

@@ -21,6 +21,7 @@
"party_name",
"book_advance_payments_in_separate_party_account",
"reconcile_on_advance_payment_date",
"advance_reconciliation_takes_effect_on",
"column_break_11",
"bank_account",
"party_bank_account",
@@ -56,7 +57,6 @@
"section_break_34",
"total_allocated_amount",
"base_total_allocated_amount",
"set_exchange_gain_loss",
"column_break_36",
"unallocated_amount",
"difference_amount",
@@ -224,6 +224,7 @@
"label": "Accounts"
},
{
"allow_on_submit": 1,
"depends_on": "party",
"fieldname": "party_balance",
"fieldtype": "Currency",
@@ -253,6 +254,7 @@
"reqd": 1
},
{
"allow_on_submit": 1,
"depends_on": "paid_from",
"fieldname": "paid_from_account_balance",
"fieldtype": "Currency",
@@ -286,6 +288,7 @@
"reqd": 1
},
{
"allow_on_submit": 1,
"depends_on": "paid_to",
"fieldname": "paid_to_account_balance",
"fieldtype": "Currency",
@@ -390,11 +393,6 @@
"print_hide": 1,
"read_only": 1
},
{
"fieldname": "set_exchange_gain_loss",
"fieldtype": "Button",
"label": "Set Exchange Gain / Loss"
},
{
"fieldname": "column_break_36",
"fieldtype": "Column Break"
@@ -788,6 +786,16 @@
"options": "No\nYes",
"print_hide": 1,
"search_index": 1
},
{
"default": "Oldest Of Invoice Or Advance",
"fetch_from": "company.reconciliation_takes_effect_on",
"fieldname": "advance_reconciliation_takes_effect_on",
"fieldtype": "Select",
"hidden": 1,
"label": "Advance Reconciliation Takes Effect On",
"no_copy": 1,
"options": "Advance Payment Date\nOldest Of Invoice Or Advance\nReconciliation Date"
}
],
"index_web_pages_for_search": 1,
@@ -801,7 +809,7 @@
"table_fieldname": "payment_entries"
}
],
"modified": "2024-05-31 17:07:06.197249",
"modified": "2025-01-31 17:27:28.555246",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Entry",

View File

@@ -25,6 +25,10 @@ from erpnext.accounts.doctype.invoice_discounting.invoice_discounting import (
get_party_account_based_on_invoice_discounting,
)
from erpnext.accounts.doctype.journal_entry.journal_entry import get_default_bank_cash_account
from erpnext.accounts.doctype.repost_accounting_ledger.repost_accounting_ledger import (
validate_docs_for_deferred_accounting,
validate_docs_for_voucher_types,
)
from erpnext.accounts.doctype.tax_withholding_category.tax_withholding_category import (
get_party_tax_withholding_details,
)
@@ -114,6 +118,23 @@ class PaymentEntry(AccountsController):
self.update_advance_paid() # advance_paid_status depends on the payment request amount
self.set_status()
def validate_for_repost(self):
validate_docs_for_voucher_types(["Payment Entry"])
validate_docs_for_deferred_accounting([self.name], [])
def on_update_after_submit(self):
# Flag will be set on Reconciliation
# Reconciliation tool will anyways repost ledger entries. So, no need to check and do implicit repost.
if self.flags.get("ignore_reposting_on_reconciliation"):
return
self.needs_repost = self.check_if_fields_updated(
fields_to_check=[], child_tables={"references": [], "taxes": [], "deductions": []}
)
if self.needs_repost:
self.validate_for_repost()
self.repost_accounting_entries()
def set_liability_account(self):
# Auto setting liability account should only be done during 'draft' status
if self.docstatus > 0 or self.payment_type == "Internal Transfer":
@@ -543,7 +564,7 @@ class PaymentEntry(AccountsController):
if d.reference_doctype not in valid_reference_doctypes:
frappe.throw(
_("Reference Doctype must be one of {0}").format(
comma_or(_(d) for d in valid_reference_doctypes)
comma_or([_(d) for d in valid_reference_doctypes])
)
)
@@ -893,6 +914,7 @@ class PaymentEntry(AccountsController):
self.set_amounts_in_company_currency()
self.set_total_allocated_amount()
self.set_unallocated_amount()
self.set_exchange_gain_loss()
self.set_difference_amount()
def validate_amounts(self):
@@ -988,10 +1010,10 @@ class PaymentEntry(AccountsController):
if d.exchange_rate is None:
d.exchange_rate = 1
allocated_amount_in_pe_exchange_rate = flt(
allocated_amount_in_ref_exchange_rate = flt(
flt(d.allocated_amount) * flt(d.exchange_rate), self.precision("base_paid_amount")
)
d.exchange_gain_loss = base_allocated_amount - allocated_amount_in_pe_exchange_rate
d.exchange_gain_loss = base_allocated_amount - allocated_amount_in_ref_exchange_rate
return base_allocated_amount
def set_total_allocated_amount(self):
@@ -1009,29 +1031,80 @@ class PaymentEntry(AccountsController):
def set_unallocated_amount(self):
self.unallocated_amount = 0
if self.party:
total_deductions = sum(flt(d.amount) for d in self.get("deductions"))
included_taxes = self.get_included_taxes()
if (
self.payment_type == "Receive"
and self.base_total_allocated_amount < self.base_received_amount + total_deductions
and self.total_allocated_amount
< flt(self.paid_amount) + (total_deductions / self.source_exchange_rate)
):
self.unallocated_amount = (
self.base_received_amount + total_deductions - self.base_total_allocated_amount
) / self.source_exchange_rate
self.unallocated_amount -= included_taxes
elif (
self.payment_type == "Pay"
and self.base_total_allocated_amount < (self.base_paid_amount - total_deductions)
and self.total_allocated_amount
< flt(self.received_amount) + (total_deductions / self.target_exchange_rate)
):
self.unallocated_amount = (
self.base_paid_amount - (total_deductions + self.base_total_allocated_amount)
) / self.target_exchange_rate
self.unallocated_amount -= included_taxes
if not self.party:
return
deductions_to_consider = sum(
flt(d.amount) for d in self.get("deductions") if not d.is_exchange_gain_loss
)
included_taxes = self.get_included_taxes()
if self.payment_type == "Receive" and self.base_total_allocated_amount < (
self.base_paid_amount + deductions_to_consider
):
self.unallocated_amount = (
self.base_paid_amount
+ deductions_to_consider
- self.base_total_allocated_amount
- included_taxes
) / self.source_exchange_rate
elif self.payment_type == "Pay" and self.base_total_allocated_amount < (
self.base_received_amount - deductions_to_consider
):
self.unallocated_amount = (
self.base_received_amount
- deductions_to_consider
- self.base_total_allocated_amount
- included_taxes
) / self.target_exchange_rate
def set_exchange_gain_loss(self):
exchange_gain_loss = flt(
self.base_paid_amount - self.base_received_amount,
self.precision("amount", "deductions"),
)
exchange_gain_loss_rows = [row for row in self.get("deductions") if row.is_exchange_gain_loss]
exchange_gain_loss_row = exchange_gain_loss_rows.pop(0) if exchange_gain_loss_rows else None
for row in exchange_gain_loss_rows:
self.remove(row)
if not exchange_gain_loss:
if exchange_gain_loss_row:
self.remove(exchange_gain_loss_row)
return
if not exchange_gain_loss_row:
values = frappe.get_cached_value(
"Company", self.company, ("exchange_gain_loss_account", "cost_center"), as_dict=True
)
for fieldname, value in values.items():
if value:
continue
label = _(frappe.get_meta("Company").get_label(fieldname))
return frappe.msgprint(
_("Please set {0} in Company {1} to account for Exchange Gain / Loss").format(
label, get_link_to_form("Company", self.company)
),
title=_("Missing Default in Company"),
indicator="red" if self.docstatus.is_submitted() else "yellow",
raise_exception=self.docstatus.is_submitted(),
)
exchange_gain_loss_row = self.append(
"deductions",
{
"account": values.exchange_gain_loss_account,
"cost_center": values.cost_center,
"is_exchange_gain_loss": 1,
},
)
exchange_gain_loss_row.amount = exchange_gain_loss
def set_difference_amount(self):
base_unallocated_amount = flt(self.unallocated_amount) * (
@@ -1059,11 +1132,13 @@ class PaymentEntry(AccountsController):
def get_included_taxes(self):
included_taxes = 0
for tax in self.get("taxes"):
if tax.included_in_paid_amount:
if tax.add_deduct_tax == "Add":
included_taxes += tax.base_tax_amount
else:
included_taxes -= tax.base_tax_amount
if not tax.included_in_paid_amount:
continue
if tax.add_deduct_tax == "Add":
included_taxes += tax.base_tax_amount
else:
included_taxes -= tax.base_tax_amount
return included_taxes
@@ -1219,11 +1294,19 @@ class PaymentEntry(AccountsController):
dr_or_cr = "debit" if dr_or_cr == "credit" else "credit"
gle.update(
{
dr_or_cr: allocated_amount_in_company_currency,
dr_or_cr + "_in_account_currency": d.allocated_amount,
"cost_center": cost_center,
}
self.get_gl_dict(
{
"account": self.party_account,
"party_type": self.party_type,
"party": self.party,
"against": against_account,
"account_currency": self.party_account_currency,
"cost_center": cost_center,
dr_or_cr + "_in_account_currency": d.allocated_amount,
dr_or_cr: allocated_amount_in_company_currency,
},
item=self,
)
)
if self.book_advance_payments_in_separate_party_account:
@@ -1339,16 +1422,26 @@ class PaymentEntry(AccountsController):
"voucher_detail_no": invoice.name,
}
if self.reconcile_on_advance_payment_date:
posting_date = self.posting_date
if invoice.reconcile_effect_on:
posting_date = invoice.reconcile_effect_on
else:
date_field = "posting_date"
if invoice.reference_doctype in ["Sales Order", "Purchase Order"]:
date_field = "transaction_date"
posting_date = frappe.db.get_value(invoice.reference_doctype, invoice.reference_name, date_field)
if getdate(posting_date) < getdate(self.posting_date):
# For backwards compatibility
# Supporting reposting on payment entries reconciled before select field introduction
if self.advance_reconciliation_takes_effect_on == "Advance Payment Date":
posting_date = self.posting_date
elif self.advance_reconciliation_takes_effect_on == "Oldest Of Invoice Or Advance":
date_field = "posting_date"
if invoice.reference_doctype in ["Sales Order", "Purchase Order"]:
date_field = "transaction_date"
posting_date = frappe.db.get_value(
invoice.reference_doctype, invoice.reference_name, date_field
)
if getdate(posting_date) < getdate(self.posting_date):
posting_date = self.posting_date
elif self.advance_reconciliation_takes_effect_on == "Reconciliation Date":
posting_date = nowdate()
frappe.db.set_value("Payment Entry Reference", invoice.name, "reconcile_effect_on", posting_date)
dr_or_cr, account = self.get_dr_and_account_for_advances(invoice)
args_dict["account"] = account
@@ -1504,6 +1597,14 @@ class PaymentEntry(AccountsController):
elif self.payment_type in ("Pay", "Internal Transfer"):
return self.paid_from
def get_value_in_transaction_currency(self, account_currency, gl_dict, field):
company_currency = erpnext.get_company_currency(self.company)
conversion_rate = self.target_exchange_rate
if self.paid_from_account_currency != company_currency:
conversion_rate = self.source_exchange_rate
return flt(gl_dict.get(field, 0) / (conversion_rate or 1))
def update_advance_paid(self):
if self.payment_type in ("Receive", "Pay") and self.party:
for d in self.get("references"):
@@ -1718,7 +1819,7 @@ class PaymentEntry(AccountsController):
paid_amount -= sum(flt(d.amount, precision) for d in self.deductions)
for ref in self.references:
reference_outstanding_amount = ref.outstanding_amount
reference_outstanding_amount = flt(ref.outstanding_amount)
abs_outstanding_amount = abs(reference_outstanding_amount)
if reference_outstanding_amount > 0:
@@ -1746,7 +1847,7 @@ class PaymentEntry(AccountsController):
if paid_amount > total_negative_outstanding:
if total_negative_outstanding == 0:
frappe.msgprint(
_("Cannot {0} from {2} without any negative outstanding invoice").format(
_("Cannot {0} from {1} without any negative outstanding invoice").format(
self.payment_type,
self.party_type,
)
@@ -1904,8 +2005,8 @@ class PaymentEntry(AccountsController):
def get_matched_payment_request_of_references(references=None):
"""
Get those `Payment Requests` which are matched with `References`.\n
- Amount must be same.
- Only single `Payment Request` available for this amount.
- Amount must be same.
- Only single `Payment Request` available for this amount.
Example: [(reference_doctype, reference_name, allocated_amount, payment_request), ...]
"""
@@ -2007,7 +2108,7 @@ def get_outstanding_of_references_with_payment_term(references=None):
def get_outstanding_of_references_with_no_payment_term(references):
"""
Fetch outstanding amount of `References` which have no `Payment Term` set.\n
- Fetch outstanding amount from `References` it self.
- Fetch outstanding amount from `References` it self.
Note: `None` is used for allocation of `Payment Request`
Example: {(reference_doctype, reference_name, None): outstanding_amount, ...}
@@ -2163,10 +2264,17 @@ def get_outstanding_reference_documents(args, validate=False):
outstanding_invoices = []
negative_outstanding_invoices = []
party_account = args.get("party_account")
# get party account if advance account is set.
if args.get("book_advance_payments_in_separate_party_account"):
party_account = get_party_account(args.get("party_type"), args.get("party"), args.get("company"))
else:
party_account = args.get("party_account")
accounts = get_party_account(
args.get("party_type"), args.get("party"), args.get("company"), include_advance=True
)
advance_account = accounts[1] if len(accounts) >= 1 else None
if party_account == advance_account:
party_account = accounts[0]
if args.get("get_outstanding_invoices"):
outstanding_invoices = get_outstanding_invoices(
@@ -2746,6 +2854,7 @@ def get_payment_entry(
pe.paid_amount = paid_amount
pe.received_amount = received_amount
pe.letter_head = doc.get("letter_head")
pe.bank_account = frappe.db.get_value("Bank Account", {"is_company_account": 1, "is_default": 1}, "name")
if dt in ["Purchase Order", "Sales Order", "Sales Invoice", "Purchase Invoice"]:
pe.project = doc.get("project") or reduce(
@@ -2754,7 +2863,7 @@ def get_payment_entry(
if pe.party_type in ["Customer", "Supplier"]:
bank_account = get_party_bank_account(pe.party_type, pe.party)
pe.set("bank_account", bank_account)
pe.set("party_bank_account", bank_account)
pe.set_bank_account_data()
# only Purchase Invoice can be blocked individually
@@ -2821,9 +2930,6 @@ def get_payment_entry(
update_accounting_dimensions(pe, doc)
if party_account and bank:
pe.set_exchange_rate(ref_doc=doc)
pe.set_amounts()
if discount_amount:
base_total_discount_loss = 0
if frappe.db.get_single_value("Accounts Settings", "book_tax_discount_loss"):
@@ -2833,7 +2939,8 @@ def get_payment_entry(
pe, doc, discount_amount, base_total_discount_loss, party_account_currency
)
pe.set_difference_amount()
pe.set_exchange_rate(ref_doc=doc)
pe.set_amounts()
# If PE is created from PR directly, then no need to find open PRs for the references
if not created_from_payment_request:
@@ -2845,7 +2952,7 @@ def get_payment_entry(
def get_open_payment_requests_for_references(references=None):
"""
Fetch all unpaid Payment Requests for the references. \n
- Each reference can have multiple Payment Requests. \n
- Each reference can have multiple Payment Requests. \n
Example: {("Sales Invoice", "SINV-00001"): {"PREQ-00001": 1000, "PREQ-00002": 2000}}
"""
@@ -2869,6 +2976,7 @@ def get_open_payment_requests_for_references(references=None):
.where(Tuple(PR.reference_doctype, PR.reference_name).isin(list(refs)))
.where(PR.status != "Paid")
.where(PR.docstatus == 1)
.where(PR.outstanding_amount > 0) # to avoid old PRs with 0 outstanding amount
.orderby(Coalesce(PR.transaction_date, PR.creation), order=frappe.qb.asc)
).run(as_dict=True)
@@ -3179,13 +3287,14 @@ def set_pending_discount_loss(pe, doc, discount_amount, base_total_discount_loss
book_tax_loss = frappe.db.get_single_value("Accounts Settings", "book_tax_discount_loss")
account_type = "round_off_account" if book_tax_loss else "default_discount_account"
pe.set_gain_or_loss(
account_details={
pe.append(
"deductions",
{
"account": frappe.get_cached_value("Company", pe.company, account_type),
"cost_center": pe.cost_center
or frappe.get_cached_value("Company", pe.company, "cost_center"),
"amount": discount_amount * positive_negative,
}
},
)

View File

@@ -479,16 +479,9 @@ class TestPaymentEntry(FrappeTestCase):
self.assertEqual(pe.deductions[0].account, "Write Off - _TC")
# Exchange loss
self.assertEqual(pe.difference_amount, 300.0)
pe.append(
"deductions",
{
"account": "_Test Exchange Gain/Loss - _TC",
"cost_center": "_Test Cost Center - _TC",
"amount": 300.0,
},
)
self.assertEqual(pe.deductions[-1].amount, 300.0)
pe.deductions[-1].account = "_Test Exchange Gain/Loss - _TC"
pe.deductions[-1].cost_center = "_Test Cost Center - _TC"
pe.insert()
pe.submit()
@@ -552,16 +545,10 @@ class TestPaymentEntry(FrappeTestCase):
pe.reference_no = "1"
pe.reference_date = "2016-01-01"
self.assertEqual(pe.difference_amount, 100)
self.assertEqual(pe.deductions[0].amount, 100)
pe.deductions[0].account = "_Test Exchange Gain/Loss - _TC"
pe.deductions[0].cost_center = "_Test Cost Center - _TC"
pe.append(
"deductions",
{
"account": "_Test Exchange Gain/Loss - _TC",
"cost_center": "_Test Cost Center - _TC",
"amount": 100,
},
)
pe.insert()
pe.submit()
@@ -654,16 +641,9 @@ class TestPaymentEntry(FrappeTestCase):
pe.set_exchange_rate()
pe.set_amounts()
self.assertEqual(pe.difference_amount, 500)
pe.append(
"deductions",
{
"account": "_Test Exchange Gain/Loss - _TC",
"cost_center": "_Test Cost Center - _TC",
"amount": 500,
},
)
self.assertEqual(pe.deductions[0].amount, 500)
pe.deductions[0].account = "_Test Exchange Gain/Loss - _TC"
pe.deductions[0].cost_center = "_Test Cost Center - _TC"
pe.insert()
pe.submit()
@@ -1499,7 +1479,7 @@ class TestPaymentEntry(FrappeTestCase):
parent_account="Current Liabilities - _TC",
account_name="Advances Paid",
company=company,
account_type="Liability",
account_type="Payable",
)
frappe.db.set_value(

View File

@@ -9,6 +9,7 @@
"cost_center",
"amount",
"column_break_2",
"is_exchange_gain_loss",
"description"
],
"fields": [
@@ -45,12 +46,20 @@
"fieldname": "description",
"fieldtype": "Small Text",
"label": "Description"
},
{
"default": "0",
"depends_on": "eval:doc.is_exchange_gain_loss",
"fieldname": "is_exchange_gain_loss",
"fieldtype": "Check",
"label": "Is Exchange Gain / Loss?",
"read_only": 1
}
],
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
"modified": "2023-03-06 07:11:57.739619",
"modified": "2024-11-05 16:07:47.307971",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Entry Deduction",

View File

@@ -18,6 +18,7 @@ class PaymentEntryDeduction(Document):
amount: DF.Currency
cost_center: DF.Link
description: DF.SmallText | None
is_exchange_gain_loss: DF.Check
parent: DF.Data
parentfield: DF.Data
parenttype: DF.Data

View File

@@ -13,6 +13,7 @@
"payment_term_outstanding",
"account_type",
"payment_type",
"reconcile_effect_on",
"column_break_4",
"total_amount",
"outstanding_amount",
@@ -144,12 +145,18 @@
"is_virtual": 1,
"label": "Payment Request Outstanding",
"read_only": 1
},
{
"fieldname": "reconcile_effect_on",
"fieldtype": "Date",
"label": "Reconcile Effect On",
"read_only": 1
}
],
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
"modified": "2024-09-16 18:11:50.019343",
"modified": "2025-01-13 15:56:18.895082",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Entry Reference",

View File

@@ -30,6 +30,7 @@ class PaymentEntryReference(Document):
payment_term: DF.Link | None
payment_term_outstanding: DF.Float
payment_type: DF.Data | None
reconcile_effect_on: DF.Date | None
reference_doctype: DF.Link
reference_name: DF.DynamicLink
total_amount: DF.Float

View File

@@ -153,10 +153,7 @@ class PaymentReconciliation(Document):
self.add_payment_entries(non_reconciled_payments)
def get_payment_entries(self):
if self.default_advance_account:
party_account = [self.receivable_payable_account, self.default_advance_account]
else:
party_account = [self.receivable_payable_account]
party_account = [self.receivable_payable_account]
order_doctype = "Sales Order" if self.party_type == "Customer" else "Purchase Order"
condition = frappe._dict(
@@ -187,6 +184,7 @@ class PaymentReconciliation(Document):
self.party,
party_account,
order_doctype,
default_advance_account=self.default_advance_account,
against_all_orders=True,
limit=self.payment_limit,
condition=condition,
@@ -337,6 +335,7 @@ class PaymentReconciliation(Document):
for payment in non_reconciled_payments:
row = self.append("payments", {})
row.update(payment)
row.is_advance = payment.book_advance_payments_in_separate_party_account
def get_invoice_entries(self):
# Fetch JVs, Sales and Purchase Invoices for 'invoices' to reconcile against
@@ -426,6 +425,9 @@ class PaymentReconciliation(Document):
def allocate_entries(self, args):
self.validate_entries()
exc_gain_loss_posting_date = frappe.db.get_single_value(
"Accounts Settings", "exchange_gain_loss_posting_date", cache=True
)
invoice_exchange_map = self.get_invoice_exchange_map(args.get("invoices"), args.get("payments"))
default_exchange_gain_loss_account = frappe.get_cached_value(
"Company", self.company, "exchange_gain_loss_account"
@@ -452,6 +454,11 @@ class PaymentReconciliation(Document):
res.difference_account = default_exchange_gain_loss_account
res.exchange_rate = inv.get("exchange_rate")
res.update({"gain_loss_posting_date": pay.get("posting_date")})
if not pay.get("is_advance"):
if exc_gain_loss_posting_date == "Invoice":
res.update({"gain_loss_posting_date": inv.get("invoice_date")})
elif exc_gain_loss_posting_date == "Reconciliation Date":
res.update({"gain_loss_posting_date": nowdate()})
if pay.get("amount") == 0:
entries.append(res)

View File

@@ -6,6 +6,7 @@ import frappe
from frappe import qb
from frappe.tests.utils import FrappeTestCase, change_settings
from frappe.utils import add_days, add_years, flt, getdate, nowdate, today
from frappe.utils.data import getdate as convert_to_date
from erpnext import get_default_cost_center
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
@@ -1671,7 +1672,7 @@ class TestPaymentReconciliation(FrappeTestCase):
{
"book_advance_payments_in_separate_party_account": 1,
"default_advance_paid_account": self.advance_payable_account,
"reconcile_on_advance_payment_date": 1,
"reconciliation_takes_effect_on": "Advance Payment Date",
},
)
@@ -1720,7 +1721,7 @@ class TestPaymentReconciliation(FrappeTestCase):
{
"book_advance_payments_in_separate_party_account": 1,
"default_advance_received_account": self.advance_receivable_account,
"reconcile_on_advance_payment_date": 0,
"reconciliation_takes_effect_on": "Oldest Of Invoice Or Advance",
},
)
amount = 200.0
@@ -1829,7 +1830,7 @@ class TestPaymentReconciliation(FrappeTestCase):
{
"book_advance_payments_in_separate_party_account": 1,
"default_advance_paid_account": self.advance_payable_account,
"reconcile_on_advance_payment_date": 0,
"reconciliation_takes_effect_on": "Oldest Of Invoice Or Advance",
},
)
amount = 200.0
@@ -2048,6 +2049,102 @@ class TestPaymentReconciliation(FrappeTestCase):
self.assertEqual(pr.get("invoices"), [])
self.assertEqual(pr.get("payments"), [])
def test_advance_reconciliation_effect_on_same_date(self):
frappe.db.set_value(
"Company",
self.company,
{
"book_advance_payments_in_separate_party_account": 1,
"default_advance_received_account": self.advance_receivable_account,
"reconciliation_takes_effect_on": "Reconciliation Date",
},
)
inv_date = convert_to_date(add_days(nowdate(), -1))
adv_date = convert_to_date(add_days(nowdate(), -2))
si = self.create_sales_invoice(posting_date=inv_date, qty=1, rate=200)
pe = self.create_payment_entry(posting_date=adv_date, amount=80).save().submit()
pr = self.create_payment_reconciliation()
pr.from_invoice_date = add_days(nowdate(), -1)
pr.to_invoice_date = nowdate()
pr.from_payment_date = add_days(nowdate(), -2)
pr.to_payment_date = nowdate()
pr.default_advance_account = self.advance_receivable_account
# reconcile multiple payments against invoice
pr.get_unreconciled_entries()
invoices = [x.as_dict() for x in pr.get("invoices")]
payments = [x.as_dict() for x in pr.get("payments")]
pr.allocate_entries(frappe._dict({"invoices": invoices, "payments": payments}))
# Difference amount should not be calculated for base currency accounts
for row in pr.allocation:
self.assertEqual(flt(row.get("difference_amount")), 0.0)
pr.reconcile()
si.reload()
self.assertEqual(si.status, "Partly Paid")
# check PR tool output post reconciliation
self.assertEqual(len(pr.get("invoices")), 1)
self.assertEqual(pr.get("invoices")[0].get("outstanding_amount"), 120)
self.assertEqual(pr.get("payments"), [])
# Assert Ledger Entries
gl_entries = frappe.db.get_all(
"GL Entry",
filters={"voucher_no": pe.name},
fields=["account", "posting_date", "voucher_no", "against_voucher", "debit", "credit"],
order_by="account, against_voucher, debit",
)
expected_gl = [
{
"account": self.advance_receivable_account,
"posting_date": adv_date,
"voucher_no": pe.name,
"against_voucher": pe.name,
"debit": 0.0,
"credit": 80.0,
},
{
"account": self.advance_receivable_account,
"posting_date": convert_to_date(nowdate()),
"voucher_no": pe.name,
"against_voucher": pe.name,
"debit": 80.0,
"credit": 0.0,
},
{
"account": self.debit_to,
"posting_date": convert_to_date(nowdate()),
"voucher_no": pe.name,
"against_voucher": si.name,
"debit": 0.0,
"credit": 80.0,
},
{
"account": self.bank,
"posting_date": adv_date,
"voucher_no": pe.name,
"against_voucher": None,
"debit": 80.0,
"credit": 0.0,
},
]
self.assertEqual(expected_gl, gl_entries)
# cancel PE
pe.reload()
pe.cancel()
pr.get_unreconciled_entries()
# check PR tool output
self.assertEqual(len(pr.get("invoices")), 1)
self.assertEqual(len(pr.get("payments")), 0)
self.assertEqual(pr.get("invoices")[0].get("outstanding_amount"), 200)
def make_customer(customer_name, currency=None):
if not frappe.db.exists("Customer", customer_name):

View File

@@ -58,7 +58,9 @@
"payment_account",
"payment_channel",
"payment_order",
"amended_from"
"amended_from",
"column_break_iiuv",
"phone_number"
],
"fields": [
{
@@ -376,6 +378,7 @@
"read_only": 1
},
{
"depends_on": "eval: doc.payment_channel==\"Phone\"",
"fetch_from": "payment_gateway_account.payment_channel",
"fieldname": "payment_channel",
"fieldtype": "Select",
@@ -429,13 +432,22 @@
"fieldtype": "Data",
"label": "Party Name",
"read_only": 1
},
{
"fieldname": "column_break_iiuv",
"fieldtype": "Column Break"
},
{
"fieldname": "phone_number",
"fieldtype": "Data",
"label": "Phone Number"
}
],
"in_create": 1,
"index_web_pages_for_search": 1,
"is_submittable": 1,
"links": [],
"modified": "2024-10-23 12:23:40.117336",
"modified": "2024-12-27 21:29:10.361894",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Request",

View File

@@ -3,7 +3,7 @@ import json
import frappe
from frappe import _, qb
from frappe.model.document import Document
from frappe.query_builder.functions import Sum
from frappe.query_builder.functions import Abs, Sum
from frappe.utils import flt, nowdate
from frappe.utils.background_jobs import enqueue
@@ -224,6 +224,7 @@ class PaymentRequest(Document):
sender=self.email_to,
currency=self.currency,
payment_gateway=self.payment_gateway,
phone_number=self.phone_number,
)
controller.validate_transaction_currency(self.currency)
@@ -312,6 +313,7 @@ class PaymentRequest(Document):
"payer_name": data.customer_name,
"order_id": self.name,
"currency": self.currency,
"payment_gateway": self.payment_gateway,
}
)
@@ -564,6 +566,8 @@ def make_payment_request(**args):
# fetches existing payment request `grand_total` amount
existing_payment_request_amount = get_existing_payment_request_amount(ref_doc.doctype, ref_doc.name)
existing_paid_amount = get_existing_paid_amount(ref_doc.doctype, ref_doc.name)
def validate_and_calculate_grand_total(grand_total, existing_payment_request_amount):
grand_total -= existing_payment_request_amount
if not grand_total:
@@ -583,6 +587,15 @@ def make_payment_request(**args):
else:
grand_total = validate_and_calculate_grand_total(grand_total, existing_payment_request_amount)
if existing_paid_amount:
if ref_doc.party_account_currency == ref_doc.currency:
if ref_doc.conversion_rate:
grand_total -= flt(existing_paid_amount / ref_doc.conversion_rate)
else:
grand_total -= flt(existing_paid_amount)
else:
grand_total -= flt(existing_paid_amount / ref_doc.conversion_rate)
if draft_payment_request:
frappe.db.set_value(
"Payment Request", draft_payment_request, "grand_total", grand_total, update_modified=False
@@ -624,6 +637,7 @@ def make_payment_request(**args):
"party": args.get("party") or ref_doc.get("customer"),
"bank_account": bank_account,
"party_name": args.get("party_name") or ref_doc.get("customer_name"),
"phone_number": args.get("phone_number") if args.get("phone_number") else None,
}
)
@@ -753,6 +767,32 @@ def get_existing_payment_request_amount(ref_dt, ref_dn, statuses: list | None =
return response[0][0] if response[0] else 0
def get_existing_paid_amount(doctype, name):
PL = frappe.qb.DocType("Payment Ledger Entry")
PER = frappe.qb.DocType("Payment Entry Reference")
query = (
frappe.qb.from_(PL)
.left_join(PER)
.on(
(PL.against_voucher_type == PER.reference_doctype)
& (PL.against_voucher_no == PER.reference_name)
& (PL.voucher_type == PER.parenttype)
& (PL.voucher_no == PER.parent)
)
.select(Abs(Sum(PL.amount)).as_("total_paid_amount"))
.where(PL.against_voucher_type.eq(doctype))
.where(PL.against_voucher_no.eq(name))
.where(PL.amount < 0)
.where(PL.delinked == 0)
.where(PER.docstatus == 1)
.where(PER.payment_request.isnull())
)
response = query.run()
return response[0][0] if response[0] else 0
def get_gateway_details(args): # nosemgrep
"""
Return gateway and payment account of default payment gateway
@@ -955,12 +995,7 @@ def get_open_payment_requests_query(doctype, txt, searchfield, start, page_len,
open_payment_requests = frappe.get_list(
"Payment Request",
filters={
**filters,
"status": ["!=", "Paid"],
"outstanding_amount": ["!=", 0], # for compatibility with old data
"docstatus": 1,
},
filters=filters,
fields=["name", "grand_total", "outstanding_amount"],
order_by="transaction_date ASC,creation ASC",
)

View File

@@ -0,0 +1,14 @@
from frappe import _
def get_data():
return {
"fieldname": "payment_request",
"internal_links": {
"Payment Entry": ["references", "payment_request"],
"Payment Order": ["references", "payment_order"],
},
"transactions": [
{"label": _("Payment"), "items": ["Payment Entry", "Payment Order"]},
],
}

View File

@@ -1,19 +1,18 @@
const INDICATORS = {
"Partially Paid": "orange",
Cancelled: "red",
Draft: "red",
Failed: "red",
Initiated: "green",
Paid: "blue",
Requested: "green",
};
frappe.listview_settings["Payment Request"] = {
add_fields: ["status"],
get_indicator: function (doc) {
if (doc.status == "Draft") {
return [__("Draft"), "gray", "status,=,Draft"];
}
if (doc.status == "Requested") {
return [__("Requested"), "green", "status,=,Requested"];
} else if (doc.status == "Initiated") {
return [__("Initiated"), "green", "status,=,Initiated"];
} else if (doc.status == "Partially Paid") {
return [__("Partially Paid"), "orange", "status,=,Partially Paid"];
} else if (doc.status == "Paid") {
return [__("Paid"), "blue", "status,=,Paid"];
} else if (doc.status == "Cancelled") {
return [__("Cancelled"), "red", "status,=,Cancelled"];
}
if (!doc.status || !INDICATORS[doc.status]) return;
return [__(doc.status), INDICATORS[doc.status], `status,=,${doc.status}`];
},
};

View File

@@ -7,6 +7,7 @@ import unittest
import frappe
from frappe.tests.utils import FrappeTestCase, change_settings
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
from erpnext.accounts.doctype.payment_entry.test_payment_entry import create_payment_terms_template
from erpnext.accounts.doctype.payment_request.payment_request import make_payment_request
from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice
@@ -82,8 +83,7 @@ class TestPaymentRequest(FrappeTestCase):
def test_payment_entry_against_purchase_invoice(self):
si_usd = make_purchase_invoice(
customer="_Test Supplier USD",
debit_to="_Test Payable USD - _TC",
supplier="_Test Supplier USD",
currency="USD",
conversion_rate=50,
)
@@ -107,8 +107,7 @@ class TestPaymentRequest(FrappeTestCase):
def test_multiple_payment_entry_against_purchase_invoice(self):
purchase_invoice = make_purchase_invoice(
customer="_Test Supplier USD",
debit_to="_Test Payable USD - _TC",
supplier="_Test Supplier USD",
currency="USD",
conversion_rate=50,
)
@@ -524,3 +523,87 @@ class TestPaymentRequest(FrappeTestCase):
self.assertEqual(pr.grand_total, 1000)
so.load_from_db()
def test_partial_paid_invoice_with_payment_request(self):
si = create_sales_invoice(currency="INR", qty=1, rate=5000)
si.save()
si.submit()
pe = get_payment_entry("Sales Invoice", si.name, bank_account="_Test Bank - _TC")
pe.reference_no = "PAYEE0002"
pe.reference_date = frappe.utils.nowdate()
pe.paid_amount = 2500
pe.references[0].allocated_amount = 2500
pe.save()
pe.submit()
si.load_from_db()
pr = make_payment_request(dt="Sales Invoice", dn=si.name, mute_email=1)
self.assertEqual(pr.grand_total, si.outstanding_amount)
def test_partial_paid_invoice_with_more_payment_entry(self):
pi = make_purchase_invoice(currency="INR", qty=1, rate=500)
pi.submit()
pi_1 = make_purchase_invoice(currency="INR", qty=1, rate=300)
pi_1.submit()
pr = make_payment_request(dt="Purchase Invoice", dn=pi.name, mute_email=1, submit_doc=0, return_doc=1)
pr.grand_total = 200
pr.submit()
pr.create_payment_entry()
pr_1 = make_payment_request(
dt="Purchase Invoice", dn=pi.name, mute_email=1, submit_doc=0, return_doc=1
)
pr_1.grand_total = 200
pr_1.submit()
pr_1.create_payment_entry()
pe = get_payment_entry(dt="Purchase Invoice", dn=pi.name)
pe.paid_amount = 200
pe.references[0].reference_doctype = pi.doctype
pe.references[0].reference_name = pi.name
pe.references[0].grand_total = pi.grand_total
pe.references[0].outstanding_amount = pi.outstanding_amount
pe.references[0].allocated_amount = 100
pe.append(
"references",
{
"reference_doctype": pi_1.doctype,
"reference_name": pi_1.name,
"grand_total": pi_1.grand_total,
"outstanding_amount": pi_1.outstanding_amount,
"allocated_amount": 100,
},
)
pr_2 = make_payment_request(dt="Purchase Invoice", dn=pi.name, mute_email=1)
pi.load_from_db()
self.assertEqual(pr_2.grand_total, pi.outstanding_amount)
def test_partial_paid_invoice_with_submitted_payment_entry(self):
pi = make_purchase_invoice(currency="INR", qty=1, rate=5000)
pi.save()
pi.submit()
pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank - _TC")
pe.reference_no = "PURINV0001"
pe.reference_date = frappe.utils.nowdate()
pe.paid_amount = 2500
pe.references[0].allocated_amount = 2500
pe.save()
pe.submit()
pe.cancel()
pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank - _TC")
pe.reference_no = "PURINV0002"
pe.reference_date = frappe.utils.nowdate()
pe.paid_amount = 2500
pe.references[0].allocated_amount = 2500
pe.save()
pe.submit()
pi.load_from_db()
pr = make_payment_request(dt="Purchase Invoice", dn=pi.name, mute_email=1)
self.assertEqual(pr.grand_total, pi.outstanding_amount)

View File

@@ -171,9 +171,7 @@ class PeriodClosingVoucher(AccountsController):
pl_account_balances = self.get_account_balances_based_on_dimensions(report_type="Profit and Loss")
for dimensions, account_balances in pl_account_balances.items():
for acc, balances in account_balances.items():
balance_in_company_currency = flt(balances.debit_in_account_currency) - flt(
balances.credit_in_account_currency
)
balance_in_company_currency = flt(balances.debit) - flt(balances.credit)
if balance_in_company_currency and acc != "balances":
self.pl_accounts_reverse_gle.append(
self.get_gle_for_pl_account(acc, balances, dimensions)

View File

@@ -12,15 +12,15 @@
</thead>
<tbody>
<tr>
<td class="text-left font-bold">{{ _('Grand Total') }}</td>
<td class="text-left font-bold">{{ _("Grand Total") }}</td>
<td class='text-right'> {{ frappe.utils.fmt_money(data.grand_total or '', currency=currency) }}</td>
</tr>
<tr>
<td class="text-left font-bold">{{ _('Net Total') }}</td>
<td class="text-left font-bold">{{ _("Net Total") }}</td>
<td class='text-right'> {{ frappe.utils.fmt_money(data.net_total or '', currency=currency) }}</td>
</tr>
<tr>
<td class="text-left font-bold">{{ _('Total Quantity') }}</td>
<td class="text-left font-bold">{{ _("Total Quantity") }}</td>
<td class='text-right'>{{ data.total_quantity or '' }}</td>
</tr>
@@ -44,7 +44,7 @@
<tbody>
{% for d in data.payment_reconciliation %}
<tr>
<td class="text-left">{{ d.mode_of_payment }}</td>
<td class="text-left">{{ _(d.mode_of_payment) }}</td>
<td class='text-right'> {{ frappe.utils.fmt_money(d.expected_amount - d.opening_amount, currency=currency) }}</td>
</tr>
{% endfor %}
@@ -63,7 +63,7 @@
<thead>
<tr>
<th class="text-left">{{ _("Account") }}</th>
<th class="text-left">{{ _("Rate") }}</th>
<th class="text-left">{{ _("Tax Rate") }}</th>
<th class="text-right">{{ _("Amount") }}</th>
</tr>
</thead>

View File

@@ -147,7 +147,7 @@ frappe.ui.form.on("POS Closing Entry", {
frm.doc.grand_total += flt(doc.grand_total);
frm.doc.net_total += flt(doc.net_total);
frm.doc.total_quantity += flt(doc.total_qty);
refresh_payments(doc, frm);
refresh_payments(doc, frm, false);
refresh_taxes(doc, frm);
refresh_fields(frm);
set_html_data(frm);
@@ -172,7 +172,7 @@ function set_form_data(data, frm) {
frm.doc.grand_total += flt(d.grand_total);
frm.doc.net_total += flt(d.net_total);
frm.doc.total_quantity += flt(d.total_qty);
refresh_payments(d, frm);
refresh_payments(d, frm, true);
refresh_taxes(d, frm);
});
}
@@ -186,7 +186,7 @@ function add_to_pos_transaction(d, frm) {
});
}
function refresh_payments(d, frm) {
function refresh_payments(d, frm, is_new) {
d.payments.forEach((p) => {
const payment = frm.doc.payment_reconciliation.find(
(pay) => pay.mode_of_payment === p.mode_of_payment
@@ -196,9 +196,7 @@ function refresh_payments(d, frm) {
}
if (payment) {
payment.expected_amount += flt(p.amount);
if (payment.closing_amount === 0) {
payment.closing_amount = payment.expected_amount;
}
if (is_new) payment.closing_amount = payment.expected_amount;
payment.difference = payment.closing_amount - payment.expected_amount;
} else {
frm.add_child("payment_reconciliation", {

View File

@@ -39,10 +39,12 @@ class TestPOSClosingEntry(unittest.TestCase):
pos_inv1 = create_pos_invoice(rate=3500, do_not_submit=1)
pos_inv1.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3500})
pos_inv1.save()
pos_inv1.submit()
pos_inv2 = create_pos_invoice(rate=3200, do_not_submit=1)
pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200})
pos_inv2.save()
pos_inv2.submit()
pcv_doc = make_closing_entry_from_opening(opening_entry)
@@ -68,6 +70,7 @@ class TestPOSClosingEntry(unittest.TestCase):
pos_inv = create_pos_invoice(rate=3500, do_not_submit=1, item_name="Test Item", without_item_code=1)
pos_inv.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3500})
pos_inv.save()
pos_inv.submit()
pcv_doc = make_closing_entry_from_opening(opening_entry)
@@ -86,10 +89,12 @@ class TestPOSClosingEntry(unittest.TestCase):
pos_inv1 = create_pos_invoice(rate=3500, do_not_submit=1)
pos_inv1.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3500})
pos_inv1.save()
pos_inv1.submit()
pos_inv2 = create_pos_invoice(rate=3200, do_not_submit=1)
pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200})
pos_inv2.save()
pos_inv2.submit()
# make return entry of pos_inv2
@@ -111,10 +116,12 @@ class TestPOSClosingEntry(unittest.TestCase):
pos_inv1 = create_pos_invoice(rate=3500, do_not_submit=1)
pos_inv1.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3500})
pos_inv1.save()
pos_inv1.submit()
pos_inv2 = create_pos_invoice(rate=3200, do_not_submit=1)
pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200})
pos_inv2.save()
pos_inv2.submit()
pcv_doc = make_closing_entry_from_opening(opening_entry)
@@ -165,6 +172,7 @@ class TestPOSClosingEntry(unittest.TestCase):
opening_entry = create_opening_entry(pos_profile, test_user.name)
pos_inv1 = create_pos_invoice(rate=350, do_not_submit=1, pos_profile=pos_profile.name)
pos_inv1.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3500})
pos_inv1.save()
pos_inv1.submit()
# if in between a mandatory accounting dimension is added to the POS Profile then
@@ -218,14 +226,27 @@ class TestPOSClosingEntry(unittest.TestCase):
opening_entry = create_opening_entry(pos_profile, test_user.name)
pos_inv = create_pos_invoice(
item_code=item_code, qty=5, rate=300, use_serial_batch_fields=1, batch_no=batch_no
item_code=item_code,
qty=5,
rate=300,
use_serial_batch_fields=1,
batch_no=batch_no,
do_not_submit=True,
)
pos_inv.payments[0].amount = pos_inv.grand_total
pos_inv.save()
pos_inv.submit()
pos_inv2 = create_pos_invoice(
item_code=item_code, qty=5, rate=300, use_serial_batch_fields=1, batch_no=batch_no
item_code=item_code,
qty=5,
rate=300,
use_serial_batch_fields=1,
batch_no=batch_no,
do_not_submit=True,
)
batch_qty = frappe.db.get_value("Batch", batch_no, "batch_qty")
self.assertEqual(batch_qty, 10)
pos_inv2.payments[0].amount = pos_inv2.grand_total
pos_inv2.save()
pos_inv2.submit()
batch_qty_with_pos = get_batch_qty(batch_no, "_Test Warehouse - _TC", item_code)
self.assertEqual(batch_qty_with_pos, 0.0)
@@ -256,9 +277,6 @@ class TestPOSClosingEntry(unittest.TestCase):
pcv_doc.reload()
pcv_doc.cancel()
batch_qty = frappe.db.get_value("Batch", batch_no, "batch_qty")
self.assertEqual(batch_qty, 10)
batch_qty_with_pos = get_batch_qty(batch_no, "_Test Warehouse - _TC", item_code)
self.assertEqual(batch_qty_with_pos, 0.0)

View File

@@ -14,7 +14,7 @@
"fieldname": "rate",
"fieldtype": "Percent",
"in_list_view": 1,
"label": "Rate",
"label": "Tax Rate",
"read_only": 1
},
{

View File

@@ -48,6 +48,7 @@
"shipping_address",
"company_address",
"company_address_display",
"company_contact_person",
"currency_and_price_list",
"currency",
"conversion_rate",
@@ -1558,12 +1559,19 @@
"fieldname": "update_billed_amount_in_delivery_note",
"fieldtype": "Check",
"label": "Update Billed Amount in Delivery Note"
},
{
"fieldname": "company_contact_person",
"fieldtype": "Link",
"label": "Company Contact Person",
"options": "Contact",
"print_hide": 1
}
],
"icon": "fa fa-file-text",
"is_submittable": 1,
"links": [],
"modified": "2024-03-20 16:00:34.268756",
"modified": "2024-11-26 13:10:50.309570",
"modified_by": "Administrator",
"module": "Accounts",
"name": "POS Invoice",

View File

@@ -20,6 +20,10 @@ from erpnext.controllers.queries import item_query as _item_query
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
class PartialPaymentValidationError(frappe.ValidationError):
pass
class POSInvoice(SalesInvoice):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
@@ -32,12 +36,8 @@ class POSInvoice(SalesInvoice):
from erpnext.accounts.doctype.payment_schedule.payment_schedule import PaymentSchedule
from erpnext.accounts.doctype.pos_invoice_item.pos_invoice_item import POSInvoiceItem
from erpnext.accounts.doctype.pricing_rule_detail.pricing_rule_detail import PricingRuleDetail
from erpnext.accounts.doctype.sales_invoice_advance.sales_invoice_advance import (
SalesInvoiceAdvance,
)
from erpnext.accounts.doctype.sales_invoice_payment.sales_invoice_payment import (
SalesInvoicePayment,
)
from erpnext.accounts.doctype.sales_invoice_advance.sales_invoice_advance import SalesInvoiceAdvance
from erpnext.accounts.doctype.sales_invoice_payment.sales_invoice_payment import SalesInvoicePayment
from erpnext.accounts.doctype.sales_invoice_timesheet.sales_invoice_timesheet import (
SalesInvoiceTimesheet,
)
@@ -75,6 +75,7 @@ class POSInvoice(SalesInvoice):
company: DF.Link
company_address: DF.Link | None
company_address_display: DF.SmallText | None
company_contact_person: DF.Link | None
consolidated_invoice: DF.Link | None
contact_display: DF.SmallText | None
contact_email: DF.Data | None
@@ -213,6 +214,7 @@ class POSInvoice(SalesInvoice):
self.validate_payment_amount()
self.validate_loyalty_transaction()
self.validate_company_with_pos_company()
self.validate_full_payment()
if self.coupon_code:
from erpnext.accounts.doctype.pricing_rule.utils import validate_coupon_code
@@ -480,6 +482,20 @@ class POSInvoice(SalesInvoice):
if self.redeem_loyalty_points and self.loyalty_program and self.loyalty_points:
validate_loyalty_points(self, self.loyalty_points)
def validate_full_payment(self):
invoice_total = flt(self.rounded_total) or flt(self.grand_total)
if self.docstatus == 1:
if self.is_return and self.paid_amount != invoice_total:
frappe.throw(
msg=_("Partial Payment in POS Invoice is not allowed."), exc=PartialPaymentValidationError
)
if self.paid_amount < invoice_total:
frappe.throw(
msg=_("Partial Payment in POS Invoice is not allowed."), exc=PartialPaymentValidationError
)
def set_status(self, update=False, status=None, update_modified=True):
if self.is_new():
if self.get("amended_from"):

View File

@@ -7,7 +7,7 @@ import unittest
import frappe
from frappe import _
from erpnext.accounts.doctype.pos_invoice.pos_invoice import make_sales_return
from erpnext.accounts.doctype.pos_invoice.pos_invoice import PartialPaymentValidationError, make_sales_return
from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
from erpnext.stock.doctype.item.test_item import make_item
@@ -313,7 +313,7 @@ class TestPOSInvoice(unittest.TestCase):
)
pos.append(
"payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 1000, "default": 1}
"payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 2000, "default": 1}
)
pos.insert()
@@ -324,6 +324,11 @@ class TestPOSInvoice(unittest.TestCase):
# partial return 1
pos_return1.get("items")[0].qty = -1
pos_return1.set("payments", [])
pos_return1.append(
"payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": -1000, "default": 1}
)
pos_return1.paid_amount = -1000
pos_return1.submit()
pos_return1.reload()
@@ -338,6 +343,11 @@ class TestPOSInvoice(unittest.TestCase):
# partial return 2
pos_return2 = make_sales_return(pos.name)
pos_return2.set("payments", [])
pos_return2.append(
"payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": -1000, "default": 1}
)
pos_return2.paid_amount = -1000
pos_return2.submit()
self.assertEqual(pos_return2.get("items")[0].qty, -1)
@@ -373,6 +383,15 @@ class TestPOSInvoice(unittest.TestCase):
inv.payments = []
self.assertRaises(frappe.ValidationError, inv.insert)
def test_partial_payment(self):
pos_inv = create_pos_invoice(rate=10000, do_not_save=1)
pos_inv.append(
"payments",
{"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 9000},
)
pos_inv.insert()
self.assertRaises(PartialPaymentValidationError, pos_inv.submit)
def test_serialized_item_transaction(self):
from erpnext.stock.doctype.stock_entry.test_stock_entry import make_serialized_item
@@ -581,7 +600,13 @@ class TestPOSInvoice(unittest.TestCase):
"Test Loyalty Customer", company="_Test Company", loyalty_program="Test Single Loyalty"
)
inv = create_pos_invoice(customer="Test Loyalty Customer", rate=10000)
inv = create_pos_invoice(customer="Test Loyalty Customer", rate=10000, do_not_save=1)
inv.append(
"payments",
{"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 10000},
)
inv.insert()
inv.submit()
lpe = frappe.get_doc(
"Loyalty Point Entry",
@@ -607,7 +632,13 @@ class TestPOSInvoice(unittest.TestCase):
)
# add 10 loyalty points
create_pos_invoice(customer="Test Loyalty Customer", rate=10000)
pos_inv = create_pos_invoice(customer="Test Loyalty Customer", rate=10000, do_not_save=1)
pos_inv.append(
"payments",
{"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 10000},
)
pos_inv.paid_amount = 10000
pos_inv.submit()
before_lp_details = get_loyalty_program_details_with_points(
"Test Loyalty Customer", company="_Test Company", loyalty_program="Test Single Loyalty"
@@ -641,10 +672,12 @@ class TestPOSInvoice(unittest.TestCase):
test_user, pos_profile = init_user_and_profile()
pos_inv = create_pos_invoice(rate=300, additional_discount_percentage=10, do_not_submit=1)
pos_inv.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 270})
pos_inv.save()
pos_inv.submit()
pos_inv2 = create_pos_invoice(rate=3200, do_not_submit=1)
pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200})
pos_inv2.save()
pos_inv2.submit()
consolidate_pos_invoices()
@@ -676,6 +709,7 @@ class TestPOSInvoice(unittest.TestCase):
"included_in_print_rate": 1,
},
)
pos_inv.save()
pos_inv.submit()
pos_inv2 = create_pos_invoice(rate=300, qty=2, do_not_submit=1)
@@ -692,6 +726,7 @@ class TestPOSInvoice(unittest.TestCase):
"included_in_print_rate": 1,
},
)
pos_inv2.save()
pos_inv2.submit()
consolidate_pos_invoices()
@@ -744,6 +779,7 @@ class TestPOSInvoice(unittest.TestCase):
"included_in_print_rate": 1,
},
)
pos_inv2.save()
pos_inv2.submit()
consolidate_pos_invoices()
@@ -774,7 +810,10 @@ class TestPOSInvoice(unittest.TestCase):
# POS Invoice 1, for the batch without bundle
pos_inv1 = create_pos_invoice(item="_BATCH ITEM Test For Reserve", rate=300, qty=15, do_not_save=1)
pos_inv1.append(
"payments",
{"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 4500},
)
pos_inv1.items[0].batch_no = batch_no
pos_inv1.save()
pos_inv1.submit()
@@ -790,8 +829,14 @@ class TestPOSInvoice(unittest.TestCase):
# POS Invoice 2, for the batch with bundle
pos_inv2 = create_pos_invoice(
item="_BATCH ITEM Test For Reserve", rate=300, qty=10, batch_no=batch_no
item="_BATCH ITEM Test For Reserve", rate=300, qty=10, batch_no=batch_no, do_not_save=1
)
pos_inv2.append(
"payments",
{"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3000},
)
pos_inv2.save()
pos_inv2.submit()
pos_inv2.reload()
self.assertTrue(pos_inv2.items[0].serial_and_batch_bundle)
@@ -826,6 +871,10 @@ class TestPOSInvoice(unittest.TestCase):
pos_inv1 = create_pos_invoice(
item=item.name, rate=300, qty=1, do_not_submit=1, batch_no="TestBatch 01"
)
pos_inv1.append(
"payments",
{"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 300},
)
pos_inv1.save()
pos_inv1.submit()
@@ -835,7 +884,8 @@ class TestPOSInvoice(unittest.TestCase):
{
"item_code": item.name,
"warehouse": pos_inv2.items[0].warehouse,
"voucher_type": "Delivery Note",
"voucher_type": "POS Invoice",
"voucher_no": pos_inv2.name,
"qty": 2,
"avg_rate": 300,
"batches": frappe._dict({"TestBatch 01": 2}),

View File

@@ -12,7 +12,9 @@ from frappe.utils import cint, flt, get_time, getdate, nowdate, nowtime
from frappe.utils.background_jobs import enqueue, is_job_enqueued
from frappe.utils.scheduler import is_scheduler_inactive
from erpnext.accounts.doctype.pos_profile.pos_profile import required_accounting_dimensions
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
get_checks_for_pl_and_bs_accounts,
)
class POSInvoiceMergeLog(Document):
@@ -117,11 +119,13 @@ class POSInvoiceMergeLog(Document):
sales = [d for d in pos_invoice_docs if d.get("is_return") == 0]
sales_invoice, credit_note = "", ""
if returns:
credit_note = self.process_merging_into_credit_note(returns)
sales_invoice_doc = None
if sales:
sales_invoice = self.process_merging_into_sales_invoice(sales)
sales_invoice_doc = self.process_merging_into_sales_invoice(sales)
sales_invoice = sales_invoice_doc.name
if returns:
credit_note = self.process_merging_into_credit_note(returns, sales_invoice_doc)
self.save() # save consolidated_sales_invoice & consolidated_credit_note ref in merge log
self.update_pos_invoices(pos_invoice_docs, sales_invoice, credit_note)
@@ -132,6 +136,7 @@ class POSInvoiceMergeLog(Document):
self.update_pos_invoices(pos_invoice_docs)
self.serial_and_batch_bundle_reference_for_pos_invoice()
self.cancel_linked_invoices()
self.delink_serial_and_batch_bundle()
def process_merging_into_sales_invoice(self, data):
sales_invoice = self.get_new_sales_invoice()
@@ -139,20 +144,35 @@ class POSInvoiceMergeLog(Document):
sales_invoice.is_consolidated = 1
sales_invoice.set_posting_time = 1
sales_invoice.posting_date = getdate(self.posting_date)
sales_invoice.posting_time = get_time(self.posting_time)
if not sales_invoice.posting_date:
sales_invoice.posting_date = getdate(self.posting_date)
if not sales_invoice.posting_time:
sales_invoice.posting_time = get_time(self.posting_time)
sales_invoice.save()
sales_invoice.submit()
self.consolidated_invoice = sales_invoice.name
return sales_invoice.name
return sales_invoice
def process_merging_into_credit_note(self, data):
def process_merging_into_credit_note(self, data, sales_invoice_doc=None):
credit_note = self.get_new_sales_invoice()
credit_note.is_return = 1
credit_note = self.merge_pos_invoice_into(credit_note, data)
referenes = {}
if sales_invoice_doc:
credit_note.return_against = sales_invoice_doc.name
for d in sales_invoice_doc.items:
referenes[d.item_code] = d.name
for d in credit_note.items:
d.sales_invoice_item = referenes.get(d.item_code)
credit_note.is_consolidated = 1
credit_note.set_posting_time = 1
@@ -180,6 +200,10 @@ class POSInvoiceMergeLog(Document):
for doc in data:
map_doc(doc, invoice, table_map={"doctype": invoice.doctype})
if doc.get("posting_date"):
invoice.posting_date = getdate(doc.posting_date)
invoice.posting_time = get_time(doc.posting_time)
if doc.redeem_loyalty_points:
invoice.loyalty_redemption_account = doc.loyalty_redemption_account
invoice.loyalty_redemption_cost_center = doc.loyalty_redemption_cost_center
@@ -270,22 +294,23 @@ class POSInvoiceMergeLog(Document):
invoice.disable_rounded_total = cint(
frappe.db.get_value("POS Profile", invoice.pos_profile, "disable_rounded_total")
)
accounting_dimensions = required_accounting_dimensions()
accounting_dimensions = get_checks_for_pl_and_bs_accounts()
accounting_dimensions_fields = [d.fieldname for d in accounting_dimensions]
dimension_values = frappe.db.get_value(
"POS Profile", {"name": invoice.pos_profile}, accounting_dimensions, as_dict=1
"POS Profile", {"name": invoice.pos_profile}, accounting_dimensions_fields, as_dict=1
)
for dimension in accounting_dimensions:
dimension_value = dimension_values.get(dimension)
dimension_value = dimension_values.get(dimension.fieldname)
if not dimension_value:
if not dimension_value and (dimension.mandatory_for_pl or dimension.mandatory_for_bs):
frappe.throw(
_("Please set Accounting Dimension {} in {}").format(
frappe.bold(frappe.unscrub(dimension)),
frappe.bold(dimension.label),
frappe.get_desk_link("POS Profile", invoice.pos_profile),
)
)
invoice.set(dimension, dimension_value)
invoice.set(dimension.fieldname, dimension_value)
if self.merge_invoices_based_on == "Customer Group":
invoice.flags.ignore_pos_profile = True
@@ -297,6 +322,8 @@ class POSInvoiceMergeLog(Document):
sales_invoice = frappe.new_doc("Sales Invoice")
sales_invoice.customer = self.customer
sales_invoice.is_pos = 1
sales_invoice.posting_date = None
sales_invoice.posting_time = None
return sales_invoice
@@ -319,8 +346,45 @@ class POSInvoiceMergeLog(Document):
for table_name in ["items", "packed_items"]:
pos_invoice.set_serial_and_batch_bundle(table_name)
def delink_serial_and_batch_bundle(self):
bundles = self.get_serial_and_batch_bundles()
if not bundles:
return
sle_table = frappe.qb.DocType("Stock Ledger Entry")
query = (
frappe.qb.update(sle_table)
.set(sle_table.serial_and_batch_bundle, None)
.where(sle_table.serial_and_batch_bundle.isin(bundles) & sle_table.is_cancelled == 1)
)
query.run()
def get_serial_and_batch_bundles(self):
pos_invoices = []
for d in self.pos_invoices:
pos_invoices.append(d.pos_invoice)
if pos_invoices:
return frappe.get_all(
"POS Invoice Item",
filters={
"docstatus": 1,
"parent": ["in", pos_invoices],
"serial_and_batch_bundle": ["is", "set"],
},
pluck="serial_and_batch_bundle",
)
return []
def cancel_linked_invoices(self):
for si_name in [self.consolidated_invoice, self.consolidated_credit_note]:
invoices = [self.consolidated_invoice, self.consolidated_credit_note]
if not invoices:
return
invoices.reverse()
for si_name in invoices:
if not si_name:
continue
si = frappe.get_doc("Sales Invoice", si_name)
@@ -503,6 +567,9 @@ def cancel_merge_logs(merge_logs, closing_entry=None):
try:
for log in merge_logs:
merge_log = frappe.get_doc("POS Invoice Merge Log", log)
if merge_log.docstatus == 2:
continue
merge_log.flags.ignore_permissions = True
merge_log.cancel()

View File

@@ -28,14 +28,17 @@ class TestPOSInvoiceMergeLog(unittest.TestCase):
pos_inv = create_pos_invoice(rate=300, do_not_submit=1)
pos_inv.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 300})
pos_inv.save()
pos_inv.submit()
pos_inv2 = create_pos_invoice(rate=3200, do_not_submit=1)
pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200})
pos_inv2.save()
pos_inv2.submit()
pos_inv3 = create_pos_invoice(customer="_Test Customer 2", rate=2300, do_not_submit=1)
pos_inv3.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 2300})
pos_inv3.save()
pos_inv3.submit()
consolidate_pos_invoices()
@@ -61,14 +64,17 @@ class TestPOSInvoiceMergeLog(unittest.TestCase):
pos_inv = create_pos_invoice(rate=300, do_not_submit=1)
pos_inv.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 300})
pos_inv.save()
pos_inv.submit()
pos_inv2 = create_pos_invoice(rate=3200, do_not_submit=1)
pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 3200})
pos_inv2.save()
pos_inv2.submit()
pos_inv3 = create_pos_invoice(customer="_Test Customer 2", rate=2300, do_not_submit=1)
pos_inv3.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 2300})
pos_inv3.save()
pos_inv3.submit()
pos_inv_cn = make_sales_return(pos_inv.name)
@@ -122,6 +128,8 @@ class TestPOSInvoiceMergeLog(unittest.TestCase):
},
)
inv.insert()
inv.payments[0].amount = inv.grand_total
inv.save()
inv.submit()
inv2 = create_pos_invoice(qty=1, rate=100, do_not_save=True)
@@ -138,6 +146,8 @@ class TestPOSInvoiceMergeLog(unittest.TestCase):
},
)
inv2.insert()
inv2.payments[0].amount = inv.grand_total
inv2.save()
inv2.submit()
consolidate_pos_invoices()
@@ -272,7 +282,7 @@ class TestPOSInvoiceMergeLog(unittest.TestCase):
inv2.submit()
inv3 = create_pos_invoice(qty=3, rate=600, do_not_save=True)
inv3.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 1000})
inv3.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 1800})
inv3.insert()
inv3.submit()
@@ -280,8 +290,8 @@ class TestPOSInvoiceMergeLog(unittest.TestCase):
inv.load_from_db()
consolidated_invoice = frappe.get_doc("Sales Invoice", inv.consolidated_invoice)
self.assertEqual(consolidated_invoice.outstanding_amount, 800)
self.assertNotEqual(consolidated_invoice.status, "Paid")
self.assertNotEqual(consolidated_invoice.outstanding_amount, 800)
self.assertEqual(consolidated_invoice.status, "Paid")
finally:
frappe.set_user("Administrator")
@@ -416,6 +426,7 @@ class TestPOSInvoiceMergeLog(unittest.TestCase):
do_not_submit=1,
)
pos_inv.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 100})
pos_inv.save()
pos_inv.submit()
pos_inv_cn = make_sales_return(pos_inv.name)
@@ -430,6 +441,7 @@ class TestPOSInvoiceMergeLog(unittest.TestCase):
do_not_submit=1,
)
pos_inv2.append("payments", {"mode_of_payment": "Cash", "account": "Cash - _TC", "amount": 100})
pos_inv2.save()
pos_inv2.submit()
consolidate_pos_invoices()

View File

@@ -23,11 +23,13 @@
"hide_unavailable_items",
"auto_add_item_to_cart",
"validate_stock_on_save",
"print_receipt_on_order_complete",
"column_break_16",
"update_stock",
"ignore_pricing_rule",
"allow_rate_change",
"allow_discount_change",
"disable_grand_total_to_default_mop",
"section_break_23",
"item_groups",
"column_break_25",
@@ -375,6 +377,18 @@
"fieldname": "disable_rounded_total",
"fieldtype": "Check",
"label": "Disable Rounded Total"
},
{
"default": "0",
"fieldname": "print_receipt_on_order_complete",
"fieldtype": "Check",
"label": "Print Receipt on Order Complete"
},
{
"default": "0",
"fieldname": "disable_grand_total_to_default_mop",
"fieldtype": "Check",
"label": "Disable auto setting Grand Total to default Payment Mode"
}
],
"icon": "icon-cog",
@@ -402,7 +416,7 @@
"link_fieldname": "pos_profile"
}
],
"modified": "2022-08-10 12:57:06.241439",
"modified": "2025-01-29 13:12:30.796630",
"modified_by": "Administrator",
"module": "Accounts",
"name": "POS Profile",

View File

@@ -7,6 +7,10 @@ from frappe import _, msgprint, scrub, unscrub
from frappe.model.document import Document
from frappe.utils import get_link_to_form, now
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
get_checks_for_pl_and_bs_accounts,
)
class POSProfile(Document):
# begin: auto-generated types
@@ -36,6 +40,7 @@ class POSProfile(Document):
currency: DF.Link
customer: DF.Link | None
customer_groups: DF.Table[POSCustomerGroup]
disable_grand_total_to_default_mop: DF.Check
disable_rounded_total: DF.Check
disabled: DF.Check
expense_account: DF.Link | None
@@ -47,6 +52,7 @@ class POSProfile(Document):
letter_head: DF.Link | None
payments: DF.Table[POSPaymentMethod]
print_format: DF.Link | None
print_receipt_on_order_complete: DF.Check
select_print_heading: DF.Link | None
selling_price_list: DF.Link | None
tax_category: DF.Link | None
@@ -68,15 +74,19 @@ class POSProfile(Document):
self.validate_accounting_dimensions()
def validate_accounting_dimensions(self):
acc_dim_names = required_accounting_dimensions()
for acc_dim in acc_dim_names:
if not self.get(acc_dim):
acc_dims = get_checks_for_pl_and_bs_accounts()
for acc_dim in acc_dims:
if (
self.company == acc_dim.company
and not self.get(acc_dim.fieldname)
and (acc_dim.mandatory_for_pl or acc_dim.mandatory_for_bs)
):
frappe.throw(
_(
"{0} is a mandatory Accounting Dimension. <br>"
"Please set a value for {0} in Accounting Dimensions section."
).format(
unscrub(frappe.bold(acc_dim)),
frappe.bold(acc_dim.label),
),
title=_("Mandatory Accounting Dimension"),
)
@@ -214,23 +224,6 @@ def get_child_nodes(group_type, root):
)
def required_accounting_dimensions():
p = frappe.qb.DocType("Accounting Dimension")
c = frappe.qb.DocType("Accounting Dimension Detail")
acc_dim_doc = (
frappe.qb.from_(p)
.inner_join(c)
.on(p.name == c.parent)
.select(c.parent)
.where((c.mandatory_for_bs == 1) | (c.mandatory_for_pl == 1))
.where(p.disabled == 0)
).run(as_dict=1)
acc_dim_names = [scrub(d.parent) for d in acc_dim_doc]
return acc_dim_names
@frappe.whitelist()
@frappe.validate_and_sanitize_search_inputs
def pos_profile_query(doctype, txt, searchfield, start, page_len, filters):

View File

@@ -53,6 +53,7 @@
"column_break_42",
"free_item_uom",
"round_free_qty",
"dont_enforce_free_item_qty",
"is_recursive",
"recurse_for",
"apply_recursion_over",
@@ -643,12 +644,19 @@
"fieldname": "has_priority",
"fieldtype": "Check",
"label": "Has Priority"
},
{
"default": "0",
"depends_on": "eval:doc.price_or_product_discount == 'Product'",
"fieldname": "dont_enforce_free_item_qty",
"fieldtype": "Check",
"label": "Don't Enforce Free Item Qty"
}
],
"icon": "fa fa-gift",
"idx": 1,
"links": [],
"modified": "2024-09-16 18:14:51.314765",
"modified": "2025-02-17 18:15:39.824639",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Pricing Rule",

View File

@@ -60,6 +60,7 @@ class PricingRule(Document):
disable: DF.Check
discount_amount: DF.Currency
discount_percentage: DF.Float
dont_enforce_free_item_qty: DF.Check
for_price_list: DF.Link | None
free_item: DF.Link | None
free_item_rate: DF.Currency
@@ -645,7 +646,7 @@ def remove_pricing_rule_for_item(pricing_rules, item_details, item_code=None, ra
if pricing_rule.margin_type in ["Percentage", "Amount"]:
item_details.margin_rate_or_amount = 0.0
item_details.margin_type = None
elif pricing_rule.get("free_item"):
elif pricing_rule.get("free_item") and not pricing_rule.get("dont_enforce_free_item_qty"):
item_details.remove_free_item = (
item_code if pricing_rule.get("same_item") else pricing_rule.get("free_item")
)

View File

@@ -428,6 +428,54 @@ class TestPricingRule(FrappeTestCase):
self.assertEqual(so.items[1].is_free_item, 1)
self.assertEqual(so.items[1].item_code, "_Test Item 2")
def test_dont_enforce_free_item_qty(self):
# this test is only for testing non-enforcement as all other tests in this file already test with enforcement
frappe.delete_doc_if_exists("Pricing Rule", "_Test Pricing Rule")
test_record = {
"doctype": "Pricing Rule",
"title": "_Test Pricing Rule",
"apply_on": "Item Code",
"currency": "USD",
"items": [
{
"item_code": "_Test Item",
}
],
"selling": 1,
"rate_or_discount": "Discount Percentage",
"rate": 0,
"min_qty": 0,
"max_qty": 7,
"discount_percentage": 17.5,
"price_or_product_discount": "Product",
"same_item": 0,
"free_item": "_Test Item 2",
"free_qty": 1,
"company": "_Test Company",
}
pricing_rule = frappe.get_doc(test_record.copy()).insert()
# With enforcement
so = make_sales_order(item_code="_Test Item", qty=1, do_not_submit=True)
self.assertEqual(so.items[1].is_free_item, 1)
self.assertEqual(so.items[1].item_code, "_Test Item 2")
# Test 1 : Saving a document with an item with pricing list without it's corresponding free item will cause it the free item to be refetched on save
so.items.pop(1)
so.save()
so.reload()
self.assertEqual(len(so.items), 2)
# Without enforcement
pricing_rule.dont_enforce_free_item_qty = 1
pricing_rule.save()
# Test 2 : Deleted free item will not be fetched again on save without enforcement
so.items.pop(1)
so.save()
so.reload()
self.assertEqual(len(so.items), 1)
def test_cumulative_pricing_rule(self):
frappe.delete_doc_if_exists("Pricing Rule", "_Test Cumulative Pricing Rule")
test_record = {
@@ -1137,6 +1185,45 @@ class TestPricingRule(FrappeTestCase):
so.save()
self.assertEqual(len(so.items), 1)
def test_pricing_rule_for_product_free_item_round_free_qty(self):
frappe.delete_doc_if_exists("Pricing Rule", "_Test Pricing Rule")
test_record = {
"doctype": "Pricing Rule",
"title": "_Test Pricing Rule",
"apply_on": "Item Code",
"currency": "USD",
"items": [
{
"item_code": "_Test Item",
}
],
"selling": 1,
"rate": 0,
"min_qty": 100,
"max_qty": 0,
"price_or_product_discount": "Product",
"same_item": 1,
"free_qty": 10,
"round_free_qty": 1,
"is_recursive": 1,
"recurse_for": 100,
"company": "_Test Company",
}
frappe.get_doc(test_record.copy()).insert()
# With pricing rule
so = make_sales_order(item_code="_Test Item", qty=100)
so.load_from_db()
self.assertEqual(so.items[1].is_free_item, 1)
self.assertEqual(so.items[1].item_code, "_Test Item")
self.assertEqual(so.items[1].qty, 10)
so = make_sales_order(item_code="_Test Item", qty=150)
so.load_from_db()
self.assertEqual(so.items[1].is_free_item, 1)
self.assertEqual(so.items[1].item_code, "_Test Item")
self.assertEqual(so.items[1].qty, 10)
def test_apply_multiple_pricing_rules_for_discount_percentage_and_amount(self):
frappe.delete_doc_if_exists("Pricing Rule", "_Test Pricing Rule 1")
frappe.delete_doc_if_exists("Pricing Rule", "_Test Pricing Rule 2")
@@ -1412,6 +1499,7 @@ def make_pricing_rule(**args):
"discount_amount": args.discount_amount or 0.0,
"apply_multiple_pricing_rules": args.apply_multiple_pricing_rules or 0,
"has_priority": args.has_priority or 0,
"enforce_free_item_qty": args.dont_enforce_free_item_qty or 0,
}
)

View File

@@ -651,11 +651,20 @@ def get_product_discount_rule(pricing_rule, item_details, args=None, doc=None):
qty = pricing_rule.free_qty or 1
if pricing_rule.is_recursive:
transaction_qty = (args.get("qty") if args else doc.total_qty) - pricing_rule.apply_recursion_over
if transaction_qty:
transaction_qty = sum(
[
row.qty
for row in doc.items
if not row.is_free_item
and row.item_code == args.item_code
and row.pricing_rules == args.pricing_rules
]
)
transaction_qty = transaction_qty - pricing_rule.apply_recursion_over
if transaction_qty and transaction_qty > 0:
qty = flt(transaction_qty) * qty / pricing_rule.recurse_for
if pricing_rule.round_free_qty:
qty = math.floor(qty)
qty = (flt(transaction_qty) // pricing_rule.recurse_for) * (pricing_rule.free_qty or 1)
if not qty:
return
@@ -704,7 +713,10 @@ def apply_pricing_rule_for_free_items(doc, pricing_rule_args):
args.pop((item.item_code, item.pricing_rules))
for free_item in args.values():
doc.append("items", free_item)
if doc.is_new() or not frappe.get_value(
"Pricing Rule", free_item["pricing_rules"], "dont_enforce_free_item_qty"
):
doc.append("items", free_item)
def get_pricing_rule_items(pr_doc, other_items=False) -> list:

View File

@@ -1,7 +1,6 @@
{
"actions": [],
"autoname": "format:ACC-PPR-{#####}",
"beta": 1,
"creation": "2023-03-30 21:28:39.793927",
"default_view": "List",
"doctype": "DocType",
@@ -158,7 +157,7 @@
"index_web_pages_for_search": 1,
"is_submittable": 1,
"links": [],
"modified": "2024-08-27 14:48:56.715320",
"modified": "2025-01-08 08:22:14.798085",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Process Payment Reconciliation",
@@ -192,4 +191,4 @@
"sort_order": "DESC",
"states": [],
"title_field": "company"
}
}

View File

@@ -210,9 +210,9 @@ def trigger_reconciliation_for_queued_docs():
docs_to_trigger = []
unique_filters = set()
queue_size = 5
queue_size = frappe.db.get_single_value("Accounts Settings", "reconciliation_queue_size") or 5
fields = ["company", "party_type", "party", "receivable_payable_account"]
fields = ["company", "party_type", "party", "receivable_payable_account", "default_advance_account"]
def get_filters_as_tuple(fields, doc):
filters = ()

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