Compare commits

..

650 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
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
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
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
315 changed files with 124454 additions and 5027 deletions

View File

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

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.46.2"
__version__ = "15.52.0"
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

@@ -49,6 +49,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)

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:
@@ -232,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.
@@ -241,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,
@@ -294,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

@@ -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,48 @@ 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",
)

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

@@ -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()

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);
}
@@ -800,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);

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",
@@ -223,6 +224,7 @@
"label": "Accounts"
},
{
"allow_on_submit": 1,
"depends_on": "party",
"fieldname": "party_balance",
"fieldtype": "Currency",
@@ -252,6 +254,7 @@
"reqd": 1
},
{
"allow_on_submit": 1,
"depends_on": "paid_from",
"fieldname": "paid_from_account_balance",
"fieldtype": "Currency",
@@ -285,6 +288,7 @@
"reqd": 1
},
{
"allow_on_submit": 1,
"depends_on": "paid_to",
"fieldname": "paid_to_account_balance",
"fieldtype": "Currency",
@@ -782,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,
@@ -795,7 +809,7 @@
"table_fieldname": "payment_entries"
}
],
"modified": "2024-11-07 11:19:19.320883",
"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])
)
)
@@ -1401,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
@@ -1566,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"):
@@ -1780,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:
@@ -2225,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(
@@ -2808,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(
@@ -2816,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

View File

@@ -1479,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

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

@@ -335,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
@@ -424,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"
@@ -450,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

@@ -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)
@@ -635,6 +636,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,
}
)

View File

@@ -83,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,
)
@@ -108,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,
)

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

@@ -224,9 +224,6 @@ class TestPOSClosingEntry(unittest.TestCase):
item_code=item_code, qty=5, rate=300, use_serial_batch_fields=1, batch_no=batch_no
)
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)
@@ -256,9 +253,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

@@ -835,7 +835,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

@@ -117,11 +117,13 @@ class POSInvoiceMergeLog(Document):
sales = [d for d in pos_invoice_docs if d.get("is_return") == 0]
sales_invoice, credit_note = "", ""
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)
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)
@@ -152,15 +154,23 @@ class POSInvoiceMergeLog(Document):
self.consolidated_invoice = sales_invoice.name
return sales_invoice.name
return sales_invoice
def process_merging_into_credit_note(self, data, sales_invoice):
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 = {}
credit_note.return_against = sales_invoice
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
@@ -366,7 +376,12 @@ class POSInvoiceMergeLog(Document):
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)

View File

@@ -23,6 +23,7 @@
"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",
@@ -375,6 +376,12 @@
"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"
}
],
"icon": "icon-cog",
@@ -402,7 +409,7 @@
"link_fieldname": "pos_profile"
}
],
"modified": "2022-08-10 12:57:06.241439",
"modified": "2025-01-01 11:07:03.161950",
"modified_by": "Administrator",
"module": "Accounts",
"name": "POS Profile",

View File

@@ -47,6 +47,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

View File

@@ -415,8 +415,6 @@ def get_pricing_rule_for_item(args, doc=None, for_validate=False):
"parent": args.parent,
"parenttype": args.parenttype,
"child_docname": args.get("child_docname"),
"discount_percentage": 0.0,
"discount_amount": 0,
}
)

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 = ()

View File

@@ -1,7 +1,6 @@
{
"actions": [],
"autoname": "format:PPR-LOG-{##}",
"beta": 1,
"creation": "2023-03-13 15:00:09.149681",
"default_view": "List",
"doctype": "DocType",
@@ -110,7 +109,7 @@
"in_create": 1,
"index_web_pages_for_search": 1,
"links": [],
"modified": "2023-11-02 11:32:12.254018",
"modified": "2025-01-08 08:22:19.104975",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Process Payment Reconciliation Log",

View File

@@ -20,6 +20,7 @@
"is_advance",
"section_break_5",
"difference_amount",
"gain_loss_posting_date",
"column_break_7",
"difference_account",
"exchange_rate",
@@ -153,11 +154,16 @@
"fieldtype": "Check",
"in_list_view": 1,
"label": "Reconciled"
},
{
"fieldname": "gain_loss_posting_date",
"fieldtype": "Date",
"label": "Difference Posting Date"
}
],
"istable": 1,
"links": [],
"modified": "2023-03-20 21:05:43.121945",
"modified": "2025-01-23 16:09:01.058574",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Process Payment Reconciliation Log Allocations",
@@ -167,4 +173,4 @@
"sort_order": "DESC",
"states": [],
"track_changes": 1
}
}

View File

@@ -20,6 +20,7 @@ class ProcessPaymentReconciliationLogAllocations(Document):
difference_account: DF.Link | None
difference_amount: DF.Currency
exchange_rate: DF.Float
gain_loss_posting_date: DF.Date | None
invoice_number: DF.DynamicLink
invoice_type: DF.Link
is_advance: DF.Data | None

View File

@@ -321,9 +321,12 @@ def get_recipients_and_cc(customer, doc):
recipients = []
for clist in doc.customers:
if clist.customer == customer:
recipients.append(clist.billing_email)
if clist.billing_email:
for email in clist.billing_email.split(","):
recipients.append(email.strip())
if doc.primary_mandatory and clist.primary_email:
recipients.append(clist.primary_email)
for email in clist.primary_email.split(","):
recipients.append(email.strip())
cc = []
if doc.cc_to != "":
try:

View File

@@ -332,6 +332,8 @@ erpnext.accounts.PurchaseInvoice = class PurchaseInvoice extends erpnext.buying.
if (this.frm.doc.__onload && this.frm.doc.__onload.load_after_mapping) return;
let payment_terms_template = this.frm.doc.payment_terms_template;
erpnext.utils.get_party_details(
this.frm,
"erpnext.accounts.party.get_party_details",
@@ -352,6 +354,12 @@ erpnext.accounts.PurchaseInvoice = class PurchaseInvoice extends erpnext.buying.
me.frm.doc.tax_withholding_category = me.frm.supplier_tds;
me.frm.set_df_property("apply_tds", "read_only", me.frm.supplier_tds ? 0 : 1);
me.frm.set_df_property("tax_withholding_category", "hidden", me.frm.supplier_tds ? 0 : 1);
// while duplicating, don't change payment terms
if (me.frm.doc.__run_link_triggers === false) {
me.frm.set_value("payment_terms_template", payment_terms_template);
me.frm.refresh_field("payment_terms_template");
}
}
);
}
@@ -368,6 +376,18 @@ erpnext.accounts.PurchaseInvoice = class PurchaseInvoice extends erpnext.buying.
}
}
tax_withholding_category(frm) {
var me = this;
let filtered_taxes = (me.frm.doc.taxes || []).filter((row) => !row.is_tax_withholding_account);
me.frm.clear_table("taxes");
filtered_taxes.forEach((row) => {
me.frm.add_child("taxes", row);
});
me.frm.refresh_field("taxes");
}
credit_to() {
var me = this;
if (this.frm.doc.credit_to) {
@@ -399,6 +419,8 @@ erpnext.accounts.PurchaseInvoice = class PurchaseInvoice extends erpnext.buying.
hide_fields(this.frm.doc);
if (cint(this.frm.doc.is_paid)) {
this.frm.set_value("allocate_advances_automatically", 0);
this.frm.set_value("payment_terms_template", "");
this.frm.set_value("payment_schedule", []);
if (!this.frm.doc.company) {
this.frm.set_value("is_paid", 0);
frappe.msgprint(__("Please specify Company to proceed"));

View File

@@ -1623,7 +1623,7 @@
{
"default": "1",
"depends_on": "eval: doc.is_return && doc.return_against",
"description": "Debit Note will update it's own outstanding amount, even if \"Return Against\" is specified.",
"description": "Debit Note will update it's own outstanding amount, even if 'Return Against' is specified.",
"fieldname": "update_outstanding_for_self",
"fieldtype": "Check",
"label": "Update Outstanding for Self"
@@ -1633,7 +1633,7 @@
"idx": 204,
"is_submittable": 1,
"links": [],
"modified": "2024-10-25 18:13:01.944477",
"modified": "2025-01-14 11:39:04.564610",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Purchase Invoice",

View File

@@ -10,7 +10,6 @@ from frappe.utils import cint, cstr, flt, formatdate, get_link_to_form, getdate,
import erpnext
from erpnext.accounts.deferred_revenue import validate_service_stop_date
from erpnext.accounts.doctype.gl_entry.gl_entry import update_outstanding_amt
from erpnext.accounts.doctype.repost_accounting_ledger.repost_accounting_ledger import (
validate_docs_for_deferred_accounting,
validate_docs_for_voucher_types,
@@ -33,7 +32,7 @@ from erpnext.accounts.general_ledger import (
merge_similar_entries,
)
from erpnext.accounts.party import get_due_date, get_party_account
from erpnext.accounts.utils import get_account_currency, get_fiscal_year
from erpnext.accounts.utils import get_account_currency, get_fiscal_year, update_voucher_outstanding
from erpnext.assets.doctype.asset.asset import is_cwip_accounting_enabled
from erpnext.assets.doctype.asset_category.asset_category import get_asset_category_account
from erpnext.buying.utils import check_on_hold_or_closed_status
@@ -838,12 +837,12 @@ class PurchaseInvoice(BuyingController):
def update_supplier_outstanding(self, update_outstanding):
if update_outstanding == "No":
update_outstanding_amt(
self.credit_to,
"Supplier",
self.supplier,
self.doctype,
self.return_against if cint(self.is_return) and self.return_against else self.name,
update_voucher_outstanding(
voucher_type=self.doctype,
voucher_no=self.return_against if cint(self.is_return) and self.return_against else self.name,
account=self.credit_to,
party_type="Supplier",
party=self.supplier,
)
def get_gl_entries(self, warehouse_account=None):
@@ -1126,6 +1125,7 @@ class PurchaseInvoice(BuyingController):
exchange_rate_map[item.purchase_receipt]
and self.conversion_rate != exchange_rate_map[item.purchase_receipt]
and item.net_rate == net_rate_map[item.pr_detail]
and item.item_code in stock_items
):
discrepancy_caused_by_exchange_rate_difference = (
item.qty * item.net_rate
@@ -1677,7 +1677,12 @@ class PurchaseInvoice(BuyingController):
if pi:
pi = pi[0][0]
frappe.throw(_("Supplier Invoice No exists in Purchase Invoice {0}").format(pi))
frappe.throw(
_("Supplier Invoice No exists in Purchase Invoice {0}").format(
get_link_to_form("Purchase Invoice", pi)
)
)
def update_billing_status_in_pr(self, update_modified=True):
if self.is_return and not self.update_billed_amount_in_purchase_receipt:
@@ -1791,13 +1796,13 @@ class PurchaseInvoice(BuyingController):
self.remove(d)
## Add pending vouchers on which tax was withheld
for voucher_no, voucher_details in voucher_wise_amount.items():
for row in voucher_wise_amount:
self.append(
"tax_withheld_vouchers",
{
"voucher_name": voucher_no,
"voucher_type": voucher_details.get("voucher_type"),
"taxable_amount": voucher_details.get("amount"),
"voucher_name": row.voucher_name,
"voucher_type": row.voucher_type,
"taxable_amount": row.taxable_amount,
},
)

View File

@@ -45,12 +45,16 @@ frappe.listview_settings["Purchase Invoice"] = {
},
onload: function (listview) {
listview.page.add_action_item(__("Purchase Receipt"), () => {
erpnext.bulk_transaction_processing.create(listview, "Purchase Invoice", "Purchase Receipt");
});
if (frappe.model.can_create("Purchase Receipt")) {
listview.page.add_action_item(__("Purchase Receipt"), () => {
erpnext.bulk_transaction_processing.create(listview, "Purchase Invoice", "Purchase Receipt");
});
}
listview.page.add_action_item(__("Payment"), () => {
erpnext.bulk_transaction_processing.create(listview, "Purchase Invoice", "Payment Entry");
});
if (frappe.model.can_create("Payment Entry")) {
listview.page.add_action_item(__("Payment"), () => {
erpnext.bulk_transaction_processing.create(listview, "Purchase Invoice", "Payment Entry");
});
}
},
};

View File

@@ -372,6 +372,53 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin):
self.assertEqual(discrepancy_caused_by_exchange_rate_diff, amount)
def test_purchase_invoice_with_exchange_rate_difference_for_non_stock_item(self):
from erpnext.stock.doctype.purchase_receipt.purchase_receipt import (
make_purchase_invoice as create_purchase_invoice,
)
# Creating Purchase Invoice with USD currency
pr = frappe.new_doc("Purchase Receipt")
pr.currency = "USD"
pr.company = "_Test Company with perpetual inventory"
pr.conversion_rate = (70,)
pr.supplier = "_Test Supplier USD"
pr.append(
"items",
{
"item_code": "_Test Non Stock Item",
"qty": 1,
"rate": 100,
},
)
pr.append(
"items",
{"item_code": "_Test Item", "qty": 1, "rate": 5, "warehouse": "Stores - TCP1"},
)
pr.insert()
pr.submit()
# Createing purchase invoice against Purchase Receipt
pi = create_purchase_invoice(pr.name)
pi.conversion_rate = 80
pi.credit_to = "_Test Payable USD - TCP1"
pi.insert()
pi.submit()
# Get exchnage gain and loss account
exchange_gain_loss_account = frappe.db.get_value("Company", pi.company, "exchange_gain_loss_account")
# fetching the latest GL Entry with exchange gain and loss account account
amount = frappe.db.get_value(
"GL Entry", {"account": exchange_gain_loss_account, "voucher_no": pi.name}, "debit"
)
discrepancy_caused_by_exchange_rate_diff = abs(
pi.items[1].base_net_amount - pr.items[1].base_net_amount
)
self.assertEqual(discrepancy_caused_by_exchange_rate_diff, amount)
def test_purchase_invoice_change_naming_series(self):
pi = frappe.copy_doc(test_records[1])
pi.insert()
@@ -1838,6 +1885,52 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin):
frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 1)
def test_adjust_incoming_rate_for_rejected_item(self):
frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 0)
frappe.db.set_single_value("Buying Settings", "set_landed_cost_based_on_purchase_invoice_rate", 1)
# Cost of Item is zero in Purchase Receipt
pr = make_purchase_receipt(qty=1, rejected_qty=1, rate=0)
stock_value_difference = frappe.db.get_value(
"Stock Ledger Entry",
{"voucher_type": "Purchase Receipt", "voucher_no": pr.name},
"stock_value_difference",
)
self.assertEqual(stock_value_difference, 0)
pi = create_purchase_invoice_from_receipt(pr.name)
for row in pi.items:
row.qty = 1
row.rate = 150
pi.save()
pi.submit()
stock_value_difference = frappe.db.get_value(
"Stock Ledger Entry",
{"voucher_type": "Purchase Receipt", "voucher_no": pr.name, "warehouse": pi.items[0].warehouse},
"stock_value_difference",
)
self.assertEqual(stock_value_difference, 150)
stock_value_difference = frappe.db.get_value(
"Stock Ledger Entry",
{
"voucher_type": "Purchase Receipt",
"voucher_no": pr.name,
"warehouse": pi.items[0].rejected_warehouse,
},
"stock_value_difference",
)
self.assertFalse(stock_value_difference)
frappe.db.set_single_value("Buying Settings", "set_landed_cost_based_on_purchase_invoice_rate", 0)
frappe.db.set_single_value("Buying Settings", "maintain_same_rate", 1)
def test_item_less_defaults(self):
pi = frappe.new_doc("Purchase Invoice")
pi.supplier = "_Test Supplier"
@@ -2448,6 +2541,34 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin):
self.assertEqual(len(actual), 3)
self.assertEqual(expected, actual)
def test_invoice_against_returned_pr(self):
from erpnext.stock.doctype.item.test_item import make_item
from erpnext.stock.doctype.purchase_receipt.purchase_receipt import (
make_purchase_invoice as make_purchase_invoice_from_pr,
)
from erpnext.stock.doctype.purchase_receipt.purchase_receipt import (
make_purchase_return_against_rejected_warehouse,
)
item = make_item("_Test Item For Invoice Against Returned PR", properties={"is_stock_item": 1}).name
original_value = frappe.db.get_single_value(
"Buying Settings", "bill_for_rejected_quantity_in_purchase_invoice"
)
frappe.db.set_single_value("Buying Settings", "bill_for_rejected_quantity_in_purchase_invoice", 0)
pr = make_purchase_receipt(item_code=item, qty=5, rejected_qty=5, rate=100)
pr_return = make_purchase_return_against_rejected_warehouse(pr.name)
pr_return.submit()
pi = make_purchase_invoice_from_pr(pr.name)
pi.save()
self.assertEqual(pi.items[0].qty, 5.0)
frappe.db.set_single_value(
"Buying Settings", "bill_for_rejected_quantity_in_purchase_invoice", original_value
)
def set_advance_flag(company, flag, default_account):
frappe.db.set_value(

View File

@@ -14,7 +14,8 @@
"advance_amount",
"allocated_amount",
"exchange_gain_loss",
"ref_exchange_rate"
"ref_exchange_rate",
"difference_posting_date"
],
"fields": [
{
@@ -30,7 +31,7 @@
"width": "180px"
},
{
"columns": 3,
"columns": 2,
"fieldname": "reference_name",
"fieldtype": "Dynamic Link",
"in_list_view": 1,
@@ -40,7 +41,7 @@
"read_only": 1
},
{
"columns": 3,
"columns": 2,
"fieldname": "remarks",
"fieldtype": "Text",
"in_list_view": 1,
@@ -111,13 +112,20 @@
"label": "Reference Exchange Rate",
"non_negative": 1,
"read_only": 1
},
{
"columns": 2,
"fieldname": "difference_posting_date",
"fieldtype": "Date",
"in_list_view": 1,
"label": "Difference Posting Date"
}
],
"idx": 1,
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
"modified": "2023-06-23 21:13:18.013816",
"modified": "2024-12-20 12:04:46.729972",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Purchase Invoice Advance",

View File

@@ -16,6 +16,7 @@ class PurchaseInvoiceAdvance(Document):
advance_amount: DF.Currency
allocated_amount: DF.Currency
difference_posting_date: DF.Date | None
exchange_gain_loss: DF.Currency
parent: DF.Data
parentfield: DF.Data

View File

@@ -16,6 +16,10 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends (
setup(doc) {
this.setup_posting_date_time_check();
super.setup(doc);
this.frm.make_methods = {
Dunning: this.make_dunning.bind(this),
"Invoice Discounting": this.make_invoice_discounting.bind(this),
};
}
company() {
super.company();
@@ -61,9 +65,10 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends (
refresh(doc, dt, dn) {
const me = this;
super.refresh();
if (cur_frm.msgbox && cur_frm.msgbox.$wrapper.is(":visible")) {
if (this.frm?.msgbox && this.frm.msgbox.$wrapper.is(":visible")) {
// hide new msgbox
cur_frm.msgbox.hide();
this.frm.msgbox.hide();
}
this.frm.toggle_reqd("due_date", !this.frm.doc.is_return);
@@ -121,12 +126,9 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends (
},
__("Create")
);
cur_frm.add_custom_button(
this.frm.add_custom_button(
__("Invoice Discounting"),
function () {
cur_frm.events.create_invoice_discounting(cur_frm);
},
this.make_invoice_discounting.bind(this),
__("Create")
);
@@ -135,22 +137,14 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends (
.reduce((prev, current) => prev || current, false);
if (payment_is_overdue) {
this.frm.add_custom_button(
__("Dunning"),
() => {
this.frm.events.create_dunning(this.frm);
},
__("Create")
);
this.frm.add_custom_button(__("Dunning"), this.make_dunning.bind(this), __("Create"));
}
}
if (doc.docstatus === 1) {
cur_frm.add_custom_button(
__("Maintenance Schedule"),
function () {
cur_frm.cscript.make_maintenance_schedule();
},
this.make_maintenance_schedule.bind(this),
__("Create")
);
}
@@ -185,6 +179,20 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends (
erpnext.accounts.unreconcile_payment.add_unreconcile_btn(me.frm);
}
make_invoice_discounting() {
frappe.model.open_mapped_doc({
method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.create_invoice_discounting",
frm: this.frm,
});
}
make_dunning() {
frappe.model.open_mapped_doc({
method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.create_dunning",
frm: this.frm,
});
}
make_maintenance_schedule() {
frappe.model.open_mapped_doc({
method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.make_maintenance_schedule",
@@ -994,67 +1002,57 @@ frappe.ui.form.on("Sales Invoice", {
refresh: function (frm) {
if (frm.doc.docstatus === 0 && !frm.doc.is_return) {
frm.add_custom_button(__("Fetch Timesheet"), function () {
let d = new frappe.ui.Dialog({
title: __("Fetch Timesheet"),
fields: [
{
label: __("From"),
fieldname: "from_time",
fieldtype: "Date",
reqd: 1,
frm.add_custom_button(
__("Timesheet"),
function () {
let d = new frappe.ui.Dialog({
title: __("Fetch Timesheet"),
fields: [
{
label: __("From"),
fieldname: "from_time",
fieldtype: "Date",
reqd: 1,
},
{
fieldtype: "Column Break",
fieldname: "col_break_1",
},
{
label: __("To"),
fieldname: "to_time",
fieldtype: "Date",
reqd: 1,
},
{
label: __("Project"),
fieldname: "project",
fieldtype: "Link",
options: "Project",
default: frm.doc.project,
},
],
primary_action: function () {
const data = d.get_values();
frm.events.add_timesheet_data(frm, {
from_time: data.from_time,
to_time: data.to_time,
project: data.project,
});
d.hide();
},
{
fieldtype: "Column Break",
fieldname: "col_break_1",
},
{
label: __("To"),
fieldname: "to_time",
fieldtype: "Date",
reqd: 1,
},
{
label: __("Project"),
fieldname: "project",
fieldtype: "Link",
options: "Project",
default: frm.doc.project,
},
],
primary_action: function () {
const data = d.get_values();
frm.events.add_timesheet_data(frm, {
from_time: data.from_time,
to_time: data.to_time,
project: data.project,
});
d.hide();
},
primary_action_label: __("Get Timesheets"),
});
d.show();
});
primary_action_label: __("Get Timesheets"),
});
d.show();
},
__("Get Items From")
);
}
if (frm.doc.is_debit_note) {
frm.set_df_property("return_against", "label", __("Adjustment Against"));
}
},
create_invoice_discounting: function (frm) {
frappe.model.open_mapped_doc({
method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.create_invoice_discounting",
frm: frm,
});
},
create_dunning: function (frm) {
frappe.model.open_mapped_doc({
method: "erpnext.accounts.doctype.sales_invoice.sales_invoice.create_dunning",
frm: frm,
});
},
});
frappe.ui.form.on("Sales Invoice Timesheet", {

View File

@@ -299,7 +299,8 @@
"oldfieldname": "project_name",
"oldfieldtype": "Link",
"options": "Project",
"print_hide": 1
"print_hide": 1,
"search_index": 1
},
{
"default": "0",
@@ -2161,7 +2162,7 @@
{
"default": "1",
"depends_on": "eval: doc.is_return && doc.return_against",
"description": "Credit Note will update it's own outstanding amount, even if \"Return Against\" is specified.",
"description": "Credit Note will update it's own outstanding amount, even if 'Return Against' is specified.",
"fieldname": "update_outstanding_for_self",
"fieldtype": "Check",
"label": "Update Outstanding for Self",
@@ -2186,7 +2187,7 @@
"link_fieldname": "consolidated_invoice"
}
],
"modified": "2024-11-26 12:34:09.110690",
"modified": "2025-02-06 15:59:54.636202",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Sales Invoice",

View File

@@ -24,7 +24,11 @@ from erpnext.accounts.doctype.tax_withholding_category.tax_withholding_category
)
from erpnext.accounts.general_ledger import get_round_off_account_and_cost_center
from erpnext.accounts.party import get_due_date, get_party_account, get_party_details
from erpnext.accounts.utils import cancel_exchange_gain_loss_journal, get_account_currency
from erpnext.accounts.utils import (
cancel_exchange_gain_loss_journal,
get_account_currency,
update_voucher_outstanding,
)
from erpnext.assets.doctype.asset.depreciation import (
depreciate_asset,
get_disposal_account_and_cost_center,
@@ -39,7 +43,7 @@ from erpnext.controllers.selling_controller import SellingController
from erpnext.projects.doctype.timesheet.timesheet import get_projectwise_timesheet_data
from erpnext.setup.doctype.company.company import update_company_current_month_sales
from erpnext.stock.doctype.delivery_note.delivery_note import update_billed_amount_based_on_so
from erpnext.stock.doctype.serial_no.serial_no import get_delivery_note_serial_no, get_serial_nos
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
form_grid_templates = {"items": "templates/form_grid/item_grid.html"}
@@ -321,9 +325,7 @@ class SalesInvoice(SellingController):
self.set_against_income_account()
self.validate_time_sheets_are_submitted()
self.validate_multiple_billing("Delivery Note", "dn_detail", "amount")
if not self.is_return:
self.validate_serial_numbers()
else:
if self.is_return:
self.timesheets = []
self.update_packing_list()
self.set_billing_hours_and_amount()
@@ -367,7 +369,7 @@ class SalesInvoice(SellingController):
if self.update_stock:
frappe.throw(_("'Update Stock' cannot be checked for fixed asset sale"))
elif asset.status in ("Scrapped", "Cancelled", "Capitalized", "Decapitalized") or (
elif asset.status in ("Scrapped", "Cancelled", "Capitalized") or (
asset.status == "Sold" and not self.is_return
):
frappe.throw(
@@ -507,7 +509,7 @@ class SalesInvoice(SellingController):
frappe.throw(_("Total payments amount can't be greater than {}").format(-invoice_total))
def validate_pos_paid_amount(self):
if len(self.payments) == 0 and self.is_pos:
if len(self.payments) == 0 and self.is_pos and flt(self.grand_total) > 0:
frappe.throw(_("At least one mode of payment is required for POS invoice."))
def check_if_consolidated_invoice(self):
@@ -1002,9 +1004,9 @@ class SalesInvoice(SellingController):
def validate_pos(self):
if self.is_return:
invoice_total = self.rounded_total or self.grand_total
if flt(self.paid_amount) + flt(self.write_off_amount) - flt(invoice_total) > 1.0 / (
10.0 ** (self.precision("grand_total") + 1.0)
):
if abs(flt(self.paid_amount)) + abs(flt(self.write_off_amount)) - abs(
flt(invoice_total)
) > 1.0 / (10.0 ** (self.precision("grand_total") + 1.0)):
frappe.throw(_("Paid amount + Write Off Amount can not be greater than Grand Total"))
def validate_warehouse(self):
@@ -1194,14 +1196,14 @@ class SalesInvoice(SellingController):
make_reverse_gl_entries(voucher_type=self.doctype, voucher_no=self.name)
if update_outstanding == "No":
from erpnext.accounts.doctype.gl_entry.gl_entry import update_outstanding_amt
update_outstanding_amt(
self.debit_to,
"Customer",
self.customer,
self.doctype,
self.return_against if cint(self.is_return) and self.return_against else self.name,
update_voucher_outstanding(
voucher_type=self.doctype,
voucher_no=self.return_against
if cint(self.is_return) and self.return_against
else self.name,
account=self.debit_to,
party_type="Customer",
party=self.customer,
)
elif self.docstatus == 2 and cint(self.update_stock) and cint(auto_accounting_for_stock):
@@ -1706,53 +1708,6 @@ class SalesInvoice(SellingController):
self.set("write_off_amount", reference_doc.get("write_off_amount"))
self.due_date = None
def validate_serial_numbers(self):
"""
validate serial number agains Delivery Note and Sales Invoice
"""
self.set_serial_no_against_delivery_note()
self.validate_serial_against_delivery_note()
def set_serial_no_against_delivery_note(self):
for item in self.items:
if item.serial_no and item.delivery_note and item.qty != len(get_serial_nos(item.serial_no)):
item.serial_no = get_delivery_note_serial_no(item.item_code, item.qty, item.delivery_note)
def validate_serial_against_delivery_note(self):
"""
validate if the serial numbers in Sales Invoice Items are same as in
Delivery Note Item
"""
for item in self.items:
if not item.delivery_note or not item.dn_detail:
continue
serial_nos = frappe.db.get_value("Delivery Note Item", item.dn_detail, "serial_no") or ""
dn_serial_nos = set(get_serial_nos(serial_nos))
serial_nos = item.serial_no or ""
si_serial_nos = set(get_serial_nos(serial_nos))
serial_no_diff = si_serial_nos - dn_serial_nos
if serial_no_diff:
dn_link = frappe.utils.get_link_to_form("Delivery Note", item.delivery_note)
serial_no_msg = ", ".join(frappe.bold(d) for d in serial_no_diff)
msg = _("Row #{0}: The following Serial Nos are not present in Delivery Note {1}:").format(
item.idx, dn_link
)
msg += " " + serial_no_msg
frappe.throw(msg=msg, title=_("Serial Nos Mismatch"))
if item.serial_no and cint(item.qty) != len(si_serial_nos):
frappe.throw(
_("Row #{0}: {1} Serial numbers required for Item {2}. You have provided {3}.").format(
item.idx, item.qty, item.item_code, len(si_serial_nos)
)
)
def update_project(self):
unique_projects = list(set([d.project for d in self.get("items") if d.project]))
if self.project and self.project not in unique_projects:

View File

@@ -32,12 +32,16 @@ frappe.listview_settings["Sales Invoice"] = {
right_column: "grand_total",
onload: function (listview) {
listview.page.add_action_item(__("Delivery Note"), () => {
erpnext.bulk_transaction_processing.create(listview, "Sales Invoice", "Delivery Note");
});
if (frappe.model.can_create("Delivery Note")) {
listview.page.add_action_item(__("Delivery Note"), () => {
erpnext.bulk_transaction_processing.create(listview, "Sales Invoice", "Delivery Note");
});
}
listview.page.add_action_item(__("Payment"), () => {
erpnext.bulk_transaction_processing.create(listview, "Sales Invoice", "Payment Entry");
});
if (frappe.model.can_create("Payment Entry")) {
listview.page.add_action_item(__("Payment"), () => {
erpnext.bulk_transaction_processing.create(listview, "Sales Invoice", "Payment Entry");
});
}
},
};

View File

@@ -43,6 +43,7 @@ from erpnext.stock.doctype.stock_entry.test_stock_entry import (
from erpnext.stock.doctype.stock_reconciliation.test_stock_reconciliation import (
create_stock_reconciliation,
)
from erpnext.stock.get_item_details import get_item_tax_map
from erpnext.stock.utils import get_incoming_rate, get_stock_balance
@@ -2873,13 +2874,26 @@ class TestSalesInvoice(FrappeTestCase):
item.save()
sales_invoice = create_sales_invoice(item="T Shirt", rate=700, do_not_submit=True)
item_tax_map = get_item_tax_map(
company=sales_invoice.company,
item_tax_template=sales_invoice.items[0].item_tax_template,
)
self.assertEqual(sales_invoice.items[0].item_tax_template, "_Test Account Excise Duty @ 12 - _TC")
self.assertEqual(sales_invoice.items[0].item_tax_rate, item_tax_map)
# Apply discount
sales_invoice.apply_discount_on = "Net Total"
sales_invoice.discount_amount = 300
sales_invoice.save()
item_tax_map = get_item_tax_map(
company=sales_invoice.company,
item_tax_template=sales_invoice.items[0].item_tax_template,
)
self.assertEqual(sales_invoice.items[0].item_tax_template, "_Test Account Excise Duty @ 10 - _TC")
self.assertEqual(sales_invoice.items[0].item_tax_rate, item_tax_map)
@change_settings("Selling Settings", {"enable_discount_accounting": 1})
def test_sales_invoice_with_discount_accounting_enabled(self):
@@ -4221,6 +4235,7 @@ class TestSalesInvoice(FrappeTestCase):
si = create_sales_invoice(do_not_submit=True)
project = frappe.new_doc("Project")
project.company = "_Test Company"
project.project_name = "Test Total Billed Amount"
project.save()
@@ -4231,6 +4246,30 @@ class TestSalesInvoice(FrappeTestCase):
doc = frappe.get_doc("Project", project.name)
self.assertEqual(doc.total_billed_amount, si.grand_total)
def test_pos_returns_with_party_account_currency(self):
from erpnext.accounts.doctype.sales_invoice.sales_invoice import make_sales_return
pos_profile = make_pos_profile()
pos_profile.payments = []
pos_profile.append("payments", {"default": 1, "mode_of_payment": "Cash"})
pos_profile.save()
pos = create_sales_invoice(
customer="_Test Customer USD",
currency="USD",
conversion_rate=86.595000000,
qty=2,
do_not_save=True,
)
pos.is_pos = 1
pos.pos_profile = pos_profile.name
pos.debit_to = "_Test Receivable USD - _TC"
pos.append("payments", {"mode_of_payment": "Cash", "account": "_Test Bank - _TC", "amount": 20.35})
pos.save().submit()
pos_return = make_sales_return(pos.name)
self.assertEqual(abs(pos_return.payments[0].amount), pos.payments[0].amount)
def set_advance_flag(company, flag, default_account):
frappe.db.set_value(

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