Compare commits

...

2198 Commits

Author SHA1 Message Date
Ankush Menat
0255642deb Merge branch 'develop' into fix-get_single_value 2024-01-10 10:42:12 +05:30
Ankush Menat
2178fdc65a fix: get_single_value doesn't support multiple fields 2024-01-10 10:39:45 +05:30
0xD0M1M0
eabf706f37 fix: projects website list visible for guests and all logged in customers (#39164)
* fix: projects website list visible for guests

fix: projects website list visible for guests and all logged in customers

see the issue for details

fixes issue #39009

* fix: remove user = frappe.session.user
2024-01-10 10:29:38 +05:30
barredterra
d4d9e6c6fa test: fix wrong fieldname 2024-01-10 01:25:24 +01:00
barredterra
2eb318a5ce fix: wrong usage of get_single_value 2024-01-10 00:53:05 +01:00
Ankush Menat
b897225136 fix: Remove reference to non-existing doctype 2024-01-09 22:04:24 +05:30
Ankush Menat
bb18ae82cf refactor: use db.get_single_value 2024-01-09 21:57:50 +05:30
s-aga-r
74ceb6da5e Merge pull request #39242 from s-aga-r/FIX-8184
fix: skip rate validation for return `DN Items` with `Moving Average` valuation
2024-01-09 21:45:45 +05:30
s-aga-r
e0ad52b500 fix: skip rate validation for return DN Items with Moving Average valuation 2024-01-09 21:18:19 +05:30
s-aga-r
8252d92e6a Merge pull request #39262 from s-aga-r/FIX-8208
fix: Duplicate Closing Stock Balance
2024-01-09 19:31:53 +05:30
s-aga-r
b15795392b fix: Duplicate Closing Stock Balance 2024-01-09 19:03:06 +05:30
rohitwaghchaure
274c65c451 fix: TypeError is pricing rules (#39252) 2024-01-09 16:20:42 +05:30
s-aga-r
1b4fbbb115 Merge pull request #39158 from s-aga-r/FIX-8011
fix: add read permission to Buying Settings
2024-01-09 16:13:04 +05:30
ruthra kumar
f95403d1dc Merge pull request #39251 from ruthra-kumar/continues_pr_39196
fix: update status on manual allocation
2024-01-09 15:59:03 +05:30
rohitwaghchaure
2d2ff7cf52 fix: incorrect indicator title for portal sales order (#39247) 2024-01-09 15:37:46 +05:30
ruthra kumar
d32a407e08 fix: update status on manual allocation 2024-01-09 15:35:42 +05:30
rohitwaghchaure
5e0d017497 fix: BOM replace tool does not update exploded items of root (#39244) 2024-01-09 15:32:45 +05:30
Nabin Hait
ec07b42ea2 Merge pull request #38530 from bosue/duplicate_zero_quantity_check2
refactor: Consolidate duplicate zero-quantity Items checks for transactions.
2024-01-09 13:12:25 +05:30
ruthra kumar
3b861798e6 Merge pull request #39237 from ruthra-kumar/github_issue_38868
fix: sales team commission overallocation on fetching items from multiple quotations to Sales Order
2024-01-09 13:06:28 +05:30
ruthra kumar
b498094a97 fix: total allocated percentage for sales team issue 2024-01-09 12:40:41 +05:30
Nabin Hait
62bbcbc7ef Merge pull request #39202 from GursheenK/fiscal-year-naming-keyerror
fix: parse naming series with FY name
2024-01-08 21:48:39 +05:30
Nabin Hait
96530b9c0b Merge pull request #39193 from GursheenK/coa-from-existing-company
fix: account currency from existing company COA
2024-01-08 21:46:52 +05:30
Nabin Hait
0cbcc55d9a Merge pull request #39195 from GursheenK/no-copy-party-balance
fix: avoid copying party balance on duplication of PE
2024-01-08 21:38:53 +05:30
Nabin Hait
6b5c54bcbc Merge pull request #39209 from nabinhait/asset-depreciation-currency
fix: Introduced company field to show amounts in company currency
2024-01-08 21:37:57 +05:30
Nabin Hait
c2dde04aa2 Merge pull request #39214 from nabinhait/item-quick-entry
fix: Show maintain-stock and is-fixed-asset checkbox in item quick entry dialog
2024-01-08 21:35:55 +05:30
Nabin Hait
c14986f9e6 fix: Show maintain-stock and is-fixed-asset checkbox in item quick entry dialog 2024-01-08 18:15:55 +05:30
ruthra kumar
62a6945bd2 Merge pull request #39196 from ruthra-kumar/incorrect_status_in_bank_transaction
fix: bank transaction status upon reconciliation
2024-01-08 18:06:30 +05:30
Shariq Ansari
be8bb235dc chore: linter fix 2024-01-08 18:00:02 +05:30
Shariq Ansari
498bf15ecd chore: linter fix 2024-01-08 17:58:59 +05:30
ruthra kumar
210d7711b4 Merge pull request #39212 from ruthra-kumar/make_use_of_doc_level_proj_filter
fix: project filters on Delivery Note and Sales Order
2024-01-08 17:37:57 +05:30
ruthra kumar
cf988434e9 refactor: remove 'Bank Trasaction' logic from status_update 2024-01-08 17:32:22 +05:30
rohitwaghchaure
466625213b fix: FG Item incorrect qty in the work order (#39200) 2024-01-08 17:18:29 +05:30
ruthra kumar
9ba6ff67d5 fix: project filters on Delivery Note and Sales Order 2024-01-08 17:11:26 +05:30
Nabin Hait
eab22eb282 fix: Introduced company field to show amounts in company currency 2024-01-08 16:35:45 +05:30
Shariq Ansari
7e198ccb21 Merge pull request #39204 from shariquerik/add-expected-start-date-in-sort
fix: add expected_start_date in sort by
2024-01-08 16:09:13 +05:30
Shariq Ansari
3d54fd8389 fix: add expected_start_date in sort by 2024-01-08 16:04:40 +05:30
Gursheen Anand
d0ea598cdf fix: fetch name for fy 2024-01-08 15:50:50 +05:30
ruthra kumar
6de8c18f98 fix: bank transction status upon reconciliation 2024-01-08 15:38:43 +05:30
Gursheen Anand
5923b48ede fix: avoid copying party balance 2024-01-08 13:18:01 +05:30
Gursheen Anand
7d264696f3 fix: account currency from existing company coa 2024-01-08 13:07:42 +05:30
rohitwaghchaure
b96c063c93 fix: duplicate entry for serial / batch creation (#39188) 2024-01-08 12:51:14 +05:30
Nabin Hait
2bad706dcf Merge pull request #39163 from nabinhait/asset-fix1
fix: Purchase information is not required for creating a composite asset
2024-01-08 12:21:35 +05:30
s-aga-r
7fa3e82ac7 Merge pull request #39167 from s-aga-r/FIX-7864
fix: update Maintenance Schedule status on Maintenance Visit submit
2024-01-08 11:49:36 +05:30
ruthra kumar
7ddbfa10c9 Merge pull request #39161 from ruthra-kumar/allow_sales_invoice_in_bank_reconciliation
refactor: allow sales invoice in Bank Reconciliation tool
2024-01-08 10:31:31 +05:30
ruthra kumar
4bd437b59d Merge pull request #39165 from ruthra-kumar/bug_in_payment_entry_outstanding_reference
fix: incorrect outstanding amt validation on advance as liability
2024-01-08 10:14:15 +05:30
ruthra kumar
fca8028e3c Merge pull request #39159 from ruthra-kumar/testing_bulk_transaction_permissions
refactor: prevent permission error by always processing bulk transaction in background
2024-01-08 10:11:47 +05:30
s-aga-r
cd293a5173 fix: update Maintenance Schedule status on Maintenance Visit submit 2024-01-06 11:36:22 +05:30
Raffael Meyer
07b605a287 fix: make Dr/Cr in CoA translatable (#39033)
* fix: make Dr/Cr in CoA translatable

* fix: german translations
2024-01-05 23:33:42 +05:30
s-aga-r
54383cfb55 Merge pull request #39140 from s-aga-r/FIX-8018
fix: don't set rate for non-stock item in Internal Transfer
2024-01-05 22:51:47 +05:30
ruthra kumar
4cc3c1b765 fix: incorrect outstanding amt validation on advance as liability 2024-01-05 20:42:38 +05:30
s-aga-r
4d56f725fe fix: make Sales Person non-mandatory 2024-01-05 18:44:06 +05:30
Nabin Hait
c34f09c503 fix: Purchase date and amount is not mandatory for composite asset creation 2024-01-05 17:38:51 +05:30
Nabin Hait
fe43dab4d7 fix: improved validation message 2024-01-05 17:12:08 +05:30
ruthra kumar
b69cdeb4a6 refactor: allow sales invoice in Bank Reconciliation tool 2024-01-05 16:13:49 +05:30
ruthra kumar
15dc5c7e99 refactor: prevent permissions by always processing in background 2024-01-05 15:47:02 +05:30
s-aga-r
e05bf9d32a fix: add read permission to Buying Settings 2024-01-05 15:35:14 +05:30
mergify[bot]
3fb7886418 fix: Creating Asset Activity while Importing Asset (backport #39113) (#39156)
fix: Creating Asset Activity while Importing Asset (#39113)

* fix: import asset not working on activity

* chore: fix linting issue in asset_activity.py

---------

Co-authored-by: Anand Baburajan <anandbaburajan@gmail.com>
(cherry picked from commit 5e4693763a)

Co-authored-by: Aulia Bismar <auliabismar@yahoo.com>
2024-01-05 10:50:49 +05:30
rohitwaghchaure
bae7c64964 fix: inventory dimension negative stock validation (#39149) 2024-01-04 18:47:06 +05:30
Raffael Meyer
68c0e188e8 fix: remove parent_field parameter from calls to rebuild_tree (#39146)
fix: remove parent_field parameter from calls to rebuild_tree

The parent_field parameter became redundant with https://github.com/frappe/frappe/pull/24107
2024-01-04 18:12:41 +05:30
Raffael Meyer
e912e9597d fix(Employee): treeview (#39126) 2024-01-04 18:03:28 +05:30
s-aga-r
610d4f5cb6 Merge pull request #39127 from s-aga-r/FIX-38702
feat: provision to close SCO
2024-01-04 16:38:21 +05:30
s-aga-r
cdd5441435 fix(text): test_update_status 2024-01-04 15:52:11 +05:30
rohitwaghchaure
f09e2130a1 fix: serial / batch barcode scanner (#39114) 2024-01-04 14:58:02 +05:30
s-aga-r
0819675fce fix: auto close and reopen SCO based on PO status 2024-01-04 13:44:53 +05:30
s-aga-r
784b6dcfea fix: don't allow to reopen SCO if PO is closed 2024-01-04 13:05:17 +05:30
s-aga-r
245effcccd fix: update qty on SCO status change 2024-01-04 12:56:57 +05:30
s-aga-r
0d01bd8a5a fix: don't close PO on SCO close 2024-01-04 12:34:25 +05:30
s-aga-r
57b6a98703 test: internal transfer for non-stock item 2024-01-04 12:20:53 +05:30
s-aga-r
e1b0fffd0c fix: don't set rate for non-stock item in Internal Transfer 2024-01-04 11:43:02 +05:30
Deepesh Garg
c2f88f29dc Merge pull request #39138 from deepeshgarg007/subscription_patch_fix
fix: Subscription update patch
2024-01-04 11:23:33 +05:30
Deepesh Garg
277dade9f9 fix: Subscription update patch 2024-01-04 11:22:42 +05:30
Deepesh Garg
e2cf1ea73e Merge pull request #39125 from ruthra-kumar/ignore_cancelled_payment_in_sales_register
fix: ignore cancelled payments in Sales/Purchase Register
2024-01-04 11:14:25 +05:30
Deepesh Garg
df409d80e0 Merge pull request #39135 from deepeshgarg007/demo_test_case
fix: flaky demo test case
2024-01-04 11:14:08 +05:30
Deepesh Garg
5b1571879c fix: flaky demo test case 2024-01-04 10:48:01 +05:30
s-aga-r
bb839b2924 fix(ux): filter closed SCO in Get Items From dialog 2024-01-03 22:37:01 +05:30
s-aga-r
5bc2035bd0 fix: don't allow to submit/cancel SE against a closed SCO 2024-01-03 22:20:06 +05:30
s-aga-r
9e973476b2 fix: don't allow to submit/cancel SCR against a closed SCO 2024-01-03 22:13:37 +05:30
s-aga-r
5e2669f4b6 feat: provision to close SCO 2024-01-03 21:43:38 +05:30
ruthra kumar
0f1be03faf fix: ignore cancelled payments in Sales/Purchase Register 2024-01-03 20:57:01 +05:30
ruthra kumar
351ee5b8fe Merge pull request #39116 from ruthra-kumar/fix_multi_select_dialog_for_invoices
fix: typerror on multi select dialog
2024-01-03 20:53:46 +05:30
Ankush Menat
e84c9f7c51 fix(UX): dont override framework's permission check messages (#39118) 2024-01-03 20:10:19 +05:30
ruthra kumar
7da9ffa3bd fix: typerror on multi select dialog 2024-01-03 17:59:15 +05:30
Ankush Menat
4415212a2d chore: use diff secret 2024-01-03 12:50:25 +05:30
Ankush Menat
6401908f41 fix: Ignore UP on "allowed to transact with" (#39103)
If a customer is allowed to transact with some company it usually
doesn't imply that customer is somehow "linked with" that company.
2024-01-03 11:15:34 +05:30
Deepesh Garg
beee98da6d feat: Against voucher filter in General Ledger (#39100) 2024-01-03 10:03:27 +05:30
ruthra kumar
60c33ac3e6 Merge pull request #39097 from ruthra-kumar/make_loyalty_program_editable
refactor: flag to control loyalty point creation at invoice level
2024-01-03 09:46:43 +05:30
ruthra kumar
1bc74bde29 refactor: flag to control loyalty point creation at invoice level 2024-01-02 17:26:39 +05:30
Rushabh Mehta
12c40ef2e4 Merge pull request #39093 from rmehta/rename-workspace
fix(minor): Rename "ERPNext Settings" to "Settings" and remove "ERPNe…
2024-01-02 15:52:45 +05:30
Rushabh Mehta
b250a21a2b fix(minor): remove "hide_workspaces" from erpnext/install.py 2024-01-02 15:50:54 +05:30
Rushabh Mehta
4e28b5a199 fix(minor): Rename "ERPNext Settings" to "Settings" and remove "ERPNext Integrations" workspace 2024-01-02 15:27:41 +05:30
Ankush Menat
739434b727 perf: index item_code in bom explosion item (#39085) 2024-01-02 14:31:41 +05:30
Parameshwari Palanisamy
9ea963bfe9 fix: Variant Items, List View Enabled to Variant Status Change (#38468)
* feat: Purchase Register Report Supplier Group filter Adding

* fix: Variant Items, List View Enabled to Variant Status Change

* Update purchase_register.js

* Update purchase_register.py
2024-01-02 14:04:56 +05:30
rohitwaghchaure
6e5484ea03 fix: on cancellation of document cancel the serial and batch bundle (#39076) 2024-01-02 12:54:18 +05:30
ruthra kumar
d048644327 Merge pull request #39067 from ruthra-kumar/fix_undefined_error_in_budget_variance_report
fix: undefined error in Budget Variance and Profitability report
2024-01-01 17:37:07 +05:30
ruthra kumar
1a9e091d12 fix: select options should dynamically load dimensions 2024-01-01 17:32:33 +05:30
ruthra kumar
1b0d9643cd Merge pull request #39023 from ruthra-kumar/refactor_customer_ledger_summary
refactor(perf): replace account subquery with 'in' condition
2024-01-01 15:42:24 +05:30
ruthra kumar
92bc962f60 fix: undefined error in Budget Variance and Profitability report
'Budget' and 'Budget Account' doesn't have support for dynamic
dimension. It only supports hard-coded ones -  Project and Cost Center
2024-01-01 15:30:35 +05:30
Anand Baburajan
a9576f0cf6 feat: group by Asset in Asset Depreciations and Balances report (#38923)
feat: group by asset in asset depreciations and balances report
2024-01-01 15:03:21 +05:30
David Arnold
4f8a16848f chore: default_roles hook doesn't exist anymore (#39032) 2024-01-01 13:34:36 +05:30
Deepesh Garg
bacf2b7431 fix: Unable to save Sales Invoice (#39059) 2024-01-01 13:23:26 +05:30
Ankush Menat
34d8bc4701 chore: disable v13 auto releases 2024-01-01 13:13:25 +05:30
Ankush Menat
510fdf7bf6 fix(DX): capture tracebacks with context (#39060) 2024-01-01 13:10:03 +05:30
Anand Baburajan
0346f47c1d fix: take quantity into account when setting asset's gross purchase amt (#39056)
fix: take quantity into account when setting asset's gross purchase amount
2024-01-01 11:24:42 +05:30
Deepesh Garg
3f9693b31f fix: GL values in transaction currency via JV (#38914) 2023-12-31 20:00:03 +05:30
Smit Vora
877cc7255d fix: enqueue demo data setup on setup complete (#39043) 2023-12-31 10:54:07 +05:30
rohitwaghchaure
70abedc57a fix: work order with multi level, fetch operting cost from sub-assembly (#38992) 2023-12-29 16:50:31 +05:30
rohitwaghchaure
0c6de4ecb2 fix: non stock uom validation for serial and batch (#39018)
* fix: non stock uom validation for serial and batch

* test: delivery note for batch with non stock uom
2023-12-29 16:50:01 +05:30
ruthra kumar
a517125d64 refactor(perf): replace account subquery with 'in' condition 2023-12-29 14:57:16 +05:30
Gursheen Kaur Anand
b7f283b2f0 feat: skip disabled accounts in COA (#38551)
* feat: skip disabled accounts in coa

* fix: add parameter to other tree doctype utils
2023-12-29 12:55:37 +05:30
Deepesh Garg
cd37fd790b fix: Validate account in Sales/Purchase Taxes and Charges Template (#39013) 2023-12-29 12:52:22 +05:30
rohitwaghchaure
f983e09f92 fix: purchase return without item code not working (#39014) 2023-12-29 12:06:04 +05:30
Deepesh Garg
3b4b2275de fix: Multiple subscription fixes (#39005) 2023-12-29 08:25:38 +05:30
rohitwaghchaure
b5340c5ec0 fix: auto fetch not working if bundle exists (#39002) 2023-12-28 18:32:27 +05:30
rohitwaghchaure
10074e9980 fix: serial and batch bundle company mandatory error (#38994) 2023-12-28 17:56:24 +05:30
Deepesh Garg
bbee9b5637 fix: Opening balance in bank reconciliation tool (#38977) 2023-12-28 17:50:16 +05:30
ruthra kumar
915d864166 Merge pull request #38969 from ruthra-kumar/bug_in_p_l_report
fix: incorrect net profit in Profit and Loss Statement
2023-12-28 16:23:21 +05:30
ruthra kumar
8555617295 test: profit and loss report output 2023-12-28 15:56:35 +05:30
Ankush Menat
b71b0d5997 fix: remove bad defaults (#38986)
Child tables can't have a default.
2023-12-28 08:45:40 +00:00
rohitwaghchaure
a117ef3cb8 fix: not able to cancel sales invoice (#38979) 2023-12-28 11:14:27 +05:30
Raffael Meyer
33b631e395 Merge pull request #38805 from barredterra/remove-unused-coa 2023-12-28 00:06:50 +01:00
Deepesh Garg
9b1c22250f feat: Merge taxes from mapped docs (#38346)
* feat: Merge taxes from mapped docs

* chore: ci failures
2023-12-27 22:37:01 +05:30
Ankush Menat
4feecb69d8 ci: lock old resolved issue/PRs 2023-12-27 19:31:45 +05:30
ruthra kumar
12560e2407 Merge pull request #38496 from ruthra-kumar/bisect_accounting_reports
feat: utility to debug financial reports
2023-12-27 17:54:36 +05:30
ruthra kumar
0890b414b1 chore: resolve linter issues 2023-12-27 17:31:34 +05:30
ruthra kumar
d54f8318fb fix: incorrect total when Accumulating values 2023-12-27 16:50:07 +05:30
VihangT
fe77b9d633 fix : correct logic for overlap error (#38967)
fixing overlap error logic with taking care of sequential time job cards in overlap job card list
2023-12-27 16:11:29 +05:30
rohitwaghchaure
47ee801d37 fix: incorrect qty in serial batch bundle against pick list (#38964) 2023-12-27 13:09:23 +05:30
s-aga-r
705ae7da14 Merge pull request #38962 from s-aga-r/FIX-38781
fix: use `Stock Qty` while getting `POS Reserved Qty`
2023-12-27 12:50:37 +05:30
s-aga-r
7223106417 fix: use Stock Qty while getting POS Reserved Qty 2023-12-27 10:32:13 +05:30
barredterra
5a5758423e Merge remote-tracking branch 'upstream/develop' into remove-unused-coa 2023-12-26 16:06:43 +01:00
rohitwaghchaure
b09c9354fb fix: min order qty optional in production plan (#38956)
* fix: min order qty optional in production plan

* fix: test cases
2023-12-26 20:11:58 +05:30
rohitwaghchaure
d00f6672a8 fix: not able to import serial batch bundle using csv (#38950) 2023-12-26 15:24:04 +05:30
rohitwaghchaure
06d6220a2a fix: do not make serial batch bundle for zero qty (#38949) 2023-12-26 15:23:32 +05:30
ruthra kumar
3011322b22 Merge pull request #38891 from ruthra-kumar/customer_wise_report_price_issue
fix: incorrect price list in customer-wise item price report
2023-12-26 11:27:20 +05:30
s-aga-r
e560029736 Merge pull request #38942 from s-aga-r/FIX-38151-2
fix(ux): make PR and PI Item rate field readonly based on `Maintain Same Rate`
2023-12-26 10:20:34 +05:30
s-aga-r
b1ba210332 fix(ux): make PR Item rate field readonly based on Maintain Same Rate 2023-12-25 22:41:18 +05:30
s-aga-r
cb9114442b fix(ux): make PI Item rate field readonly based on Maintain Same Rate 2023-12-25 22:29:17 +05:30
s-aga-r
eb5bb9f9a9 fix(ux): make PI Item rate field editable 2023-12-25 22:05:02 +05:30
Wolfram Schmidt
87ba3b64f7 chore: german translation for actual time (#38837)
chore: german translation for actual time
2023-12-24 16:22:26 +05:30
Gursheen Kaur Anand
47f7b65058 feat: voucher subtype for general ledger (#38822)
* feat: add voucher subtype column to gle

* feat: add logic to set voucher subtypes

* feat: fetch voucher subtype in ledger report

* fix: order of conditions
2023-12-24 16:13:31 +05:30
rohitwaghchaure
161ae1edd1 fix: reset the incoming rate on changing of the warehouse (#38925) 2023-12-22 17:37:17 +05:30
s-aga-r
d097ad6c19 Merge pull request #38922 from s-aga-r/FIX-38558
fix: `Reserved Stock` report
2023-12-22 16:27:27 +05:30
s-aga-r
a5d5223c0e fix: Reserved Stock report 2023-12-22 15:46:06 +05:30
s-aga-r
1a1629196d chore: improve Allowed Qty error msg 2023-12-22 15:29:56 +05:30
s-aga-r
d0ed8ef83b Merge pull request #38558 from s-aga-r/ADD-ITEMS-STOCK-RESERVATION-DIALOG
feat: provision to add items in Stock Reservation dialog
2023-12-22 12:15:07 +05:30
hyaray
0773f66feb chore: Update company.py (#38660)
chore: Update company.py
2023-12-22 08:41:51 +05:30
Ankush Menat
2dc49c834a chore: fixup broken JSON files (#38915) 2023-12-22 07:36:27 +05:30
Ankush Menat
787333896c perf: Drop unused/duplicate/sub-optimal indexes (#38884)
* ci: enable more checks

* perf: Drop unused/duplicate indexes
2023-12-21 20:09:10 +05:30
Anand Baburajan
283763dfb2 chore: additional_asset_cost field (#38904) 2023-12-21 16:52:25 +05:30
mergify[bot]
07175367d8 fix: reposting not fixing valuation rate for sales return using movin… (backport #38895) (#38897)
* fix: reposting not fixing valuation rate for sales return using movin… (#38895)

fix: reposting not fixing valuation rate for sales return using moving average method
(cherry picked from commit 3a668bbe96)

# Conflicts:
#	erpnext/stock/stock_ledger.py

* chore: fix conflicts

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-12-21 14:40:52 +05:30
mergify[bot]
61219ca4ce fix: do not reset the basic rate for the material receipt stock entry (backport #38896) (#38898)
fix: do not reset the basic rate for the material receipt stock entry (#38896)

(cherry picked from commit 98bfcc4c75)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-12-21 14:23:08 +05:30
ruthra kumar
c20995ec2f Merge pull request #38893 from ruthra-kumar/typeerror_in_pos
fix: typeerror on pos order summary to new order screen
2023-12-21 12:21:59 +05:30
ruthra kumar
6a0a08b59c fix: typeerror on pos order summary to new order screen 2023-12-21 12:13:33 +05:30
Anand Baburajan
d370c60a6c feat: total_asset_cost field (#38879) 2023-12-20 19:02:32 +05:30
mergify[bot]
a6ab53236e fix: allow to set rate manually for service item in BOM (backport #38880) (#38882)
fix: allow to set rate manually for service item in BOM (#38880)

(cherry picked from commit c2f692a4e4)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-12-20 18:33:26 +05:30
ruthra kumar
9a00edb031 fix: incorrect price list in customer-wise item price report 2023-12-20 17:47:31 +05:30
NIYAZ RAZAK
ae353398d9 fix: local reference error in BOM (#38850)
fix: local reference error
2023-12-20 14:34:38 +05:30
Ankush Menat
9983283f95 perf: use estimated rows instead of actual rows (#38830) 2023-12-20 13:16:09 +05:30
ruthra kumar
6d5bdc6c68 fix: typerror on tree doctypes - Item Group, Customer Group, Supplier Group and Territory (#38870)
* refactor: typerror on set_root_readonly

* refactor: remove 'cur_frm' usage in supplier_group

* refactor: remove 'cur_frm' usage in territory.js

* refactor: remove 'cur_frm' from sales_person.js
2023-12-20 12:30:10 +05:30
ruthra kumar
80e69210db Merge pull request #38838 from pps190/fix-use-party-account-currency
fix: use party account currency when party account is specified
2023-12-20 12:29:04 +05:30
mergify[bot]
793e3ad78e fix: if not budget then don't validate (backport #38861) (#38864)
fix: if not budget then don't validate (#38861)

(cherry picked from commit d375164100)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-12-19 18:31:18 +05:30
mergify[bot]
4057682c87 fix: incoming rate for sales return with Moving Average valuation method (backport #38849) (#38863)
* fix: incoming rate for sales return with Moving Average valuation method (#38849)

(cherry picked from commit 7fdac62393)

# Conflicts:
#	erpnext/stock/doctype/delivery_note/test_delivery_note.py

* chore: fix conflicts

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-12-19 18:29:56 +05:30
mergify[bot]
5e68b7e3a6 fix: on closed unreserved the production plan qty (backport #38848) (#38859)
fix: on closed unreserved the production plan qty (#38848)

(cherry picked from commit 2184e8ef58)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-12-19 18:01:37 +05:30
s-aga-r
495b47db16 Merge pull request #38842 from SvbZ3r0/po-get-fg-item-qty
fix: set `fg-itm-qty` based on `qty` instead of the other way round in Subcontracting POs
2023-12-19 15:23:30 +05:30
mergify[bot]
4aa960b744 fix: item variant with manufacturer (backport #38845) (#38847)
* fix: item variant with manufacturer (#38845)

(cherry picked from commit e0c8ff10da)

* chore: fix test case

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-12-19 14:59:33 +05:30
ruthra kumar
dd6c192695 Merge pull request #38797 from rtdany10/ar-credit-note-fix
fix: wrong paid and cn amount on pos invoice
2023-12-19 11:02:01 +05:30
Dany Robert
8772628912 test: partial payment for pos invoice 2023-12-19 10:00:51 +05:30
Gughan Ravikumar
a99d0a65b0 fix: set fg-itm-qty based on qty instead of the other way round 2023-12-19 07:56:02 +05:30
Devin Slauenwhite
a09241e3c7 fix(test): expect account currency when party account is specified. 2023-12-18 19:09:25 +00:00
Devin Slauenwhite
c7b961ffa2 fix: use party account currency when party account is specified 2023-12-18 18:03:53 +00:00
mergify[bot]
32a608f948 fix: not able to make inter-company po from so (backport #38826) (#38828)
fix: not able to make inter-company po from so (#38826)

(cherry picked from commit 23042dfc3c)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-12-18 18:13:47 +05:30
Ankush Menat
8d79365e0d perf: index return_against on delivery note (#38827)
There's a multi-column index but that's useful IFF all parts of column
are part of query.

return against on it's own is VERY unique because it's a primary key, we
don't need a multi-column index here.
2023-12-18 18:06:44 +05:30
mergify[bot]
71e833c3f2 fix: not able to cancel SCR with Batch (backport #38817) (#38821)
* fix: not able to cancel SCR with Batch (#38817)

(cherry picked from commit fb5090fd3f)

# Conflicts:
#	erpnext/subcontracting/doctype/subcontracting_receipt/test_subcontracting_receipt.py

* chore: fix test case

* chore: fix test case

* chore: fix test case

* chore: fix test case

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-12-18 17:56:05 +05:30
ruthra kumar
b5f3013005 Merge pull request #38820 from ruthra-kumar/ignore_err_in_statements
refactor: ignore ERR journals in Statment of Accounts
2023-12-18 15:55:11 +05:30
ruthra kumar
39ef75e2d0 refactor: ignore ERR journals in Statment of Accounts 2023-12-18 13:39:26 +05:30
Raffael Meyer
42813d38c3 Merge pull request #38803 from barredterra/group-current-accounts 2023-12-17 19:23:01 +01:00
Deepesh Garg
55147781f3 Merge pull request #38807 from deepeshgarg007/canada_demo
fix(demo): Demo setup for Canadian COA
2023-12-17 14:05:07 +05:30
Deepesh Garg
c9fd182268 fix(demo): Demo setup for canadian COA 2023-12-17 13:36:58 +05:30
rohitwaghchaure
0743289925 fix: serial and batch bundle return not working (#38754)
* fix: serial and batch bundle return not working

* test: added test case for delivery note return against denormalized serial no
2023-12-17 12:42:07 +05:30
barredterra
4d75159247 chore: consistent naming for German CoA files 2023-12-16 21:27:38 +01:00
barredterra
baa1978128 feat: remove german CoA "SKR04 ohne Kontonummern"
To the best of my knwoledge, this is outdated, unused and not maintained.
2023-12-16 21:27:09 +01:00
barredterra
259f313af7 fix: groups for current accounts in German CoAs 2023-12-16 21:11:54 +01:00
Deepesh Garg
863116f1cd Merge pull request #37232 from GursheenK/make-against-field-dynamic
fix: make GL and JV against fields dynamic links
2023-12-16 22:27:50 +05:30
Dany Robert
5cb5e09dbb fix: wrong paid and cn amount on pos invoice 2023-12-16 04:35:43 +00:00
Ankush Menat
fa1c7b663c fix: Reset SLA on issue doesn't work (#38789)
This was broken since last refactor where it was spun off to work with
all types of doctypes but client side code was never adapted.
2023-12-15 22:00:01 +05:30
Raffael Meyer
a9a84cc7d4 Merge pull request #38742 from ljain112/fix-pur-reg 2023-12-15 15:22:19 +01:00
Deepesh Garg
ff967c45f7 Merge pull request #38691 from deepeshgarg007/init_values
fix: Init internal child table values
2023-12-15 18:14:45 +05:30
s-aga-r
9a5c422074 Merge pull request #38778 from s-aga-r/FIX-7327
fix: wrong currency in Stock Balance report
2023-12-15 15:28:52 +05:30
s-aga-r
5a83a16e60 fix: wrong currency in Stock Balance report 2023-12-15 14:45:09 +05:30
Anand Baburajan
1704180f38 fix: asset patch failure due to missing shift_based column (#38776)
* fix: add missing daily_prorata_based in get_asset_finance_books_map

* fix: reload Asset Finance Book doctype
2023-12-15 14:43:33 +05:30
ruthra kumar
0cf9ff0a04 Merge pull request #38766 from ruthra-kumar/7101_only_treat_none
fix: validation error on reconciling PE to Journals as Invoice
2023-12-15 13:09:06 +05:30
Gursheen Kaur Anand
41ae2a2dc5 Merge pull request #38767 from GursheenK/skip-bank-jvs-in-tax-report
fix: skip JVs against bank accounts in tax report
2023-12-15 12:57:40 +05:30
Gursheen Anand
f7b2380ec1 fix: skip jvs against bank accounts 2023-12-15 12:30:15 +05:30
ruthra kumar
5eeb650dfd fix: validation error on reconciling PE to Journals as Invoice
With the same exchange rate on Journal Entry and Payment Entry,
reconcilition should not post exc gain/loss journal and should not
throw validation error
2023-12-15 11:46:12 +05:30
s-aga-r
a1b95606b1 Merge pull request #38720 from s-aga-r/FIX-6545
fix(ux): don't override Item Name and Description in MR
2023-12-15 10:57:24 +05:30
s-aga-r
726ac6bda1 fix(ux): don't override Item Name and Description in MR 2023-12-15 10:56:54 +05:30
rohitwaghchaure
d6201ce5c7 fix: homepage not working (#38755) 2023-12-14 22:47:32 +05:30
Raffael Meyer
e7e23fbc96 Merge pull request #38533 from barredterra/date-format-system-settings 2023-12-14 16:38:00 +01:00
Raffael Meyer
e7544e9fc1 Merge pull request #38505 from barredterra/lead_name_from_email 2023-12-14 13:48:19 +01:00
Ankush Menat
eaf86a6461 fix: timezone aware SLA banner (#38745) 2023-12-14 15:53:57 +05:30
ljain112
f53ba178a8 fix: show bill_date and bill_no in Purchase Register 2023-12-14 12:28:32 +05:30
ruthra kumar
c68ad73c6e Merge pull request #38717 from ruthra-kumar/7101_payment_reconciiation_bug
fix: fetch exc rate of multi currency journals on reconciliation
2023-12-14 09:35:12 +05:30
Ankush Menat
6851c5042f Revert "fix(ux): don't update qty blindly" (#38728) 2023-12-13 23:14:20 +05:30
Raffael Meyer
da96578afb Merge pull request #38725 from barredterra/preview-rfq 2023-12-13 17:31:08 +01:00
barredterra
27f05145ae feat: RFQ print preview 2023-12-13 17:00:58 +01:00
ruthra kumar
1b3ba25220 fix: fetch exc rate of multi currency journals 2023-12-13 16:39:42 +05:30
rohitwaghchaure
13cba5068b fix: barcode scanning for the stock entry (#38716) 2023-12-13 15:08:16 +05:30
rohitwaghchaure
db24e24882 fix: supplier removed on selection of item (#38712) 2023-12-13 14:06:45 +05:30
Anand Baburajan
e7984b3ef9 fix: 1st row depr. sch. value of asset put to less than 180 days acc. to I.T. S. 32 (#38696)
fix: 1st row value of asset put to less than 180 days acc. to IT S. 32
2023-12-12 20:53:37 +05:30
rohitwaghchaure
b562b4cf99 fix: show stock qty in popup (#38698) 2023-12-12 16:41:10 +05:30
rohitwaghchaure
69d7a640ee fix: negative batch issue (#38688) 2023-12-12 16:18:32 +05:30
ruthra kumar
fa2d33cb50 fix: typeerror on new sites (#38692) 2023-12-12 15:43:39 +05:30
Deepesh Garg
2588970d55 fix: Init internal child table values 2023-12-12 15:18:54 +05:30
ruthra kumar
d4ac57704c Merge pull request #38685 from ruthra-kumar/get_list_for_virtual_child_doctypes
refactor: add `get_list` for virtual child doctypes
2023-12-12 14:40:43 +05:30
ruthra kumar
15c90551b6 refactor: add get_list for virtual child doctypes 2023-12-12 13:36:03 +05:30
ruthra kumar
0acd0f50c5 Merge pull request #38679 from ruthra-kumar/refactor_repost_test
refactor(test): repost utility deletion flag test
2023-12-12 12:43:58 +05:30
ruthra kumar
acb6e8e120 refactor(test): update repost settings before test case 2023-12-12 11:39:55 +05:30
ruthra kumar
ccff588563 refactor: increase limit and remove explicit call to start_repost 2023-12-12 11:30:33 +05:30
rohitwaghchaure
780c4278e6 fix: serial no filter in the Serial No Ledger report (#38669) 2023-12-12 11:24:07 +05:30
s-aga-r
2d6506ecec Merge pull request #38667 from s-aga-r/FIX-38658
fix: close PO on SCO close
2023-12-12 10:54:46 +05:30
ruthra kumar
a97b3db749 refactor: remove explicit commit on repost 2023-12-12 10:34:51 +05:30
ruthra kumar
cc15f695b4 refactor(test): repost utility deletion flag test 2023-12-12 10:24:24 +05:30
s-aga-r
c41cbb3e29 Merge pull request #38644 from barredterra/fix-attribute-error
fix: attribute error
2023-12-12 10:02:16 +05:30
Raffael Meyer
6ad298adfc fix: typo in unittest (#38673) 2023-12-12 09:55:15 +05:30
Ankush Menat
db9829e83f Merge pull request #38672 from barredterra/fix-leaderboard
fix: get data for leaderboard
2023-12-12 09:53:23 +05:30
barredterra
956c3c50a0 chore: deprecate unused method 2023-12-11 19:46:37 +01:00
barredterra
40c1acc961 fix: get sales partner for leaderboard 2023-12-11 19:45:32 +01:00
barredterra
7babfd4ac4 fix: get sales person for leaderboard 2023-12-11 19:44:24 +01:00
barredterra
65df4b6aa8 fix: get suppliers for leaderboard 2023-12-11 19:34:54 +01:00
barredterra
2721ee3a8d fix: get items for leaderboard 2023-12-11 19:34:24 +01:00
barredterra
137b5a6108 fix: get customers for leaderboard 2023-12-11 18:32:49 +01:00
s-aga-r
b023e5d6b3 fix: close PO on SCO close 2023-12-11 12:36:08 +05:30
rohitwaghchaure
89a0e9c245 fix: not able to make serial and batch using csv import (#38659) 2023-12-11 10:35:31 +05:30
rohitwaghchaure
89326bd657 fix: auto delete draft serial and batch bundle (#38637) 2023-12-10 11:05:58 +05:30
s-aga-r
8ddc26eb2e Merge pull request #38634 from creative-paramu/shipping_address_link
fix: Shipping Address Link Showing in Buying
2023-12-08 18:59:26 +05:30
creative-paramu
ca0c3eb184 fix(ux): Shipping Address Link 2023-12-08 18:57:31 +05:30
barredterra
0465c9aabb fix: attribute error 2023-12-08 14:15:26 +01:00
s-aga-r
a045916aca Merge pull request #38608 from s-aga-r/FIX-6766
fix(ux): don't update qty blindly
2023-12-08 16:30:42 +05:30
Shariq Ansari
be312cea4c Merge pull request #38623 from shariquerik/bypass-unnessary-formatting 2023-12-07 20:46:26 +05:30
Ankush Menat
9611e9bd7f fix: ignore non-existing regional customizations (#38621) 2023-12-07 14:12:40 +00:00
Shariq Ansari
08ed3cd313 fix: format only if searched text contain link value text 2023-12-07 19:39:24 +05:30
rohitwaghchaure
231ab83562 fix: serial and batch bundle permission (#38618) 2023-12-07 18:00:07 +05:30
rohitwaghchaure
f45dd740c5 chore: minor code cleanup (#38615) 2023-12-07 15:29:50 +05:30
s-aga-r
0156339f34 fix(ux): don't update qty blindly 2023-12-07 10:16:46 +05:30
Raffael Meyer
f99bb61181 Merge pull request #38591 from barredterra/de-morgan 2023-12-06 22:30:03 +01:00
Ankush Menat
6a47a2ceaf chore: remove unused cache=True 2023-12-06 20:53:55 +05:30
Richard Case
525f656cc1 feat: add employee number to client user bootinfo (#38477) 2023-12-06 20:48:13 +05:30
sandratridz
d34787cf6d fix: only highest eligible coupon applied (#38416)
* fix: application of pricing rule when coupon is used
2023-12-06 14:41:02 +05:30
s-aga-r
9424bbc01c Merge pull request #38592 from s-aga-r/FIX-STOCK-VARIANCE
fix: consider the `Valuation Method` while picking incorrect SLE
2023-12-05 18:08:01 +05:30
s-aga-r
16c297c2ec feat: add Valuation Method column in Stock Ledger Variance report 2023-12-05 18:06:14 +05:30
s-aga-r
8beec58670 fix: incorrect SLE for Moving Average valuation method 2023-12-05 17:51:01 +05:30
barredterra
bac811bd5e chore: git blame ignore rev 2023-12-05 11:23:58 +01:00
barredterra
eb9ee3f79b refactor: simplify conditional logic
Command: `sourcery review --fix --enable de-morgan .`
2023-12-05 11:22:55 +01:00
ruthra kumar
5da3e532c9 Merge pull request #38580 from ruthra-kumar/finance_book_filter_bug_in_general_ledger
fix: sql error while filtering on finance book in GL
2023-12-05 14:40:34 +05:30
ruthra kumar
b1d9f3132d fix: sql error while filtering on finance book in GL 2023-12-05 14:06:15 +05:30
rohitwaghchaure
aaa9036eca fix: incorrect material request quantity in Production Plan (#38566) 2023-12-05 13:34:54 +05:30
Gursheen Anand
005c5a587f chore: orderby in gle 2023-12-05 13:16:54 +05:30
Gursheen Anand
47c78a5a73 fix: check for unmerged gle in purchase receipt test 2023-12-05 12:48:25 +05:30
Gursheen Anand
24ccb3eb78 fix: subcontracting receipt gle test 2023-12-05 12:47:06 +05:30
Gursheen Anand
a56b79cc72 fix: check for split entries in stock entry test 2023-12-05 12:46:22 +05:30
ruthra kumar
84ee50e492 Merge pull request #38570 from ruthra-kumar/ignore_unreconcile_on_pi_cancel
refactor: ignore unreconcile doc on PI cancel/delete
2023-12-05 12:02:44 +05:30
s-aga-r
16b7401d4c Merge pull request #38553 from s-aga-r/STOCK-VARIANCE-COMPANY
feat: `Company` filter in `Stock Ledger Variance` report
2023-12-05 11:56:17 +05:30
ruthra kumar
1a5d56977e refactor: ingore on JE cancel as well 2023-12-05 11:34:25 +05:30
Gursheen Kaur Anand
6812e91893 Merge pull request #38556 from GursheenK/period-end-date-for-financial-statements
fix(minor): financial statements period end date
2023-12-05 11:22:08 +05:30
ruthra kumar
4ca84eadb6 refactor: ignore unreconcile doc on PI cancel/delete 2023-12-05 10:14:44 +05:30
Shariq Ansari
27aba02d16 Merge pull request #38562 from shariquerik/existing-customer-issue-in-lead 2023-12-04 19:20:29 +05:30
Shariq Ansari
3d7ad71b22 fix: get dynamic link with parenttype contact 2023-12-04 19:19:09 +05:30
s-aga-r
8d5045ef4c feat: provision to add items in Stock Reservation dialog 2023-12-04 18:03:22 +05:30
s-aga-r
00261094c8 fix(ux): show row index and field label while selecting the Sales Order Item 2023-12-04 18:00:06 +05:30
s-aga-r
9471d8fff9 feat: provision to update items in Stock Reservation dialog 2023-12-04 17:56:32 +05:30
Gursheen Anand
ab6e92aae1 fix: limit end date to current date 2023-12-04 16:47:28 +05:30
s-aga-r
fb3421fcce feat: Company filter in Stock Ledger Variance report 2023-12-04 15:39:25 +05:30
rohitwaghchaure
c8693cdf37 fix: scan for serial or batch in bundle (#38534) 2023-12-04 15:02:47 +05:30
NIYAZ RAZAK
3df1d75bdd fix: incorrect customer outstanding amount (#38475)
* fix: incorrect customer outstanding amount

* chore: resolve linting error

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

---------

Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2023-12-04 13:39:49 +05:30
s-aga-r
fc12238fcc Merge pull request #38543 from s-aga-r/FIX-6734
fix: don't show non-stock items in Stock Analytics report
2023-12-04 12:08:07 +05:30
s-aga-r
15fff84bb5 fix: linter 2023-12-04 12:05:27 +05:30
s-aga-r
01aadbef85 fix: don't show non-stock items in Stock Analytics report 2023-12-04 12:00:36 +05:30
s-aga-r
ccdcb7dfcc fix(ux): stock-item filter for Item Code field 2023-12-04 11:58:44 +05:30
ruthra kumar
94fabe0321 Merge pull request #38220 from rtdany10/wrong-advance
fix: exclude `invoice_doctypes` from party advance
2023-12-04 10:57:15 +05:30
ruthra kumar
dd39da0b77 fix: incorrectly treating normal payment as advance (#38437)
fix: treating normal payment as advance
2023-12-04 10:08:37 +05:30
Bernd Oliver Sünderhauf
3688d9412e chore: Adapt translations to reworded message. 2023-12-03 22:55:58 +01:00
Bernd Oliver Sünderhauf
4918aeb4c6 refactor: Consolidate duplicate zero-quantity transaction Items checks. 2023-12-03 19:57:32 +01:00
Nihantra C. Patel
d659d407a0 fix: Group By in Item-wise Purchase Register (#38503) 2023-12-03 23:22:04 +05:30
Gursheen Anand
262cafc430 fix: query for against types 2023-12-03 22:36:54 +05:30
Gursheen Anand
11190aac4c fix: unhide against type field 2023-12-03 22:35:01 +05:30
Gursheen Anand
6d31563920 feat: auto set against accounts for value pairs 2023-12-03 22:33:21 +05:30
barredterra
b6957ddac2 fix: set date format from system settings 2023-12-03 17:21:48 +01:00
Bernd Oliver Sünderhauf
b2d8a44199 test: Add, expand and refine test-cases for zero-quantity transactions. 2023-12-03 16:33:29 +01:00
ruthra kumar
2815d196de Merge pull request #38525 from ruthra-kumar/multiple_minor_fixes
fix: multiple minor fixes in report and Exchange Rate Revaluation
2023-12-03 16:43:01 +05:30
ruthra kumar
64266c4d38 fix: remove hardcoded, implicit rounding loss allowance 2023-12-03 10:58:14 +05:30
ruthra kumar
f4d418ea6d fix: item group filter in sales person wise report 2023-12-03 10:58:10 +05:30
s-aga-r
a008f5f611 Merge pull request #38493 from s-aga-r/FIX-6325
fix: don't update previous doc on rate change
2023-12-03 10:08:44 +05:30
rohitwaghchaure
74eab91042 fix: better overlap logic for job card (#38432) 2023-12-02 23:12:12 +05:30
Gursheen Anand
9aeb3932d0 fix: fetch against link value in gl report 2023-12-02 20:30:38 +05:30
Sagar Vora
b6a7549407 fix: use predefined onload property load_after_mapping (#38209) 2023-12-02 20:06:19 +05:30
Gursheen Kaur Anand
9087e1443e fix: SO ordered qty on PO item removal (#38378)
* fix: update ordered_qty for SO when PO items removed

* refactor: use cached value

---------

Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
2023-12-02 19:53:00 +05:30
Raffael Meyer
5952cfa673 fix: german translations for Lost Quotations (#38435) 2023-12-02 19:52:11 +05:30
noec764
a1e0197a8b fix: Add missing french translations (#38368)
fix: Add missing french translation

Co-authored-by: barredterra <14891507+barredterra@users.noreply.github.com>
2023-12-02 19:49:13 +05:30
Deepesh Garg
af7bc4f178 Merge pull request #38401 from pps190/fix-pe-jv-outstanding
fix: don't consider cancelled entries
2023-12-02 19:44:10 +05:30
Corin Wenger
023bc36592 fix: Move SMS Log module from ERPNext to Frappe (#38506)
Move SMS Log module from ERPNext to Frappe

SMS Log module moved to Frappe Core from ERPNext Utilities so that Frappe send_sms() works sans-ERPNext.
2023-12-02 19:24:46 +05:30
barredterra
ceeb724acc feat: set lead name from email 2023-12-01 20:10:51 +01:00
rohitwaghchaure
5e9016ffab fix: validation error has not throw for the batch (#38494)
* fix: validation error has not throw for the batch

* chore: fix test cases
2023-12-01 21:42:22 +05:30
Sherin KR
6bc40373f2 chore: changed sort_order to DESC for customer (#38498) 2023-12-01 19:07:28 +05:30
ruthra kumar
14c8c8c33d refactor: cache results 2023-12-01 18:01:58 +05:30
ruthra kumar
0925706d5e refactor: flag to differentiate generated and default values 2023-12-01 17:46:28 +05:30
ruthra kumar
ca14ae8f1b refactor: save results in node 2023-12-01 17:07:39 +05:30
ruthra kumar
90c6d4dc85 chore: restrict only to administrator and type info 2023-12-01 16:50:17 +05:30
ruthra kumar
228aa1a244 chore: change data type for summary fields 2023-12-01 16:42:15 +05:30
ruthra kumar
993e2bfbf9 refactor: adding labels to important section 2023-12-01 16:42:15 +05:30
ruthra kumar
ea3071db66 chore: UI cleanup 2023-12-01 16:42:15 +05:30
ruthra kumar
395299803f chore: add screen freeze on wait 2023-12-01 16:42:15 +05:30
ruthra kumar
5e2d21c033 chore: code cleanup 2023-12-01 16:42:15 +05:30
ruthra kumar
c4c3090f46 chore: hide internal variables section 2023-12-01 16:42:15 +05:30
ruthra kumar
6492019383 chore: rename btree and remove debugging statements 2023-12-01 16:42:15 +05:30
ruthra kumar
f6831fba13 chore: hide internal fields and better painting logic for heatmap 2023-12-01 16:42:15 +05:30
ruthra kumar
16db6c2f47 refactor: working heatmap 2023-12-01 16:42:15 +05:30
ruthra kumar
bd3dc6482e chore: hide some internal fields 2023-12-01 16:42:15 +05:30
ruthra kumar
f7b7b2b438 refactor: calculate summary on tree navigation 2023-12-01 16:42:15 +05:30
ruthra kumar
99fbd8ad18 refactor: use DB to store tree and state 2023-12-01 16:42:15 +05:30
ruthra kumar
9d20256366 chore: use doctype as btree 2023-12-01 16:42:15 +05:30
ruthra kumar
85f2a6dd54 feat: nodes doctype 2023-12-01 16:42:15 +05:30
ruthra kumar
de2eba0d98 chore: remove unwanted code 2023-12-01 16:42:15 +05:30
ruthra kumar
705ef4f5a3 refactor: add basic navigation
1. remove unnecessary columns
2. added basic tree navigation
2023-12-01 16:42:15 +05:30
ruthra kumar
b2dde55f2c refactor: ability to build and load tree from DB 2023-12-01 16:42:15 +05:30
ruthra kumar
d53b34c0ce refactor: introduce node class 2023-12-01 16:42:15 +05:30
ruthra kumar
a427029151 refactor: more buttons 2023-12-01 16:42:15 +05:30
ruthra kumar
2de3e6ce6d refactor: date validation 2023-12-01 16:42:15 +05:30
ruthra kumar
03a38ed025 refactor: support for BFS and DFS 2023-12-01 16:42:15 +05:30
ruthra kumar
26503a205f refactor: simplify DFS 2023-12-01 16:42:15 +05:30
ruthra kumar
5a25c80f2e refactor: Depth First Search(DFS) 2023-12-01 16:42:15 +05:30
ruthra kumar
4c8a8c3bcd refactor: some logic 2023-12-01 16:42:15 +05:30
ruthra kumar
decdbd2782 feat: bisect doctype 2023-12-01 16:42:15 +05:30
ruthra kumar
eb4c476490 refactor: primitive summary for p&l and balance sheet 2023-12-01 16:42:15 +05:30
s-aga-r
68f5dd3e7b fix: don't update previous doc on rate change 2023-12-01 14:45:01 +05:30
s-aga-r
68aee8c144 Merge pull request #38482 from s-aga-r/FIX-38476
fix: `AttributeError` while saving Purchase Invoice
2023-12-01 13:54:42 +05:30
Ernesto Ruiz
b24e28953b chore: add translate function to email subject in digest frecuency (#38474)
chore: add translate function to email subject in digest frecuency
2023-12-01 12:41:14 +05:30
ruthra kumar
9656412bba Merge pull request #38440 from rtdany10/pe-split-message
fix(pe): show split alert only on splitting
2023-12-01 12:39:39 +05:30
ruthra kumar
61280117eb Merge pull request #38393 from ruthra-kumar/refactor_advance_as_liability
refactor: GL entries build logic for `Advance in Separate Party Account` option.
2023-12-01 12:36:59 +05:30
ruthra kumar
961bdf0d24 refactor: handle forex payment advance entries 2023-12-01 12:13:00 +05:30
ruthra kumar
080aa30407 refactor(test): filter on document names 2023-12-01 12:09:37 +05:30
ruthra kumar
eecf9cd1d8 fix(test): use correct account type for testing 2023-12-01 11:43:57 +05:30
NandhiniDevi
e2a519464b add supplier group filter in purchase register (#38421)
* add supplier group field in purchase register

* Update purchase_register.js
2023-12-01 11:34:38 +05:30
s-aga-r
60a81a563e fix: AttributeError while saving Purchase Invoice 2023-12-01 11:27:54 +05:30
Gughan Ravikumar
3a66aefd2c fix: show item name as title instead of item group in BOM (#38478)
Item fields in BOM used to show Item Group when Items were set to show title as link fields. Now they show Item Name instead
2023-12-01 11:07:17 +05:30
Ankush Menat
54f7cf59fd chore: version bump 2023-12-01 10:37:35 +05:30
rohitwaghchaure
ba10f7d04c Merge pull request #38455 from rohitwaghchaure/fixed-incorrect-requested-qty-in-mr-for-sco
fix: incorrect requested quantity for the subcontracting order
2023-11-30 19:07:55 +05:30
Rohit Waghchaure
691e3bb24f fix: incorrect requested quantity for the subcontracting order 2023-11-30 17:32:55 +05:30
s-aga-r
832734ff4c Merge pull request #38450 from s-aga-r/FIX-38151
fix(ux): make valuation field read only when it can't be modified
2023-11-30 17:22:54 +05:30
s-aga-r
3d4156cc7d fix(ux): make PI rate field read-only having PR ref 2023-11-30 16:28:03 +05:30
ruthra kumar
cc053ad894 Merge pull request #38457 from ruthra-kumar/use_flt_on_outstanding_on_ar_ap_summary
refactor: use flt on outstanding on AR/AP summary report
2023-11-30 16:23:28 +05:30
s-aga-r
ae294ee470 fix(ux): make PR rate field read-only having PO ref 2023-11-30 16:16:12 +05:30
ruthra kumar
e4bdd3a28d refactor: use flt on outstanding on AR/AP summary report 2023-11-30 15:57:57 +05:30
Ankush Menat
63313eef6f feat: enable automatic type annotations (#38452) 2023-11-30 08:23:48 +00:00
Ankush Menat
1da9087cc4 refactor: Simpler log settings setup (#38449)
Depends on https://github.com/frappe/frappe/pull/23507
2023-11-30 07:58:55 +00:00
ruthra kumar
de3795a7d4 Merge pull request #38446 from ruthra-kumar/filter_bug_on_payment_reconciliation
refactor: pass on filter to up front outstanding query as well
2023-11-30 12:54:46 +05:30
ruthra kumar
cfd3230c75 refactor: pass on filter to upfront outstanding query as well 2023-11-30 12:22:55 +05:30
s-aga-r
e38b06bf2d Merge pull request #38441 from s-aga-r/FIX-38434
fix: exploded items in Subcontracting Receipt
2023-11-30 12:10:18 +05:30
s-aga-r
7cb0b1b7c3 Merge pull request #38439 from s-aga-r/FIX-38433
fix: use `docstatus` instead of `status`
2023-11-30 12:09:43 +05:30
s-aga-r
62b4a263f8 fix: exploded items in Subcontracting Receipt 2023-11-30 12:07:52 +05:30
Dany Robert
96b13c59c1 fix(pe): show split alert only on splitting 2023-11-30 06:20:15 +00:00
s-aga-r
1423b38d50 fix: use docstatus instead of status 2023-11-30 11:43:28 +05:30
Devin Slauenwhite
ff27cccff4 refactor: get outstanding journal entry using query builder 2023-11-29 21:44:56 +00:00
s-aga-r
abc7d30024 fix(ux): make basic_rate field read-only based on purpose 2023-11-29 19:49:58 +05:30
Deepesh Garg
591f4ebdca Merge pull request #38429 from GursheenK/set-cwip-account-for-asset-tests
fix(minor): set capital WIP account before asset tests
2023-11-29 18:50:05 +05:30
Gursheen Anand
ef8e4191cd fix: set cwip account before asset tests 2023-11-29 18:25:52 +05:30
rohitwaghchaure
cf97e3c21f Merge pull request #38427 from Nandhinidevi123/stock_entry
Update Serial No issue
2023-11-29 18:11:22 +05:30
s-aga-r
2e8739fff7 Merge pull request #38290 from s-aga-r/FIX-36704
feat: auto create PR on SCR submission
2023-11-29 17:57:11 +05:30
s-aga-r
3da0aa6a0b fix(test): test_auto_create_purchase_receipt 2023-11-29 17:35:21 +05:30
Nandhinidevi123
97be527ee9 fix:change default qty 2023-11-29 17:21:51 +05:30
Nandhinidevi123
cac3b4a0d8 Merge branch 'develop' of https://github.com/Nandhinidevi123/erpnext into develop 2023-11-29 17:20:38 +05:30
Gursheen Anand
96f31847b2 fix: set cwip account for company before tests 2023-11-29 16:04:36 +05:30
Deepesh Garg
85f9f8d176 Merge pull request #38250 from GursheenK/unset-discount-amount-based-on-coupon-code
fix: unset discount amount based on coupon code
2023-11-29 15:53:46 +05:30
s-aga-r
7b0cd03f88 test: auto create PR on SCR submit 2023-11-29 14:10:48 +05:30
s-aga-r
68585f6f2b test: auto create SCO on PO submit 2023-11-29 13:58:36 +05:30
s-aga-r
857f2b5a01 chore: linter 2023-11-29 13:39:14 +05:30
rohitwaghchaure
258148b615 Merge pull request #38365 from Nandhinidevi123/sales_register
feat:add customer group filter in sales register
2023-11-29 13:37:22 +05:30
s-aga-r
7145b040f1 fix(ux): hide Create Purchase Receipt button for Subcontract Return 2023-11-29 13:21:24 +05:30
s-aga-r
874766a82f fix: map warehouses in return SCR 2023-11-29 13:07:39 +05:30
s-aga-r
096a2c8cd0 chore: PR ref in SCR connections 2023-11-29 12:46:31 +05:30
Gursheen Kaur Anand
4a047fefb8 Merge branch 'develop' into make-against-field-dynamic 2023-11-29 12:30:20 +05:30
rohitwaghchaure
fddf341f44 fix: incorrect ordered qty for Subcontracting Order (#38415) 2023-11-29 12:21:11 +05:30
Anand Baburajan
fe5fc5bd3a feat: shift depreciation for assets (#38327)
* feat: shift depreciation for assets

* chore: create new asset depr schedule on shift change

* refactor: move create_depr_schedule to after_insert

* fix: args in get_depreciation_amount test

* refactor: rename shift adjustment to shift allocation

* chore: asset shift factor doctype and auto allocate shift diff

* chore: use check instead of depr type, and add tests

* chore: make linter happy

* chore: give permissions to accounts users
2023-11-29 12:14:12 +05:30
ruthra kumar
0255e09285 test: ledger pre and post reconciliation on advance as liability 2023-11-29 10:57:28 +05:30
s-aga-r
2b0b15f4d1 Merge pull request #38394 from s-aga-r/FIX-38330
fix: `OperationalError` while selecting Serial No in `Warranty Claim`
2023-11-29 10:37:07 +05:30
Patrick Eissler
8e4b591ea2 fix: make create button translatable (#38165)
* fix: make all create buttons translatable

* style: use double quotes

---------

Co-authored-by: PatrickDenis-stack <77415730+PatrickDenis-stack@users.noreply.github.com>
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2023-11-29 10:22:47 +05:30
Dany Robert
663bb8726c fix(regional): use net figures for sales calc (#38260) 2023-11-29 09:03:47 +05:30
ruthra kumar
2add802d0d refactor(test): advance allocation on purchase invoice 2023-11-29 08:59:14 +05:30
Devin Slauenwhite
adfcdb3b65 fix: don't consider cancelled entries 2023-11-28 13:19:49 -05:00
s-aga-r
9fadf5f426 refactor: don't use cur_frm 2023-11-28 21:34:07 +05:30
ruthra kumar
3e6306348a refactor: redefine dr_or_cr for unallocated amount 2023-11-28 20:04:47 +05:30
Shariq Ansari
458dd51af7 Merge pull request #38398 from shariquerik/create-contact-only-if-not-exist 2023-11-28 19:49:22 +05:30
Shariq Ansari
23b0b8ba36 fix: create contact if existing customer doesn't have contact 2023-11-28 19:24:15 +05:30
rohitwaghchaure
592fc81260 fix: serial no status (#38391) 2023-11-28 18:28:48 +05:30
Gursheen Kaur Anand
c232acbe9b Merge pull request #38392 from GursheenK/report-rename-import
fix: imports for renamed report
2023-11-28 18:22:59 +05:30
s-aga-r
640dfab827 refactor: use frm.set_query to add filters 2023-11-28 17:45:17 +05:30
s-aga-r
01044ca8e9 refactor: use DocType Fetch From instead of frm.add_fetch 2023-11-28 17:33:27 +05:30
ruthra kumar
2633d7dca3 refactor: 'partial' flag to only cancel unlinked ledger entries 2023-11-28 17:28:31 +05:30
ruthra kumar
ecb533c4d1 refactor: return the newly added reference upon reconciliation 2023-11-28 17:27:49 +05:30
ruthra kumar
5fc19dab54 refactor: 'make_advance_gl_entries' method
make_advance_gl_entries -> add_advance_gl_entries -> add_advance_gl_for_reference

'make_advance_gl_entries' - main method thats builds and post GL
entries for all or one specific reference based on parameters

'add_advance_gl_entries' - build GL map for all or one specific
reference. Return an array of dict.

'add_advance_gl_for_reference' - utility function to build gl
entries. returns dict.
2023-11-28 17:26:06 +05:30
ruthra kumar
58114e7b24 refactor: use different GL build logic for advance as liability 2023-11-28 17:25:28 +05:30
s-aga-r
1763824e5f refactor: use arrow function 2023-11-28 17:20:05 +05:30
Gursheen Anand
aee2e12f39 chore: fix imports for renamed report 2023-11-28 17:11:35 +05:30
s-aga-r
500573067a Merge branch 'develop' into FIX-36704 2023-11-28 17:01:48 +05:30
s-aga-r
8052103197 feat: provision to create PR from SCR 2023-11-28 16:28:54 +05:30
ruthra kumar
78ab11f991 refactor: post to GL and Payment Ledger on advance as liability 2023-11-28 16:25:55 +05:30
ruthra kumar
3263f2023c test: assert ledger entries on partial reconciliation
with `Advance as Liability`, partial reconciliation should not post
duplicate ledger entries for same reference
2023-11-28 16:16:24 +05:30
Raffael Meyer
8f00481c5f fix: no fstring in translation (#38381) 2023-11-28 09:35:28 +00:00
s-aga-r
9872e371a2 Merge pull request #38377 from s-aga-r/FIX-PB-SEARCH-INPUT
fix: Product Bundle Parent Item input
2023-11-28 14:34:26 +05:30
s-aga-r
37b3ac7952 feat: SCR Item ref in PR Item 2023-11-28 13:39:15 +05:30
s-aga-r
d891bd7fac feat: Subcontracting Receipt ref in Purchase Receipt 2023-11-28 13:27:27 +05:30
s-aga-r
d366a91d9e fix: use checkbox instead of select field 2023-11-28 13:06:52 +05:30
s-aga-r
8c3713b649 fix: don't select all fields 2023-11-28 11:12:55 +05:30
s-aga-r
729fc738af fix: product bundle search input 2023-11-28 11:08:52 +05:30
Deepesh Garg
add238c892 fix: debit credit mismatch in multi-currecy asset purchase receipt (#38342)
* fix: Debit credit mimatch in multicurrecy asset purchase receipt

* test: multi currency purchase receipt

* chore: update init files

* test: roolback
2023-11-28 08:21:45 +05:30
rohitwaghchaure
ad3634be7c chore: fix flaky test case (#38369) 2023-11-28 06:24:21 +05:30
Sagar Vora
5a53a4b044 fix: make parameters of create_subscription_process optional (and other minor fixes) (#38360) 2023-11-27 20:21:19 +05:30
Nandhinidevi123
5a97fa6336 feat:add customer group filter in sales register 2023-11-27 19:51:05 +05:30
ruthra kumar
657bb9d682 Merge pull request #38354 from ruthra-kumar/handle_rounding_loss_on_ar_ap
refactor: handle rounding loss on AR/AP reports
2023-11-27 11:51:46 +05:30
Marica
b9f5a1c85d fix: Negative Qty and Rates in SO/PO (#38252)
* fix: Don't allow negative qty in SO/PO

* fix: Type casting for safe comparisons

* fix: Grammar in error message

* fix: Negative rates should be allowed via Update Items in SO/PO

* fix: Use `non_negative` property in docfield & emove code validation
2023-11-27 09:05:22 +05:30
ruthra kumar
592ce45da7 refactor: handle rounding loss on AR/AP reports 2023-11-27 08:51:22 +05:30
NandhiniDevi
d9b3b95854 fix : Payment Reco Issue and chart of account importer (#38321)
fix : Payment Reco Issue and chart of account importer
2023-11-26 18:40:31 +05:30
Raffael Meyer
5426b93387 refactor: bank transaction (#38182) 2023-11-26 18:37:55 +05:30
Monolithon Administrator
284a40aa63 fix: Add name to Hungary - Chart of Accounts for Microenterprises json (#38278)
Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
2023-11-26 18:17:10 +05:30
Deepesh Garg
2989e36b1d Merge pull request #38284 from vorasmit/fetch-item-tax-values
fix: fetch item_tax_template values if fields with fetch_from exisit
2023-11-26 17:54:35 +05:30
rohitwaghchaure
d8245cef72 fix: job card overlap validation (#38345) 2023-11-26 16:13:39 +05:30
s-aga-r
edf4514d8b Merge pull request #38261 from s-aga-r/FIX-STOCK-RESERVATION-DIALOG-BOX
fix(ux): Sales Order Stock Reservation Dialog
2023-11-26 11:02:02 +05:30
Raffael Meyer
477d9fa87e feat: new Report "Lost Quotations" (#38309) 2023-11-24 22:27:01 +01:00
Gursheen Kaur Anand
01f133f8c8 Merge branch 'develop' into make-against-field-dynamic 2023-11-24 15:23:44 +05:30
Gursheen Kaur Anand
d32147f8fe Merge pull request #38273 from GursheenK/email-digest-annual-income-expense
fix: annual income and expenses in email digest
2023-11-24 15:19:09 +05:30
NandhiniDevi
86aeacf393 add condition 2023-11-24 14:18:44 +05:30
s-aga-r
dd80d3b9b9 fix: dont show View button on cancelled SCR 2023-11-24 12:17:05 +05:30
s-aga-r
98cba5ed30 feat: add Subcontracting Receipt link in PO connections 2023-11-24 12:14:38 +05:30
s-aga-r
ca8a5b45ba feat: add Purchase Order link in SCR connections 2023-11-24 12:09:21 +05:30
ruthra kumar
9d6a06aec5 Merge pull request #38298 from ruthra-kumar/simplied_purchase_cost_update
perf: optimize update_purchase_cost method
2023-11-24 11:48:36 +05:30
ruthra kumar
dd016e6ced refactor: update project costing based on frequency 2023-11-24 11:18:51 +05:30
ruthra kumar
0fe6dcd742 refactor: make update_project_cost optional through Buying Settings 2023-11-24 11:18:51 +05:30
ruthra kumar
bcbe6c4a53 refactor: provide UI button to recalculate when needed 2023-11-24 11:18:48 +05:30
NandhiniDevi
f09c5f32cf add flt() for None type error 2023-11-24 11:17:35 +05:30
ruthra kumar
3ca7e442bc Merge pull request #38283 from ruthra-kumar/move_patch_to_pre_model
chore: move reconciliation cleanup patch to pre-model
2023-11-24 10:06:46 +05:30
Deepesh Garg
8ac647ece7 Merge pull request #38269 from GursheenK/skip-fixed-assets-in-product-bundle
fix: skip fixed assets in product bundle
2023-11-24 09:59:35 +05:30
ruthra kumar
4307d3b5c9 Merge pull request #38296 from ruthra-kumar/indexes_on_journal_entry_child_tables
chore: index to speed up basic submit/cancel functions on purchase invoice
2023-11-24 09:45:14 +05:30
ruthra kumar
aa17110bde perf: optimize total_purchase_cost update 2023-11-24 09:41:38 +05:30
Devin Slauenwhite
3f6d805033 fix: display all item rate stop messages (#38289) 2023-11-23 22:42:12 +05:30
NandhiniDevi
64b44a360a add flt() for None type error (#38299) 2023-11-23 22:40:17 +05:30
s-aga-r
040cc8d22f feat: auto create PR on SCR submission 2023-11-23 22:16:27 +05:30
Raffael Meyer
3be345e605 feat: add Bank Transaction to connections in Journal and Payment Entry (#38297)
* feat(Payment Entry): Bank Transaction connection

* feat(Journal Entry): Bank Transaction connection
2023-11-23 14:02:27 +01:00
s-aga-r
e1cea25781 fix: maintain PO and PO Item ref in SCR Item 2023-11-23 17:48:34 +05:30
s-aga-r
a2ede7d6d5 feat: add field Purchase Order Item in SCO Item 2023-11-23 17:06:13 +05:30
s-aga-r
7e4dd33ab0 fix: hold PO item ref in SCO Service Item 2023-11-23 17:06:13 +05:30
s-aga-r
45d5cff47d feat: add field Purchase Order Item in SCO Service Item 2023-11-23 17:06:09 +05:30
s-aga-r
745e3bfb73 chore: notify user on SCO creation 2023-11-23 17:04:19 +05:30
s-aga-r
762906f240 feat: add field Action on Subcontracting Receipt Submission 2023-11-23 17:04:13 +05:30
s-aga-r
9ec6f1e1d6 feat: auto create SCO on PO submission 2023-11-23 17:04:07 +05:30
s-aga-r
628ea42b63 feat: add field Action on Purchase Order Submission 2023-11-23 17:03:59 +05:30
ruthra kumar
1efff268b0 chore: speed up Purchase Invoice cancellation 2023-11-23 16:56:35 +05:30
Smit Vora
b206b0583b fix: fetch item_tax_template values if fields with fetch_from exisit 2023-11-23 15:10:47 +05:30
Anand Baburajan
816b1b6bd5 fix: don't depreciate assets with no schedule on scrapping (#38276)
fix: don't depreciate non-depreciable assets on scrapping
2023-11-23 13:48:46 +05:30
ruthra kumar
24fcd67f8b chore: index to speed up queries on JE child table reference 2023-11-23 11:44:34 +05:30
s-aga-r
c99c805743 Merge pull request #38268 from s-aga-r/FIX-38222
fix: Supplier `Primary Contact`
2023-11-23 11:07:30 +05:30
ruthra kumar
f258ab5e98 chore: move reconciliation cleanup patch to pre-model 2023-11-23 10:39:41 +05:30
ruthra kumar
880a85d2af Merge pull request #38148 from ruthra-kumar/prevent_lock_on_reconciliation
refactor: convert Payment Reconciliation to virtual doctype
2023-11-23 10:16:55 +05:30
ruthra kumar
efd31a429c Merge pull request #38257 from ruthra-kumar/optimize_ple_outstanding_query
refactor: optmize outstanding amount query
2023-11-23 09:41:21 +05:30
Gursheen Anand
728cc9f725 fix: fiscal year using future date 2023-11-22 19:28:57 +05:30
Gursheen Anand
52305e3000 fix: annual income and expenses in digest 2023-11-22 18:38:33 +05:30
Gursheen Anand
1657337887 chore: linting issues 2023-11-22 16:45:14 +05:30
Gursheen Anand
362f377f61 fix: skip disabled bundles for non-report utils 2023-11-22 16:26:09 +05:30
Gursheen Anand
8bdb61cb87 fix: condition in other bundle utils 2023-11-22 16:17:23 +05:30
Gursheen Anand
67f43d37df fix: validation for existing bundles 2023-11-22 16:10:49 +05:30
Gursheen Anand
3543f86c63 fix: has_product_bundle util to only check for enabled bundles 2023-11-22 16:04:05 +05:30
s-aga-r
627165dc7c fix: Supplier Primary Contact 2023-11-22 15:27:07 +05:30
Gursheen Anand
874774fe6c fix: filter bundle items based on disabled check 2023-11-22 15:24:56 +05:30
Gursheen Anand
ee76af7681 feat: add disabled field in product bundle 2023-11-22 15:23:17 +05:30
Gursheen Anand
f9713eeb56 fix: skip fixed assets in parent 2023-11-22 15:22:42 +05:30
rohitwaghchaure
0ca7527f7a fix: patch - Duplicate entry quality inspection parameter (#38262) 2023-11-22 14:02:01 +05:30
s-aga-r
2a41da94d4 fix(ux): no need to select rows to unreserve the stock 2023-11-22 11:38:08 +05:30
s-aga-r
73586fd9b2 fix: use field sales_order_item instead name 2023-11-22 11:37:14 +05:30
s-aga-r
9c889b37fb fix(ux): no need to select rows to reserve the stock 2023-11-22 11:27:58 +05:30
Ankush Menat
b11ae4b54c chore: remove dead link 2023-11-22 10:26:50 +05:30
ruthra kumar
e3af1dc864 Merge pull request #38258 from ruthra-kumar/rename_unreconcile
refactor: rename 'Unreconcile Payments' doctype to singular 'Unreconcile Payment'
2023-11-22 10:03:13 +05:30
ruthra kumar
8b04c1d4f6 refactor: optimize outstanding vouchers query 2023-11-22 10:00:12 +05:30
ruthra kumar
74f9e34182 chore: update new unreconcile doctype name in JS and PY files 2023-11-22 05:59:20 +05:30
ruthra kumar
1fddc30350 Merge pull request #38081 from GursheenK/validate-repost-ledger-settings-for-editable-invoices
fix: check reposting ledger settings before setting repost flag
2023-11-22 05:22:59 +05:30
Anand Baburajan
e2bb4e2baa fix: set asset's valuation_rate according to asset quantity (#38254) 2023-11-21 22:32:43 +05:30
ruthra kumar
9006c9b747 chore: rename 'unreconcile payments' to 'unreconcile payment' 2023-11-21 16:44:01 +05:30
Gursheen Anand
6518582ed3 fix: unset discount amount based on coupon code 2023-11-21 15:14:55 +05:30
rohitwaghchaure
5c308a4f9a fix: valuation rate for FG item for subcontracting receipt (#38244) 2023-11-21 14:42:26 +05:30
Rucha Mahabal
ac91030b31 fix(Timesheet): warn user if billing hours > actual hours instead of resetting (#38239)
* revert: "fix(Timesheet): reset billing hours equal to hours if they exceed actual hours"

This reverts commit 0ec8034507.

* fix: warn user if billing hours > actual hours
2023-11-21 13:18:34 +05:30
ruthra kumar
9680edfcc3 Merge pull request #38234 from ruthra-kumar/test_case_for_rounding_issue
test: prevent rounding loss based validation error
2023-11-21 12:09:54 +05:30
ruthra kumar
56e991b7f4 test: prevent rounding loss based validation error 2023-11-21 11:46:45 +05:30
Anand Baburajan
9903049c7a fix: set default asset quantity as 1 [dev] (#38223)
* fix: make default asset quantity as 1

* fix: get rate_of_depreciation from asset category for asset auto-creation

* chore: create asset depr schedules on PR submit, not asset submit

* fix: set default asset quantity as 1

* chore: move patch from v15 to v14
2023-11-20 22:27:16 +05:30
Dany Robert
f34ffc2062 fix: exclude invoice_doctypes from party advance 2023-11-20 11:10:56 +00:00
ruthra kumar
f50d933a25 Merge pull request #38212 from ruthra-kumar/update_hook
refactor: update scheduled job for bulk transaction
2023-11-20 14:16:11 +05:30
ruthra kumar
ce092bf23b Merge pull request #38210 from ruthra-kumar/set_default_on_billed_amt_update
refactor: extend billed amount update flag to POS Invoice as well
2023-11-20 14:05:45 +05:30
ruthra kumar
fb06ad7330 refactor: update scheduled job for bulk transaction 2023-11-20 13:28:55 +05:30
s-aga-r
80ab4eea8c Merge pull request #38207 from s-aga-r/FIX-37809
fix(ux): `Task` creation from `Timesheet`
2023-11-20 12:39:30 +05:30
ruthra kumar
83a13e22b7 refactor: add flag to POS Invoice 2023-11-20 12:29:37 +05:30
ruthra kumar
ee0c64215d refactor: set default for 'update_billed_amount_in_delivery_note' 2023-11-20 12:29:35 +05:30
s-aga-r
5ac8bd7f08 Merge pull request #38200 from s-aga-r/FIX-38188
fix: TypeError in Subcontracting Receipt
2023-11-20 12:14:23 +05:30
s-aga-r
2f3fc12c08 fix: add route options for new Task 2023-11-20 12:05:25 +05:30
s-aga-r
331ad62f3c fix(ux): enable Quick Entry for Task 2023-11-20 12:04:03 +05:30
s-aga-r
f6e93f084a fix: TypeError in Subcontracting Receipt 2023-11-20 10:23:57 +05:30
ruthra kumar
7b2eacd4d8 Merge pull request #38159 from ruthra-kumar/provision_to_truncate_remarks
refactor: provision to truncate `remarks` in General Ledger and Accounts Receivable/Payable reports
2023-11-20 10:07:10 +05:30
ruthra kumar
a9bf906545 refactor: add substring logic in ar/ap report 2023-11-20 09:38:26 +05:30
ruthra kumar
97090ff367 refactor: provision to set remarks length in accounts settings 2023-11-20 09:38:23 +05:30
Deepesh Garg
6c8b6de4c9 Merge pull request #38171 from rtdany10/rounded-total
fix: wrong round off and rounded total
2023-11-19 19:18:38 +05:30
Deepesh Garg
f91752cad2 Merge pull request #38177 from pps190/fix-pe-precision
fix: payment entry rounding error
2023-11-19 18:46:00 +05:30
Dany Robert
cc60c328fe fix: test case for rounded total with cash disc 2023-11-19 02:53:09 +00:00
Raffael Meyer
ff5b1b7ded style: remove trailing whitespace (#38183) 2023-11-18 17:45:14 +00:00
Raffael Meyer
a1ff7cab7e Merge pull request #38178 from barredterra/item-modified-timestamp 2023-11-18 18:07:11 +01:00
Patrick Eissler
32f622ef80 fix: valuation rate in report Item Prices (#38161)
Co-authored-by: PatrickDenis-stack <77415730+PatrickDenis-stack@users.noreply.github.com>
2023-11-18 15:54:34 +01:00
barredterra
969616ed09 fix: update modified timestamp
Was missing in 434c2a1815
2023-11-18 15:43:23 +01:00
Raffael Meyer
ca62cde9aa Merge pull request #38163 from PatrickDEissler/fix/table-was-mandatory-for-manufacturer 2023-11-18 15:37:51 +01:00
Devin Slauenwhite
3d1e3a9cde fix: payment entry rounding error 2023-11-18 14:36:20 +00:00
Deepesh Garg
184848edf9 Merge pull request #38147 from kunhimohamed/develop
fix: issue occured when creating supplier with contact details
2023-11-18 19:47:38 +05:30
Deepesh Garg
65ba5b3000 Merge pull request #38142 from deepeshgarg007/supplier_quotation_ad
feat: Add accounting dimensions to Supplier Quotation
2023-11-18 19:40:42 +05:30
Dany Robert
3a487bd33a fix: wrong round off and rounded total 2023-11-18 13:32:04 +00:00
Sagar Vora
56e92b702c Merge pull request #38167 from vishakhdesai/perm-check-fix 2023-11-18 17:37:34 +05:30
Vishakh Desai
45299fe4b3 fix: pass check permission in render_address 2023-11-18 17:10:01 +05:30
PatrickDenis-stack
434c2a1815 fix: attributes were mandatory for manufacturers 2023-11-18 11:16:06 +01:00
ruthra kumar
f31002636b chore: clear singles table and reconciliation related tables 2023-11-18 09:28:02 +05:30
ruthra kumar
b5dd0c8630 chore: remove reconciliation defaults from patch 2023-11-18 09:28:02 +05:30
ruthra kumar
9c7b19e0b7 refactor: virtual doctype methods 2023-11-18 09:27:59 +05:30
ruthra kumar
3a51a3f37e refactor: convert payment reconciliation tool to virtual doctype 2023-11-18 08:06:44 +05:30
s-aga-r
a5a5341643 Merge pull request #38127 from s-aga-r/FIX-37162
feat: add `Supplier Delivery Note` field in SCR
2023-11-17 18:46:58 +05:30
Rucha Mahabal
20c6e9fca2 fix(Timesheet): reset billing hours equal to hours if they exceed actual hours (#38134) 2023-11-17 18:08:55 +05:30
Gursheen Kaur Anand
5b3eba7bee Merge branch 'develop' into validate-repost-ledger-settings-for-editable-invoices 2023-11-17 14:21:02 +05:30
Gursheen Kaur Anand
8c6e341a71 Merge pull request #38144 from GursheenK/tax-report-party-without-naming-series
fix(minor): show party instead of party name where naming series not set
2023-11-17 14:18:16 +05:30
Kunhi
545ef3c234 fix: Suppier name was not taken when creating address from supplier 2023-11-17 11:43:36 +04:00
kunhi
7842c9fba8 fix: issue occured when creating supplier with contact details 2023-11-17 11:22:08 +04:00
Smit Vora
7e43d7b131 fix: allow regional gl in payment entry for gl preview (#38136) 2023-11-17 12:38:08 +05:30
Deepesh Garg
089da459f7 feat: Add accounting dimensions to Supplier Quotation 2023-11-17 12:37:14 +05:30
Gursheen Anand
b27af6b5c8 fix: show party instead of party name where naming series not set 2023-11-17 12:36:57 +05:30
ruthra kumar
c69fb80222 Merge pull request #38119 from ruthra-kumar/missing_filter_in_payable_report
fix: add revaluation journal filter in Payable report
2023-11-17 09:56:51 +05:30
ruthra kumar
134201794a fix: add revaluation journal filter in Payable report 2023-11-17 09:48:17 +05:30
rohitwaghchaure
2df767f596 fix: bom creator not able to amend / duplicate (#38128)
fix: bom creator not able to amend
2023-11-16 16:01:35 +05:30
s-aga-r
da80e4dbce feat: add Supplier Delivery Note field in SCR 2023-11-16 13:05:49 +05:30
s-aga-r
5cc8603cff Merge pull request #38090 from blaggacao/fix/dn-mapper
fix(dn): regression from bulk transaction fix
2023-11-16 12:42:25 +05:30
David Arnold
426c245032 fix(dn): regression from bulk transaction fix 2023-11-16 12:21:23 +05:30
Deepesh Garg
9731b74ad3 Merge pull request #38071 from GursheenK/unequal-dr-cr-for-payments-with-partial-credit-note
fix: handle partial return against invoices in payment entries
2023-11-16 10:35:55 +05:30
ruthra kumar
ee29526bbe Merge pull request #38038 from ruthra-kumar/refactor_bulk_transaction
refactor: supercharge Bulk actions
2023-11-16 09:51:34 +05:30
ruthra kumar
3e884d347a Merge pull request #38082 from ruthra-kumar/fix_fy_exception
refactor: use 'boolean' parameter while fetching FY year
2023-11-16 09:47:30 +05:30
Anand Baburajan
6e0362dee8 chore: change read only condition of asset quantity field (#38111)
chore: change read only condition of asset quantity
2023-11-15 17:58:37 +05:30
Gursheen Anand
2499675ad1 fix: test total unallocated amount in payment 2023-11-15 13:32:23 +05:30
Arjun
908b21f7fd fix: duplicate field in Closing Stock Balance (#38105) 2023-11-15 12:34:38 +05:30
Anand Baburajan
e93a19ffb5 chore: refetch item images on transaction save (#38095)
chore: re fetch item images on transaction save
2023-11-14 19:38:15 +05:30
rohitwaghchaure
3e77c0b564 fix: valuation rate for the subcontracting receipt supplied items with Serial and Batch Bundle (#38094)
fix: valuation rate for the subcontracting receipt supplied items with batch
2023-11-14 19:27:41 +05:30
rohitwaghchaure
e769e750ec fix: Not able to save subcontracting receipt (#38085) 2023-11-14 15:08:37 +05:30
ruthra kumar
c31ee8ea33 refactor: use 'boolean' parameter while fetching FY year 2023-11-14 07:25:10 +05:30
Gursheen Anand
894ae1fe0f fix: check reposting settings before allowing editable si 2023-11-13 20:28:44 +05:30
Gursheen Anand
5fae2f6d57 fix: allow on submit for child table fields 2023-11-13 20:27:09 +05:30
Gursheen Anand
ad5edbb1de fix: do not set repost flag without validating voucher 2023-11-13 20:25:26 +05:30
Gursheen Anand
780b827adc refactor: validate reposting settings for editables inv 2023-11-13 20:24:32 +05:30
Anand Baburajan
8e010ef063 Merge pull request #38077 from anandbaburajan/trans_delete_att_comm
chore: delete comments and unlink attachments on company transactions deletion
2023-11-13 18:55:44 +05:30
Gursheen Anand
09f9764bbd test: payment against partial return invoices 2023-11-13 18:11:00 +05:30
Gursheen Anand
a59c942cd4 fix: reset dr_or_cr for every reference 2023-11-13 18:09:49 +05:30
anandbaburajan
b097bb20d9 fix: unrelated transation date typo 2023-11-13 18:09:09 +05:30
anandbaburajan
2f9e96e324 chore: delete comments and unlink attachments on company transactions deletion 2023-11-13 18:03:33 +05:30
Dany Robert
56b8d1b927 fix: remove ESS role when not mapped to employee (#37867)
* fix: remove ESS role when not mapped to employee

* fix: emp role removal on unlinking

* fix: test case for user employee role mapping

* fix: mapped employee and user on creation
2023-11-13 17:00:02 +05:30
Gursheen Anand
5b446d4575 fix: handle partial return against invoices 2023-11-13 15:05:34 +05:30
mergify[bot]
9ae5c979e8 fix: Identical items are added line by line instead of grouped together in POS (#37986)
fix: Identical items are added line by line instead of grouped together in POS (#37986)

fix: Identical items are added line by line instead of grouped together in POS (#37986)
(cherry picked from commit 011cf3d73e)

Co-authored-by: bVisible <info@bvisible.ch>
2023-11-13 14:43:46 +05:30
David Arnold
ea7565889f feat(customer): add button to quick-create sales order and quotation (#37320)
* feat(customer): add button to quick-create sales order and quotation

* fix: create buttons in customer

* refactor: don't repeat yourself

---------

Co-authored-by: barredterra <14891507+barredterra@users.noreply.github.com>
2023-11-13 14:19:22 +05:30
rohitwaghchaure
4a111f7362 fix: indentation issue in the Production Plan Summary report (#38019)
fix: Production Plan Summary report
2023-11-13 13:26:55 +05:30
ruthra kumar
ffd171a26b Merge pull request #38064 from ruthra-kumar/revaluation_checkbox_for_ar_summary
refactor: add revaluation journal checkbox in AR/AP summary reports
2023-11-13 12:07:33 +05:30
ruthra kumar
95edd82638 refactor: add revaluation journal checkbox in AR/AP summary reports 2023-11-13 11:56:43 +05:30
Raffael Meyer
e07c3aad6b Merge pull request #38063 from barredterra/remove-create-contact 2023-11-13 06:25:30 +01:00
ruthra kumar
a393a6b76c refactor: raise exception on invalid date 2023-11-13 10:39:40 +05:30
barredterra
d380bf8179 feat: remove unused method create_contact 2023-11-12 20:04:38 +01:00
Raffael Meyer
8062d2be3b Merge pull request #38060 from barredterra/refactor-fullname-parsing
refactor: parse full name
2023-11-12 16:16:15 +01:00
barredterra
d17e37c581 test: parse full name 2023-11-12 14:51:40 +01:00
barredterra
6f432b8e45 refactor: parse full name 2023-11-12 14:48:18 +01:00
Arjun
94faa44697 fix: close Credit Limit Crossed dialog (#38052) 2023-11-12 18:02:13 +05:30
David Arnold
9fde782403 fix(customer): contact creation for companies (#38055) 2023-11-12 17:51:18 +05:30
ViralKansodiya
ecc305dd59 fix: add customer name and supplier name columns (#37557)
fix: add customer name and supplier name columns
2023-11-12 17:48:37 +05:30
Niraj Gautam
6f6d5cb4cf fix(POS): 100 % Discount on Point of Sales (#37411)
fix: Allow 100% discount in POS
2023-11-12 11:52:35 +05:30
Deepesh Garg
8634abc021 fix: COA Importer app related issues (#37238)
* fix: COA Importer app related issues

* fix: Clear all account links fields befor import

* fix: Attribute error
2023-11-12 11:42:26 +05:30
David Arnold
a74e1f1600 fix(crm): ensure primary address and contact follows customer setting (#37710)
Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
2023-11-11 20:20:21 +05:30
hyaray
59438ee8d4 chore: Add missing translations (#38043)
chore: Add missing translations
2023-11-11 19:38:24 +05:30
David Arnold
4ed9927a30 fix(patch): to migrate properly in post section (#38045) 2023-11-11 19:37:23 +05:30
David Arnold
ae508144cd fix(customer): quick form and integration fixes (#37386) 2023-11-11 19:35:07 +05:30
ruthra kumar
a52a1b49af refactor: update traceback on retry 2023-11-11 05:20:27 +05:30
ruthra kumar
93295bf25b refactor: support list view filters 2023-11-11 05:10:16 +05:30
ruthra kumar
73639db910 chore: resolve linting issue 2023-11-10 15:27:28 +05:30
ruthra kumar
c320288690 refactor: rollback for retries and UI alerts 2023-11-10 13:45:52 +05:30
ruthra kumar
0aa1636d04 refactor: barebones retry functionality 2023-11-10 13:18:41 +05:30
ruthra kumar
194d70f8a0 chore: show retried in list view 2023-11-10 13:18:41 +05:30
ruthra kumar
af35590549 refactor: add basic functionalities 2023-11-10 13:18:41 +05:30
ruthra kumar
a248b13cc3 feat: virtual parent doctype 2023-11-10 13:18:41 +05:30
ruthra kumar
b0dfc936a1 chore: make from_doctype readonly 2023-11-10 13:18:41 +05:30
ruthra kumar
73090fa130 chore: add indexes 2023-11-10 13:18:41 +05:30
ruthra kumar
ade09bc709 chore: add list view filters 2023-11-10 13:18:33 +05:30
ruthra kumar
8d9f391309 Merge pull request #38004 from ruthra-kumar/ar_report_refactor_in_handling_gain_loss
fix: handling of exchange rate journals in AR/AP
2023-11-10 11:06:03 +05:30
ruthra kumar
ebd74a4e5b refactor: simplify logging logic bulk_transaction 2023-11-10 10:33:32 +05:30
ruthra kumar
c4f8f3613f chore: rearrange fields 2023-11-10 10:33:31 +05:30
ruthra kumar
e5a8ad54e2 chore: convert child to normal table 2023-11-10 10:33:31 +05:30
ruthra kumar
815c616f18 chore: remove 'Bulk Transaction Log' doctype 2023-11-10 10:33:31 +05:30
ruthra kumar
1d8fcd66e6 fix: new logic for handling revaluation journals 2023-11-10 10:31:39 +05:30
ruthra kumar
6ca3b26820 Merge pull request #37859 from marination/split-invoice-refactor
fix: `split_invoices_based_on_payment_terms`
2023-11-10 10:22:37 +05:30
s-aga-r
18a2e6ecb2 Merge pull request #38010 from s-aga-r/FIX-ITEM-READ-ONLY
fix: make item field read-only in batch
2023-11-10 10:21:20 +05:30
David Arnold
922fffda1f fix(payments): incoming payment requests aren't supposed to be in 'initiated' state (only outgoing are) (#37447)
* fix(payments): incoming payment requests aren't supposed to be in 'initiated' state (only outgoing are)

* fixup! fix(payments): incoming payment requests aren't supposed to be in 'initiated' state (only outgoing are)
2023-11-09 22:04:27 +05:30
marination
1fc5844025 fix: Re-add no.of rows split in alert message 2023-11-09 15:01:58 +01:00
jabir-elat
45b4bfc947 fix: sales order not assigned to territory orders (#37905)
filtered sales order are not assigned to 'territory_orders' which results in 0 order amount and 0 billing amount in the output
2023-11-09 18:30:00 +05:30
Sympatron GmbH
92f6d2c87c chore: Update de.csv (#37810)
chore: chore: Update de.csv
2023-11-09 18:27:11 +05:30
Vishakh Desai
c2bda2c705 fix: Supplier Quotation fields (#37963) 2023-11-09 18:26:34 +05:30
marination
4b4b176fcf style: Remove spaces introduced via merge conflict 2023-11-09 13:03:52 +01:00
Marica
a27374fd8f Merge branch 'develop' into split-invoice-refactor 2023-11-09 17:28:01 +05:30
marination
56ac3424d2 fix: Alert message and make sure invoice due dates are different for effective test
- Make invoice due dates are different so that the invoice with the earliest due date is allocated first in the test
- Translate voucher type, simplify alert message. The invoice could be "split" into 1 row, no. of rows in the message seems unnecessary.
2023-11-09 12:50:44 +01:00
ruthra kumar
696e2108ac Merge pull request #37746 from casesolved-co-uk/ar_billed_cur
feat: in_party_currency option for AR/AP reports
2023-11-09 13:04:47 +05:30
ruthra kumar
89612f2605 Merge pull request #37716 from vishdha/ar_report
feat: multi-select customer group in AR Report
2023-11-09 13:04:01 +05:30
rohitwaghchaure
a8216b9727 fix: make adjustment entry using stock reconciliation (#37995)
fix: do adjustment entry using stock reconciliation
2023-11-09 12:22:26 +05:30
s-aga-r
779260fb49 fix: make item field read-only in batch 2023-11-09 12:19:45 +05:30
Deepesh Garg
860b67e9c0 Merge pull request #37828 from GursheenK/payments-irrespective-of-party-types
fix: payments irrespective of party types
2023-11-09 12:14:58 +05:30
Deepesh Garg
47ba357bea Merge pull request #38000 from bosue/payment_entry_status
fix: Mark Status field in Payment Entry 'no_copy'.
2023-11-09 12:14:02 +05:30
ruthra kumar
3502c01aa4 Merge pull request #37860 from ruthra-kumar/filter_disable_accounts
refactor: ignore disabled account while selecting Income Accounts
2023-11-09 10:14:10 +05:30
ruthra kumar
6e3e094c95 refactor: ignore disabled account while selecting Income Accounts 2023-11-09 09:39:39 +05:30
Bernd Oliver Sünderhauf
a89afb65d7 fix: Mark Status field in Payment Entry 'no_copy'. 2023-11-08 21:52:32 +01:00
Anand Baburajan
9a171db97f fix: asset depreciation ledger (#37991)
* fix: include opening acc depr while calculating asset depr ledger report

* chore: include opening acc depr properly in acc depr amt

* chore: add cost_center in asset depr ledger report

* fix: handle finance books properly in asset depr ledger report

* chore: rename 'include default book entries' to 'include default FB entries'
2023-11-08 22:02:09 +05:30
s-aga-r
48567ef755 Merge pull request #37979 from s-aga-r/FIX-STOCK-RESERVATION
fix: ignore Stock Reservation for future dated PR
2023-11-08 19:45:15 +05:30
Deepesh Garg
b57eba6eaf Merge pull request #37987 from frappe/revert-37496-reset-tax-template-in-item-details
Revert "fix: set empty value for tax template in item details"
2023-11-08 19:13:30 +05:30
Deepesh Garg
70d99eebc0 Revert "fix: set empty value for tax template in item details (#37496)"
This reverts commit b0d440c34b.
2023-11-08 18:38:39 +05:30
Wolfram Schmidt
4783e4beee Update de.csv (#37981)
added translation for DocType Competitor https://www.duden.de/rechtschreibung/Konkurrent
2023-11-08 15:12:47 +05:30
Gursheen Anand
450c2470e9 refactor: set against account link for jv 2023-11-08 14:08:57 +05:30
Gursheen Anand
09439334ca refactor: use both fields to store against values 2023-11-08 12:57:00 +05:30
Gursheen Anand
f9c88ea7bc refactor: keep old against fields intact 2023-11-08 12:55:41 +05:30
s-aga-r
33eedb97dc fix: ignore Stock Reservation for future dated PR 2023-11-08 12:38:09 +05:30
Gursheen Anand
2984a86f37 fix: use get_all instead of get_list 2023-11-08 12:30:24 +05:30
Gursheen Anand
5f5d75a0bb chore: linting issues 2023-11-08 11:19:45 +05:30
ruthra kumar
6f231e4c83 Merge branch 'develop' into ar_billed_cur 2023-11-08 10:30:15 +05:30
ruthra kumar
c750e4d7ef Merge pull request #37971 from ruthra-kumar/performance_optimization_on_bulk_transaction_processing
refactor: optimize bulk transaction for speed
2023-11-08 06:32:23 +05:30
Gursheen Anand
291a499124 fix: split expected jv entries for scrap asset 2023-11-08 00:46:52 +05:30
s-aga-r
67b36a0823 Merge pull request #37970 from s-aga-r/FIX-5528
chore: typo in `Stock Entry` enqueue msg
2023-11-07 20:57:45 +05:30
marination
162c0497d1 test: get_outstanding_reference_documents (triggered via UI) 2023-11-07 14:44:04 +01:00
ruthra kumar
416bd400bb refactor: optimize for speed 2023-11-07 17:57:20 +05:30
s-aga-r
ee60fa940c chore: typo in Stock Entry enqueue msg 2023-11-07 17:33:29 +05:30
ruthra kumar
6210b24c64 Merge pull request #37954 from ruthra-kumar/expense_claim_repost
refactor: expand repost to `Expense Claim` and make it configurable
2023-11-07 15:40:55 +05:30
Gursheen Anand
68c6ad6036 fix: test for balance in forex account after revaluation 2023-11-07 15:31:52 +05:30
ruthra kumar
10b9570429 refactor: update permissions for repost settings 2023-11-07 14:30:06 +05:30
ruthra kumar
11c8d9fcf1 refactor(test): repost test case for purchase invoice 2023-11-07 14:18:07 +05:30
ruthra kumar
61705047b0 refactor: select distinct types 2023-11-07 13:42:09 +05:30
Gursheen Anand
ea4b6ff27b fix: remove string from against field in loyalty point entry 2023-11-07 13:05:38 +05:30
Gursheen Anand
5ce395a60a fix: purchase receipt test 2023-11-07 12:52:49 +05:30
ruthra kumar
ac79b8483f refactor(test): update repost settings for test cases 2023-11-07 12:46:06 +05:30
ruthra kumar
0135293127 Merge pull request #37956 from ruthra-kumar/type_error_on_payment_entry
fix: type error on new payment entry
2023-11-07 12:21:29 +05:30
ruthra kumar
adff287160 fix: type error on new payment entry 2023-11-07 12:15:25 +05:30
ruthra kumar
b651b36fff refactor: support for expense claim repost 2023-11-07 11:59:33 +05:30
ruthra kumar
5a068410c6 refactor: configurable repost settings 2023-11-07 11:59:33 +05:30
ruthra kumar
ebb186c8df chore: patch to update default repost settings value 2023-11-07 11:59:30 +05:30
ruthra kumar
d582a73795 feat: settings page for repost 2023-11-07 10:12:12 +05:30
Gursheen Anand
e845b63228 fix: single dr cr entries 2023-11-06 20:37:05 +05:30
ruthra kumar
cfe0479dfb Merge pull request #37948 from ruthra-kumar/typo_in_ar_report
fix: typo in AR report
2023-11-06 20:25:10 +05:30
ruthra kumar
67e74d03ed fix: typo in AR report 2023-11-06 20:23:26 +05:30
hyaray
8722318081 fix: add translation wrapper 2023-11-06 19:49:45 +05:30
s-aga-r
2d272fa51c Merge pull request #37903 from s-aga-r/FIX-5333
fix: link between parent and child procedure
2023-11-06 19:26:05 +05:30
s-aga-r
15840d408b Merge pull request #37935 from s-aga-r/FIX-5365
fix: don't reset rate if greater than zero in standalone debit note
2023-11-06 19:25:42 +05:30
s-aga-r
f9fc6c9c9d fix(test): test_gl_entries_for_standalone_debit_note 2023-11-06 19:02:01 +05:30
s-aga-r
30c6b83a10 test: add test case for Quality Procedure` 2023-11-06 18:55:06 +05:30
s-aga-r
1754d027b3 Merge pull request #37928 from s-aga-r/FIX-5227
fix: make `Material Request Item` required if `Material Request` is set in PO
2023-11-06 17:22:27 +05:30
Gursheen Anand
a1f8595a6a chore: linting issue 2023-11-06 17:20:11 +05:30
s-aga-r
5cce522ecd fix: don't reset rate if greater than zero in standalone debit note 2023-11-06 17:18:33 +05:30
Gursheen Anand
758ec720de fix: remove join for against in purchase receipt 2023-11-06 17:14:55 +05:30
Gursheen Kaur Anand
6280031722 Merge branch 'develop' into make-against-field-dynamic 2023-11-06 17:06:03 +05:30
Gursheen Anand
ff0343d2cc fix: auto separate against accounts 2023-11-06 16:46:43 +05:30
Gursheen Anand
3d00d74fed fix: combine jv entries for rate revaluation 2023-11-06 16:45:56 +05:30
vishal
30402033bc fix: minor change added to test_case 2023-11-06 13:02:04 +05:30
vishal
de445b32f5 feat(accounts_receivable): test_case added for multi-select customer group 2023-11-06 12:39:11 +05:30
rohitwaghchaure
34d3eb88b3 feat: reserved production plan sub assembly items (#37884) 2023-11-06 11:07:09 +05:30
s-aga-r
a9d91189b0 fix: make Material Request Item required if Material Request is set in PO 2023-11-06 11:05:04 +05:30
Gursheen Anand
84f0d1ff1f chore: linting issues 2023-11-06 10:30:49 +05:30
Gursheen Anand
98a8288da2 fix: handle gle for standalone credit and debit notes 2023-11-06 09:53:11 +05:30
Gursheen Anand
0e100cd451 fix: skip check for removed validation 2023-11-06 09:51:26 +05:30
ruthra kumar
e5a018f84c Merge pull request #37879 from ruthra-kumar/flag_to_toggle_dn_update_on_cr_note
refactor: flag to toggle billed amy update in DN for Credit Note
2023-11-06 08:40:27 +05:30
Deepesh Garg
2b02ef0066 fix: POS change amount gl entry with no amount (#37799) 2023-11-05 17:25:05 +05:30
viralkansodiya15
e5bc8fccb1 fix: list index out of range (#37890)
* fix: list index out of range

* fix: solve linter test failing
2023-11-05 11:54:35 +05:30
ruthra kumar
0c5bdbdcf3 refactor(test): enable billed amt update on Sales Return(Cr Note) 2023-11-05 08:32:27 +05:30
ruthra kumar
a3191f1c8c refactor: flag to toggle billed amy update in DN for Credit Note 2023-11-05 08:16:13 +05:30
ruthra kumar
787784e937 Merge pull request #37886 from ruthra-kumar/add_rounding_effect_in_reconciliation_tool
refactor: avoid precision based validation error while reconciling
2023-11-05 05:16:31 +05:30
Raffael Meyer
539ff03a7e Merge pull request #37299 from marination/party-name-match 2023-11-04 16:47:26 +01:00
s-aga-r
e42a3e0084 Merge pull request #37754 from s-aga-r/VALIDATE-RESERVED-STOCK
fix: consider reserved stock while cancelling a stock transaction
2023-11-04 15:36:49 +05:30
s-aga-r
8fbd4cea5b chore: add missing filters for Parent Procedure 2023-11-04 14:17:26 +05:30
s-aga-r
05f24ede96 fix: link between parent and child procedure 2023-11-04 14:17:24 +05:30
s-aga-r
54b323e557 test: add test case for stock stock reservation 2023-11-04 14:15:21 +05:30
s-aga-r
9231706227 fix: qty based check for stock reservation of serial-batch items based on qty 2023-11-04 14:15:21 +05:30
s-aga-r
1f88b1ef84 chore: patch to set reserved stock in Bin 2023-11-04 14:15:19 +05:30
s-aga-r
10242235bc fix(test): test_stock_reservation_against_sales_order 2023-11-04 14:14:58 +05:30
s-aga-r
73b65ac82e fix: consider reserved stock while cancelling a stock transaction 2023-11-04 14:14:58 +05:30
s-aga-r
f52916a2c3 feat: maintain Reserved Stock in Bin 2023-11-04 14:14:58 +05:30
s-aga-r
98d6cdd53c feat: add field reserved_stock in Bin 2023-11-04 14:14:58 +05:30
s-aga-r
e1a87a802d fix: consider reserved batches while cancelling a stock transaction 2023-11-04 14:14:58 +05:30
s-aga-r
d9e284366d fix: consider reserved serial nos while cancelling a stock transaction 2023-11-04 14:14:58 +05:30
ruthra kumar
56e9a46c17 Merge pull request #37887 from ruthra-kumar/add_index_to_payment_ledger
chore: performance optimization on payment ledger entry doctype
2023-11-04 08:56:52 +05:30
Anand Baburajan
2ce6bbf291 chore: rename depreciation_amount_based_on_num_days_in_month to daily_prorata_based [dev] (#37897)
chore: rename depreciation_amount_based_on_num_days_in_month to daily_prorata_based
2023-11-03 20:11:46 +00:00
Anand Baburajan
568d5bfbe8 chore: rename daily_depreciation in asset to depreciation_amount_based_on_num_days_in_month [dev] (#37893)
* chore: rename daily_depreciation to depreciation_based_on_num_days_in_month

* chore: add patch

* chore: remove unnecessary files

* chore: add amount in field name

* chore: add amount in label
2023-11-03 22:35:08 +05:30
ruthra kumar
60435daba3 refactor: avoid precision based validation error while reconciling 2023-11-03 17:58:19 +05:30
ruthra kumar
f14d1eb871 chore: performance optimization on payment ledger entry doctype 2023-11-03 17:56:40 +05:30
rohitwaghchaure
d4c0dbfacc fix: incorrect available qty for backdated stock reco with batch (#37858)
* fix: incorrect available qty for backdated stock reco with batch

* test: added test case
2023-11-03 17:19:06 +05:30
Ankush Menat
469ae2c7f1 perf: index return against for purchase invoice (#37881) 2023-11-03 15:57:52 +05:30
ruthra kumar
a9372c42cd Merge pull request #37869 from ruthra-kumar/reconcile_only_on_voucher
refactor: 'group only by voucher' flag in AR/AP report
2023-11-03 12:29:33 +05:30
ruthra kumar
edf67444ea Merge pull request #37852 from ruthra-kumar/better_gl_and_pl_comparision_report
refactor: better ledger comparision report
2023-11-03 12:29:18 +05:30
Gursheen Anand
4867ca353c refactor: move common util for fetching party types using account type 2023-11-03 12:00:56 +05:30
Gursheen Anand
4015723591 fix: credit note receive payment entry 2023-11-03 11:58:25 +05:30
s-aga-r
f70d779034 Merge pull request #37864 from s-aga-r/FIX-5139
fix: permission error while creating Supplier Quotation from Portal
2023-11-03 11:57:06 +05:30
ruthra kumar
23beb46d15 refactor: group only by voucher flag in AR/AP report 2023-11-03 11:47:02 +05:30
s-aga-r
e019d43d0b fix: permission error while creating Supplier Quotation from Portal 2023-11-03 00:53:30 +05:30
Deepesh Garg
c37e374fdd fix: Add index to supplier invoice field (#37861)
* fix: Add index to supplier invoice field

* chore: remove unintetional changes
2023-11-02 21:00:45 +05:30
Gursheen Anand
cd1e016163 test: receive payments from payable party 2023-11-02 17:39:27 +05:30
Gursheen Anand
1f4b381748 fix: test for invoice returns 2023-11-02 17:38:43 +05:30
rohitwaghchaure
fb9a80923b Merge pull request #37856 from rohitwaghchaure/fixed-test-cases-reposting-valuation
chore: fix test cases related repost item valuation
2023-11-02 14:52:15 +05:30
Rohit Waghchaure
ed1c198897 chore: fix test cases 2023-11-02 14:21:16 +05:30
Gursheen Kaur Anand
1b808e1d7c fix: standard submit perm in repost ledger for editable invoices (#37826)
* fix: ignore perm while reposting ledger

* fix: use flag in save

* fix: remove unnecessary save
2023-11-02 14:01:26 +05:30
ruthra kumar
639f427d6d refactor(test): for ledger comparision report 2023-11-02 13:40:40 +05:30
ruthra kumar
539f0251d9 refactor: better output on gl and pl comparison report 2023-11-02 13:37:25 +05:30
rohitwaghchaure
d91d9b02d4 Merge pull request #37849 from rohitwaghchaure/fixed-remove-voucher_type_no
fix: remove voucher type and no for Item and Warehouse based reposting
2023-11-02 13:26:44 +05:30
Rohit Waghchaure
0104897d69 fix: remove voucher type and no for Item and Warehouse based reposting 2023-11-02 13:24:56 +05:30
ruthra kumar
5530a5b303 Merge pull request #37845 from ruthra-kumar/std_permissions_for_process_payment_reconciliation_log
chore: add std permissions for Process Payment Reconciilation log
2023-11-02 12:10:19 +05:30
ruthra kumar
a9fceeb00f chore: std permissions for Process Payment Reconciilation log 2023-11-02 11:32:24 +05:30
ruthra kumar
34e3538b55 Merge pull request #37838 from ruthra-kumar/pass_limits_to_je_and_pe_queries
refactor: pass limits to JE and PE queries in reconciliation tool
2023-11-02 10:42:11 +05:30
s-aga-r
851a234988 Merge pull request #37819 from s-aga-r/FIX-5274
fix: `TypeError` in PR for non-stock item
2023-11-02 10:39:35 +05:30
s-aga-r
17893eff59 Merge pull request #37836 from barredterra/filters-from-route-in-stock-balance
feat(Stock Balance): add filters from route
2023-11-02 10:12:48 +05:30
ruthra kumar
54e8ce1ac5 refactor: pass limits to JE and PE queries in reconciliation tool 2023-11-02 09:16:26 +05:30
barredterra
38e5e4a893 feat(Stock Balance): add filters from route 2023-11-01 18:05:50 +01:00
ruthra kumar
65cc804186 Merge pull request #37832 from ruthra-kumar/checkbox_to_toggle_remarks_in_general_ledger
refactor: checkbox to toggle remarks in General Ledger
2023-11-01 21:15:47 +05:30
ruthra kumar
8fa677b8e8 refactor: checkbox to toggle remarks in General Ledger 2023-11-01 20:30:16 +05:30
marination
6bd56d2d5f refactor: split_invoices_based_on_payment_terms
- Invoices were in the wrong order due to the logic. The invoices with payment terms were added first and the rest after.
- Overly long function with unnecessary loops (reduced to one main loop) and complexity
- The split row as per payment terms was not ordered. So the second installment was allocated first
2023-11-01 20:11:00 +05:30
s-aga-r
204face50d Merge pull request #37827 from s-aga-r/REFACTOR-BIN
refactor: update fields label and remove unused fields from BIN
2023-11-01 16:25:40 +05:30
Raffael Meyer
c5f5aa8208 feat: report Timesheet Billing Summary (#37451) 2023-11-01 15:49:21 +05:30
Gursheen Anand
3d9938221a fix: remove validation for negative outstanding invoices 2023-11-01 15:40:54 +05:30
s-aga-r
f0a1f4ac7c refactor: remove unused fields fcfs_rate and ma_rate from Bin 2023-11-01 15:36:41 +05:30
s-aga-r
ec1a7869f8 refactor: rearrange fields and update label 2023-11-01 15:35:18 +05:30
mrchenxxx
7e67d42d1d chore: Update translations
chore: Update translations
2023-11-01 15:25:36 +05:30
Deepesh Garg
da9a7ff63d Merge pull request #37278 from barredterra/translate-accounts-settings-de
fix: german translations of Accounts Settings
2023-11-01 15:11:52 +05:30
Deepesh Garg
47f913abcb Merge pull request #37694 from viralpatel15/develop
fix: set docstatus filter to ignore cancel document
2023-11-01 14:16:31 +05:30
Deepesh Garg
fc4199504f Merge pull request #37590 from GursheenK/gov-compliance-for-tax-withholding-report
fix: gov compliance for tax withholding report
2023-11-01 14:09:29 +05:30
Deepesh Garg
0fc14b72ca Merge pull request #37635 from GursheenK/validation-for-order-item-from-qtn
fix: validate sales order item with quotation
2023-11-01 14:03:41 +05:30
Deepesh Garg
804ed0d26a Merge pull request #37680 from GursheenK/workaround-for-SO-status-updater
fix: status when over delivery or billing in SO
2023-11-01 12:29:28 +05:30
s-aga-r
028b3e2fbf fix: TypeError in PR for non-stock item 2023-11-01 11:48:27 +05:30
marination
e0a03789ae 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
2023-10-31 16:53:08 +01:00
s-aga-r
7a3e4a8a05 Merge pull request #37742 from aadhilpm/patch-1
fix: remove GoCardless Settings and Mpesa Settings from Workspace
2023-10-31 20:02:39 +05:30
Aadhil
e16cc38b70 fix: remove GoCardless Settings and Mpesa Settings from Workspace 2023-10-31 19:59:52 +05:30
ruthra kumar
c43b30cf36 Merge pull request #37795 from ruthra-kumar/patch_for_reconciliation_limits
chore: update default limit values in reconciliation tool
2023-10-31 19:51:13 +05:30
ruthra kumar
07a8024b45 Merge pull request #37793 from ruthra-kumar/refactor_ar_remarks_fetching
refactor: pull remarks only if needed on AR/AP report
2023-10-31 19:50:38 +05:30
s-aga-r
b64147cce9 Merge pull request #37644 from bosue/fix_typo_overrridden
chore: Fix typo followup to #37636
2023-10-31 19:45:37 +05:30
s-aga-r
058bb95171 Merge pull request #37743 from barredterra/translate-project-page
fix: make project page translatable
2023-10-31 19:41:02 +05:30
hyaray
daf2ec063c fix: In-Transit Warehouse company filter (#37796) 2023-10-31 18:51:27 +05:30
rohitwaghchaure
77af247450 chore: fixed test cases (#37792) 2023-10-31 18:02:24 +05:30
ruthra kumar
1fd888175f chore: update default limit values in reconciliation tool 2023-10-31 17:47:55 +05:30
David Arnold
fb0ec74d08 fix(packed_item): ensure proper names for ref integrity (#37597) 2023-10-31 17:41:44 +05:30
ruthra kumar
eb73017798 refactor: pull remarks only if needed on AR/AP report 2023-10-31 17:31:28 +05:30
David Arnold
139a68fd0f test: fix bad test data (#37773)
* test(stock): fix bad test data

* test(asset): fix bad test data

* test(stock): fix bad test data

* test(manufacturing): fix bad test data
2023-10-31 16:50:09 +05:30
mergify[bot]
d758fc1b89 fix: incorrect material request quantity in production plan (backport #37785) (#37789)
fix: incorrect material request quantity in production plan (#37785)

(cherry picked from commit 25718d9f1b)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-10-31 16:28:27 +05:30
rohitwaghchaure
056b74b162 fix: indexing on Delivery Note Item (#37766)
fix: added indexing on Delivery Note Item
2023-10-31 12:32:52 +05:30
s-aga-r
e752f8f0ef Merge pull request #37758 from s-aga-r/FIX-37566
fix: `PermissionError` while creating DN from SO
2023-10-30 18:08:27 +05:30
ruthra kumar
54a32adef3 Merge pull request #37761 from ruthra-kumar/add_index_to_posting_date_in_ple
chore: add index to posting_date in PLE
2023-10-30 16:48:46 +05:30
ruthra kumar
ca69845238 chore: add index to posting_date in PLE 2023-10-30 16:15:05 +05:30
ruthra kumar
d2fdda8bcd Merge pull request #37720 from ruthra-kumar/ignore_cancelled_entries_while_looking_for_currency
refactor: ignore cancelled GLE's while looking for currency of existing entries
2023-10-30 16:11:05 +05:30
s-aga-r
afc64ed9ee fix: ignore permissions while mapping DN Item 2023-10-30 15:39:11 +05:30
Didiman1998
500435b856 fix: make changes that enable gantt view for job cards (#37661)
* fix: make changes that enable gantt view for job cards

* fix: add fields on listview and remove from json file

* fix: undo modified date

---------

Co-authored-by: Dietmar Fischer <fischer@kk-software.de>
2023-10-30 15:18:41 +05:30
viralkansodiya15
a15484fe3d fix: solve linter test and update 2023-10-30 13:01:25 +05:30
viralkansodiya15
76c61c1b04 Merge branch 'frappe:develop' into develop 2023-10-30 12:12:47 +05:30
viralkansodiya15
de58c67991 fix: linter test solve 2023-10-30 10:44:17 +05:30
s-aga-r
8a34a4ba68 Merge pull request #37732 from bosue/remove_extraneous_disabled_filters
refactor: remove extraneous disabled filters
2023-10-30 09:54:05 +05:30
Richard Case
208d5042ee chore: update tests 2023-10-30 00:48:17 +00:00
Richard Case
ece7049390 feat: in_party_currency option for AR/AP reports 2023-10-30 00:15:05 +00:00
barredterra
e72afd0bd6 fix: make project page translatable 2023-10-29 17:48:48 +01:00
Deepesh Garg
83db7c6a65 Merge pull request #37737 from deepeshgarg007/arbnb_account_fetch
fix: fetch asset received but not billed account only when needed
2023-10-29 13:55:24 +05:30
s-aga-r
62384e9321 Merge pull request #37722 from s-aga-r/FIX-TYPO
fix: typo in function name and msg
2023-10-29 12:17:27 +05:30
Deepesh Garg
1081df3d7e Merge pull request #37674 from GursheenK/item-variant-tax-template
fix(minor): set tax values for item variants
2023-10-29 10:33:03 +05:30
Deepesh Garg
3a8736374c fix: fetch asset received but not billed account only when needed 2023-10-29 10:18:47 +05:30
Bernd Oliver Sünderhauf
f276fbba4f refactor: remove extraneous disabled filters 2023-10-28 02:10:28 +02:00
rohitwaghchaure
fd78f868e1 fix: unsupported operand type(s) for serial and batch bundle in POS Invoice (#37721) 2023-10-27 23:33:04 +05:30
Anand Baburajan
d99a56bc27 chore: allow wip_composite_asset in the MR PO PR PI flow (#37723) 2023-10-27 18:54:36 +05:30
s-aga-r
48c66b68ab fix: typo in function name and msg 2023-10-27 17:07:16 +05:30
ruthra kumar
8d9b90f3f5 refactor: ignore cancelled GLE's while looking for currency 2023-10-27 13:58:44 +05:30
Deepesh Garg
4a86375e89 Merge pull request #37690 from deepeshgarg007/plaid_fixes
fix(plaid): Do not sync pending transactions
2023-10-27 11:37:33 +05:30
vishal
b60c57a97d fix: minor issue 2023-10-27 11:22:55 +05:30
vishal
8903c1bc6f feat: multi-select customer group in AR Report 2023-10-27 11:12:55 +05:30
ruthra kumar
e33fd450fd Merge pull request #37707 from ruthra-kumar/typeerror_on_tds_payable_monthly
fix: typeerror on TDS payable monthly report
2023-10-27 07:36:19 +05:30
ruthra kumar
dc5d2c7406 fix: typerror on TDS payable monthly report 2023-10-26 20:36:52 +05:30
David Arnold
1612d7ba3f fix(defaults): apply discount and provisonal defaults from item group and brand if available (#37466) 2023-10-26 12:03:22 +00:00
David Arnold
681782121c fix: avoid name clash in delivery stop (#37306)
* fix(stock): avoid name clash in delivery stop with Document.lock()

* chore(stock): format delivery stop json according to doctype builder
2023-10-26 11:46:50 +00:00
s-aga-r
35cf944cb7 Merge pull request #37604 from blaggacao/feat/link-dn-list-from-dt-form
feat(delivery): link to delivery notes list view from delivery trip
2023-10-26 13:01:55 +05:30
viralkansodiya15
4bbad7f448 fix: set docstatus filter to ignore cancel document 2023-10-26 11:45:47 +05:30
s-aga-r
74b6bfb9eb Merge pull request #37686 from s-aga-r/FIX-37423
feat: allow return of components for SCO that don't have SCR created
2023-10-26 11:15:36 +05:30
Deepesh Garg
46ea868559 fix(plaid): Do not sync pending transactions 2023-10-25 22:58:24 +05:30
s-aga-r
3290df5593 fix: consider returned qty while calculating unsupplied qty 2023-10-25 19:08:51 +05:30
s-aga-r
8e3b9ec879 feat: allow return of components for SCO that don't have SCR created 2023-10-25 18:06:23 +05:30
s-aga-r
787fc8737f Merge pull request #37669 from s-aga-r/FIX-37664
refactor: rename field `Over Order Allowance` to `Blanket Order Allowance`
2023-10-25 14:53:25 +05:30
s-aga-r
fcfcf6957e chore: patch to rename field over_order_allowance 2023-10-25 14:03:53 +05:30
s-aga-r
8ffa2bfe25 refactor: rename field Over Order Allowance to Blanket Order Allowance 2023-10-25 14:03:51 +05:30
Gursheen Anand
d69b0d76dd fix: status for over delivery or billing 2023-10-25 13:59:37 +05:30
rohitwaghchaure
2bcff4c7f2 chore: fixed test case non_internal_transfer_delivery_note (#37671) 2023-10-25 13:24:34 +05:30
Gursheen Anand
d436a40739 fix: only update if variant table empty 2023-10-25 13:06:03 +05:30
Gursheen Anand
5deba1b6f9 fix: copy all child fields to item variant 2023-10-25 12:50:16 +05:30
mergify[bot]
886102d462 chore: fixed test cases related to Internal Transfer (backport #37659) (#37662)
* chore: fixed test cases related to Internal Transfer (#37659)

(cherry picked from commit 72d32a4901)

# Conflicts:
#	erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
#	erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py

* chore: fix conflicts

* chore: fix conflicts

* chore: fix test cases

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-10-25 12:46:39 +05:30
Ankush Menat
7be578485e fix: force delete removed report (#37668) 2023-10-25 07:12:35 +00:00
ruthra kumar
7c1b990c55 Merge pull request #37625 from ruthra-kumar/set_multi_currency_fields_for_je_in_bank_reconciliation
refactor: set exchange rate on foreign currency JE from Bank Reconciliation
2023-10-25 11:08:55 +05:30
ruthra kumar
74a0d6408a refactor: handle bank transaction in foreign currency 2023-10-25 09:45:05 +05:30
rohitwaghchaure
92cbe580e6 fix: incorrect process loss validation for multiple finished items (#37576) 2023-10-24 15:28:55 +05:30
Ankush Menat
d92eb0c603 Update initiate_release.yml 2023-10-24 15:25:03 +05:30
Deepesh Garg
11d956fa18 fix: Purchase Receipt GL Entries (#37642)
* fix: Purchase Receipt GL Entries

* chore: cleanup

* test: set cwip account
2023-10-24 14:28:19 +05:30
s-aga-r
8e523961dc fix(patch): update_sre_from_voucher_details (#37649) 2023-10-24 14:13:26 +05:30
s-aga-r
cdbe1c87d4 Merge pull request #37603 from s-aga-r/AUTO-RESERVATION
feat: auto reserve stock for Sales Order on purchase
2023-10-24 10:14:18 +05:30
ruthra kumar
3f42128fff Merge pull request #37586 from ruthra-kumar/overallocation_on_po_to_multiple_invoices
fix: overallocation on purchase order to multiple invoices
2023-10-24 08:44:00 +05:30
ruthra kumar
4dff2c7a0d chore: fix flakiness test_sales_order_partial_advance_payment 2023-10-24 08:09:22 +05:30
ruthra kumar
547993f801 refactor(test): make use of utility methods 2023-10-24 06:40:14 +05:30
ruthra kumar
946228d783 test: overalloction on reconciliation when PO is involved 2023-10-24 06:40:14 +05:30
ruthra kumar
23df4205f8 fix: overallocation on Payment with PO/SO 2023-10-24 06:40:14 +05:30
ruthra kumar
89f484282a refactor: exc rate on foreign currency JE from Bank Reconciliation 2023-10-24 06:39:37 +05:30
Bernd Oliver Sünderhauf
9ef26e1df0 chore: Fix typo followup to #37636 2023-10-23 19:41:55 +02:00
ruthra kumar
025acc0e48 Merge pull request #37630 from ruthra-kumar/provision_to_set_for_gain_loss_journal
refactor: configurable exchange gain or loss posting date
2023-10-23 21:25:48 +05:30
s-aga-r
6942ab1012 chore: patch to update From Voucher details 2023-10-23 19:12:55 +05:30
Deepesh Garg
3bfb7b79f2 refactor: Remove expense included in valuation accounts (#37632)
* refactor: Remove expense included in valuation accounts

* test: Deprecate tests

* test: Depricate tests

* test: Depricate tests
2023-10-23 18:23:45 +05:30
s-aga-r
24788ddcc0 chore: add SRE link in PR Connections 2023-10-23 18:00:58 +05:30
s-aga-r
adf313a6d3 test: add test case for auto-reservation from PR 2023-10-23 17:52:59 +05:30
Raffael Meyer
7f39318340 Merge branch 'develop' into translate-accounts-settings-de 2023-10-23 13:24:27 +02:00
s-aga-r
a432290a82 fix: ignore qty msg if From Voucher is set 2023-10-23 16:26:00 +05:30
Imesha Sudasingha
2b64e1ca8b chore: typo in description (#37636)
chore: typo in description
2023-10-23 15:28:52 +05:30
ruthra kumar
514d5434a3 test: varying posting date for gain loss journal 2023-10-23 12:32:10 +05:30
ruthra kumar
7e600a6494 refactor: pass gain loss posting date to controller 2023-10-23 12:12:59 +05:30
Gursheen Anand
17ebc1ea80 fix: validate so item with qtn 2023-10-23 11:56:28 +05:30
Richard Case
b099590b2c fix: Quality Inspection Parameter migration - DuplicateEntryError due to case sensitivity (#37499)
* fix: account for case-insensitive database primary key for parameter names

* chore: linting
2023-10-23 11:40:07 +05:30
ruthra kumar
5323bb7bee refactor: introduce fields in popup 2023-10-23 10:45:21 +05:30
ruthra kumar
55dbcee36a refactor: gain_loss posting date fields in the allocation table 2023-10-23 10:45:17 +05:30
HENRY Florian
ec9434aae3 refactor: remove fr translation duplicate in frappe app (#37288) 2023-10-23 10:15:23 +05:30
Deepesh Garg
d1ec0a6093 chore: Add missing commits back (#37618)
* chore: Add missing commits back

* test: cwip accounting unit tests

* chore: Attribute error

* chore: Purchase Invoice tests

* chore: Missing asset account

* chore: Missing asset account

* chore: update tests

* fix: Internal transfer GL Entries
2023-10-23 00:16:40 +05:30
rohitwaghchaure
5136fe196b fix: remove from or target warehouse for non internal transfer entries (#37612) 2023-10-22 20:03:02 +05:30
Niraj Gautam
4aa841786f fix: Update user profile picture, if employee profile pic is changed (#37483)
* fix: Update user pic if employee pic is changed.

* fix: Update condition
2023-10-21 18:13:53 +05:30
Vishnu VS
98cc7434d2 feat(Supplier Scorecard): added method for invoiced quantity in supplier scorecard (#37580)
feat(Supplier Scorecard): added method for invoiced quantity in supplier scorecard

Co-authored-by: vishnu <vishnuviswambara2002@gmail.com>
2023-10-21 18:04:54 +05:30
Vishnu VS
35020a9423 fix: error while loading Financial Ratios report (#37613) 2023-10-21 18:02:32 +05:30
William Moreno
1cc1c9aa38 fix: Typo in Nicaraguan chart of accounts (#37620)
fix: Typo in Nicaraguan chart of accounts
2023-10-21 18:02:02 +05:30
Gursheen Kaur Anand
9d392970f0 fix(minor): filter bank accounts in bank statement import (#37525)
fix: filter by company in bank account
2023-10-21 17:59:12 +05:30
Gursheen Kaur Anand
b0d440c34b fix: set empty value for tax template in item details (#37496)
* fix: empty tax template for items with invalid templates

* fix: test for empty tax template

* fix: test for item tax template calculation

* fix: test for pos inv tax template calculation
2023-10-21 17:58:43 +05:30
Akhil Narang
21c3d9c371 refactor: use gzip library's compress() and decompress() methods directly (#37611)
The util methods in framework were added for python2.7 compat, so can be removed

Signed-off-by: Akhil Narang <me@akhilnarang.dev>

[skip ci]
2023-10-21 11:19:45 +05:30
Deepesh Garg
dae66eab36 Merge branch 'develop' of https://github.com/frappe/erpnext into asset_purchase_receipt_gl 2023-10-20 20:12:43 +05:30
Deepesh Garg
9474908449 fix: Purchase Invoice GL entires for assets 2023-10-20 19:49:41 +05:30
Deepesh Garg
eec4057e8d fix: Purchase Invoice GL entires for assets 2023-10-20 19:42:14 +05:30
Ankush Menat
08bc77fb95 Merge pull request #37614 from maharshivpatel/fix-new-logo
chore: new erpnext logo as per espresso
2023-10-20 17:53:41 +05:30
Maharshi Patel
fff97b1cd2 chore: new erpnext logo as per espresso 2023-10-20 17:34:57 +05:30
Deepesh Garg
2a7d1c4c8d Merge pull request #37595 from vorasmit/purchase-gl
fix: add regional support to extend purchase gl entries
2023-10-20 16:51:58 +05:30
Deepesh Garg
0b674b608b Merge branch 'develop' of https://github.com/frappe/erpnext into asset_purchase_receipt_gl 2023-10-20 16:50:52 +05:30
rohitwaghchaure
14b009b093 fix: incorrect cost center in the purchase invoice (#37591) 2023-10-20 16:22:29 +05:30
s-aga-r
530922848f Merge pull request #37605 from blaggacao/fix/rename-dt-fetch-stop-link-action
fix(delivery): rename dt fetch stop action
2023-10-20 16:08:44 +05:30
David Arnold
79d51a0a0b fix(delivery): rename dt fetch stop action 2023-10-20 12:31:46 +02:00
David Arnold
85488cd0dc feat(delivery): link to delivery notes list view from delivery trip 2023-10-20 12:25:19 +02:00
Ankush Menat
ce7ac29d06 fix: Correctly extract last message (#37602)
frappe.message_log now contains plain dictionary and not JSON strings,
so no need to load them.
2023-10-20 10:20:40 +00:00
s-aga-r
4f363f5bf3 fix: partial reservation against SBB 2023-10-20 15:46:06 +05:30
Smit Vora
ff7108a3b1 fix: update existing doc if possible 2023-10-20 09:33:37 +05:30
Smit Vora
77cc91d06b fix: add regional support to extend purchase gl entries 2023-10-19 22:35:55 +05:30
s-aga-r
45395027d3 fix: incorrect serial and batch get reserved 2023-10-19 19:57:50 +05:30
Gursheen Anand
6d5ccde864 feat: add cols for supplier inv details 2023-10-19 17:55:24 +05:30
s-aga-r
961d2d9926 refactor: rename field against_pick_list 2023-10-19 17:51:34 +05:30
Gursheen Anand
75441017c6 chore: linting issues 2023-10-19 17:13:58 +05:30
Gursheen Anand
ed2457bddf feat: proprietorship & partnership options in entity type 2023-10-19 16:59:49 +05:30
Gursheen Anand
4471ad581e fix: sort by section code 2023-10-19 16:54:10 +05:30
Gursheen Anand
7ecc0d5a04 chore: change column order 2023-10-19 16:44:08 +05:30
s-aga-r
78fe567419 refactor: rename field against_pick_list_item 2023-10-19 16:38:43 +05:30
s-aga-r
5ae9c2f62b feat: add field From Voucher Type in SRE 2023-10-19 16:21:32 +05:30
Gursheen Anand
705dadae8e refactor: avoid relying only on against in tds docs query 2023-10-19 16:21:15 +05:30
Ankush Menat
40cdde8820 ci: seutp v15 config
https://github.com/frappe/frappe/issues/22817
2023-10-19 15:55:02 +05:30
s-aga-r
64497c9228 feat: reserve stock for SO on PR submission 2023-10-19 15:53:38 +05:30
s-aga-r
188175be84 feat: add fields to hold SO and SO Item ref in PR Item 2023-10-19 14:50:38 +05:30
s-aga-r
2b4fa98941 refactor: rename field Auto Reserve Stock for Sales Order 2023-10-19 14:50:35 +05:30
rohitwaghchaure
d09618bf05 chore: remove debugger (#37584) 2023-10-19 12:35:36 +05:30
Deepesh Garg
6750af90f7 Merge pull request #37562 from GursheenK/subscription-tax-filters
fix(minor): filter tax template based on company in subscription
2023-10-18 17:49:09 +05:30
rohitwaghchaure
10311ff114 fix: payment entry count on supplier dashboard (#37571) 2023-10-18 17:42:35 +05:30
rohitwaghchaure
2851a41310 fix: Issues related to RFQ and Supplier Quotation on Portal (#37565)
fix: RFQ and Supplier Quotation for Portal
2023-10-18 16:31:35 +05:30
s-aga-r
36a996d704 chore: make Reserve Stock checkbox visible in SO 2023-10-18 12:42:25 +05:30
Gursheen Anand
1a2f659de2 fix: filter tax template based on company 2023-10-18 11:42:19 +05:30
Ankush Menat
1d186efaab Merge pull request #37554 from frappe/e_com_perms
fix: e-commerce permissions for address
2023-10-18 11:08:16 +05:30
s-aga-r
fbd8660403 Merge pull request #37539 from HarryPaulo/fix-purchase-order-analyse-invoiced-qty
fix: billed_qty to show a sum of all invoiced qty from the purchase order item.
2023-10-18 11:07:34 +05:30
ruthra kumar
2bcda494b2 Merge pull request #37549 from ruthra-kumar/use_account_in_key_for_ar_ap_reports
refactor: use account in key while grouping voucher in ar/ap report
2023-10-18 09:09:16 +05:30
Deepesh Garg
7f1d916f04 chore: rearrange functions 2023-10-18 08:59:28 +05:30
Deepesh Garg
14760d9aea Merge pull request #37550 from deepeshgarg007/sales_order_item_dimensions
chore: Add accounting dimensions to Sales Order Item table
2023-10-17 22:54:04 +05:30
Ankush Menat
c197d37404 Merge branch 'develop' into e_com_perms 2023-10-17 22:29:44 +05:30
Ankush Menat
f4d74990fe fix: E-commerce permissions 2023-10-17 22:28:04 +05:30
Deepesh Garg
e15546b42f chore: rearrange functions 2023-10-17 21:28:59 +05:30
ruthra kumar
244cec64b2 test: report output if party is missing 2023-10-17 20:40:50 +05:30
Deepesh Garg
8c61fe2ca5 fix: rearrange functions 2023-10-17 20:36:09 +05:30
Ankush Menat
0931e93b4c Merge pull request #37552 from frappe/addr_fetch
fix: Ignore addr permission in internal code
2023-10-17 20:00:44 +05:30
Ankush Menat
7b9cedebf6 fix: Ignore addr permission in internal code 2023-10-17 19:00:52 +05:30
Deepesh Garg
88be7ada33 Merge branch 'develop' of https://github.com/frappe/erpnext into sales_order_item_dimensions 2023-10-17 18:30:49 +05:30
Deepesh Garg
e31db18912 chore: Add accounting dimensions to Sales Order Item table 2023-10-17 18:19:47 +05:30
ruthra kumar
601ab4567e refactor: use account in key while grouping voucher in ar/ap report 2023-10-17 17:48:04 +05:30
Deepesh Garg
7f865492d0 chore: pass stock value diff 2023-10-17 17:14:37 +05:30
Sabu Siyad
f900a78995 refactor!: drop ecommerce in favor of webshop (#33265)
* refactor!: remove ecommerce item group field check

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!: remove `e_commerce` directory

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!: remove `get_context` from `item_group`

https://frappeframework.com/docs/v14/user/en/guides/portal-development/context

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!: remove related `./templates`

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!(navbar): remove wishlist (ecommerce)

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!(js): remove js from scripts

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!: remove `www/all-products`

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!: remove pages and js

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!: remove js/customer_reviews

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!(portal utils): remove shopping cart debtor account

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!: remove e_commerce events from hooks

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!(web): remove e_commerce js from bundle

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!(setup): remove shopping cart setup

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!: remove pages

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor(item): remove website item button

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!(payment request): remove `on_payment_authorized`

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!: @staticmethod `get_gateway_details`

to avoid monkey patching, in custom apps
https://discuss.erpnext.com/t/how-to-override-method-in-frappe/28786/36

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!(pages): remove product page

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!(homepage): do not setup website items

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor(workspace): remove link to ecommerce settings

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!(www): remove shop-by-category

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!(homepage): remove featured product

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor: remove products in homepage

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor(homepage): remove explore button

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor: remove products fields from homepage

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* Revert "refactor!: @staticmethod `get_gateway_details`"

This reverts commit 561bcd96680a930bb92627869502d9346b10611b.

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!: remove payment gateway e_commerce import

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* chore: pre-commit

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!: pass `party` into `get_price`

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor: move `get_item_codes_by_attributes` to `utilities/product`

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* refactor!(quotation): input customer group

Signed-off-by: Sabu Siyad <hello@ssiyad.com>

* chore: pre-commit

* refactor: remove custom `navbar_items.html`

* refactor!(item): remove `published_in_website`

* refactor: move `validate_duplicate_website_item` before rename

* test: remove `test_shopping_cart_without_website_item`

* chore: add doctype drop patch

* refactor: removed website item related code

* refactor: removed shopping_cart code

* refactor: removed e-commerce related patches

* refactor: removed website related fields from item group

* fix: patch create_asset_depreciation_schedules_from_assets, KeyError: '0K BU64 AUY'

---------

Signed-off-by: Sabu Siyad <hello@ssiyad.com>
Co-authored-by: Rohit Waghchaure <rohitw1991@gmail.com>
2023-10-17 17:05:44 +05:30
Deepesh Garg
726fba61f3 Merge branch 'develop' of https://github.com/frappe/erpnext into asset_purchase_receipt_gl 2023-10-17 15:59:16 +05:30
s-aga-r
9d687ca6e9 Merge pull request #37541 from s-aga-r/FIX-PROJECT-TEST
fix(test): project test case
2023-10-17 14:13:38 +05:30
Deepesh Garg
0b85a525fb fix: GL Entries for receiving non CWIP assets using Purchase Receipt 2023-10-17 13:28:56 +05:30
s-aga-r
fd6aee15e6 fix(test): project test case 2023-10-17 12:48:07 +05:30
ruthra kumar
5bb3e290d2 Merge pull request #37330 from ruthra-kumar/provision_to_pick_exc_rate_on_transaction_date
refactor: checkbox to toggle exchange rate inheritence in PO->PI
2023-10-17 09:45:33 +05:30
HarryPaulo
8a72f4f58a fix: billed_qty to show a sum of all invoiced qty from the purchase order item. 2023-10-16 18:12:10 -03:00
mergify[bot]
27a1e3bf83 feat: validate negative stock for inventory dimension (backport #37373) (#37383)
* feat: validate negative stock for inventory dimension (#37373)

* feat: validate negative stock for inventory dimension

* test: test case for validate negative stock for inv dimension

(cherry picked from commit 1480acabb0)

# Conflicts:
#	erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.py
#	erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
#	erpnext/stock/stock_ledger.py

* chore: fix conflicts

* chore: fix conflicts

* chore: fix conflicts

* chore: fix linter issue

* chore: fix linter issue

* chore: fix linter issue

* chore: fix linter issue

* chore: fix linter issue

---------

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-10-16 19:15:18 +05:30
Ankush Menat
6e3e4c8ade Merge pull request #37532 from frappe/cust_role
fix: keep customer/supplier website role by default
2023-10-16 17:29:54 +05:30
Ankush Menat
d2096cfdb7 fix: keep customer/supplier website role by default 2023-10-16 16:55:09 +05:30
s-aga-r
f59066c185 Merge pull request #37528 from s-aga-r/FIX-4360
perf: index `dn_detail` in `Delivery Note Item`
2023-10-16 16:42:32 +05:30
s-aga-r
5b4528e614 perf: index dn_detail in Delivery Note Item 2023-10-16 16:26:03 +05:30
ruthra kumar
08315522bb refactor: checkbox to toggle exchange rate inheritence in PO->PI 2023-10-16 16:25:19 +05:30
Ankush Menat
2790ae0744 fix: Update frappe.link_search usage
refer https://github.com/frappe/frappe/pull/22745
2023-10-16 15:43:14 +05:30
s-aga-r
08aec7f6d7 Merge pull request #37517 from s-aga-r/FIX-4388-1
fix(test): purchase return test case
2023-10-16 01:12:15 +05:30
s-aga-r
240b161e81 fix: purchase return test case 2023-10-16 01:08:42 +05:30
s-aga-r
0f6d67d8d4 Merge pull request #37513 from s-aga-r/FIX-4388
fix: GL Entries not getting created for PR Return
2023-10-16 00:33:21 +05:30
s-aga-r
253d4782c6 test: add test case for PR return with zero rate 2023-10-15 23:34:58 +05:30
Deepesh Garg
bd2d04e222 Merge pull request #37312 from blaggacao/feat/add-delivery-roles
fix(stock): add delivery user and manager role
2023-10-15 20:28:42 +05:30
Deepesh Garg
10a9a7c52a Merge pull request #36780 from rtdany10/rounded-row-wise-tax
feat: item(row) wise tax amount rounding
2023-10-15 20:01:34 +05:30
s-aga-r
795020dddc Merge pull request #37414 from s-aga-r/FIX-4347
fix: consider received qty while creating SO -> MR
2023-10-15 19:11:14 +05:30
Deepesh Garg
15df4924e8 Merge pull request #36797 from rtdany10/uae-item-tax
fix(regional): item wise tax calc issue
2023-10-15 18:17:40 +05:30
Deepesh Garg
621da178e1 Merge branch 'develop' of https://github.com/frappe/erpnext into rounded-row-wise-tax 2023-10-15 18:10:27 +05:30
s-aga-r
46add06a29 fix: GL Entries not getting created for PR Return 2023-10-15 15:46:29 +05:30
ruthra kumar
dd099be690 Merge pull request #37478 from ruthra-kumar/tds_from_journals
refactor: back calculate total amt for TDS
2023-10-15 10:51:42 +05:30
ruthra kumar
dfd40ca7b3 Merge pull request #37319 from ruthra-kumar/test_fixtures_for_sales_purchase_invoice
test: use fixtures for sales and purchase invoice
2023-10-15 10:16:22 +05:30
ruthra kumar
fbabf4ac2e refactor(test): make sure TDS Payable is available for testing 2023-10-15 08:57:38 +05:30
ruthra kumar
0207d6e7c9 refactor(test): make use of @change_settings in PI test cases 2023-10-15 08:57:38 +05:30
ruthra kumar
a2e064d214 refactor(test): use test fixture in purchase invoice 2023-10-15 08:57:38 +05:30
ruthra kumar
3bdf4f628c refactor(test): use test fixture in subscription 2023-10-15 08:57:38 +05:30
ruthra kumar
de9baef84a refactor(test): use @change_settings to fix failing test cases 2023-10-15 08:57:38 +05:30
ruthra kumar
8ebe5733ac refactor(test): fix broken test cases in Sales Invoice 2023-10-15 08:57:38 +05:30
ruthra kumar
58065f31b1 refactor(test): use @change_settings in sales invoice 2023-10-15 08:57:38 +05:30
ruthra kumar
fc50b174eb refactor(test): unset accounts frozen date 2023-10-15 08:57:38 +05:30
ruthra kumar
c322e5f381 test: use fixtures for sales and purchase invoice 2023-10-15 08:57:38 +05:30
s-aga-r
b2cee396ac fix: consider received qty while creating SO -> MR 2023-10-14 20:43:32 +05:30
s-aga-r
afef9dc8df Merge pull request #37182 from s-aga-r/MOVE-PAYMENTS-GATEWAYS
refactor!: move payment gateways to the payments app
2023-10-14 16:48:11 +05:30
ruthra kumar
f4a294c5ce Merge pull request #37495 from ruthra-kumar/keyerror_on_comparison_report
fix: keyerror on gl and pl comparision report
2023-10-14 12:15:19 +05:30
ruthra kumar
8ca0e4eacc Merge pull request #37435 from rtdany10/sp-gp-fix
fix(gp): wrong `allocated_amount` when grouped by Sales Person
2023-10-14 12:12:14 +05:30
ruthra kumar
ad00df0af6 fix: keyerror on gl and pl comparision report 2023-10-13 15:39:54 +05:30
Ankush Menat
5167fb2bae Merge pull request #37475 from iamrishiksahu/fix/#37231-doc-is-not-defined
fix: fixed the doc not defined issue.
2023-10-13 15:30:39 +05:30
ruthra kumar
479fe915af Merge pull request #37484 from ruthra-kumar/ignore_links_on_closing_balance_patch
refactor(patch): ignore links on closing balance patch
2023-10-13 09:18:41 +05:30
ruthra kumar
17ca8756a7 refactor(patch): ignore links on closing balance patch 2023-10-12 20:43:15 +05:30
Anand Baburajan
18e3a8907a fix: don't set finance books if gross_purchase_amount is not set (#37480) 2023-10-12 19:41:11 +05:30
ruthra kumar
2c56ee97c7 refactor: back calculate total amt for TDS 2023-10-12 16:03:26 +05:30
Rishik Sahu
5ebf7c8c29 fixed-#37231-changed-doc-to-d/closes-the-isse 2023-10-12 14:03:49 +05:30
Deepesh Garg
ff7c77e9fd Merge pull request #37418 from barredterra/de-is-return
fix: german tranlations of "Is Return"
2023-10-12 07:49:52 +05:30
ruthra kumar
510f12a1e8 Merge pull request #37436 from ruthra-kumar/validate_for_repost_only_for_critical_fields
refactor: for non-repost fields, don't validate
2023-10-11 20:03:16 +05:30
ruthra kumar
30adfa9844 Merge pull request #37459 from ruthra-kumar/validate_advances
refactor: add validation for Advances in SI/PI
2023-10-11 20:02:36 +05:30
Gursheen Anand
35d92abe73 fix: remove multiple against account values from gle 2023-10-11 15:56:59 +05:30
Gursheen Anand
28445058ef fix: split exchange gain loss account entries 2023-10-11 15:56:13 +05:30
Gursheen Anand
aab5737ff3 fix: make JV account against field a dynamic link 2023-10-11 15:55:02 +05:30
ruthra kumar
0cdd6435a5 refactor: add validation for Advances in SI/PI 2023-10-11 14:42:23 +05:30
rohitwaghchaure
f3238f9105 fix: production plan reserved qty incorrect calculation (#37400) 2023-10-11 14:08:11 +05:30
s-aga-r
847f774c8b Merge pull request #37452 from s-aga-r/FIX-4407
fix(ux): allow MR to Stop until fully received
2023-10-11 13:50:20 +05:30
ruthra kumar
c1782c5015 refactor: for non-repost fields, don't validate 2023-10-11 13:30:21 +05:30
Dany Robert
6a27cbd61d Merge branch 'frappe:develop' into rounded-row-wise-tax 2023-10-11 12:31:13 +05:30
Ankush Menat
cea0d65fbd chore: disable beta release 2023-10-11 12:22:06 +05:30
Ankush Menat
99d3d317fe Merge pull request #37453 from akhilnarang/fix-ci
fix: use mariadb instead of mysql
2023-10-11 11:53:47 +05:30
Akhil Narang
4a6108e912 fix: use mariadb instead of mysql
Drop mysql-client in favour of mariadb-client

Signed-off-by: Akhil Narang <me@akhilnarang.dev>
2023-10-11 11:17:47 +05:30
s-aga-r
0d7a0f393d fix(ux): allow MR to Stop until fully received 2023-10-11 10:51:40 +05:30
Dany Robert
bda82bf1e9 fix(gp): wrong allocated_amount on multi sales person invoice 2023-10-10 10:30:09 +00:00
ruthra kumar
b495e5a5a1 Merge pull request #37393 from ruthra-kumar/import_financial_statements_in_bundle
refactor: import 'financial_statements.js' in erpnext bundle
2023-10-10 11:58:40 +05:30
s-aga-r
78eaf5d035 fix: fetch dependent task subject and project (#37401) 2023-10-10 11:05:24 +05:30
ruthra kumar
db317d67d5 Merge pull request #37204 from GursheenK/pe-allocation-for-term-inv
fix: allocate payment amount for split invoices in PE
2023-10-10 10:11:24 +05:30
ruthra kumar
3d99e5757e Merge pull request #37123 from blaggacao/fix/payment-request-rounding
fix: payment request rounding in multi-currency and on status update
2023-10-10 10:07:25 +05:30
David Arnold
fb7c5f6d91 fix(sales): add sales user to read stock settings for js refresh code path (#37317) 2023-10-10 07:56:54 +05:30
Bernd Oliver Sünderhauf
2d6f1f8598 fix(UX): Un-require description fields on items (#37354)
fix(UX): Un-require description fields on items.
2023-10-10 07:26:37 +05:30
barredterra
38ca164662 fix: german tranlations of "Is Return" 2023-10-09 23:45:58 +02:00
Anand Baburajan
6959c928c6 test: add product_code in create_loan_product (#37416) 2023-10-09 20:58:56 +05:30
RitvikSardana
2c899dd13a fix: customer group and territory not mandatory (#37050)
* fix: customer group and territory not mandatory

* fix: supplier group not required

* test: added test case for customer and supplier without group

* test: Customer without customer group and territory

* chore: remove unwanted changes

* test: Supplier without supplier group

* test: code cleanup

---------

Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
2023-10-09 20:21:25 +05:30
Deepesh Garg
c9dfb909a5 Merge pull request #37310 from deepeshgarg007/lead_details_qb
chore: rewrite query using query builder
2023-10-09 20:07:58 +05:30
Deepesh Garg
8f9dd5407b Merge pull request #37324 from blaggacao/fix/portal-tx-row-total-display
fix(portal): used rounded total in transaction rows, if enabled
2023-10-09 19:37:26 +05:30
Deepesh Garg
6d43f90dc2 Merge branch 'develop' of https://github.com/frappe/erpnext into lead_details_qb 2023-10-09 19:23:16 +05:30
Rucha Mahabal
788df14ae8 Merge pull request #37376 from barredterra/hrms-translations 2023-10-09 13:18:55 +05:30
ruthra kumar
411be583a3 Merge pull request #37395 from ruthra-kumar/exception_on_exporting_errored_rows_in_bank_statement_import
fix: exception on exporting errored rows
2023-10-08 18:20:30 +05:30
ruthra kumar
d3c6000904 fix: exception on exporting errored rows 2023-10-08 13:16:28 +05:30
ruthra kumar
40e7c43ce3 refactor: import financial_statement in erpnext bundle 2023-10-07 21:03:31 +05:30
ruthra kumar
7d11fe1633 Merge pull request #37289 from GursheenK/ar-ageing-summary
fix: ageing summary in SOA AR
2023-10-07 15:09:21 +05:30
mergify[bot]
10c666bf69 fix: incorrect status of the returned purchase receipt (backport #37300) (#37380)
fix: incorrect status of the returned purchase receipt (#37300)

(cherry picked from commit 63f45739e0)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-10-06 14:43:13 +05:30
barredterra
4b8dc8a35c refactor: migrate translations from HRMS 2023-10-05 16:58:26 +02:00
barredterra
4b4efbc7a6 refactor: migrate translations to HRMS 2023-10-05 16:55:29 +02:00
mergify[bot]
d2aa4d5d6b fix: validation message for valuation rate (backport #37301) (#37351)
fix: validation message for valuation rate (#37301)

(cherry picked from commit 643bb0511c)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-10-05 18:13:23 +05:30
ruthra kumar
27bb0b1130 Merge pull request #37370 from ruthra-kumar/fetch_company_address_for_lead_based_quotation
fix: fetch company details for Lead based quotation
2023-10-05 13:50:03 +05:30
ruthra kumar
f388864fd5 fix: fetch company details for Lead based quotation 2023-10-05 13:13:11 +05:30
ruthra kumar
c006c14aaa Merge pull request #37359 from ruthra-kumar/change_request_response_strucutre_on_exchangerate
refactor: add `access_key` field to facilitate use of exchangerate.host provider
2023-10-05 09:18:56 +05:30
ruthra kumar
9396fb77f4 Merge pull request #37294 from ruthra-kumar/restrict_payment_as_ref_in_je_from_ui
refactor: block Payment Entry as ref in Journals from UI
2023-10-05 08:53:35 +05:30
ruthra kumar
c8e3dc6c4c chore: refactor test case for exchangerate.host provider 2023-10-05 08:43:08 +05:30
ruthra kumar
81591a34c2 refactor: introduce access_key field 2023-10-05 08:43:08 +05:30
ruthra kumar
aad77b133b Merge pull request #37362 from anandbaburajan/asset_cap_wip_1
test: fixing test_capitalization_with_wip_composite_asset
2023-10-05 08:37:31 +05:30
anandbaburajan
9468513d7c test: fixing test_capitalization_with_wip_composite_asset 2023-10-04 22:11:15 +05:30
Jignesh (GreyCube Technologies)
9f33cc5cf3 fix(Employee): enable no_copy for relieving_date (#37344)
Co-authored-by: Rucha Mahabal <ruchamahabal2@gmail.com>
2023-10-04 13:10:27 +05:30
mergify[bot]
f4f40cc776 feat: composite WIP asset (copy #37352) (#37353)
* feat: wip composite asset

(cherry picked from commit 4907e7acd4)

# Conflicts:
#	erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json
#	erpnext/assets/doctype/asset/asset.json
#	erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json

* chore: resolving conflicts

---------

Co-authored-by: anandbaburajan <anandbaburajan@gmail.com>
2023-10-04 10:29:18 +05:30
barredterra
115f024260 fix(translations): suggestions from review 2023-10-03 23:06:48 +02:00
mergify[bot]
9be554a147 chore: fix linter issue (backport #37349) (#37350)
chore: fix linter issue (#37349)

(cherry picked from commit e975a10a75)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-10-03 22:11:10 +05:30
mergify[bot]
7729c1a413 fix: do not consider submitted Work Orders in the Production Plan Res… (backport #37343) (#37347)
fix: do not consider submitted Work Orders in the Production Plan Res… (#37343)

fix: do not consider submitted Work Orders in the Production Plan Reserve qty
(cherry picked from commit c3aeb2dec5)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-10-03 22:05:01 +05:30
mergify[bot]
8d99f9a12a fix: currency symbol in the Supplier Quotation Comparison report (backport #37337) (#37342)
fix: currency symbol in the Supplier Quotation Comparison report (#37337)

fix: currency in the Supplier Quotation Comparison report
(cherry picked from commit 82e8606b3c)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-10-03 20:32:34 +05:30
ruthra kumar
ab378196bd Merge pull request #37304 from GursheenK/party-totals-payable-report
fix: only float row values for total in AP summary
2023-10-03 19:45:03 +05:30
ruthra kumar
67440c38ae refactor: use isinstance over type 2023-10-03 17:38:43 +05:30
Gursheen Anand
952e8cf60c fix: asset capitalization tests 2023-10-03 15:55:34 +05:30
Gursheen Anand
fcfdb9b566 fix: purchase receipt tests 2023-10-03 15:19:33 +05:30
Anand Baburajan
fed94845ce feat: asset salvage_value_percentage (#37302)
* feat: asset salvage_value_percentage

* chore: add missing parameter in get_item_details

* chore: change asset depr table colors
2023-10-03 12:21:17 +05:30
Anand Baburajan
087f378a4f refactor: rename loan type to loan product in lending (#37325)
refactor: rename loan type to loan product
2023-10-03 00:15:30 +05:30
David Arnold
fa8483fe8c fix(portal): used rounded total in transaction rows, if enabled 2023-10-02 17:46:39 +02:00
Deepesh Garg
fb51cae88b chore: fix shopping cart tests 2023-10-02 16:16:31 +05:30
Deepesh Garg
3c1f93215a Merge pull request #37297 from frappe/mergify/bp/develop/pr-37293
fix: Description field for the 'Ignore Available Stock' (backport #37293)
2023-10-02 10:56:33 +05:30
Deepesh Garg
964cd75f6e Merge pull request #37235 from niyazrazak/patch-13
fix: set route options to cost center
2023-10-02 10:54:02 +05:30
Deepesh Garg
559466e1ef Merge pull request #37229 from FHenry/dev_remove_regional_france
refactor!: Remove Regionalisation of France as now there is an App ERPNext France to manage it
2023-10-02 10:51:25 +05:30
s-aga-r
e7f4b7b190 fix: ignore user permissions for Source Warehouse (#37313) 2023-10-01 21:25:01 +05:30
David Arnold
d3f94a03fc fix(stock): add delivery user and manager role 2023-10-01 15:13:54 +02:00
Deepesh Garg
25718f5cc7 chore: rewrite query using query builder 2023-10-01 13:27:44 +05:30
Gursheen Anand
1dab195560 fix: add only float row values for total 2023-09-29 18:20:02 +05:30
marination
ff1dc72d74 fix: Set right party name in bank transaction
- If party name and docname are different, set the docname in Bank Transaction
2023-09-29 15:19:09 +05:30
s-aga-r
361e555118 fix: Not unique table/alias: 'tabTask' (#37285) 2023-09-29 15:05:02 +05:30
rohitwaghchaure
36364c235e fix: Description field for the 'Ignore Available Stock' (#37293)
(cherry picked from commit 7f1483ad70)
2023-09-29 09:06:47 +00:00
Gursheen Anand
644e25e587 test: process soa for gl and ar 2023-09-29 14:35:43 +05:30
Gursheen Anand
67f878ff8c refactor: separate function for statement dict 2023-09-29 14:34:43 +05:30
ruthra kumar
d391e81505 refactor: block Payment Entry as ref in JE from UI 2023-09-29 13:40:59 +05:30
Gursheen Anand
d9eb44e62d fix: ageing summary in AR 2023-09-29 11:12:19 +05:30
ruthra kumar
f160e49483 Merge pull request #37268 from GursheenK/ar-summary-party-filter
fix: AP AR filters from Party link
2023-09-28 11:54:34 +05:30
ruthra kumar
2c7d6aec89 test: multi select party filter in AR report 2023-09-28 11:17:38 +05:30
mergify[bot]
f375c8cc7f fix: incorrect qty for material request in Production Plan (backport #37270) (#37275)
fix: incorrect qty for material request in Production Plan (#37270)

(cherry picked from commit 8fe4a4d3aa)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-09-27 23:35:53 +05:30
Marica
d6e4f80187 fix: Set serial_and_batch_bundle in right field for Asset Repair Stock Entry (#37273)
fix: Set `serial_and_batch_bundle` in same field for Asset Repair SE
- `serial_and_batch_bundle` was earlier set in `serial_no` field
2023-09-27 23:34:57 +05:30
barredterra
b3486b43c4 fix: german translations of Accounts Settings 2023-09-27 18:51:09 +02:00
s-aga-r
296b233659 chore: patch to delete Payment Gateways 2023-09-27 15:27:29 +05:30
Gursheen Anand
59e8abfd57 fix: party format in test 2023-09-27 13:57:49 +05:30
Gursheen Anand
4b28154f5e fix: process soa filter for multiselect 2023-09-27 13:04:13 +05:30
Gursheen Anand
f7cb68a45f fix: summary report filters 2023-09-27 13:03:37 +05:30
Gursheen Anand
e7239e02d4 fix: query for multiselect filter 2023-09-27 13:02:52 +05:30
Gursheen Anand
9d15124a6a fix: set route filter values for AR 2023-09-27 13:01:48 +05:30
Gursheen Anand
888ed36eed fix: set route filter values for AP 2023-09-27 13:01:18 +05:30
Ankush Menat
2dc95e5d59 fix: trial balance report freezes when adding filters (#37264)
fix: Only add onclick if correct data is returned

workaround for https://github.com/frappe/datatable/issues/177
2023-09-27 12:34:40 +05:30
vr-greycube
4ada5a488e fix: Use default Cost Center of the Company for additional discount (#37234)
fix: Set cost center as default company cost center 

When Discount Accounting in enabled in Selling Settings, use Company default Cost Center while making GL entries for additional_discount_account
2023-09-27 10:38:32 +05:30
Deepesh Garg
8c5fcb8257 fix: PCV posting issues (#37029)
* fix: PCV posting issues

* fix: process closing entries separately in a background job

* test: Update tests

* chore: fix broken ci
2023-09-27 10:22:09 +05:30
ruthra kumar
a223935f14 Merge pull request #37248 from GursheenK/ar-summary-party-filter
fix: AP & AR summary filters to match AR
2023-09-27 09:41:01 +05:30
Ankush Menat
4555543920 Merge pull request #37249 from akhilnarang/drop-redundant-check
Drop redundant check
2023-09-26 21:54:36 +05:30
HENRY Florian
8051c2d3cb refactor: In Quotation Item, discount_and_margin section should have same collapsible_depends_on as other similar DocType (Sales Order Item,Sales Invoice Item,...) (#37252) 2023-09-26 18:59:27 +05:30
mergify[bot]
2cca37ad7d fix: reserved qty for production plan (backport #37251) (#37253)
fix: reserved qty for production plan (#37251)

(cherry picked from commit 0a0d5b3e66)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-09-26 18:29:54 +05:30
mergify[bot]
d558ba29fa fix: serial number decimal issue (backport #37242) (#37250)
fix: serial number decimal issue (#37242)

(cherry picked from commit 78ab2013e5)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-09-26 17:55:16 +05:30
ruthra kumar
796cc0915a Merge pull request #37194 from GursheenK/editable-purchase-invoice
feat: editable purchase invoice
2023-09-26 16:46:11 +05:30
Gursheen Anand
76a5d94f37 fix: set new AP summary filters 2023-09-26 15:11:54 +05:30
s-aga-r
b1770b3f86 refactor: remove test test_default_bank_account 2023-09-26 15:10:20 +05:30
Gursheen Anand
7d96044d8e fix: change filters for AR summary 2023-09-26 15:10:16 +05:30
Gursheen Anand
832d7e7d7b fix: set AR filters after rename 2023-09-26 15:08:40 +05:30
ruthra kumar
ed7f67b1a8 refactor: remove references in repost doctypes upon parent doc delet 2023-09-26 14:35:31 +05:30
Deepesh Garg
656c758263 chore: Add missing comma 2023-09-26 14:20:41 +05:30
Akhil Narang
dd911aa521 chore(stock_ledger): drop redundant check
Commit c2d7461d3c dropped a usage of
`last_valuation_rate` around this code block. After that, it was always checked
although the value would be None as it was being explicitly set above.

Signed-off-by: Akhil Narang <me@akhilnarang.dev>
2023-09-26 14:07:01 +05:30
s-aga-r
73fc974950 fix: incorrect Parent Task getting set for 2nd to nth child Task (#37230) 2023-09-26 10:54:23 +05:30
Abraham Kalungi
0f6b530032 feat: Added ledger for Botswana VAT (#37212)
feat: Added ledger for Botswana VAT (#37212)
2023-09-26 08:57:50 +05:30
NIYAZ RAZAK
5e4b73918d fix: set route to cost center
cost center mapping is not correct
2023-09-25 22:15:08 +03:00
Gursheen Anand
f705bf2efe fix: remove multiple accounts from against in capitalization 2023-09-25 20:10:01 +05:30
Gursheen Anand
6e1565c32c fix: set against type in asset 2023-09-25 20:08:42 +05:30
Gursheen Anand
4ea43ebc5d fix: set against type in stock controller 2023-09-25 20:01:13 +05:30
Gursheen Anand
f292a0cc4c fix: set against type in utils 2023-09-25 19:58:12 +05:30
Gursheen Anand
4c5a83d6cf fix: set against type in controllers 2023-09-25 19:55:40 +05:30
Gursheen Anand
82774f89b1 fix: set against type in deferred revenue 2023-09-25 19:50:47 +05:30
Gursheen Anand
19b220f39c fix: set against type in inv gl dict 2023-09-25 19:49:17 +05:30
Gursheen Anand
725a7f90e9 fix: use dynamic link for against field 2023-09-25 19:45:19 +05:30
Deepesh Garg
a444906093 Merge pull request #37191 from FHenry/dev_fr_translation
fix: missing french translation on Lead and Prospect
2023-09-25 18:24:16 +05:30
Florian HENRY
7657b721bc Merge branch 'develop' of https://github.com/frappe/erpnext into dev_remove_regional_france 2023-09-25 10:27:22 +02:00
Anand Baburajan
ee178ff2ce chore: add disabled field for bank account (#37226) 2023-09-25 12:12:11 +05:30
s-aga-r
38aebf65e2 refactor!: remove stripe_integration.py 2023-09-25 11:08:24 +05:30
Deepesh Garg
c7969b428d Merge pull request #37116 from blaggacao/fix/payment-url
fix: payment url display as link
2023-09-24 21:50:53 +05:30
Deepesh Garg
12e16aa95f Merge pull request #37190 from FHenry/dev_feat_adress_contact_postion
feat: Customer and Supplier - Primary Address and Contact on the same column as new address and contact
2023-09-24 21:39:05 +05:30
Raffael Meyer
7c4ebe2733 fix(Material Request): consider project for item details (#37215)
fix(Material Request): project in item details
2023-09-24 21:10:53 +05:30
Deepesh Garg
b8ff9e8166 Merge pull request #37214 from barredterra/german-purchase-receipt
fix!: german translation of Purchase Receipt
2023-09-24 20:20:11 +05:30
Deepesh Garg
08566204dc Merge pull request #37219 from frappe/mergify/bp/develop/pr-37167
fix: set customer currency in pos_invoice if exists (#37167)
2023-09-24 20:18:27 +05:30
milanpethani
62ea097b14 fix: set customer currency in pos_invoice if exists
if currency exists in the profile and customer currency doesn't exists still it will update currency to None, so update customer currency only if exists

(cherry picked from commit 041d52e828)
2023-09-24 12:23:58 +00:00
Deepesh Garg
9dbb9e7515 Merge pull request #37211 from deepeshgarg007/trial_balance_net_values
feat: Toggle net values in Trial Balance report
2023-09-24 17:45:11 +05:30
Deepesh Garg
b578317f03 Merge pull request #37213 from GursheenK/process-soa-gl-filters
fix: filter gl entries in process soa
2023-09-24 17:44:21 +05:30
barredterra
7f98100040 fix: german translation of Purchase Receipt 2023-09-23 20:54:13 +02:00
Gursheen Anand
61c6ebbb95 fix: validation for si 2023-09-23 20:30:50 +05:30
Gursheen Anand
8ef0d88708 fix: call validate before setting repost flag 2023-09-23 20:29:38 +05:30
Gursheen Anand
1856050ef9 fix: do not run bg job for single doc 2023-09-23 19:30:42 +05:30
Gursheen Anand
a856091ff4 refactor: remove repeated validation for voucher 2023-09-23 19:18:06 +05:30
Gursheen Anand
7ebf083683 refactor: use repost accounting legder 2023-09-23 19:13:33 +05:30
Gursheen Anand
ba7212c98b refactor: remove unused method 2023-09-23 19:11:46 +05:30
Gursheen Anand
5346c67b02 fix: apply gl report filters 2023-09-23 17:50:45 +05:30
Gursheen Anand
545f2ccdf1 chore: remove unused variable 2023-09-23 14:59:12 +05:30
Gursheen Anand
b3aa201eb5 fix: split inv allocated amt on server side 2023-09-23 14:57:53 +05:30
Deepesh Garg
06a45897de feat: Toggle net values in Trial Balance report 2023-09-23 14:34:11 +05:30
Florian HENRY
f15603017c refactor: missing translation 2023-09-22 16:56:12 +02:00
Florian HENRY
b2d520647f refactor: missing translation 2023-09-22 16:55:58 +02:00
Florian HENRY
d1c69aa229 Merge branch 'develop' of https://github.com/frappe/erpnext into dev_fr_translation 2023-09-22 16:53:13 +02:00
Florian HENRY
dc1294ec54 refactor: missing translation 2023-09-22 16:53:06 +02:00
s-aga-r
9554f6ea3c refactor!: remove GoCardless Templates 2023-09-22 19:04:51 +05:30
s-aga-r
543a76863f refactor!: remove GoCardless Mandate 2023-09-22 19:04:51 +05:30
s-aga-r
eb419e8e59 refactor!: remove Mpesa Settings 2023-09-22 19:04:49 +05:30
s-aga-r
eded7871f3 refactor!: remove GoCardless Settings 2023-09-22 18:59:28 +05:30
ruthra kumar
c5e4e01747 Merge pull request #37202 from ruthra-kumar/ignore_ple_on_pcv_cancellation
refactor: ignore PLE's on PCV cancellation
2023-09-22 13:28:40 +05:30
Gursheen Anand
ac28a5b372 fix: allocate amt for payment term invoices 2023-09-22 12:41:17 +05:30
ruthra kumar
301092dad1 refactor: ignore PLE's on PCV cancellation 2023-09-22 12:40:51 +05:30
ruthra kumar
5353f190ee Merge pull request #37200 from ruthra-kumar/ui_element_to_filter_on_payment_entry_exc_gain_loss
refactor: button in Payment Entry to filter associated Journals
2023-09-22 11:54:02 +05:30
ruthra kumar
150728deaa refactor: button on PE to filter associated Journals 2023-09-22 11:30:47 +05:30
Gursheen Anand
c66c438575 test: reposted acc entries for pi 2023-09-22 11:22:25 +05:30
ruthra kumar
d4773872aa Merge pull request #37069 from marination/advance-unlink-impact
fix: Recalculate `advance_paid` in SO/PO after unlinking from advance entry
2023-09-22 08:35:27 +05:30
s-aga-r
c679d54852 Merge pull request #37185 from s-aga-r/REFACTOR-SRE
refactor(minor): Stock Reservation Entry
2023-09-21 21:46:09 +05:30
s-aga-r
b6437e387f fix: Item Dashboard 2023-09-21 18:23:20 +05:30
s-aga-r
8b6430c886 refactor(minor): Stock Reservation Entry 2023-09-21 18:23:18 +05:30
Gursheen Anand
c88f6d1fa7 fix: linting issues 2023-09-21 17:41:59 +05:30
Gursheen Anand
23470bf52d feat: allow repost for pi 2023-09-21 17:30:53 +05:30
Gursheen Anand
e77814fbc0 feat: add repost btn in invoice 2023-09-21 17:29:14 +05:30
Gursheen Anand
68effd93bd refactor: move reposting logic to common controller 2023-09-21 17:28:07 +05:30
Gursheen Anand
e922ec60eb feat: allow on submit fields 2023-09-21 17:26:20 +05:30
Florian HENRY
c5667a6cc1 fix: missing french translation on Lead and Prospect 2023-09-21 12:53:30 +02:00
Florian HENRY
fb844920af feat: Customer and Supplier - Primary Address and Contact on the same column as new adress and contact 2023-09-21 12:28:09 +02:00
ruthra kumar
f31a527505 Merge pull request #37120 from vorasmit/fix-dup-advance
fix: handle multiple references with same name
2023-09-21 14:20:04 +05:30
s-aga-r
acda72d616 feat: Stock Ledger Variance report (#37165)
* feat: `Stock Ledger Variance` report

* refactor: `get_data()`
2023-09-21 12:51:28 +05:30
s-aga-r
f0859ecc60 fix: labels for Stock Ledger Invariant Check report (#37150)
refactor: `Stock Ledger Invariant Check` report
2023-09-20 18:36:24 +05:30
rohitwaghchaure
dd4769ecf1 feat: allow to edit Stock Quantity in the Sales and Purchase Transactions (#36600)
feat: allow to edit Stock Quantity in the Sales and Purchase transactions
2023-09-20 18:09:03 +05:30
rohitwaghchaure
e6199dc802 fix: allow to select parent warehouse in the website item (#37047) 2023-09-20 17:27:35 +05:30
Ankush Menat
bf01f3227f chore: remove import script
Unused
2023-09-20 16:22:49 +05:30
Smit Vora
3e282bfbce chore: add regional support for getting payment entries (#37119)
chore: add regional support for get payment entries
2023-09-19 20:47:21 +05:30
RJPvT
c35dea7177 chore: translations dutch (#37042)
update: translations dutch
2023-09-19 20:26:42 +05:30
Raffael Meyer
57d5c8a837 fix: update help links (#37098) 2023-09-19 19:59:16 +05:30
Raffael Meyer
84a9000db2 fix: german translation of Sales and Purchase Invoice (#37122)
* fix: german translation of Purchase Invoice

* fix: german translation of Sales Invoice
2023-09-19 19:57:43 +05:30
NandhiniDevi
6be567dbf6 fix: add item group filter added in item-wise purchase register (#36937)
fix: add item group filter added in item-wise purchase register (#36937)
2023-09-19 19:25:46 +05:30
NIYAZ RAZAK
141ba255e0 feat: validate duplicate date in holiday list (#37022)
* feat: validate duplicate date in table

* chore: cleanup

* chore: linting issues

* chore: linting issues

---------

Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
2023-09-19 18:50:47 +05:30
Deepesh Garg
e19e04b050 feat: Add a process document for Subscription (#37126)
* feat: Add a process document for Subscription

* chore: Remove print statements

* feat: Input for generating invoice before currenc invoice date

* chore: patch for backward compatability

* refactor: Unit tests for subscription

* chore: set status on insert
2023-09-19 18:39:44 +05:30
RitvikSardana
03f0abf6de fix: after applying coupon code, field in_words not updated (#37133)
* fix: after applying coupon code, field in_words not updated

* fix: changed the order of the function set_total_in_words
2023-09-19 13:08:17 +05:30
s-aga-r
9c9d0ecb73 feat: provision to create RIV from Stock Ledger Invariant Check report (#37115)
* feat: provision to create RIV from `Stock Ledger Invariant Check` report

* fix: `linter`
2023-09-19 13:00:44 +05:30
David Arnold
c99c486716 Merge branch 'develop' into fix/payment-url 2023-09-18 20:33:30 +02:00
David Arnold
7bc8ff21d4 fix: payment url display as link 2023-09-18 20:33:21 +02:00
David Arnold
6e1ad4c5bd fix: payment request rounding in multi-currency and on status update 2023-09-18 20:29:27 +02:00
mergify[bot]
195de14810 fix: don't set from warehouse for purchase material request (backport #37132) (#37134)
fix: don't set from warehouse for purchase material request (#37132)

(cherry picked from commit e62b783f34)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-09-18 22:31:22 +05:30
Ankush Menat
dd24a1b36e chore: remove obsolete welcome page (#37143) 2023-09-18 16:43:13 +00:00
Ankush Menat
d0eac47483 fix: stock summary page 2023-09-18 21:49:52 +05:30
ruthra kumar
2a575d9dc2 Merge pull request #37131 from ruthra-kumar/more_generic_customer_filter_in_ar_report
refactor: more generic filters in Accounts Receivable report
2023-09-18 16:59:25 +05:30
ruthra kumar
08d91ab831 refactor(test): AR output filtered on USD customers 2023-09-18 16:28:06 +05:30
ruthra kumar
083c82c206 chore: remove stale code 2023-09-18 16:28:06 +05:30
ruthra kumar
ac650d2e7a refactor: replace 'customer' filter with 'party_type' and 'party' 2023-09-18 16:28:02 +05:30
ruthra kumar
5acbf3f262 Merge pull request #37127 from ruthra-kumar/better_date_filters_in_get_outstanding_invoices
refactor: better date filters in `Get Outstanding Invoices` dialog
2023-09-18 13:20:32 +05:30
RitvikSardana
3764c01028 fix: accounting dimensions required while creating POS Profile (#36668)
* fix: accounting dimensions required while creating POS Porfile

* fix: accounting dimensions fetched while closing POS

* chore: code cleanup

* fix: ad set in final consolidated invoice

* chore: code cleanup

* chore: code cleanup

* fix: accounting dimension validation from backend

* chore: code cleanup

* chore: code cleanup

* chore: code cleanup

* fix: added edge case when acc dimension is created after creating pos profile

* test: added test case for Pos Closing For Required Accounting Dimension In Pos Profile

* test: fixed the test case

* test: fixing test case

* fix: changed test case location

* test: fixing test case

* test: fixing test case

---------

Co-authored-by: Ritvik Sardana <ritviksardana@Ritviks-MacBook-Air.local>
2023-09-18 13:07:14 +05:30
ruthra kumar
9004721859 refactor: better date filters in Get Outstanding Invoices dialog 2023-09-18 12:46:08 +05:30
Smit Vora
a9c85e4179 fix: handle multiple references with same name 2023-09-17 16:14:21 +05:30
Deepesh Garg
5e21e7cd1d fix: Don't allow merging accounts with different currency (#37074)
* fix: Don't allow merging accounts with different currency

* test: Update conflicting values

* test: Update conflicting values
2023-09-17 15:54:06 +05:30
ruthra kumar
21f94918a3 Merge pull request #36893 from marination/bank-reco-code-cleanup
refactor: Bank Reconciliation Tool APIs
2023-09-17 08:07:30 +05:30
Gursheen Kaur Anand
099468e3cf fix: company wise deferred accounting fields in item (#37023)
* fix: move deferred accounts in accounting section

* fix: move deferred check boxes in item accounting

* fix: show company wise acc in filters

* fix: fetch item deferred account from child table

* fix: tests using deferred acc

* refactor: use cached value

* fix: cached value call

* feat: patch to migrate deferred acc

* fix: hardcode education module doctypes in patch

* chore: resolve conflicts

---------

Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
2023-09-16 21:25:31 +05:30
HENRY Florian
34bb64e41a fix(ux): move get_route_options_for_new_doc to refresh (#37096)
fix: move `get_route_options_for_new_doc` to `refresh`
2023-09-16 15:59:09 +05:30
s-aga-r
fc016680c9 fix: ignore user permissions for Source Warehouse in MR (#37102)
fix: ignore user permissions for Source Warehouse in MR
2023-09-15 21:45:43 +05:30
Ankush Menat
7045810bae refactor: move clear data button to user action 2023-09-15 20:47:28 +05:30
ruthra kumar
a093dff039 Merge pull request #37108 from ruthra-kumar/better_asset_validation_on_returns
fix: asset validation misfire on debit notes
2023-09-15 20:01:34 +05:30
ruthra kumar
097b9892dc fix: asset validation misfire on debit notes 2023-09-15 17:54:20 +05:30
ruthra kumar
855a0d3bec Merge pull request #37105 from ruthra-kumar/move_unreconcile_btn_to_group
refactor: move `unreconcile` button into a drop down
2023-09-15 16:57:32 +05:30
Ankush Menat
61778d5058 ci: restart bench before final migrate (#37104)
Also remove few patches which are now handled automatically
2023-09-15 16:51:56 +05:30
ruthra kumar
94ce43b0d5 refactor: add unreconcile btn to purchase invoice 2023-09-15 16:21:50 +05:30
ruthra kumar
f2b0ac6868 refactor: move unreconcile btn inside a drop down 2023-09-15 16:19:27 +05:30
ruthra kumar
2be025311a test: bank reconciliation API methods 2023-09-15 14:44:07 +05:30
mergify[bot]
08aaf22b2a fix: precision issue and column name (backport #37073) (#37089)
fix: precision issue and column name (#37073)

(cherry picked from commit f2395a9297)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-09-15 12:09:48 +05:30
Ankush Menat
2f7b3bbfad ci: fix patch test (#37079)
* ci: fix patch test

* ci: use v13 DB as starting point for patch

* ci: remove payments from patch test

* ci: print bench logs after tests

* ci: restart bench on each update

* ci: patch test v13db > v14 > develop

and when v15 is out v13db > v14 > v15 > develop
2023-09-14 14:46:45 +05:30
ruthra kumar
85ebaa3aed Merge pull request #36879 from ruthra-kumar/unreconcile_feature
feat: Unreconcile Payments
2023-09-14 12:17:46 +05:30
Ankush Menat
4940edc386 Merge pull request #37087 from frappe/remove_social_media_post_module
refactor!: remove social media post module
2023-09-14 12:16:57 +05:30
Ankush Menat
2dbdc402bb refactor!: remove social media post module 2023-09-14 12:11:23 +05:30
Gursheen Kaur Anand
5976d0d13f fix: prorate factor in subscription invoice total (#36880)
fix: prorate factor calculation
2023-09-14 12:05:05 +05:30
Ankush Menat
0fadde037a Merge pull request #37086 from frappe/remove_twitter
refactor!: remove twitter integration
2023-09-14 11:49:03 +05:30
Ankush Menat
2135b0132d refactor!: remove twitter integration 2023-09-14 11:25:49 +05:30
s-aga-r
41fb40e26f Merge pull request #37015 from s-aga-r/REMOVE-WOOCOMMERCE
refactor!: remove `woocommerce` integration
2023-09-14 10:41:18 +05:30
Florian HENRY
0932f1c9d4 Merge branch 'develop' of https://github.com/frappe/erpnext into dev_remove_regional_france 2023-09-13 17:19:14 +02:00
Florian HENRY
a3ebef7a29 fix: fix CI 2023-09-13 17:18:13 +02:00
Abdo
6f4f5be990 chore: Translate Voucher Type in General Ledger Report (#36874)
chore: Translate Voucher Type in  General Ledger Report
2023-09-13 20:38:45 +05:30
ViralKansodiya
96363dbb07 fix: Remove redundant code (#37001)
fix: Remove redundant code
2023-09-13 20:34:20 +05:30
Deepesh Garg
7711744020 Merge pull request #37032 from HarryPaulo/auth-rule-based-on-item-group
feat: created "based on" Item Group to specify a different percentage…
2023-09-13 20:27:34 +05:30
Deepesh Garg
1db05c80e1 Merge pull request #37031 from HarryPaulo/fix-auth-rule-based-on
fix: "Based on" field always has the value "Not applicable"
2023-09-13 20:26:28 +05:30
Deepesh Garg
6664bc98a0 Merge pull request #37041 from vorasmit/fix-advances
fix: multiple fixes for booking advances in seperate account
2023-09-13 20:24:57 +05:30
marination
8a4954d713 test: Impact on SO of advance PE submit and unlinking/replacement by SI 2023-09-13 19:09:03 +05:30
s-aga-r
78905e35f2 Merge pull request #36973 from s-aga-r/FIX-967
fix: accepted warehouse and rejected warehouse can't be same
2023-09-13 16:30:21 +05:30
s-aga-r
d2f3286115 fix: ignore user permissions for From Warehouse in PR 2023-09-13 16:26:29 +05:30
Deepesh Garg
7bfd487b25 Merge pull request #36364 from SvbZ3r0/develop
fix: Naming Series preview when no previous transaction present
2023-09-13 15:17:51 +05:30
Deepesh Garg
1d014122c1 Merge pull request #36980 from anandbaburajan/SI_DI_internal_and_external_links
fix: + btn not appearing for delivery note connection
2023-09-13 15:16:11 +05:30
marination
426350eee6 fix: Update advance_paid in SO/PO after unlinking from advance entry 2023-09-13 14:24:56 +05:30
s-aga-r
b83d880d66 Merge pull request #37046 from s-aga-r/FIX-1081
fix: Purchase Receipt Provisional Accounting GL Entries
2023-09-13 14:21:59 +05:30
rohitwaghchaure
0e83190c19 fix: incorrect stock ledger entries in DN (#36944) 2023-09-13 13:34:40 +05:30
s-aga-r
1c78a5a9aa test: Purchase Receipt Provisional Accounting GL Entries 2023-09-13 12:28:18 +05:30
s-aga-r
74272a2e28 fix: patch to delete Woocommerce Settings DocType 2023-09-13 12:02:27 +05:30
s-aga-r
328ba4b656 refactor!: remove woocommerce 2023-09-13 11:50:04 +05:30
s-aga-r
6bab0eeaa1 fix: Purchase Receipt Provisional Accounting GL Entries 2023-09-13 11:24:10 +05:30
rohitwaghchaure
e6c302a397 fix: test case (#37063) 2023-09-13 11:22:43 +05:30
Deepesh Garg
88f7e57edf Merge pull request #37055 from deepeshgarg007/dimension_filters_gl
fix: Apply dimension filter, irrespective of dimension columns
2023-09-13 10:05:58 +05:30
ruthra kumar
5898a6f48e Merge pull request #37057 from ruthra-kumar/packed_item_picking_expired_price
fix: Packed item incorrectly picks expired price on Sales Order
2023-09-13 08:18:47 +05:30
ruthra kumar
055156d28a test: expired item price should not be picked 2023-09-13 07:48:59 +05:30
ruthra kumar
47ffa4983c fix: packed item using expired price 2023-09-13 06:03:12 +05:30
Deepesh Garg
1f02fb3bd9 Merge pull request #37017 from anandbaburajan/company_tabs
chore: add tabs for company doctype
2023-09-12 22:41:23 +05:30
Deepesh Garg
769db0b3bc fix: Apply dimension filter, irrespective of dimesion columns 2023-09-12 21:14:08 +05:30
HarryPaulo
da54ab5b3d fix: linters 2023-09-12 09:43:11 -03:00
rohitwaghchaure
9a23ba53c5 fix: button to make BOMs (#37049)
fix: custom button to make BOMs
2023-09-12 17:19:12 +05:30
mergify[bot]
93af6f6a1b feat: provision to set required by from Production Plan (backport #37039) (#37040)
feat: provision to set required by from Production Plan (#37039)

* feat: provision to set the Required By date from production plan

* test: added test case for validate schedule_date

(cherry picked from commit d278b11603)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-09-12 16:29:02 +05:30
Smit Vora
c09807845f fix: ensure correct preview and set latest transaction date 2023-09-12 13:25:51 +05:30
s-aga-r
3c6e527dd1 Merge pull request #37025 from s-aga-r/FIX-883
fix: `Parent Task` link with `Project Task`
2023-09-12 06:59:45 +05:30
HarryPaulo
623239d3f7 feat: created "based on" Item Group to specify a different percentage for each item group 2023-09-11 18:14:38 -03:00
HarryPaulo
fae640c56f fix: "Based on" field always has the value "Not applicable" 2023-09-11 17:57:31 -03:00
marination
2ad62be2c7 chore: Convert db.sql to QB queries 2023-09-12 00:00:06 +05:30
s-aga-r
0d5c8f03bd test: add test case for Task having common subject 2023-09-11 22:36:58 +05:30
marination
b9750f324b fix: Remove get_matching_vouchers_for_bank_reconciliation
- There should only be one hook to add queries to `get_linked_payments`
- `get_matching_queries` will be the only hook just like before
2023-09-11 21:51:10 +05:30
s-aga-r
5cae2e79bd fix: reload task before save 2023-09-11 20:36:27 +05:30
s-aga-r
d3295c43e3 fix: set Template Task ref in Project Task 2023-09-11 20:36:11 +05:30
s-aga-r
b4bcd9ba3f feat: new field in Task to hold ref of Template Task 2023-09-11 20:35:12 +05:30
Smit Vora
43061f4416 fix: correct set_query filters 2023-09-11 19:16:25 +05:30
s-aga-r
d739ab6ee3 fix(ux): docstatus filter for Reference Name in QI (#37024) 2023-09-11 18:52:31 +05:30
anandbaburajan
dda4c5ec59 chore: add tabs for company doctype 2023-09-10 22:06:28 +05:30
s-aga-r
ce549ce9b2 fix(ux): filters for SCR Item Serial and Batch Bundle (#37013) 2023-09-10 17:10:04 +05:30
Bernd Oliver Sünderhauf
846ae32d92 feat: Add half-yearly asset maintenance periodicity. (#37006) 2023-09-10 17:00:01 +05:30
Deepesh Garg
b34c03d306 Merge pull request #36843 from GursheenK/process-soa-pdf-name
fix: show customer name for naming series in process soa
2023-09-10 12:20:53 +05:30
Deepesh Garg
c849a012d5 Merge pull request #36974 from GursheenK/tax_withholding_category_base_total_for_si
fix: tax category field in tax withholding details report
2023-09-10 11:40:36 +05:30
Ankush Menat
f39a9145e9 Merge pull request #37008 from barredterra/migrate-translations
chore(translations): prisoner exchange with frappe
2023-09-10 10:27:49 +05:30
barredterra
3e0a795028 chore: migrate translations to frappe 2023-09-10 00:21:41 +02:00
barredterra
2a77b50191 chore: migrate translations from frappe 2023-09-10 00:17:02 +02:00
ruthra kumar
d398775715 test: multi currency invoice unreconciliation
exchange gain/loss associated with the unreconcile invoice should be
cancelled as well
2023-09-09 07:30:58 +05:30
ruthra kumar
5c09fdf941 refactor(test): more modularization 2023-09-09 06:54:50 +05:30
ruthra kumar
1d93d66c30 refactor: cancel gain/loss JE on multi currency transactions 2023-09-08 21:29:13 +05:30
Florian HENRY
bb8153173a Merge branch 'develop' of https://github.com/frappe/erpnext into dev_remove_regional_france 2023-09-07 13:14:45 +02:00
Anand Baburajan
034322c53f fix: correct asset daily depr schedule calculation [dev] (#36993)
fix: correct asset daily depr schedule calculation
2023-09-06 22:20:38 +05:30
Florian HENRY
f447177f8d refactor: Remove Regionalisation From France as now there is an App ERPNext France to manage it 2023-09-06 17:41:27 +02:00
Florian HENRY
662e9547da refactor: Remove Regionalisation From France as now there is an App ERPNext France to manage it 2023-09-06 17:40:19 +02:00
Deepesh Garg
c2f8f1d028 Merge pull request #36983 from deepeshgarg007/employee_utils
chore: Update employee for tests
2023-09-06 16:31:29 +05:30
Ankush Menat
0f065fe280 Merge pull request #36984 from resilient-tech/remove-unused-var
chore: remove unused variable `job`
2023-09-06 14:49:17 +05:30
Sagar Vora
1b853857aa chore: remove unused variable job 2023-09-06 14:14:22 +05:30
Deepesh Garg
ae01d70b33 chore: Update employee for tests 2023-09-06 13:19:00 +05:30
Anand Baburajan
0077659e93 chore: asset finance books validation (#36979) 2023-09-06 12:44:07 +05:30
Devin Slauenwhite
8ce6b8179e fix: use primary key for link lookup (#36919) 2023-09-06 11:44:45 +05:30
anandbaburajan
e1a94a9ba1 fix: move SI and DI connected links to internal_and_external_links 2023-09-05 21:38:06 +05:30
Gursheen Anand
175870ce8d test: tax withholding details report 2023-09-05 18:51:41 +05:30
Gursheen Anand
8eea4eb56e fix: remove tax category from common fields 2023-09-05 18:50:53 +05:30
Anand Baburajan
174f95d699 fix: ask for asset related accounts only when needed (#36960)
* fix: only ask for asset_received_but_not_billed account when needed

* chore: remove unnecessary if condition

* fix: only ask for expenses_included_in_asset_valuation account when needed
2023-09-05 17:45:23 +05:30
s-aga-r
f809e12747 fix: ignore mandatory fields while saving WO (#36954) 2023-09-05 16:27:17 +05:30
ruthra kumar
ccd2e2b086 Merge pull request #36963 from ruthra-kumar/index_error_on_receivable_report
fix: index error on Receivable report based on payment terms
2023-09-05 16:12:38 +05:30
ruthra kumar
b9c556c4a9 fix: index error on Receivable report based on payment terms
cr note's don't have payment terms. So, skip for them.
2023-09-05 15:07:07 +05:30
RitvikSardana
d2f03c8a65 fix: payment recon not showing payment entry when party_type is Student (#36920)
* fix: payment recon not showing payment entry when party_type is Student

* chore: code cleanup

* fix: payment recon based on account_type which is fetched from Party Type master
2023-09-05 12:00:54 +05:30
ruthra kumar
5dbcf7d2b9 refactor: only cancel specific gain/loss je 2023-09-05 09:52:36 +05:30
ruthra kumar
6fd1c1bca2 refactor: display allocated amount in account currency with symbol 2023-09-05 09:34:01 +05:30
ruthra kumar
9a1588f1cc fix: typo in doctype name and qb 2023-09-05 08:34:26 +05:30
ruthra kumar
67980188a7 test: more granular unreconciliation 2023-09-05 08:34:26 +05:30
ruthra kumar
9b6eac23b6 refactor: unlink individual vouchers from payments 2023-09-05 08:34:26 +05:30
ruthra kumar
b4dc2bdf28 chore: type info 2023-09-05 08:34:26 +05:30
ruthra kumar
0130aea2aa refactor: convert raw sql to query_builder 2023-09-05 08:34:26 +05:30
ruthra kumar
de910ab152 refactor: single fetch and unlinking logic for JE and PE 2023-09-05 08:34:26 +05:30
ruthra kumar
285963acdb feat: unreconcile support for journal entry 2023-09-05 08:34:26 +05:30
ruthra kumar
cce96669f0 refactor: modularisation and group by voucher_no 2023-09-05 08:34:26 +05:30
ruthra kumar
0ccb6d8242 chore: rename and add trigger in journal entry 2023-09-05 08:34:26 +05:30
ruthra kumar
69683776a5 chore: code cleanup 2023-09-05 08:34:26 +05:30
ruthra kumar
1981f3837a chore: fetch logic for payment entry 2023-09-05 08:34:26 +05:30
ruthra kumar
25fe752185 chore: move functions to a separate file in utils 2023-09-05 08:34:26 +05:30
ruthra kumar
5981c7e0ad chore: move dialog building function to utils.js file 2023-09-05 08:34:26 +05:30
ruthra kumar
58dc0e52e1 refactor: add UI elements 2023-09-05 08:34:26 +05:30
ruthra kumar
6bbe47c671 chore: delete unreoncile doc upon parent doc deletion 2023-09-05 08:34:26 +05:30
ruthra kumar
489a545bbb chore: track changes 2023-09-05 08:34:26 +05:30
ruthra kumar
42df0d3d67 refactor: remove references using framework 2023-09-05 08:34:26 +05:30
ruthra kumar
fbdfb8151c chore: delete references upon parent deletion 2023-09-05 08:34:26 +05:30
ruthra kumar
41eb2c9f5a feat: filter on voucher no 2023-09-05 08:34:26 +05:30
ruthra kumar
fc6be5bfb9 feat: UI for unreconcile 2023-09-05 08:34:26 +05:30
ruthra kumar
0faffaa8db test: basic unreconcile function 2023-09-05 08:34:26 +05:30
ruthra kumar
5114a9580d refactor: adding 'Get Allocations' button 2023-09-05 08:34:26 +05:30
ruthra kumar
e48a90efe6 chore: working state on barebones functions 2023-09-05 08:34:26 +05:30
ruthra kumar
dc71623295 feat: introduce unreconcile doctype 2023-09-05 08:34:26 +05:30
ruthra kumar
13ca474a46 Merge pull request #36950 from ruthra-kumar/use_reference_posting_date_on_je
refactor: gain/loss je should use same posting date as payment
2023-09-05 08:26:58 +05:30
ruthra kumar
f7865da4d2 refactor: gain/loss should use same posting date as payment 2023-09-04 21:40:40 +05:30
rohitwaghchaure
6a7bdeffdf fix: auto refresh serial and batch bundle field (#36943) 2023-09-04 14:11:42 +05:30
ruthra kumar
04bc353e7f Merge pull request #36940 from ruthra-kumar/invalid_gain_loss_in_expense_claim
fix: invalid gain/loss JE created on base currency Expense Claim
2023-09-04 13:56:01 +05:30
ruthra kumar
75d95acb23 fix: invalid gain/loss JE created on base currency Expense Claim 2023-09-04 13:05:57 +05:30
s-aga-r
cd8ddae7c5 refactor: remove Recalculate Rate from SCR Item (#36929) 2023-09-03 18:54:44 +05:30
s-aga-r
22cf1556cd feat: Service Item and Finished Good Map (#36647)
* feat: new DocType `Service Item and Finished Good Map`

* fix(ux): filters for Service Item and Finished Good

* fix: validations for Service Item and Finished Good

* feat: set FG Item on Service Item selection in PO

* refactor: one-to-many mapping between service item and finished goods

* feat: auto set Service Item for finished good in PO created from PP

* feat: auto set Service Item on Finished Good selection in PO

* test: add test case for service item and finished goods map

* feat: `BOM` field in `Finished Good Detail`

* feat: new DocType `Subcontracting BOM`

* fix: filters and validations for Subcontracting BOM

* feat: auto select Service Item in PO created from PP

* test: add test case for PO service item auto pick

* feat: pick BOM from Subcontracting BOM in SCO

* feat: auto pick `Service Item` on FG select

* refactor: remove DocType `Service Item and Finished Goods Map` and `Finished Good Detail`

* feat: fetch FG for Service Item

* chore: `linter`

* refactor: update `Auto Name` expression for Subcontracting BOM
2023-09-03 11:59:28 +00:00
HENRY Florian
24e1144de5 fix: when create doc from item dashboard default uom (buying or selling) is not correctly selected (#36892)
fix: when create doc from item dashboard defaut uom is not correctly selected
2023-09-03 16:37:52 +05:30
ruthra kumar
27e0dd9fdc Merge pull request #36911 from ruthra-kumar/deduplicate_gain_loss_journal_creation
fix: deduplicate gain/loss JE creation for journals as payment
2023-09-03 10:11:43 +05:30
ruthra kumar
0366928db5 test: cost center inheritance from payment 2023-09-03 09:21:26 +05:30
ruthra kumar
d6a3b9a5c7 refactor: use payment's CC for gain/loss if company default is unset 2023-09-03 09:21:23 +05:30
Anand Baburajan
4f0bb45a8b chore: patch to correct asset values if je has workflow [dev] (#36914)
chore: patch to correct asset values if je has workflow
2023-09-02 18:31:32 +05:30
Deepesh Garg
2e7548462d Merge pull request #36895 from blaggacao/fix-coa-dill-down-on-startup
fix(startup): coa drill down
2023-09-02 17:12:18 +05:30
Deepesh Garg
f3282b1bb3 Merge pull request #36908 from barredterra/unreconcile-bank-transaction
fix: only show "Unreconcile" if reconciled
2023-09-02 17:11:56 +05:30
Deepesh Garg
30aba9414c Merge pull request #36900 from GursheenK/pcv-request-timeout
fix: reduce threshold for background job in PCV
2023-09-02 17:11:08 +05:30
ruthra kumar
79fa562004 test: extend test to cancellation 2023-09-02 14:43:25 +05:30
ruthra kumar
cb6da6ec59 test: deduplicate gain/loss JE on reconciling journals against inv 2023-09-02 13:29:33 +05:30
ruthra kumar
79c6f0165b fix: deduplicate gain/loss JE creation for journals as payment 2023-09-02 13:29:31 +05:30
RitvikSardana
e599f75a51 fix: account payable currency and value (#36859)
* fix: account payable currency and value

* fix: added party_type and party in accounts payable report

* chore: code cleanup

* fix: customer group test case failure

* fix: added test case of the issue

* fix: filter toggle for party_type

* fix: filter toggle for party_type

* chore: fix typo

---------

Co-authored-by: ruthra kumar <ruthra@erpnext.com>
2023-09-02 13:08:08 +05:30
s-aga-r
2d8363a983 feat: Serial and Batch reservation (#35946)
* feat: add `Has Serial No` and `Has Batch No` fields in SRE

* chore: set `Has Serial No` and `Has Batch No` while creating SRE

* feat: add field `Reserved Serial and Batch` in SRE

* fix(ux): hide `Amend` button on cancelled SRE

* fix: add validation for SRE amended doc

* fix(ux): hide `Reserved Serial and Batch` Table for non-serial/batch item

* fix(ux): set `Display Depends On` for `Has Serial No` and `Has Batch No` in SRE

* fix(ux): make `serial_no` and `batch_no` fields read-only based on `has_serial_no` and `has_batch_no`

* chore: remove table `Serial and Batch Entry` fieldlabel

* fix(ux): set warehouse for new row

* fix(ux): make qty field read-only for serial item

* fix(ux): set rows qty to `1` before making the field read-only

* chore: add filters for serial no

* chore: add filters for batch no

* chore: don't show Serial NO if already selected

* chore: hide rate related fields

* feat: add field `Reservation Based On` in SRE

* chore: make `Reserved Qty` field editable in SCR

* chore: add method to get total reserved qty against a voucher

* fix: add validation for `Reserved Qty`

* fix: update SRE status and Voucher's Reserved Qty

* chore: enable `Track Changes` in SRE

* fix: add validation to prevent delivered SRE to get updated

* fix(ux): make fields `Reserved Qty` and `Reservation Based On` read-only for delivered SRE

* fix: consider voucher's delivered qty while calculating max reserved qty

* fix: add UOM validation for SRE Reserved Qty

* fix: SRE warehouse mismatch error in DN

* fix: auto cancel SRE on update if item is fully delivered for the SO

* fix: skip SRE creation for group warehouse

* feat: add `Set Warehouse` field in SO stock reservation dialog

* fix(ux): hide `Add Row` button in SO stock reservation dialog

* fix: group warehouse validation in SO

* fix(ux): don't show Batch No if already selected

* feat: add field `Auto Reserve Serial and Batch Nos` in `Stock Settings`

* refactor: SRE reserved qty validation

* feat: auto serial and batch reservation

* chore: add section for `Serial and Batch Reservation` in `Stock Settings`

* fix: make SRE sb_entries warehouse mandatory

* fix(ux): unreserved qty calculation

* fix: add validation for `Reserved Qty` against `Batch`

* refactor: combine `get_available_qty_to_reserve()` and `get_available_qty_to_reserve_batch()`

* fix: validate disabled batch

* fix: add validation to validate serial nos availability

* fix: update row qty if `Partial Reservation` is enabled

* fix: ignore reserved serial nos while getting available serial nos

* fix: add validation to prevent repeat batches

* fix(ux): add validation for duplicate Serial No

* fix: don't allow to update SRE with delivered stock

* fix: ignore reserved serial and batch if reservation based on is not Serial and Batch

* fix(ux): stock un-reservation confirmation before `Update Items`

* chore: return list instead os set

* feat: add field `Delivered Qty` in `Serial and Batch Entry`

* feat: option to get SO reserved stock in Delivery Note

* fix: ignore reserved batches while getting available batches

* chore: `conflicts`

* fix: incorrect available qty

* fix: 'str' object has no attribute 'nodes_'

* fix: `linter`

* fix(ux): hide `Get Items From > Stock Reservation` if Stock Reservation is disabled

* fix(ux): add `depends_on` for `Auto Reserve Serial and Batch Nos`

* fix(ux): hide Stock Reservation field description in submitted SO

* fix(ux): confirm before unreserve stock

* feat: option to create DN for reserved stock from SO

* fix: update delivered qty in SRE sb_entries

* fix: Delivery Note (Reserved Stock) based on Delivery Date

* fix(ux): SO `Update Items` confirmation on `Update` button click

* feat: add dialog box to select SRE to unreserve

* fix: `ZeroDivisionError` while saving the DN (Reserved Stock)

* fix: don't allow to create Pick List if stock is reserved against SO

* fix(ux): hide Create > Pick List button for SO with reserved stock

* refactor: map reserved stock by default in DN

* refactor: code cleanup and comments

* fix: don't allow Stock Reservation against SO having Pick List

* refactor: `create_stock_reservation_entries()`

* feat: add fields to hold Pick List ref in SRE

* feat: add field `Stock Reserved Qty` in Pick List Item

* feat: provision to reserve stock from Pick List against Sales Order

* fix: don't allow to update SRE if created against a Pick List

* fix(ux): confirm before unreserve stock in Pick List

* fix: don't allow to update Pick List having reserved stock

* fix: circular dependency while cancelling the DN created from Pick List with Reserved Stock

* chore: update `Max Reserve Qty` err msg to be more descriptive

* refactor: rename field `Reserve Stock on Sales Order Submission`

* fix: msg on partial reservation if disabled in stock settings

* chore: add field description for `Enable Stock Reservation`

* fix(test): `test_stock_reservation_against_sales_order`

* fix(test): `test_stock_reservation_against_sales_order`

* test: add test cases for serial and batch reservation

* fix: batch stock levels qty

* refactor: method `get_sre_reserved_qty_for_item_and_warehouse`

* feat: show `Reserved Stock` in item master stock levels

* feat: Reserved Stock Report

* fix(ux): SO stock reservation dialogs width

* refactor: get previous values from `_doc_before_save` instead of db

* fix(ux): make `Reservation Based On` read-only if created against Pick List

* feat: option to open `Reserved Stock` report from Sales Order

* fix(ux): Sales Order - Reserve and Unreserve dialog box

* fix: decrease SRE Delivered Qty on DN cancel

* fix(ux): hide `Unreserve` button once reserved stock is delivered

* chore: `linter`

* fix(test): `test_reserved_stock_report`

* test: add test case for DN cancellation

* chore: rename field `Auto Reserve Stock on Sales Order Submission`

* fix: `Insufficient Stock` error msg
2023-09-02 11:02:24 +05:30
barredterra
91e574609f fix: only show "Unreconcile" if reconciled 2023-09-01 19:23:27 +02:00
ruthra kumar
0e517227ee Merge pull request #36899 from ruthra-kumar/use_own_exchange_rate_on_references
fix: difference amount calculation logic in Payment Entry UI
2023-09-01 17:37:23 +05:30
Deepesh Garg
1e72a43a8e Merge pull request #36889 from GursheenK/discount-accounting-multi-currency-gle
fix: fetch currency in discount accounting SI
2023-09-01 15:11:21 +05:30
Deepesh Garg
39b598e0ec Merge pull request #36898 from rtdany10/company-ambiguous
fix: `company` is ambiguous
2023-09-01 14:28:34 +05:30
Gursheen Anand
b6e6f2ef8d fix: reduce threshold for bg job fn 2023-09-01 12:36:40 +05:30
ruthra kumar
a7e0709ae8 fix: difference amount in UI should not be calculated 2023-09-01 12:18:55 +05:30
Dany Robert
3e1065a561 fix: company is ambiguous 2023-09-01 04:58:59 +00:00
marination
480903e3f4 refactor: verbosity in get_linked_payments result
- Easier to read field names like x["rank"] than x[0]
- It's hard to keep up with what the indices mean, thus reducing readability
2023-08-31 21:05:40 +05:30
marination
a1ae4262c3 refactor: auto_reconcile_vouchers
- Use `reconcile_vouchers` instead of re-implementing
- More clear result message. Consider partially reconciled transactions
2023-08-31 20:34:37 +05:30
ruthra kumar
0d26f67be5 Merge pull request #36888 from ruthra-kumar/gain_loss_refactor_issue_01_patch_failed
fix: calcuate received/paid amount on exchange rate change in Payment Entry
2023-08-31 18:37:39 +05:30
ruthra kumar
64d835374b fix: calcuate received/paid amount on rate change in PE 2023-08-31 17:58:26 +05:30
Gursheen Anand
112cfe6dfa fix: fetch discount amount for gle in base currency 2023-08-31 17:08:51 +05:30
Deepesh Garg
2537f5674e Merge pull request #36886 from GursheenK/sales-register-tax-accounts
fix: tax accounts in sales register
2023-08-31 15:53:39 +05:30
Gursheen Anand
d73daafe77 fix: tax accounts in sales register 2023-08-31 15:19:46 +05:30
Deepesh Garg
cd74c6c07f Merge pull request #36881 from deepeshgarg007/patch_revert
chore: remove patch
2023-08-30 22:12:46 +05:30
Deepesh Garg
283c0a1c0f chore: remove patch 2023-08-30 19:43:32 +05:30
Suraj Shetty
f032476a75 Merge pull request #36869 from RitvikSardana/develop-ritvik-ignore-perm-tree-doctype 2023-08-30 16:46:28 +05:30
Suraj Shetty
e92d4e9b4a Merge branch 'develop' into develop-ritvik-ignore-perm-tree-doctype 2023-08-30 16:46:00 +05:30
Deepesh Garg
5e38109481 Merge pull request #36872 from deepeshgarg007/sales_purchase_register_query
fix: Sales/Purchase register showing duplicate records
2023-08-29 21:47:01 +05:30
Ankush Menat
e75b72ae2d Merge pull request #36856 from frappe/desk_user
refactor!: Lower all perm to `Desk User`
2023-08-29 20:55:55 +05:30
Deepesh Garg
92e503f75b fix: Sales/Purchase register showing duplicate records 2023-08-29 20:45:57 +05:30
rohitwaghchaure
dea802dc41 fix: added valuation field type (Float/Currency) in the filter (#36866) 2023-08-29 16:53:00 +05:30
Gursheen Anand
060da2c5bc fix: remove report field db set 2023-08-29 16:16:50 +05:30
Ankush Menat
4856e11549 chore: update integrations workspace 2023-08-29 15:51:40 +05:30
Gursheen Anand
a006b66e45 test: auto email for ar report 2023-08-29 14:51:35 +05:30
RitvikSardana
de433d8626 fix: added ignore_user_permissions to parent field of tree doctypes 2023-08-29 13:07:13 +05:30
Corentin Flr
5c4df3e0e3 fix: Setup flake8 to stop turning trailing commas into tuples (#36850) 2023-08-29 10:59:58 +05:30
Deepesh Garg
1c237f455e fix(demo): COA fixes for Mexico country (#36840) 2023-08-29 10:50:12 +05:30
Gursheen Kaur Anand
26e8b8f959 fix: create entries for only PR items present in LCV (#36852)
* fix: check if item code exists in lcv before creating gle

* refactor: use qb to fetch lcv items
2023-08-29 09:03:31 +05:30
Ankush Menat
0d22fe02be refactor!: Lower all perm to Desk User 2023-08-28 22:42:14 +05:30
ViralKansodiya
3a2933db4d fix: error in report when data is not available to load chart in report (#36842) 2023-08-28 18:14:52 +05:30
Gursheen Anand
f07f4ce86f fix: generate pdf only when result exists 2023-08-28 17:14:15 +05:30
s-aga-r
eb5c61be1e Merge pull request #36811 from s-aga-r/SCR-SCRAP-ITEMS
feat: provision to add scrap items in Subcontracting Receipt
2023-08-28 17:11:00 +05:30
s-aga-r
9d330a13ed fix: get Valuation Rate instead of BOM rate 2023-08-28 16:09:05 +05:30
s-aga-r
592c7b5ff1 fix: test cases 2023-08-28 15:32:08 +05:30
ruthra kumar
9895bc3246 Merge pull request #36844 from ruthra-kumar/validation_error_on_payment_entry
fix: allocation error on partial payment against sales order
2023-08-28 15:11:36 +05:30
ruthra kumar
2fdbe82835 test: assert rounded amount is calculated 2023-08-28 14:30:37 +05:30
ruthra kumar
67a0969b78 test: allocation err misfire on Sales Order 2023-08-28 14:21:21 +05:30
ruthra kumar
714b8289c1 fix: fetch rounded total while pulling reference details on SO 2023-08-28 14:01:12 +05:30
Gursheen Anand
5c2a949593 feat: add field for specifying pdf name 2023-08-28 13:11:28 +05:30
Gursheen Anand
0a9187ea42 fix: show letterhead and terms for AR pdf 2023-08-28 13:09:51 +05:30
s-aga-r
91927f2ada chore: woocommerce linter issue (#36837) 2023-08-28 00:21:51 +05:30
Dany Robert
159be1d40f fix: revert ignore_account_closing_balance field 2023-08-27 18:43:42 +00:00
s-aga-r
ffcbcd7397 test: add test case for SCR scrap items 2023-08-28 00:12:19 +05:30
ruthra kumar
25e78fb311 Merge pull request #36830 from ruthra-kumar/increase_test_coverage
test: Exchange Rate Revaluation functions and its impact on ledger
2023-08-27 15:09:25 +05:30
ruthra kumar
d40504b973 test: Exchange Rate Revaluation functions and its impact on ledger 2023-08-27 14:33:34 +05:30
L Mwangi
3f077479f4 fix: On woocommerce test ping issued during a webhook creation
fix: On woocommerce test ping issued during a webhook creation
2023-08-26 19:45:55 +05:30
Abdo
6b75c03f34 chore: translate currency (#36777)
chore: translate currency
2023-08-26 19:37:28 +05:30
mergify[bot]
35f72a17db Allow to make return against sales invoice which has closed sales order. (#36676)
fix: Allow to make return against sales invoice which has closed sales order

fix: Allow to make return against sales invoice which has closed sales order
(cherry picked from commit 0f98cc85e9)

Co-authored-by: Gourav Saini <63018500+gouravsaini021@users.noreply.github.com>
2023-08-26 19:29:33 +05:30
avc
fa2e5d5ab7 fix: create portal user for customer from shopping cart (#36745)
fix: create portal user  for customer from shopping cart
2023-08-26 18:27:42 +05:30
Dany Robert
9bc5952dd5 fix: missing company flag for regional fn (#36791)
* fix: missing company flag for regional fn
2023-08-26 18:14:40 +05:30
mergify[bot]
740fe95ff3 fix: error list index out of range when saving a production plan
fix: error list index out of range when saving a production plan (#36807)
2023-08-26 18:13:16 +05:30
s-aga-r
afd7d59c73 fix: AttributeError while saving subcontracting order 2023-08-26 13:10:47 +05:30
rohitwaghchaure
d4218a88ad chore: fixed bom creator linter issue (#36827) 2023-08-26 12:54:13 +05:30
s-aga-r
27d56461c5 Merge branch 'develop' into SCR-SCRAP-ITEMS 2023-08-26 12:07:58 +05:30
s-aga-r
ed4f498704 feat: allow scrap items when backflush based on is Material Transfer 2023-08-26 11:38:45 +05:30
s-aga-r
08bc33689c fix(ux): make Get Scrap Items button hidden for submitted and cancelled doc 2023-08-26 10:57:49 +05:30
Deepesh Garg
57538bd76a Merge pull request #36218 from GursheenK/view-projects-in-customer-portal
fix: project routes and permissions in portal
2023-08-25 22:01:01 +05:30
Deepesh Garg
5c48074bed Merge branch 'develop' of https://github.com/frappe/erpnext into view-projects-in-customer-portal 2023-08-25 21:05:59 +05:30
Deepesh Garg
a7137514b6 chore: Update patch 2023-08-25 21:05:49 +05:30
HENRY Florian
e462edc628 chore: update fr translation for Naming Series (#36785)
* chore: update fr translation for Naming Series

* chore: update fr translation

* chore: update fr translation

* chore: update fr translation
2023-08-25 20:40:31 +05:30
s-aga-r
c8d7433e30 refactor(minor): subcontracting_receipt.js 2023-08-25 20:23:39 +05:30
s-aga-r
1504ff8b6c fix: ignore scrap items while distribute additional cost 2023-08-25 20:18:30 +05:30
ruthra kumar
447b73fa77 Merge pull request #36821 from ruthra-kumar/increase_test_coverage_for_receivable_payable_report
test: use mixin and increase coverage in receivable report
2023-08-25 18:09:16 +05:30
ruthra kumar
ce81ffd844 test: increase coverage in ar/ap report 2023-08-25 17:28:54 +05:30
s-aga-r
879d31a588 fix: recalculate rate while getting scrap items 2023-08-25 16:13:08 +05:30
ruthra kumar
bb7bed4c1a refactor(test): make use of mixin in ar/ap report tests 2023-08-25 14:46:10 +05:30
Deepesh Garg
91ca2309da Merge pull request #36802 from GursheenK/tax_withholding_jvs_with_no_partytype
fix: fetch JVs without party value in tax withholding report
2023-08-25 14:43:41 +05:30
ViralKansodiya
388a42ec7e fix: Asset Category filter is not working in asset depreciation and b… (#36806)
fix: Asset Category filter is not working in asset depreciation and balances

Co-authored-by: ubuntu <viralkansodiya167@gmail.com>
2023-08-25 11:44:05 +05:30
s-aga-r
9b47617117 feat: button to get Scrap Items 2023-08-25 10:53:13 +05:30
s-aga-r
7a6db924d5 fix: validate scrap items 2023-08-25 09:56:48 +05:30
s-aga-r
199071b773 fix(ux): make Recalculate Rate field hidden for scrap items 2023-08-25 09:36:12 +05:30
s-aga-r
40a6b5cefe fix: don't recalculate rate for scrap items 2023-08-25 09:35:29 +05:30
s-aga-r
a6b2cf3acd fix: reduce scrap cost from FG total cost 2023-08-25 07:30:55 +05:30
s-aga-r
794edbb334 feat: add Scrap Cost Per Qty field in SCR Item 2023-08-24 22:02:29 +05:30
Deepesh Garg
1449e38b39 Merge pull request #36799 from deepeshgarg007/tds_on_debit_note
fix: Tax withholding reversal on Debit Notes
2023-08-24 19:30:54 +05:30
Deepesh Garg
abc5fdd47b Merge pull request #36804 from deepeshgarg007/demo_coa
fix(demo): Default accounts for demo company
2023-08-24 19:30:17 +05:30
s-aga-r
f78b6d0081 refactor: code cleanup 2023-08-24 18:56:16 +05:30
Deepesh Garg
8ed8698fdf Merge pull request #36596 from Nihantra-Patel/pos_receipt_mail
fix: POS Invoice Email Receipt Mail
2023-08-24 18:33:49 +05:30
Deepesh Garg
0120588f5f chore: Handle edge cases 2023-08-24 18:32:16 +05:30
Deepesh Garg
8bf87ebfdf Merge pull request #36805 from deepeshgarg007/comments
chore: Linting Issues
2023-08-24 18:02:38 +05:30
Deepesh Garg
299e32befd chore: Linting Issues 2023-08-24 18:02:06 +05:30
Deepesh Garg
5f75aea6fa fix(demo): Default accounts for demo company 2023-08-24 17:58:51 +05:30
Deepesh Garg
6349b67df4 fix(demo): Default accounts for demo company 2023-08-24 17:54:14 +05:30
rohitwaghchaure
3c15feadf6 feat: Multi-level BOM Creator (#36494)
* feat: Multi-level BOM Creator

* fix: renamed BOM Configurator to BOM Creator

* fix: added Cost in the tree

* fix: finished good cost

* fix: valuation rate in tree ui

* chore: conflicts and removed unnecessary files

* test: test cases for BOM Creator

* fix: added shortcut for the BOM Creator

* fix: added validation for Final Product
2023-08-24 17:24:44 +05:30
s-aga-r
a33b75f2cd feat: allow manually entry for scrap items in SCR 2023-08-24 16:37:57 +05:30
Gursheen Anand
7c1417e199 chore: fix linting issues 2023-08-24 12:55:54 +05:30
Gursheen Anand
8f1e00906f fix: fetch JVs with no party selected in filters 2023-08-24 12:55:00 +05:30
Ankush Menat
ab6e600b9e fix: demo data setup w/o territory (#36798)
This can fail because it's translated.
2023-08-24 12:23:33 +05:30
s-aga-r
d1e877b6f0 refactor: Subcontracting Receipt Item form view 2023-08-24 12:16:12 +05:30
s-aga-r
4e7cccbdf0 feat: Is Scrap Item field in Subcontracting Receipt Item 2023-08-24 11:53:09 +05:30
Deepesh Garg
6d9cebfee9 fix: Tax withholding reversal on Debit Notes 2023-08-24 11:49:03 +05:30
Dany Robert
89ddf3272e fix(regional): item wise tax calc issue 2023-08-24 05:56:56 +00:00
s-aga-r
49be1190d9 Merge pull request #36786 from s-aga-r/SCR-QI
feat: `Quality Inspection` for Subcontracting Receipt
2023-08-24 11:06:51 +05:30
s-aga-r
8010a157b1 fix: use flt for qty and rate fields 2023-08-24 11:06:19 +05:30
Dany Robert
9e1b2c9f57 fix: item wise split up rounding 2023-08-24 05:02:14 +00:00
s-aga-r
f31eb74234 test: add test case for SCR Quality Inspection 2023-08-24 10:22:21 +05:30
s-aga-r
723563c167 fix: SCR return status (#36793) 2023-08-24 10:13:47 +05:30
Raffael Meyer
54ffe41b54 feat(MR): Project and Cost Center in Connections (#36794) 2023-08-24 10:12:18 +05:30
ruthra kumar
758ea7bfe1 Merge pull request #35330 from ruthra-kumar/cr_note_posts_gl_for_itself
refactor: cr/dr note should be standalone even when created from another invoice
2023-08-23 20:38:14 +05:30
Deepesh Garg
2ed73c17c3 Merge pull request #36720 from git-avc/lost_reason_opportunity
fix: lost opportunity reason dialog don't appears
2023-08-23 19:42:22 +05:30
Anand Baburajan
bb3bd02f53 chore: styling improvements for asset depr sch table (#36792)
* chore: improve asset depr sch table

* chore: fix text color
2023-08-23 19:22:25 +05:30
Anand Baburajan
56b26852f3 fix: use current asset depr schedule to make temp schedule (#36783)
fix: use current depr schedule to make temp schedule
2023-08-23 18:01:59 +05:30
ruthra kumar
60eee564bf refactor: Payment btn criteria for Cr/Dr notes 2023-08-23 17:58:15 +05:30
s-aga-r
c9ae9df902 fix(ux): increase Quality Inspection dialog width 2023-08-23 13:58:43 +05:30
s-aga-r
3fab6610cb feat: setup Quality Inspection for Subcontracting Receipt
- SCR[docstatus=0, is_return=0] Create > Quality Inspection(s)
- Filters for Quality Inspection field in Subcontracting Receipt Items table
2023-08-23 13:58:40 +05:30
s-aga-r
3fdcd33b92 feat: Quality Inspection in Subcontracting Receipt 2023-08-23 12:15:35 +05:30
s-aga-r
5b62bbe073 Merge pull request #36752 from s-aga-r/FR-35157
feat: `Update Items` for Subcontract Purchase Order
2023-08-23 11:13:28 +05:30
Dany Robert
0ebcc2cf2c fix: round item_wise_tax_detail in taxes 2023-08-23 04:51:09 +00:00
Dany Robert
dfb5b88abb chore: linters 2023-08-23 04:01:00 +00:00
Dany Robert
c20258d2a3 fix: tax calc changes in js 2023-08-23 03:59:08 +00:00
ruthra kumar
bf6bf79ae3 Merge pull request #36650 from ruthra-kumar/refactor_payment_reconcliation_ui
perf: improve responsiveness of payment reconciliation tool
2023-08-23 09:12:36 +05:30
Deepesh Garg
53926b0620 Merge pull request #36758 from RitvikSardana/develop-ritvik-ap-currency
fix: Accounts Payable Currency bug
2023-08-22 22:27:54 +05:30
mergify[bot]
a77e9d36cc fix: Procurement Tracker report not showing material request items (backport #36768) (#36774)
fix: Procurement Tracker report not showing material request items (#36768)

(cherry picked from commit 6a9935c00e)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-08-22 22:09:45 +05:30
Dany Robert
3ead28906c feat: item(row) wise tax amount rounding 2023-08-22 14:41:07 +00:00
s-aga-r
305d39f6a1 test: add test case for Subcontract PO update items 2023-08-22 18:24:30 +05:30
mergify[bot]
611c2bf775 fix: not able to make stock entry (backport #36759) (#36767)
fix: not able to make stock entry (#36759)

(cherry picked from commit 873ee384a1)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-08-22 17:36:56 +05:30
s-aga-r
b9b1717e96 fix: re-validate PO while updating items 2023-08-22 16:53:54 +05:30
s-aga-r
9588bb7443 fix: validate FG Item and Qty 2023-08-22 16:29:14 +05:30
Anand Baburajan
87e2309e8e fix: avoid duplicate asset activity entries on asset capitalization (#36756) 2023-08-22 15:30:04 +05:30
RitvikSardana
9349bc77c5 fix: Accounts Payable Currency bug 2023-08-22 14:12:42 +05:30
Raffael Meyer
9d29ec8eac fix: attachments should be an empty list by default (#36757)
fix: attachments should be an empty list by default
2023-08-22 13:35:12 +05:30
Anand Baburajan
8f04945cef fix: incorrect schedule in asset value adjustment (#36747) 2023-08-22 12:36:09 +05:30
Raffael Meyer
4b75b6f309 feat(RFQ): optionally send document print (#36363) 2023-08-22 12:26:01 +05:30
ruthra kumar
3fd2778ae4 Merge pull request #36748 from ruthra-kumar/clean_up_reconcilition
chore: clean up stale code in reconciliation tool
2023-08-22 06:19:52 +05:30
ruthra kumar
e93b927051 chore: clean up stale code in reconciliation tool 2023-08-22 05:32:56 +05:30
ruthra kumar
3de9fed230 Merge pull request #36742 from ruthra-kumar/ar_summary_incorrect_gl_balance_on_multi_company
fix: incorrect gl balance on AR summary rpt on multi company setup
2023-08-21 22:06:47 +05:30
ruthra kumar
991770ed4a fix: incorrect gl balance on AR summary rpt on multi company setup 2023-08-21 21:32:23 +05:30
ruthra kumar
a4ff76c920 Merge pull request #36727 from ruthra-kumar/fix_broken_advance_field_in_ar_summary_rpt
fix: broken advance field in Accounts Receivable summary rpt
2023-08-21 20:53:03 +05:30
ruthra kumar
d01f0f2e96 refactor: filter for journal entries 2023-08-21 20:50:34 +05:30
ruthra kumar
86bac2cf52 refactor: filter on advance payments 2023-08-21 20:50:34 +05:30
ruthra kumar
52f609e67a refactor: filter on cr/dr notes 2023-08-21 20:50:34 +05:30
ruthra kumar
e48f8139eb refactor: trigger on value change 2023-08-21 20:50:34 +05:30
ruthra kumar
7a381affce refactor: limit output to 50 in reconciliation tool 2023-08-21 20:50:32 +05:30
ruthra kumar
af52f21ece test: add test for receivable summary report 2023-08-21 17:56:50 +05:30
ruthra kumar
06f86ad5e0 Merge pull request #36728 from ruthra-kumar/fetch_gain_loss_in_ar_ap_report
fix: include gain/loss journal in AR/AP reports
2023-08-21 17:22:31 +05:30
Ankush Menat
86cac1e1d2 fix: add missing items labels back (#36737)
[skip ci]
2023-08-21 15:59:52 +05:30
s-aga-r
faf9f13215 feat: allow Update Items for Subcontracted PO not having SCO created 2023-08-21 15:58:11 +05:30
Smit Vora
c47adcfdd9 fix: advance in seperate account 2023-08-21 15:12:11 +05:30
s-aga-r
450949cadd Merge pull request #36709 from s-aga-r/FIX-36695
fix: don't throw if item does not have default BOM
2023-08-21 14:43:03 +05:30
ruthra kumar
0dc5e5c430 refactor: use payment ledger to fetch advance amount 2023-08-21 09:19:38 +05:30
ruthra kumar
896b123fb1 fix: broken advance field in Accounts Receivable summary rpt 2023-08-20 21:17:27 +05:30
ruthra kumar
e3104f1898 fix: include gain/loss journal in AR/AP reports 2023-08-20 20:13:31 +05:30
Deepesh Garg
a7f921a557 Merge pull request #36666 from batonac/batonac-plaid-fixes
fix: Plaid Integration status and categories
2023-08-20 16:02:30 +05:30
Deepesh Garg
ddd929ef9b Merge pull request #36696 from RitvikSardana/develop-ritvik-pos-mode-of-payment
fix: mode of payment fetched from pos profile company in POS
2023-08-20 15:37:15 +05:30
mergify[bot]
87d02511a3 fix: timeout error coming during reposting (backport #36715) (#36717)
fix: timeout error coming during reposting (#36715)

(cherry picked from commit 620b21fec5)

Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
2023-08-19 15:37:33 +05:30
avc
f10a93f6ee fix: lost reason opportunity dialog don't appears
Fix #36719
2023-08-18 17:33:37 +02:00
ruthra kumar
a34cb8a8dc Merge pull request #36710 from ruthra-kumar/fix_broken_consolidated_financial_report
fix: broken consolidated report due to finance book filter
2023-08-18 14:54:03 +05:30
ruthra kumar
96847db0ec fix: broken consolidated report due to finance book filter 2023-08-18 14:04:46 +05:30
Gursheen Kaur Anand
6a7b45f689 Merge branch 'develop' into view-projects-in-customer-portal 2023-08-18 13:32:08 +05:30
s-aga-r
2e22b019a0 fix: throw if BOM No is not set 2023-08-18 13:24:49 +05:30
Gursheen Anand
e8f6c286d1 fix: remove portal menu items in pre-model sync patch 2023-08-18 13:21:37 +05:30
s-aga-r
268c19e745 fix: don't throw if item does not have default BOM 2023-08-18 13:14:53 +05:30
ruthra kumar
8f695123cd refactor: criteria for Credit Note Issued and Debit Note Issued 2023-08-18 10:13:48 +05:30
Deepesh Garg
21e6db2bc7 Merge pull request #36060 from rtdany10/skip_tcs
fix: skip tax witholding category if not account set for company
2023-08-17 20:56:37 +05:30
Ritvik Sardana
1bdd43d0f6 fix: mode of payment fetched from pos profile company in POS 2023-08-17 17:29:01 +05:30
Deepesh Garg
c70abaa43a Merge pull request #36684 from deepeshgarg007/gl_transaction_currency
feat: Transaction currency columns in GL report
2023-08-17 16:06:23 +05:30
rohitwaghchaure
3f6ff8e0b7 perf: enabled indexing for voucher no in SABB (#36688) 2023-08-17 13:48:37 +05:30
Shariq Ansari
5d9dde92fa Merge pull request #36685 from shariquerik/api-fix 2023-08-17 13:09:14 +05:30
Ankush Menat
6bf79f18c8 chore: skip demo banner if another one present 2023-08-17 12:37:29 +05:30
Shariq Ansari
21c1141fdb chore: linter fix 2023-08-17 12:14:13 +05:30
Raffael Meyer
552bbb1d46 fix(RFQ): make "update password" and "submit quotation" buttons the same size (#36667)
fix(RFQ): button styling
2023-08-17 12:04:05 +05:30
Shariq Ansari
7ec6909159 fix: check tax and charges if it is passed 2023-08-17 11:59:47 +05:30
Deepesh Garg
35be3ac5a1 feat: Transaction currency columns in GL report 2023-08-17 11:31:40 +05:30
Deepesh Garg
98adfb4c9a Merge pull request #36492 from RitvikSardana/develop-ritvik-POS-runtime-effect
fix: POS runtime effect
2023-08-17 10:54:48 +05:30
ruthra kumar
3345165206 Merge pull request #36649 from ruthra-kumar/perf_latest_details_only_pulled_for_linked_vouchers
perf: pull latest details only for referenced vouchers
2023-08-17 09:00:29 +05:30
Deepesh Garg
8601e5b3a4 Merge pull request #36677 from deepeshgarg007/ignore_prepared_report
fix(UX): Ignore prepared report
2023-08-16 21:31:50 +05:30
Deepesh Garg
124c0dbd88 fix(UX): Ignore prepared report 2023-08-16 19:10:39 +05:30
Gursheen Anand
d119d2ec32 fix: delete doc without filters 2023-08-16 17:35:07 +05:30
ruthra kumar
f6e4ac2b62 refactor(test): payments to invoice with -ve outstanding 2023-08-16 16:19:53 +05:30
Gursheen Anand
c071523e35 fix: delete portal settings for education doctypes 2023-08-16 12:23:10 +05:30
Ritvik Sardana
0d95fc0f20 fix: test_serial_no_case_1 test case works 2023-08-16 11:41:24 +05:30
Kevin Shenk
43f530b077 fix: Plaid Integration status and categories
"pending" is a boolean not a string, and "category" doesn't exist in some edge cases
2023-08-15 13:34:59 -04:00
ruthra kumar
924911e743 Merge pull request #36663 from ruthra-kumar/readd_permissions_in_journal
fix: re-add permission that was unintentionally removed
2023-08-15 17:06:24 +05:30
ruthra kumar
45662fa646 fix: re-add permission that was unintentionally removed
Remove `Reversal OF ITC` and re-add permissions. Both of them
unintended changes
2023-08-15 16:23:47 +05:30
Anand Baburajan
e0c79d3b53 chore: add validation for depreciation expense account in asset category (#36659) 2023-08-15 10:17:15 +00:00
Deepesh Garg
1e07f6eef9 fix(demo): More exception handling on demo data generation (#36652) 2023-08-15 10:45:36 +05:30
Gughan Ravikumar
cdf100d552 fix: Naming Series preview when no previous transaction present 2023-08-15 09:38:29 +05:30
ruthra kumar
0e2fb1188a refactor(test): ledger entries will be against itself 2023-08-15 09:03:02 +05:30
Babuuu
89e89de961 Fix tax amount in customer portal (#36453)
The net total is the value that is currently being displayed instead of the tax amount.
2023-08-15 08:54:06 +05:30
ruthra kumar
d77b0295fa Merge pull request #36642 from ruthra-kumar/toggle_for_negative_rates
refactor: toggle for negative item rates in Selling Settings
2023-08-15 08:12:10 +05:30
ruthra kumar
a0fc68538f refactor: toggle for negative rates in Selling Settings 2023-08-15 07:34:33 +05:30
ruthra kumar
deb0d71294 perf: pull latest details only for referenced vouchers 2023-08-15 05:26:26 +05:30
Kevin Shenk
7ab55b1bb2 fix: Document Name link validation in Bank Reconciliation Tool (#36495)
fix: format_row broke Document Name link validation

#35540 broke Voucher Matching, leading to an invalid link exception on submission. This is because the format_row() function overwrites the row data instead of just providing a formatter on the DataTable column, and therefore passes through the formatted (linked) column data instead of the Document Name only.

This patch moves the appropriate frappe.form.formatters.Link function to a dedicated format hook on the DataTable columns definition, both fixing the error and retaining the functionality of #35540.
2023-08-14 19:03:01 +05:30
abdosaeed95
670d9e5556 fix: validate loyalty_amount against rounded_total instead of grand_total (#36466) 2023-08-14 18:54:01 +05:30
HarryPaulo
843e77e72d fix: standard formula to calculate the "difference" (#36612) 2023-08-14 18:51:30 +05:30
Deepesh Garg
985ff9781b fix: Tax withholding post LDC limit consumed (#36611)
* fix: Tax withholding post LDC limit consumed

* fix: LDC condition check
2023-08-14 18:19:15 +05:30
Gursheen Kaur Anand
12a6f3b997 feat: add invoice totals in tax withholding report (#36567)
* fix: add invoice totals in tax withholding report

* fix: naming series col in tax withholding report

* fix: tds computation summary cols
2023-08-14 18:15:47 +05:30
mergify[bot]
1ff80fcbee fix: Button Alignment center in hero slider (backport #36607) (#36638)
fix: Button Alignment center in hero slider (#36607)

fix: speling in CSS (Button alignment center is not working on hero slider)#36561
(cherry picked from commit b131f70ed6)

Co-authored-by: ViralKansodiya <141210323+viralkansodiya@users.noreply.github.com>
2023-08-14 16:25:38 +05:30
Ankush Menat
8b57979e9c fix: clear demo data with unknown columns (#36637) 2023-08-14 08:46:48 +00:00
ViralKansodiya
75652799cd feat: Tick on checkbox to include draft timesheets (#36577)
feat: Tick on Check box to include Draft Timesheets
2023-08-14 14:14:49 +05:30
Ankush Menat
e023e33a15 fix(demo): drop parent item group (#36636)
This is translated according to user language, so "All Item Groups" might not
exist on site.

The code already finds root item group without doing anything.

towards https://github.com/frappe/erpnext/issues/36635
2023-08-14 13:46:16 +05:30
Ritvik Sardana
d4cc9daca1 chore: code clean up 2023-08-14 11:52:49 +05:30
Ritvik Sardana
68df3f9729 fix: get_items call improved 2023-08-14 11:44:47 +05:30
Deepesh Garg
fbb5058531 fix: AR/AP report based on payment terms (#36574)
* fix: AR/AP report based on payment terms

* fix: AR/AP report based on payment terms
2023-08-14 08:32:07 +05:30
Deepesh Garg
39ec11200e fix(demo): Item creation with India Compliance app (#36627) 2023-08-13 18:33:09 +05:30
ruthra kumar
b30c1e1abf refactor(test): return invoice will have -ve outstanding 2023-08-13 15:52:45 +05:30
ruthra kumar
00878707ae refactor: remove return_against for cr/dr note filter 2023-08-13 15:52:42 +05:30
ruthra kumar
db76e8a277 refactor: cr notes will post for itself 2023-08-13 15:30:17 +05:30
RitvikSardana
ae2c600223 fix: POS compatible for mobile view (#36534)
* fix: POS compatable for mobile view

* fix: variables for margin and font size, and dark mode compatibility while selecting any item from cart

---------

Co-authored-by: Ritvik Sardana <ritviksardana@Ritviks-MacBook-Air.local>
2023-08-13 13:27:43 +05:30
Naufal Afif
ce25f9e8c9 fix: wrong currency on financial-statement based reports (#36524)
* add missing field options on financial_statement Total field

* format financial statement code
2023-08-13 13:26:56 +05:30
ruthra kumar
3c7702c53c Merge pull request #36309 from ruthra-kumar/fix_incorrect_validation_on_partial_pay_for_so
fix: allocation validation blocks partial payment for SO and PO
2023-08-13 08:42:42 +05:30
s-aga-r
539cfd08f0 fix: fetch Stock UOM from Item if not set (#36606) 2023-08-12 22:42:01 +05:30
Ankush Menat
2d3fa8040c fix(UX): make demo button dismissable for session 2023-08-12 11:35:02 +05:30
Ankush Menat
6b464edf84 fix: dont render demo clear button if onboarding tour present 2023-08-12 11:35:02 +05:30
Deepesh Garg
f8e7bc08af Merge pull request #36564 from deepeshgarg007/monthly_sales_update
fix: Make default sales update frequency as monthly instead of each transaction
2023-08-11 22:39:04 +05:30
Deepesh Garg
7f062a71f1 Merge pull request #36582 from deepeshgarg007/final_total
fix: Group Account total not showing in Financial Statements
2023-08-11 21:56:44 +05:30
ruthra kumar
713880aef0 Merge pull request #36590 from ruthra-kumar/disallow_multiple_so_if_blocked_in_settings
fix: disallow mulitple SO with same Purchase Order No if not enabled in Settings
2023-08-11 19:46:24 +05:30
Anand Baburajan
627986efa1 fix: wrap none type rate under flt (#36602) 2023-08-11 18:01:27 +05:30
ruthra kumar
64614cd915 refactor(test): don't set po_no by default 2023-08-11 17:43:50 +05:30
Ankush Menat
57449589e7 chore: mergify - update stable branches
[skip ci]
2023-08-11 16:20:50 +05:30
Ankush Menat
581d98c5ae Merge pull request #35777 from deepeshgarg007/demo_data_on_install
feat: Demo setup
2023-08-11 14:38:38 +05:30
Anand Baburajan
98e82e0d99 chore: set default filter dates if missing (#36597) 2023-08-11 08:51:48 +00:00
Nihantra C. Patel
dd91a77fdd fix: POS Invoice Email Receipt Mail 2023-08-11 13:19:09 +05:30
Nihantra C. Patel
7e34468504 fix: POS Invoice Email Receipt Mail 2023-08-11 12:27:18 +05:30
ruthra kumar
5bed119de9 Merge pull request #36593 from ruthra-kumar/update_permission_for_semi_auto_reconciliation_tool
chore: update permissions for Process Payment Reconciliation
2023-08-11 11:42:47 +05:30
ruthra kumar
cd28d15292 chore: update permissions for Process Payment Reconciliation 2023-08-11 10:56:57 +05:30
ruthra kumar
dbd3fdbb41 fix: disallow mulitple SO with same PO No 2023-08-11 09:59:07 +05:30
Anand Baburajan
d138948c70 feat: daily asset depreciation method [dev] (#36588)
feat: daily asset depreciation method
2023-08-10 17:46:01 +00:00
Deepesh Garg
90bc0d6bd0 Merge branch 'demo_data_on_install' of https://github.com/deepeshgarg007/erpnext into demo_data_on_install 2023-08-10 21:48:03 +05:30
Deepesh Garg
567f4c37fc fix: Add order data 2023-08-10 21:46:34 +05:30
Deepesh Garg
000de4eddf chore: Update customer/supplier names 2023-08-10 21:45:55 +05:30
Ankush Menat
c8e6e067ae chore: telemetry for demo data erasure 2023-08-10 18:27:42 +05:30
Ritvik Sardana
f6c055cca9 fix: now time set in closing POS 2023-08-10 18:15:23 +05:30
Ankush Menat
8bdf280cfb fix: confirm before clearing demo data 2023-08-10 17:55:15 +05:30
Ankush Menat
e4b863af05 refactor: gracefully fail while clearing demo data 2023-08-10 17:52:53 +05:30
Ankush Menat
940b1d9e67 feat(ux): account workspace number cards 2023-08-10 17:46:35 +05:30
Ritvik Sardana
526f1d18fb fix: added test for runtime effect 2023-08-10 17:35:12 +05:30
Ankush Menat
704e6577e5 chore: use royalty free images 2023-08-10 17:29:55 +05:30
Ankush Menat
5fb92cbb49 fix: enqueue at front to speed up demo 2023-08-10 17:16:58 +05:30
Ankush Menat
3a21c90d10 fix: misc fixes in demo data
- Generate demo data field copy
- absolute imports
- remove whitelisting where it's not required
- telemetry
- banner copy
- move to background
- clear bootinfo after setup
2023-08-10 16:53:16 +05:30
Deepesh Garg
baf5cddd1b fix: Group Account total not showing in Financial Statements 2023-08-10 16:09:38 +05:30
ruthra kumar
936fb1decf Merge pull request #36578 from ruthra-kumar/toggle_uom_hiding_on_print
fix: unhide `uom` and `stock_uom` fields in print view
2023-08-10 15:38:32 +05:30
ruthra kumar
18e3c67d97 Merge pull request #36573 from ruthra-kumar/system_generated_field_and_update_remarks
refactor: 'is system generated' field and better remarks in Journal Entry
2023-08-10 15:37:47 +05:30
Ankush Menat
f2eb3d0f94 chore: remove old build system file
[skip ci]
2023-08-10 15:24:07 +05:30
Ankush Menat
ba6de0b4ff Merge branch 'develop' into demo_data_on_install 2023-08-10 15:22:52 +05:30
ruthra kumar
11cd163db7 fix: unhide uom and stock_uom fields in print view 2023-08-10 14:40:47 +05:30
ruthra kumar
4ed4b0240d refactor: enable 'no-copy' 2023-08-10 14:32:37 +05:30
ruthra kumar
de17eaef38 refactor: set flag display condition 2023-08-10 10:05:25 +05:30
Ankush Menat
5169006085 fix: move company rename to long queue 2023-08-10 10:02:59 +05:30
s-aga-r
4a7fc1506f fix: don't show disabled items in Item Shortage Report (#36550) 2023-08-10 09:40:58 +05:30
ruthra kumar
3997aa77d4 refactor: add is_system_generated field to Journal Entry 2023-08-09 20:50:11 +05:30
ruthra kumar
47cb349362 fix: better remarks on Cr note created by Reconciliation 2023-08-09 20:43:51 +05:30
Anand Baburajan
ad33cd73e8 perf: asset depreciation entry posting [develop] (#36555)
* perf: optimise post_depreciation_entries and make_depreciation_entry

* chore: fixing minor mistake

* chore: fix asset_value_adjustment test
2023-08-09 20:26:28 +05:30
Deepesh Garg
32863b4922 fix: Make default sales update frequency as monthly instead of each transaction 2023-08-09 15:36:28 +05:30
Ankush Menat
5740942de9 fix: lowercase fieldnames 2023-08-09 15:32:26 +05:30
ruthra kumar
3866be4c2a Merge pull request #36560 from ruthra-kumar/broken_bench_update
fix: broken `bench update` after subscription refactor
2023-08-09 14:44:54 +05:30
s-aga-r
e415cb2873 Merge pull request #36554 from barredterra/hide-description-in-print-and-report
fix(RFQ): hide description in print and report
2023-08-09 13:54:47 +05:30
ruthra kumar
9db8769e65 fix: broken bench update after subscription refactor 2023-08-09 13:54:26 +05:30
Ankush Menat
b0c79a0467 perf(invoice): Faster return amount query (#36556)
perf: Faster return amount query
2023-08-09 13:37:19 +05:30
ruthra kumar
e64b004eca feat: utility to repost accounting ledgers without cancellation (#36469)
* feat: introduce doctypes for repost

* refactor: basic filters and validations

* chore: basic validations

* chore: added barebones function to generate ledger entries

* chore: repost on submit

* chore: repost in background

* chore: include payment entry and journal entry

* chore: ignore repost doc on cancel

* chore: preview method

* chore: rudimentary form of preview

* refactor: preview template

* refactor: basic background colors to differentiate old and new

* chore: remove commented code

* test: basic functionality

* chore: fix conflict

* chore: prevent repost on invoices with deferred accounting

* refactor(test): rename and test basic validations and methods

* refactor(test): test all validations

* fix(test): use proper name account name

* refactor(test): fix failing test case

* refactor(test): clear old entries

* refactor(test): simpler logic to clear old records

* refactor(test): make use of deletion flag

* refactor(test): split into multiple test cases
2023-08-08 20:27:12 +05:30
barredterra
4fb844ab70 fix(RFQ): hide description in print and report 2023-08-08 16:30:53 +02:00
s-aga-r
c1dd06065b Merge pull request #36551 from barredterra/fix-rfq-link
fix(RFQ): link to supplier portal
2023-08-08 16:55:02 +05:30
barredterra
68ad62f7d0 test(RFQ): get_link 2023-08-08 12:31:37 +02:00
barredterra
fd91f2c2e0 fix(RFQ): link to supplier portal 2023-08-08 12:31:01 +02:00
rohitwaghchaure
0b36e7d10e fix: stock reconciliation negative stock error (#36544)
fix: stock reco negative stock error
2023-08-08 15:18:27 +05:30
ruthra kumar
11d5327d1b refactor: use base_tax_withholding_net_total for treshold validation (#36528)
* refactor: use base_tax_withholding_net_total for treshold validation

* fix: only for non payment entry doctypes
2023-08-08 14:14:30 +05:30
Deepesh Garg
492ea3bcc8 fix: Debit credit difference while submitting Sales Invoice (#36523)
* fix: Debit credit difference while submitting Sales Invoice

* test(fix): Update gl entry comparison

* test(fix): Update gl entry comparison
2023-08-08 11:39:44 +05:30
s-aga-r
ecba6ee183 fix: enqueue submit/cancel action for stock entry having more than 50 line items (#36532) 2023-08-07 19:36:19 +05:30
Raffael Meyer
8cc3df7c2c feat(RFQ): make sending attachments configurable (#36359) 2023-08-07 19:11:01 +05:30
rohitwaghchaure
28dfc88789 fix: stock entry decimal issue (#36530) 2023-08-07 17:31:38 +05:30
Raffael Meyer
21080afd92 feat(RFQ): make email message fully configurable (#36353)
feat: make RFQ message fully configurable
2023-08-07 17:12:31 +05:30
ruthra kumar
b86747c9d4 feat: ledger comparison report (#36485)
* feat: Accounting Ledger comparison report

* chore: barebones methods

* chore: working state

* chore: refactor internal logic

* chore: working multi select filter on Account

* chore: working voucher no filter

* chore: remove debugging statements

* chore: report with currency symbol

* chore: working start and end date filter

* test: basic report function

* refactor(test): test all filters
2023-08-07 11:28:07 +05:30
Ankush Menat
2eea90a873 perf: defer holiday list imports
Only used for configuring but loaded whenever
get_doc("holiday list", ...) is done
2023-08-07 10:08:34 +05:30
Ankush Menat
10a2191e3f Merge pull request #36519 from ankush/lang_separator
fix: use correct lang separator for frappe
2023-08-07 10:06:23 +05:30
Ankush Menat
f574ac11ea perf: defer babel import
Only required when configuring but will get loaded everywhere
2023-08-07 10:03:40 +05:30
Ankush Menat
0218ca538f fix: use correct lang separator for frappe 2023-08-07 09:59:54 +05:30
Himanshu
38805603db feat: subscription refactor (#30963)
* feat: subscription refactor

* fix: linter changes

* chore: linter changes

* chore: linter changes

* chore: Update tests

* chore: Remove commits

---------

Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
2023-08-07 08:33:47 +05:30
mergify[bot]
b717e2b5bf chore: don't merge asset capitalization gl entries (copy #36514) (#36515)
chore: don't merge asset capitalization gl entries

(cherry picked from commit 3c8f292ac3)

Co-authored-by: anandbaburajan <anandbaburajan@gmail.com>
2023-08-06 23:44:22 +05:30
Bernd Oliver Sünderhauf
5435c641a2 fix: Refine supplier scorecard standings. (#36414)
Co-authored-by: Bernd Oliver Sünderhauf <pancho@mailbox.org>
2023-08-05 23:13:14 +05:30
Deepesh Garg
93767eb7fc fix: Tax withholding against order via Payment Entry (#36493)
* fix: Tax withholding against order via Payment Entry

* test: Add test case

* fix: Nonetype exceptions
2023-08-05 22:22:03 +05:30
Deepesh Garg
96035b87d5 fix: Lower deduction certificate for multi-company (#36491) 2023-08-05 22:21:06 +05:30
Corentin Flr
559d914c0b fix(accounts): Translate columns in AP/AR report (#36503) 2023-08-05 22:18:36 +05:30
s-aga-r
758b31d895 fix: get incoming rate instead of BOM rate (#36496)
* fix: get incoming rate instead of BOM rate

* test: add test case for SCR rm rate
2023-08-05 19:28:38 +05:30
s-aga-r
e179499764 fix(ux): add Ordered Qty column in Get Items From > MR (#36486) 2023-08-05 19:26:11 +05:30
Michelle Alva
16bc1e228f chore: typo in onboarding (#36504)
* fix: typo in onboarding

* fix: typo
2023-08-05 18:30:24 +05:30
ruthra kumar
a4be6b0f10 Merge pull request #36501 from ruthra-kumar/fix_failing_gain_loss_unit_tests
fix(test): replace hardcoded reference to adv with dynamic one
2023-08-05 14:43:42 +05:30
ruthra kumar
466734fb4b fix(test): replace hardcoded reference to adv with dynamic one 2023-08-05 14:11:57 +05:30
Ritvik Sardana
b483364649 Merge branch 'develop' of https://github.com/frappe/erpnext into develop-ritvik-POS-runtime-effect 2023-08-05 11:26:47 +05:30
Ritvik Sardana
dbc000d655 fix: batched items method giving wrong quantity, so changed it back to previous way 2023-08-05 11:23:07 +05:30
mergify[bot]
b65ee6c2db fix: cross connect delivery note and sales invoice (backport #36183) (#36457)
fix: cross connect delivery note and sales invoice (#36183)

* fix: cross connect delivery note and sales invoice

* chore: remove unnecessary non_standard_fieldname

(cherry picked from commit 8501a1182a)

Co-authored-by: Anand Baburajan <anandbaburajan@gmail.com>
2023-08-05 10:57:23 +05:30
RitvikSardana
b86afb2964 feat: Financial Ratio Report (#36130)
* feat: Financial Ratio report added

* fix: Made columns dynamic

* fix: Changed fieldtype of year column

* fix: Added Financial Ratios for all Fiscal Years

* fix: Added Validation of only Parent Having account_type of Direct Income, Indirect Income, Current Asset and Current Liability

* fix: Added 4 more ratios

* fix: added a function for repeated code

* fix: added account_type in accounts utils and cleaned report code

* fix: created function for avg_ratio_values

* fix: cleaning code

* fix: basic ratios completed

* fix: cleaned the code

* chore: code cleanup

* chore: remove comments

* chore: code cleanup

* chore: cleanup account query

* chore: Remove unused variables

---------

Co-authored-by: Ritvik Sardana <ritviksardana@Ritviks-MacBook-Air.local>
Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
2023-08-04 22:05:30 +05:30
Gursheen Kaur Anand
edbefee10c fix: payment allocation in invoice payment schedule (#36440)
* fix: payment allocation in invoice payment schedule

* test: payment allocation for payment terms

* chore: linting issues
2023-08-04 17:49:17 +05:30
Sumit Jain
49be740736 fix: Contact Doctype doesn't have any field called job_title
fix: Contact Doctype doesn't have any field called `job_title`
2023-08-04 17:45:16 +05:30
Deepesh Garg
17585f08ba Merge pull request #36333 from GursheenK/AP-GL-not-matching
fix: AP report does not show expense claim payables
2023-08-04 17:42:54 +05:30
Ritvik Sardana
510543680b fix: batched items in POS 2023-08-04 16:55:30 +05:30
Ritvik Sardana
c9d5a62350 fix: POS Runtime Effect completed 2023-08-04 16:47:49 +05:30
Deepesh Garg
7276d593c3 Merge pull request #36458 from GursheenK/consolidated-financial-statements-roottype
test: balance sheet report
2023-08-04 09:55:36 +05:30
Deepesh Garg
04820b14da Merge pull request #35644 from ruthra-kumar/book_gain_loss_in_je
refactor: booking exchange gain/loss amount through journal
2023-08-04 09:53:26 +05:30
Deepesh Garg
10529e1f5a Merge pull request #36412 from pancho-s/Custom_Abbr_On_Setup
feat: Reallow customizing company abbreviation on setup.
2023-08-03 21:34:57 +05:30
Anand Baburajan
38a612c62e chore: better cost center validation for assets (#36477) 2023-08-03 16:37:05 +05:30
Ritvik Sardana
5b1aa07ecb fix: fixed SABB error 2023-08-03 16:10:28 +05:30
Husam Hammad
27ebf14f9d fix: handle None value in payment_term_outstanding
* Fix payment entry bug: Handle None value in payment_term_outstanding

* fix: Handle None value in payment_term_outstanding V2

fix linting issue
2023-08-02 16:28:05 +05:30
Devin Slauenwhite
dedf24b86d fix: don't allow negative rates (#36027)
* fix: don't allow negative rate

* test: don't allow negative rate

* fix: only check for -rate on items child table
2023-08-02 16:26:55 +05:30
Deepesh Garg
b715453ae3 Merge pull request #36450 from cogk/fix-typo-in-query-for-financial-statement-report
fix: Fix query for financial statement report
2023-08-01 23:36:25 +05:30
Gursheen Anand
002bf77314 test: balance sheet report 2023-08-01 23:24:18 +05:30
Gursheen Anand
cd98be6088 fix: check root type only when not none 2023-08-01 23:22:49 +05:30
Anand Baburajan
a8df875820 chore: use datatable for asset depr sch table view (#36449)
* chore: use datatable for asset depr sch table view

* chore: remove unnecessary code
2023-08-01 21:14:27 +05:30
Ritvik Sardana
17771a55fb fix: added code for batched items in POS 2023-08-01 19:28:40 +05:30
Corentin Flr
bd3fc7c434 fix: Fix query for financial statement report 2023-08-01 14:35:11 +02:00
ruthra kumar
ab933df5bb fix: overallocation validation misfire on normal invoices (#36349)
* fix: overallocation validation misfire on normal invoices

* test: assert misfire doesn't happen
2023-08-01 13:12:16 +05:30
Anand Baburajan
2ab3d75274 feat: asset activity (#36391)
* feat: asset activity

* chore: add more actions to asset activity

* chore: fix failing test due to timestamp mismatch error

* chore: rewriting asset activity messages

* chore: add report and add it to workspace

* chore: show user in list view
2023-08-01 12:00:24 +05:30
mergify[bot]
3f09f811bf fix: allow fully depreciated existing assets (copy #36378) (#36379)
* fix: allow fully depreciated existing assets

(cherry picked from commit 9489cba275)

# Conflicts:
#	erpnext/assets/doctype/asset/asset.json
#	erpnext/assets/doctype/asset/depreciation.py

* chore: fix conflicts in asset.json

* chore: fix conflicts in depreciation.py

---------

Co-authored-by: anandbaburajan <anandbaburajan@gmail.com>
2023-08-01 11:20:04 +05:30
Deepesh Garg
333f2a565b fix: Add journal entry in demo 2023-08-01 10:10:50 +05:30
ruthra kumar
a93ae9c826 Merge pull request #36434 from ruthra-kumar/replace_get_cached_with_get_single_value
fix: incorrect usage `get_cached_value` on single doctypes
2023-08-01 10:02:33 +05:30
abdosaeed95
4f473eb090 fix: typo in loyalty program throw message (#36432) 2023-08-01 10:01:01 +05:30
ruthra kumar
ba15810639 fix: incorrect usage get_cached_value on single doctypes 2023-08-01 07:58:09 +05:30
Bernd Oliver Sünderhauf
f333d2724a Merge branch 'frappe:develop' into Custom_Abbr_On_Setup 2023-08-01 01:18:10 +02:00
Bernd Oliver Sünderhauf
bc8d05da0f feat: Reallow customizing company abbreviation on setup. 2023-07-31 23:46:47 +02:00
Gursheen Kaur Anand
11bd15e580 fix: root type in account map for balance sheet (#36303)
* fix: root type in account map

* fix: fetch gle by root type in consolidated financial statement

* refactor: consolidated financial statement gle query

* fix: filter accounts by root type
2023-07-31 23:27:16 +05:30
Ankush Menat
f31d07554d perf: avoid full table scan in sle count check (#36428) 2023-07-31 22:13:47 +05:30
rohitwaghchaure
f83a100a8d fix: not able to make material request (#36416) 2023-07-31 19:13:23 +05:30
Devin Slauenwhite
e8eeeb16e2 fix: group item reorder by (warehouse, material_request_type) (#35818)
* fix: group item reorder by (warehouse, material_request_type)

* fix: update reorder error message

* chore: linter

* fix: correct error message

Co-authored-by: s-aga-r <sagarsharma.s312@gmail.com>

* chore: linter

---------

Co-authored-by: s-aga-r <sagarsharma.s312@gmail.com>
2023-07-31 12:47:14 +00:00
xdlumertz
652398fad2 fix: Defined "Open" Status as default (#36421)
Defined "Open" Status as default of the child doctype (Quality Review Objective), because without it the main doctype (Quality Review) has "Passed" status.
This happens because in the "set_status" function, the status is updated according to the status of the child records.
2023-07-31 12:34:33 +00:00
Vimal
ce36d1f668 fix: job card suggest holiday as start date (#35958) 2023-07-31 17:51:31 +05:30
xdlumertz
05b07e098a fix: process_owner is not link User (#36420)
-Changed "fetch from" since field is not a binding field
-Change field "full_name" from Hidden to Read Only
2023-07-31 17:34:55 +05:30
Gursheen Kaur Anand
1ddfaa7605 fix: ignore cancelled gle in voucher-wise balance report (#36417)
fix: ignore cancelled gle
2023-07-31 14:29:20 +05:30
Deepesh Garg
70c5df056d Merge branch 'develop' of https://github.com/frappe/erpnext into demo_data_on_install 2023-07-31 13:02:34 +05:30
Deepesh Garg
7805abbb2d fix: reset default company 2023-07-30 20:29:20 +05:30
Deepesh Garg
c6d8f15b10 Merge pull request #36389 from AlexandreLumertz/patch-2
fix: Party type translation in error message
2023-07-30 18:42:01 +05:30
Deepesh Garg
c6b024c34b Merge pull request #36167 from barredterra/percentage-rounding
fix: rounding of percentage fields
2023-07-30 14:41:30 +05:30
Deepesh Garg
b38d300a92 Merge pull request #36320 from barredterra/german-translation-supplier
fix(Supplier): german translations
2023-07-30 14:40:15 +05:30
Deepesh Garg
eeddeeeeb3 Merge pull request #36369 from ashish-greycube/patch-11
fix: in payment_entry 'Unallocated Amount' cal is broken
2023-07-30 14:37:24 +05:30
Deepesh Garg
c850f46c0a chore: Update records 2023-07-30 11:53:09 +05:30
Deepesh Garg
26ee50269a test: Update demo setup test 2023-07-30 11:52:49 +05:30
Deepesh Garg
371413a078 fix: Button to clear demo data 2023-07-29 22:39:07 +05:30
Deepesh Garg
3698af834b Merge branch 'develop' of https://github.com/frappe/erpnext into demo_data_on_install 2023-07-29 17:12:06 +05:30
Ankush Menat
c0642cf528 fix: only publish repost progress to doc subscriber (#36400)
Huge size of string gets blasted to everyone on site. Due to some memory
leak (cause unknown) till sockets are open the strings are also in
process' memory.

related https://github.com/frappe/frappe/issues/21863
2023-07-29 09:32:11 +00:00
rohitwaghchaure
b71dafd1f1 Merge pull request #36375 from ramonus/job-card-fix
fix: Job Card validation fixed when displaying total completed quantity
2023-07-29 15:01:16 +05:30
Deepesh Garg
caad4537c5 Merge pull request #36149 from GursheenK/balancing-accounting-dimensions
fix: make offsetting entry for acc dimensions in general ledger
2023-07-29 12:29:03 +05:30
Deepesh Garg
f999b75ed6 Merge branch 'develop' of https://github.com/frappe/erpnext into balancing-accounting-dimensions 2023-07-29 11:53:03 +05:30
Deepesh Garg
ecca9cb023 fix: Add company filters for account 2023-07-29 11:52:54 +05:30
Deepesh Garg
3173546d5c Merge pull request #36198 from HarryPaulo/fix-pricing-rule-on-point-of-sale
fix: inserting of items with pricing rule with qty range
2023-07-29 09:58:05 +05:30
ruthra kumar
3b58055410 refactor(test): introduce and make use of mixins in unit tests (#36382)
* refactor(test): create and use test mixin

* chore(test): replace get_user_default with variable
2023-07-28 21:02:21 +05:30
xdlumertz
bc470591ac fix: translate
fix: translate
2023-07-28 12:31:29 -03:00
rohitwaghchaure
ee7da639e7 Merge pull request #36380 from rohitwaghchaure/fixed-fieldtype-from-currency-to-flt
fix: change fieldtype from Currency to Float for the valuation rate in reports
2023-07-28 20:35:46 +05:30
s-aga-r
bc6cbb9e25 Merge pull request #36365 from AlexandreLumertz/patch-1
fix: removed "fetch_from"
2023-07-28 18:12:21 +05:30
xdlumertz
1c687a4afd fix: removed "fetch_from"
* fix: removed ("fetch_from": "goal.objective")
The field ended up being disabled because of this.
2023-07-28 18:10:45 +05:30
s-aga-r
d9ac7f9b87 Merge pull request #36221 from s-aga-r/FIX-ISS-23-24-02079
perf: use `LEFT JOIN` instead of `NOT EXISTS`
2023-07-28 17:51:24 +05:30
rohitwaghchaure
4e58503075 Merge pull request #36377 from rohitwaghchaure/fixed-pp-sub-assembly-available-items
fix: multiple issues related to Production Plan
2023-07-28 17:26:06 +05:30
Rohit Waghchaure
c82cb379a5 fix: change fieldtype from Currency to Float for the valuation rate in the stock report 2023-07-28 17:21:05 +05:30
s-aga-r
148d466ae5 fix: long queue process_boms_cost_level_wise 2023-07-28 17:05:17 +05:30
s-aga-r
58d867503b perf: use LEFT JOIN instead of NOT EXISTS 2023-07-28 16:44:41 +05:30
Gursheen Anand
f5761e7965 refactor: future payments query 2023-07-28 16:01:30 +05:30
Rohit Waghchaure
1c2148b637 fix: multiple issues related to Production Plan 2023-07-28 15:38:00 +05:30
Gursheen Anand
e355dea4b5 fix: AP and AR summary 2023-07-28 14:51:28 +05:30
ramonalmato
49981fecc7 fix: Job Card validation fixed when displaying total completed quantity 2023-07-28 10:57:31 +02:00
Ankush Menat
e36c8ce5be perf: move project status reminder to hourly (#36372)
Only used for sending daily/weekly/bi-daily

[skip ci]
2023-07-28 12:53:22 +05:30
Gursheen Anand
fd5c4e0a64 fix: fetch ple for all party types 2023-07-28 11:41:03 +05:30
Ashish Shah
f9fa34ff40 fix: in payment_entry 'Unallocated Amount' cal is broken 2023-07-28 11:10:51 +05:30
ruthra kumar
50d294fd1e Merge pull request #36126 from ruthra-kumar/idx_issue_upon_journal_reconciliation
fix: incorrect `idx` on Journals after reconciliation
2023-07-28 09:33:29 +05:30
ruthra kumar
46ea814400 chore: cancel gain/loss je while posting reverse gl 2023-07-28 08:34:36 +05:30
ruthra kumar
567c0ce1e8 chore: don't make gain/loss journal for base currency transactions 2023-07-28 08:12:44 +05:30
rohitwaghchaure
dac9fd64a8 Merge pull request #36328 from rohitwaghchaure/fixed-purchase-receipt-timeout-on-cancel-develop
fix: timeout error while cancelling the Purchase Receipt
2023-07-27 23:26:59 +05:30
Gughan Ravikumar
89d109e8d2 fix: Naming Series preview when no previous transaction present 2023-07-27 23:12:11 +05:30
Deepesh Garg
829387c2bc Merge pull request #36360 from deepeshgarg007/fy_default_dates
fix: Default year start and end dates in reports
2023-07-27 22:35:35 +05:30
Deepesh Garg
fff83bc847 Merge pull request #36092 from HarryPaulo/fix-paid-amount-payment-method-group
fix: paid_amount when the group is mode of payment
2023-07-27 21:21:52 +05:30
Deepesh Garg
ebdf1959fd Merge pull request #36254 from deepeshgarg007/remove_auto_repeat
fix: Remove auto repeat (subscription) button from Sales and Purchase documents
2023-07-27 21:18:03 +05:30
Deepesh Garg
a25f34c3d5 Merge pull request #36313 from barredterra/delete-root-item-group
fix(Item Group): allow root deletion
2023-07-27 21:14:44 +05:30
Deepesh Garg
2341061852 fix: Default year start and end date in reports 2023-07-27 21:03:32 +05:30
Deepesh Garg
4496a6760e fix: Default year start and end dates in reports 2023-07-27 20:54:55 +05:30
Deepesh Garg
dacf013170 Merge pull request #36347 from deepeshgarg007/ac_ignore
fix: Ignore account closing balance for financial statement
2023-07-27 19:54:01 +05:30
Deepesh Garg
523d2c38eb Merge pull request #36356 from frappe/revert-36249-default_dates
Revert "fix: Default year start and end dates in reports"
2023-07-27 19:15:00 +05:30
Deepesh Garg
cf50bb45ad Revert "fix: Default year start and end dates in reports" 2023-07-27 19:13:11 +05:30
Deepesh Garg
3db6ac5ac9 Merge pull request #36069 from GursheenK/purchase-sales-register-with-PE/JE
feat: include payments in purchase / sales register report
2023-07-27 18:13:37 +05:30
Gursheen Anand
4f9242d699 fix: dimension name in remark 2023-07-27 15:45:48 +05:30
Deepesh Garg
ccf1920a78 fix: Ignore account closing balance for financial statement 2023-07-27 15:40:36 +05:30
Rucha Mahabal
5d87c06332 refactor: remove hrms app translations (#36343) 2023-07-27 12:30:23 +05:30
Deepesh Garg
5dc8195d91 Merge pull request #36249 from deepeshgarg007/default_dates
fix: Default year start and end dates in reports
2023-07-27 12:19:44 +05:30
Ankush Menat
1d7dbd3456 perf: don't use ifnull where it's not required (#36336)
ifnull isn't really required when doing `!= 'anything'` because if it's null then value will be falsy.
ifnull is only required when checking `= ''` if you treat `null = ''`

Actuall better fix would be make things explcitly non-nullable, then we won't ever have to add this on such fields.

ref: https://github.com/frappe/frappe/pull/21822
2023-07-27 06:06:07 +00:00
Nabin Hait
56e7cc7e05 Merge pull request #36327 from nabinhait/pcv-fix
fix: GL Entries should not be split based on cost center allocation in PCV
2023-07-27 11:33:06 +05:30
Gursheen Anand
b1818137e7 fix: PE in sales register 2023-07-27 10:08:26 +05:30
ruthra kumar
804afaa647 chore(test): use existing company for unit test 2023-07-27 09:30:38 +05:30
ruthra kumar
d9d6856153 chore: rename some internal variables 2023-07-27 08:02:46 +05:30
ruthra kumar
acc7322874 chore: add msgprint for exc JE 2023-07-27 07:52:01 +05:30
ruthra kumar
47bbb37291 chore: use frappetestcase 2023-07-27 05:54:13 +05:30
ruthra kumar
025091161e refactor(test): assert ledger outstanding 2023-07-27 05:53:12 +05:30
ruthra kumar
bfa54d5335 fix(test): test case breakage in Github Actions 2023-07-26 22:33:58 +05:30
ruthra kumar
ae424fdfed test: assert ledger after cr note cancellation 2023-07-26 22:33:58 +05:30
ruthra kumar
95543225cf fix: cr/dr note should be posted for exc gain/loss 2023-07-26 22:33:58 +05:30
ruthra kumar
e3d2a2c5bd test: cr notes against invoice 2023-07-26 22:33:58 +05:30
ruthra kumar
506a5775f9 fix: incorrect gain/loss on allocation change on reconciliation tool 2023-07-26 22:33:58 +05:30
ruthra kumar
ba1f065765 refactor: create gain/loss on Cr/Dr notes with different exc rates 2023-07-26 22:33:58 +05:30
ruthra kumar
1ea1bfebc4 refactor: convert class method to standalone function 2023-07-26 22:33:58 +05:30
ruthra kumar
c0b3b069b5 refactor: split make_exchage_gain_loss_journal into smaller function 2023-07-26 22:33:58 +05:30
ruthra kumar
c87332d5da refactor: cr/dr note will be on single exchange rate 2023-07-26 22:33:58 +05:30
ruthra kumar
6628632fbb chore: type info 2023-07-26 22:33:58 +05:30
ruthra kumar
37895a361c chore(test): fix broken test case 2023-07-26 22:33:58 +05:30
ruthra kumar
70dd9d0671 chore(test): fix broken unit test 2023-07-26 22:33:58 +05:30
ruthra kumar
f3363e813a test: journals against sales invoice 2023-07-26 22:33:58 +05:30
ruthra kumar
f4a65cccc4 refactor: handle diff amount in various names 2023-07-26 22:33:58 +05:30
ruthra kumar
5695d6a5a6 refactor: unit tests for journals 2023-07-26 22:33:58 +05:30
ruthra kumar
0567243772 refactor: dr/cr logic for journals as payments 2023-07-26 22:33:58 +05:30
ruthra kumar
73cc1ba654 refactor: assert payment ledger outstanding in both currencies 2023-07-26 22:33:58 +05:30
ruthra kumar
6e18bb6456 refactor: cancel gain/loss JE on Journal as payment cancellation 2023-07-26 22:33:58 +05:30
ruthra kumar
f119a1e115 refactor: linkage between journal as payment and gain/loss journal 2023-07-26 22:33:58 +05:30
ruthra kumar
cd42b26839 chore: code cleanup 2023-07-26 22:33:58 +05:30
ruthra kumar
1bcb728c85 refactor: remove call for setting deductions in payment entry 2023-07-26 22:33:58 +05:30
ruthra kumar
72bc5b3a11 refactor(test): difference amount no updated for exchange gain/loss 2023-07-26 22:33:58 +05:30
ruthra kumar
5b06bd1af4 refactor(test): exc gain/loss journal for advance in purchase invoice 2023-07-26 22:33:58 +05:30
ruthra kumar
78bc712756 refactor: only post on base currency for exchange gain/loss 2023-07-26 22:33:58 +05:30
ruthra kumar
ee2d1fa36e refactor(test): payment will have same exch rate - no gain/loss
while making payment entry using reference to sales/purchase invoice,
it herits the parent docs exchange rate. so, there will be no exchange
gain/loss
2023-07-26 22:33:58 +05:30
ruthra kumar
389cadf157 refactor(test): assert Exc journal when reconciling Journa to invoic 2023-07-26 22:33:58 +05:30
ruthra kumar
ee3ce82ea8 chore: remove debugging statements and fixing failing unit tests 2023-07-26 22:33:58 +05:30
ruthra kumar
7b516f8463 refactor: exc booking logic for Journal Entry 2023-07-26 22:33:58 +05:30
ruthra kumar
00a2e42a47 refactor(test): exc gain/loss booked through journal 2023-07-26 22:33:58 +05:30
ruthra kumar
4ff53e1062 refactor: assert exchange gain/loss amount in reference table 2023-07-26 22:33:58 +05:30
ruthra kumar
92ae9c2201 refactor: remove unused variable, pe should pull in parent exc rate
1. 'reference_doc' variable is never set. Hence, removing.
2. set_exchange_rate() relies on ref_doc, which was never
set due to point [1]. Replacing it with 'doc'.
3. Sales/Purchase Invoice has 'conversion_rate' field for tracking
exchange rate. Added a get statement for them as well.
2023-07-26 22:33:58 +05:30
ruthra kumar
c1184585ed refactor: helper method 2023-07-26 22:33:58 +05:30
ruthra kumar
34b5e849a2 chore: fix logic for purchase invoice and some typos 2023-07-26 22:33:58 +05:30
ruthra kumar
13febcac81 refactor: add new reference type in journal entry account 2023-07-26 22:33:58 +05:30
ruthra kumar
0587338435 chore: patch to update property setter for Journal Entry Accounts 2023-07-26 22:33:58 +05:30
ruthra kumar
7e94a1c51b refactor: replace with new method in purchase invoice 2023-07-26 22:33:58 +05:30
ruthra kumar
5e1cd1f227 test: different scenarios for exchange booking 2023-07-26 22:33:58 +05:30
ruthra kumar
81cd7873d3 refactor: book exchange gain/loss through journal 2023-07-26 22:33:58 +05:30
Anand Baburajan
5e7b05e566 chore: adding totals in asset reports (#36334) 2023-07-26 21:57:18 +05:30
Gursheen Anand
c47a37c3ab fix: fetch ple with party type employee in AP 2023-07-26 16:42:06 +05:30
ruthra kumar
e79f80331d Merge pull request #36322 from frappe/mergify/bp/develop/pr-36298
fix: show invoices name instead of object address (backport #36298)
2023-07-26 16:11:56 +05:30
Anand Baburajan
f28f8dc596 fix: show depr schedule table in asset doc (#36332) 2023-07-26 15:59:37 +05:30
Deepesh Garg
f368894d22 Merge pull request #36238 from RitvikSardana/develop-ritvik-pos-dark
fix: POS closing with item name
2023-07-26 15:33:44 +05:30
gouravengineer
a5b626420d fix: show invoices name instead of object address
comma_and function in expecting a list but it gets a tuple so it is returning a object instead of a string

(cherry picked from commit cf93714a7c)
2023-07-26 15:30:03 +05:30
Nabin Hait
666d961875 fix: GL Entries should not be splitted based on cost center allocation in PCV 2023-07-26 13:03:29 +05:30
Rohit Waghchaure
1c2da92233 fix: timeout error while cancelling the Purchase Receipt 2023-07-26 13:03:23 +05:30
Deepesh Garg
89aa6f0269 Merge pull request #36318 from barredterra/remove-autoname
chore(Item Group): remove redundant autoname
2023-07-26 09:44:37 +05:30
Deepesh Garg
3fe75ce7d4 Merge pull request #36319 from cogk/fix-taxes-controller-after-refactor
fix: Fix initialize_taxes
2023-07-26 09:41:02 +05:30
barredterra
3558c3d24e fix: german translations 2023-07-25 21:42:01 +02:00
Corentin Flr
d69af741c8 fix(taxes_and_totals.js): Fix initialize_taxes incorrect refactor
Following changes from PR #36147, `cur_frm.cscript.validate_taxes_and_charges` is not a method anymore and should be replaced with the `erpnext.accounts.taxes.validate_taxes_and_charges` function.
2023-07-25 21:12:14 +02:00
rohitwaghchaure
17d4ab36c0 Merge pull request #36304 from frappe/mergify/bp/develop/pr-36300
fix: added missing option Partially Received in the status field (backport #36300)
2023-07-25 22:49:51 +05:30
Anand Baburajan
11a9d4124f fix: apply discount on item after applying price list (#36317) 2023-07-25 21:55:17 +05:30
barredterra
1691eee26e chore(Item Group): remove redundant autoname 2023-07-25 18:05:41 +02:00
mergify[bot]
eead2bba9f fix: group by in fixed asset register (copy #36310) (#36311)
fix: group by in fixed asset register

(cherry picked from commit 1151e47f46)

Co-authored-by: anandbaburajan <anandbaburajan@gmail.com>
2023-07-25 20:58:41 +05:30
barredterra
fd2c272bed fix(Item Group): allow root deletion
It was not possible to delete an empty, unused Item Group without any
children, if it was one of possibly multiple roots of the Item Group tree.
This fix allows deleting a root Item Group.
2023-07-25 17:01:57 +02:00
Rohit Waghchaure
55a9537220 fix: added missing option Partially Received in the status dropdown field
(cherry picked from commit 4fa93b05c6)
2023-07-25 12:39:07 +00:00
ruthra kumar
cb2bfabb6f fix: validation blocks partial payment for SO and PO 2023-07-25 17:57:49 +05:30
Gursheen Anand
341709aa0a fix: additional query cols for sales register 2023-07-25 15:57:17 +05:30
Deepesh Garg
2c1943c7e6 Merge pull request #36246 from blaggacao/bump-tweepy
build(deps): update tweepy 3.10.0 -> 4.14.0
2023-07-25 15:06:48 +05:30
Deepesh Garg
6830a8737a Merge pull request #36196 from GursheenK/customer-details-in-tax-withholding-category-report
fix: show tax withholding category details for customers
2023-07-25 14:48:15 +05:30
Deepesh Garg
8c410c617c chore: Add default value 2023-07-25 14:47:46 +05:30
Deepesh Garg
e1d6bf364e Merge branch 'develop' of https://github.com/frappe/erpnext into customer-details-in-tax-withholding-category-report 2023-07-25 14:45:36 +05:30
Gursheen Anand
95c6f4d40d fix: additional query cols for gst itemised registers 2023-07-25 14:32:24 +05:30
Deepesh Garg
61be373800 Merge pull request #36107 from GursheenK/accounting_dimension_in_based_on_filter
feat: filtering based on accounting dimensions in profitability analysis
2023-07-25 14:28:46 +05:30
RitvikSardana
62ca89b10f fix: POS background color optimized in dark mode (#36287)
fix: POS dark theme compatability

Co-authored-by: Ritvik Sardana <ritviksardana@Ritviks-MacBook-Air.local>
2023-07-25 13:01:10 +05:30
Gursheen Anand
e6d66fe5b0 fix: gst itemised registers for india compliance api call 2023-07-25 12:14:37 +05:30
Deepesh Garg
30554301c9 Merge pull request #36235 from resilient-tech/fix-tax-breakup-for-diff-tax-rates
fix: Correct Tax Breakup for different tax rates for same hsn code
2023-07-24 20:57:26 +05:30
Deepesh Garg
3f81e15672 Merge pull request #36147 from deepeshgarg007/eslint
refactor(ci): add eslint and update linting confs
2023-07-24 20:55:07 +05:30
Smit Vora
1b8490dc98 Merge branch 'develop' into fix-tax-breakup-for-diff-tax-rates 2023-07-24 20:20:19 +05:30
mergify[bot]
1bc87a970a fix: set new purchase_receipt_amount on asset split (copy #36272) (#36280)
fix: set new purchase_receipt_amount on asset split

(cherry picked from commit 7fd9b489ee)

Co-authored-by: anandbaburajan <anandbaburajan@gmail.com>
2023-07-24 19:37:07 +05:30
Deepesh Garg
4867a767a2 Merge pull request #36278 from resilient-tech/set-company-flag
fix(regional): set `frappe.flags.company` temporarily, where required
2023-07-24 19:34:29 +05:30
Sagar Vora
4205f564a0 fix(regional): set frappe.flags.company temporarily, where required 2023-07-24 18:37:58 +05:30
DaizyModi
6f376cf103 fix: remove unused params 2023-07-24 18:02:42 +05:30
Gursheen Anand
db49d53aaf fix: running balance after sorting 2023-07-24 17:42:13 +05:30
Deepesh Garg
164df33419 Merge pull request #36274 from GursheenK/process-soa-customer-filter
fix: customer filter in process soa
2023-07-24 17:32:17 +05:30
Gursheen Anand
5224f13db2 fix: add patch for renaming tds payable report 2023-07-24 17:11:05 +05:30
Gursheen Anand
34d7fb388d fix: customer filter in process soa 2023-07-24 16:47:06 +05:30
mergify[bot]
1436040d4c fix: allow both custodian and location while creating asset (copy #36263) (#36264)
fix: allow both custodian and location while creating asset

(cherry picked from commit bff00bc8b2)

Co-authored-by: anandbaburajan <anandbaburajan@gmail.com>
2023-07-24 15:51:24 +05:30
ruthra kumar
4464b2a21b Merge pull request #36261 from ruthra-kumar/possible_missing_field_error_on_payment_entry
refactor: apply terms based validation only on sales/purchase doctypes
2023-07-24 15:22:15 +05:30
rohitwaghchaure
7f4dda1b06 Merge pull request #36259 from rohitwaghchaure/fixed-report-default-email-outgoing-error
fix: no default email account causing reposting issue
2023-07-24 15:03:09 +05:30
ruthra kumar
3dd119eeea refactor: apply terms based validation only on sales/purchase doctyp 2023-07-24 14:50:11 +05:30
ruthra kumar
a785a6054e Merge pull request #36251 from ruthra-kumar/performance_tune_timsheet_adding_logic
fix: unresponsive sales invoice page
2023-07-24 14:01:07 +05:30
Rohit Waghchaure
efb51526a9 fix: no default email account causing reposting issue 2023-07-24 14:00:20 +05:30
Ritvik Sardana
8b4228d616 fix: removed duplicate code 2023-07-24 13:59:24 +05:30
Ritvik Sardana
5389dabe19 Merge branch 'develop' of https://github.com/frappe/erpnext into develop-ritvik-pos-dark 2023-07-24 12:48:58 +05:30
Ritvik Sardana
82b36e2ec8 fix: added test for pos closing without item code 2023-07-24 12:47:29 +05:30
Deepesh Garg
203b8ec872 Merge pull request #36220 from marination/dunning-patch-acc-frozen
fix: Patch Dunnings after accounts were frozen
2023-07-24 12:46:32 +05:30
ruthra kumar
740f283ec1 Merge pull request #36241 from ruthra-kumar/fix_allocation_logic_in_get_outstanding_invoices
fix: multiple fixes on payment terms based issues in payment entry
2023-07-24 12:35:25 +05:30
Deepesh Garg
4bb6db86f8 fix: Remove auto repeat (subscription) button from Sales and Purchase documents 2023-07-24 12:29:57 +05:30
Gursheen Anand
2f6d0bdcee fix: col names for party types 2023-07-24 12:20:58 +05:30
Gursheen Anand
38b501e004 fix: make party type filter mandatory 2023-07-24 12:13:47 +05:30
Deepesh Garg
3c92686f0a fix: Default year start and end dates in reports 2023-07-24 11:58:16 +05:30
David Arnold
b740cdfc00 build(deps): update tweepy 3.10.0 -> 4.14.0 2023-07-23 23:14:58 -05:00
David Arnold
d066b5cd04 fix(startup): coa drill down 2023-07-23 22:44:19 -05:00
Deepesh Garg
cdc9b62688 chore: Remove cur_frm from sales_invoice.js 2023-07-23 22:44:18 +05:30
Deepesh Garg
8d3d9493f0 chore: linting issues 2023-07-23 20:06:41 +05:30
ruthra kumar
d048365da3 refactor: refresh table once after loop ends 2023-07-23 19:56:30 +05:30
Deepesh Garg
0d70ae2a21 chore: Ingnore issues 2023-07-23 19:34:08 +05:30
Deepesh Garg
8ccb8e3c5b chore: Move buying controller to utils 2023-07-23 18:50:44 +05:30
Deepesh Garg
7205fb9b97 chore: convert sales common to utils 2023-07-23 12:07:21 +05:30
ruthra kumar
ec7558b9e0 refactor: handle references without any template and payment_term 2023-07-23 11:55:16 +05:30
ruthra kumar
662ccd467c fix: allocation logic on 'Get Outstanding Invoices' btn in PE
1. fixed broken `payment_term` filter in Payment References section
2. Throw error if user fails to select 'Payment Term' for an invoice
with 'Payment Term based allocation' enabled.
2023-07-23 11:37:27 +05:30
Deepesh Garg
4077254b01 chore: resolve undefined variables issue 2023-07-22 23:07:18 +05:30
Deepesh Garg
0b1e78e127 chore: Add landed cost taxes and charges common in bundles 2023-07-22 21:19:48 +05:30
Deepesh Garg
6b2dbdd394 Merge branch 'develop' into skip_tcs 2023-07-22 18:38:45 +05:30
ruthra kumar
e6abe1b77f Merge pull request #36206 from ruthra-kumar/test_cases_for_payment_term_overallocation
test: overallocation validation in payment entry
2023-07-22 10:41:01 +05:30
ruthra kumar
93246043ec chore(test): enable multi-currency party for testing 2023-07-22 10:01:59 +05:30
ruthra kumar
8f9ef4ef5b chore: validation on multi-currency tran on company curtency account 2023-07-22 09:20:55 +05:30
ruthra kumar
5b37919574 chore: use flt for currency 2023-07-22 09:20:55 +05:30
ruthra kumar
6b4a81ee48 chore: test more scenarios 2023-07-22 09:20:44 +05:30
DaizyModi
653117c2a9 test: fix test case for itemised tax breakup 2023-07-21 17:56:33 +05:30
DaizyModi
b84deec601 fix: Correct Tax Breakup for different tax rates for same hsn code 2023-07-21 17:43:27 +05:30
Ritvik Sardana
7069e2a5a0 fix: removed validate_item_code function in sales_invoice 2023-07-21 17:18:35 +05:30
Deepesh Garg
cc36af57bd Merge pull request #36229 from deepeshgarg007/naming_in_order
fix: FY in naming series variable for orders
2023-07-21 16:05:31 +05:30
Deepesh Garg
7a7d32db81 fix: FY in naming series variable for orders 2023-07-21 16:03:17 +05:30
Gursheen Anand
ec80dc6f09 fix: make column names more general 2023-07-21 15:55:31 +05:30
Gursheen Anand
1c5c310f5a fix: fetch acc dimension fieldname 2023-07-21 13:37:48 +05:30
Gursheen Anand
59a2a04fcc fix: check gl entry status using is_cancelled 2023-07-21 13:22:01 +05:30
Gursheen Anand
1c033ce635 chore: change column format for report 2023-07-21 11:00:19 +05:30
Gursheen Anand
33f8f7d7b3 fix: exclude cancelled gl entries for opening balance 2023-07-21 10:57:55 +05:30
marination
17ff395f9a fix: Reverse GL entries only for submitted Dunnings 2023-07-20 20:54:43 +05:30
Deepesh Garg
de189c5f18 Merge pull request #35950 from FHenry/dev_feat_adress_contact_report
feat: add Lead to Address And Contact report
2023-07-20 20:26:38 +05:30
marination
aeae8d646a fix: Patch dunnings made after accounts were frozen
- Consider "Accounts Frozen Until" and Period Closing Voucher
2023-07-20 19:55:57 +05:30
Deepesh Garg
76db0b63ba Merge pull request #36214 from deepeshgarg007/tb_cancelled_entries
fix: Trial Balance report considering cancelled entries
2023-07-20 18:48:03 +05:30
Gursheen Anand
5d7dd9b0ec fix: project route permissions for user 2023-07-20 18:20:53 +05:30
rohitwaghchaure
1084f0d97f Merge pull request #36209 from mohsinalimat/patch-2
fix: Ambiguous column error while submitting stock entry
2023-07-20 18:03:27 +05:30
rohitwaghchaure
9a9939cfb3 Merge pull request #36208 from rohitwaghchaure/fixed-filter-mandatory-for-batch-wise-balance-report
fix: made item or warehouse filter mandatory
2023-07-20 18:02:37 +05:30
Deepesh Garg
fd58bbff6b fix: Trial Balance report considering cancelled entries 2023-07-20 17:51:54 +05:30
MohsinAli
c21fd45883 fix: Ambiguous column error while submitting stock entry
Stock Entry Type=Manufacture

request.js:457 Traceback (most recent call last):
  File "apps/frappe/frappe/app.py", line 94, in application
    response = frappe.api.handle()
  File "apps/frappe/frappe/api.py", line 54, in handle
    return frappe.handler.handle()
  File "apps/frappe/frappe/handler.py", line 47, in handle
    data = execute_cmd(cmd)
  File "apps/frappe/frappe/handler.py", line 85, in execute_cmd
    return frappe.call(method, **frappe.form_dict)
  File "apps/frappe/frappe/__init__.py", line 1610, in call
    return fn(*args, **newargs)
  File "apps/frappe/frappe/desk/form/save.py", line 28, in savedocs
    doc.save()
  File "apps/frappe/frappe/model/document.py", line 305, in save
    return self._save(*args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 327, in _save
    return self.insert()
  File "apps/frappe/frappe/model/document.py", line 259, in insert
    self.run_before_save_methods()
  File "apps/frappe/frappe/model/document.py", line 1045, in run_before_save_methods
    self.run_method("validate")
  File "apps/frappe/frappe/model/document.py", line 914, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 1264, in composer
    return composed(self, method, *args, **kwargs)
  File "apps/frappe/frappe/model/document.py", line 1246, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
  File "apps/frappe/frappe/model/document.py", line 911, in fn
    return method_object(*args, **kwargs)
  File "apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py", line 122, in validate
    self.validate_qty()
  File "apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py", line 433, in validate_qty
    transferred_materials = frappe.db.sql(
  File "apps/frappe/frappe/database/database.py", line 220, in sql
    self._cursor.execute(query, values)
  File "env/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
    result = self._query(query)
  File "env/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
    conn.query(q)
  File "env/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "env/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
    result.read()
  File "env/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
    first_packet = self.connection._read_packet()
  File "env/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
    packet.raise_for_error()
  File "env/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "env/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.OperationalError: (1052, "Column 'qty' in field list is ambiguous")
2023-07-20 13:51:17 +05:30
Gursheen Anand
610ead22e8 fix: show only projects with access in customer portal 2023-07-20 13:08:26 +05:30
Rohit Waghchaure
16498627ce fix: made item or warehouse filter mandatory 2023-07-20 13:00:05 +05:30
Deepesh Garg
3bc79eebe3 Merge pull request #35689 from marination/payments-based-dunning
feat: Payments based dunning
2023-07-20 12:06:36 +05:30
ruthra kumar
e7e3853f81 test: overallocation validation in payment entry 2023-07-20 09:08:55 +05:30
HarryPaulo
4b4d828260 fix: inserting of items with pricing rule with qty range 2023-07-19 13:02:55 -03:00
Gursheen Anand
3f5afb9cac fix: reset dimension defaults when company changedin test 2023-07-19 18:15:59 +05:30
Gursheen Anand
23e56d3ec1 fix: clear dimension defaults after test 2023-07-19 16:07:32 +05:30
Deepesh Garg
781e57f5bf Merge pull request #36189 from deepeshgarg007/default_dashboard_dates
fix: Default fiscal year in accounting, buying and selling charts
2023-07-19 13:28:04 +05:30
Deepesh Garg
3759a41b83 fix: Default fiscal year in accounting, buying and sellingcharts 2023-07-19 13:17:12 +05:30
Gursheen Anand
2f7b112736 fix: filter by party in opening row calculation 2023-07-19 12:36:44 +05:30
Gursheen Anand
e19a6f5dcb fix: fetch acc dimensions correctly when fieldname is different from name 2023-07-19 12:26:57 +05:30
Ankush Menat
0218f11f47 ci: dont run tests on branch
6dda420176
2023-07-19 12:17:32 +05:30
Gursheen Anand
b3f6d991b5 fix: duplicate acc dimension in test 2023-07-19 12:02:26 +05:30
Gursheen Anand
dd37f6cbd6 fix: show tax withholding category details for customers 2023-07-19 11:51:45 +05:30
ruthra kumar
bccfd22fc0 Merge pull request #36181 from ruthra-kumar/fix_broken_overallocation_validation_on_multi_term_payment_against_invoice
fix: broken overallocation validation in payment entry
2023-07-19 10:46:41 +05:30
ruthra kumar
ee83f94bb0 refactor: payment term outstanding in party account currency 2023-07-19 10:06:49 +05:30
ruthra kumar
f8d4b19cb9 fix: broken overallocation validation in payment entry
In a multi term payment schedule, overallocation logic broke. Fixing
it using individual term outstanding amount in references. this should
work for the simple, one term payment schedule as well
2023-07-18 21:04:13 +05:30
mergify[bot]
b4db5e9561 fix: validate docs in closed accounting period on save (#36157)
fix: validate docs in closed accounting period on save (#36157)

(cherry picked from commit 5985e02574)

Co-authored-by: Anand Baburajan <anandbaburajan@gmail.com>
2023-07-18 17:40:49 +05:30
Gursheen Anand
77deac4fb9 test: PI offsetting entry for accounting dimension 2023-07-18 15:51:01 +05:30
Deepesh Garg
fbea61bbc6 fix: Trailing opening entries in Accounts closing balance (#36175) 2023-07-18 15:16:52 +05:30
Ankush Menat
07d2b896c1 fix: log error during exotel migration 2023-07-18 13:01:33 +05:30
Gursheen Anand
3a3ffa2307 fix: divide offsetting amount only when account exists 2023-07-18 12:51:09 +05:30
Deepesh Garg
cfae52a40a fix: Opening balance in TB report (#36171) 2023-07-18 12:26:19 +05:30
Gursheen Anand
1e1e4b93c1 fix: divide offsetting amount for multiple dimensions 2023-07-18 12:12:24 +05:30
s-aga-r
9fb1533b8f fix(test): test_stock_reservation_against_sales_order (#36166) 2023-07-18 08:31:02 +05:30
rohitwaghchaure
55d5469740 Merge pull request #36168 from frappe/mergify/bp/develop/pr-36162
fix: incorrect Reserved Qty for Production Plan in BIN for the multi-uom case (backport #36162)
2023-07-17 22:44:02 +05:30
Deepesh Garg
9e791efc82 refactor: client side accounts controller 2023-07-17 21:44:43 +05:30
Deepesh Garg
43e65d91ea chore: Remove unused files 2023-07-17 21:26:40 +05:30
Rohit Waghchaure
7af3c3d0b6 fix: incorrect Reserved Qty for Production Plan in BIN for multi-uom case
(cherry picked from commit 2f632d031a)
2023-07-17 15:11:13 +00:00
barredterra
ecaf0aba3c fix: rounding of percentage fields
Always round with precision of 2
2023-07-17 16:45:11 +02:00
Gursheen Anand
ed3bef1840 fix: dict value for dimension for gl entries defined without the dimension 2023-07-17 18:40:52 +05:30
Gursheen Anand
4004427892 test: TB report balanced whenfiltered using acc dimension 2023-07-17 17:57:03 +05:30
Sagar Vora
3b246fd7e6 Merge pull request #36163 from resilient-tech/consistent-quotes 2023-07-17 15:46:40 +05:30
Sagar Vora
bccb718cc2 chore: use consistent quotes 2023-07-17 15:45:36 +05:30
Gursheen Anand
22ba12172f fix: make offsetting entry for all doctypes 2023-07-17 15:17:53 +05:30
Marica
1c1e7380e3 Merge branch 'develop' into payments-based-dunning 2023-07-17 12:33:19 +05:30
Deepesh Garg
ef19634a13 chore: fix build 2023-07-17 12:25:56 +05:30
Gursheen Anand
4e09de4db2 fix: fetch accounting dimension details specific to company 2023-07-17 11:47:33 +05:30
Anand Baburajan
305c37917f chore: add validation for account type of party type and account (#36141)
chore: add validation to check if account type of party type and account match
2023-07-17 11:00:19 +05:30
Kitti U. @ Ecosoft
2607847061 refactor: Leave Application should not be in hook.py (#36008) 2023-07-17 10:14:37 +05:30
rohitwaghchaure
a0742c52bb Merge pull request #36151 from rohitwaghchaure/table-for-serial-and-batch
fix: Added report 'Serial and Batch Summary' to view serial / batch nos
2023-07-16 19:50:15 +05:30
Florian HENRY
e48dc0808d Merge branch 'develop' of https://github.com/frappe/erpnext into dev_feat_adress_contact_report 2023-07-16 11:28:59 +02:00
Rohit Waghchaure
708eefb383 fix: Added report 'Serial and Batch Summary' to view serial / batch nos 2023-07-16 13:28:08 +05:30
Deepesh Garg
6270607c6d fix: Remove current fiscal year from Global Defaults (#35960)
* fix: Remove current fiscal year from Global Defaults

* fix: Remove button to set default

* fix: Add utils to get fiscal year

* fix: Incorrect import

* feat: Add hook for naming series parser
2023-07-16 12:58:42 +05:30
Ankush Menat
c545399b96 Merge pull request #36150 from ankush/perf/desk_requests
perf: send SLA doctypes in boot
2023-07-16 12:30:40 +05:30
Ankush Menat
bd9ef74ef7 perf: send SLA doctypes in boot
This request is fired on every load, data rarely if ever changes though.
2023-07-16 11:38:54 +05:30
Deepesh Garg
f0d4c4c180 Merge branch 'develop' of https://github.com/frappe/erpnext into eslint 2023-07-15 20:29:14 +05:30
Deepesh Garg
a6ce20a0fc chore: Remove domain related files 2023-07-15 19:40:53 +05:30
Gursheen Anand
d3759b3971 fix: make offsetting entry for acc dimensions 2023-07-15 19:32:56 +05:30
Deepesh Garg
3fa2a8c2d8 chore: fix linting issues 2023-07-15 18:03:16 +05:30
s-aga-r
6daaf42b38 Merge pull request #36133 from s-aga-r/FIX-ISS-23-24-02011
perf: index in `Item` and `Item Variant Attribute`
2023-07-15 10:09:27 +05:30
Deepesh Garg
924cdef6d9 ci: add eslint and update linting confs 2023-07-14 18:53:02 +05:30
Deepesh Garg
297c7e833c fix: Opening entries showing up incorrectly in TB report (#36135)
* fix: Opening entries showing up incorrectly in TB report

* chore: Linting Issue
2023-07-14 18:39:37 +05:30
Ankush Menat
6b0b6404fc Merge pull request #36131 from surajshetty3416/move-exotel-to-separate-app
refactor!: Remove exotel
2023-07-14 18:23:00 +05:30
s-aga-r
8f5b94f5fd fix: TypeError while creating WO from PP (#36136) 2023-07-14 18:01:11 +05:30
Rucha Mahabal
692bfccb6e Merge pull request #36116 from barredterra/local-holidays 2023-07-14 17:46:18 +05:30
Ankush Menat
41b6b739c0 fix: touch modified to migrate 2023-07-14 17:39:25 +05:30
Ankush Menat
d95559a53c fix: patch for exotel 2023-07-14 17:39:22 +05:30
s-aga-r
04400eb2e4 perf: index disabled in Item 2023-07-14 17:18:55 +05:30
s-aga-r
e4128a5c91 perf: index variant_of and attribute in Item Variant Attribute 2023-07-14 17:17:24 +05:30
Gursheen Anand
a93d7633d4 test: purchase register and ledger view 2023-07-14 17:16:39 +05:30
barredterra
dab9688410 refactor(Holiday List): use autocomplete fieldtype 2023-07-14 13:33:55 +02:00
Gursheen Anand
b8a83f57b7 chore: fix typo 2023-07-14 16:25:58 +05:30
Suraj Shetty
23bc87f2aa Merge branch 'develop' of https://github.com/frappe/erpnext into move-exotel-to-separate-app 2023-07-14 16:21:48 +05:30
barredterra
8aff5a1dab fix(Holiday List): allow empty value 2023-07-14 12:33:27 +02:00
Deepesh Garg
ac9ad8ec36 fix: Handle multi-company in patch (#36127)
fix: Handle multi-compnay in patch
2023-07-14 15:56:59 +05:30
barredterra
8271a39cdb fix(Holiday List): use current user's language
For consistency with "weekly off" descriptions
2023-07-14 12:16:49 +02:00
barredterra
509061f05b fix: German translations of Holiday List 2023-07-14 12:14:01 +02:00
barredterra
4888d75e72 feat(Holiday List): display localized country name 2023-07-14 11:59:45 +02:00
Gursheen Anand
0d89bfacdb fix: show additional table cols from india compliance api call 2023-07-14 13:03:22 +05:30
Kitti U. @ Ecosoft
3b884efca9 fix: get_dimension with_cost_center_and_project=false is not working. (#35974)
* fix: get_dimension with_cost_center_and_project=false is not working.

with_cost_center_and_project is no python str, and it always evaluated as True, despite JS call it with false

* chore: Linting Issues

---------

Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
2023-07-14 13:03:00 +05:30
Raffael Meyer
d5fe1432f8 fix: improve "Update Items" modal (#36105)
* fix: make "Update Items" modal larger

* fix: remove conversion factor from overview

Conversion factor doesn't make much sense without two different UOMs
next to it, hence moving it to row detail view
2023-07-14 12:27:35 +05:30
Gursheen Anand
c084fe6b3f refactor: filter accounting dimensions using qb 2023-07-14 11:05:50 +05:30
Gursheen Anand
944244ceff fix: modify rows and columns for ledger view 2023-07-14 10:50:12 +05:30
Deepesh Garg
b4bd978791 fix: Account balance patch and query fixes (#36117) 2023-07-14 10:28:36 +05:30
Ankush Menat
b5f6a1cc20 ci: fix repo name in relase notes workflow
[skip ci]
2023-07-13 21:04:09 +05:30
barredterra
fd23bd0434 test(Holiday List): weekly off and local holidays 2023-07-13 14:13:33 +02:00
barredterra
aa18b25a71 feat: add local holidays 2023-07-13 13:29:07 +02:00
Deepesh Garg
d631c7dffa fix: Accounts closing balance patch (#36113) 2023-07-13 16:10:05 +05:30
ruthra kumar
72f577aad2 fix: incorrect idx on JE's after reconciliation 2023-07-13 15:12:58 +05:30
s-aga-r
5f307f92e0 refactor: Batch Item Expiry Status report (#36106) 2023-07-13 05:44:58 +05:30
Gursheen Anand
21c993a7b3 fix: clear accounting dimension value when based on field changes 2023-07-12 20:32:08 +05:30
Gursheen Anand
c973e3c746 chore: remove debugging print statements 2023-07-12 17:40:27 +05:30
Gursheen Anand
bf08aa7529 fix: filtering through accounting dimensions 2023-07-12 17:17:58 +05:30
Gursheen Anand
f5027fdcaf refactor: move fn to fetch advance taxes to utils & use qb 2023-07-12 16:42:58 +05:30
Gursheen Kaur Anand
596a14e34f feat: add project filter in reports importing financial statements js file (#36097)
feat: add project filter in financial statements js file
2023-07-12 15:49:17 +05:30
Gursheen Anand
6c11ca1b75 refactor: use qb to fetch PE JV and Inv 2023-07-12 14:43:18 +05:30
Ankush Menat
0340bfc90d ci: regen release notes with GH API (#36098)
[skip ci]
2023-07-12 12:17:20 +05:30
Gursheen Anand
1e8b8b5b29 fix: linting issues 2023-07-12 11:14:03 +05:30
Gursheen Kaur Anand
1094319e3e Merge branch 'develop' into purchase-sales-register-with-PE/JE 2023-07-12 11:00:35 +05:30
Deepesh Garg
0a6c565eb3 fix: Ambiguous column error while submitting stock entry
fix: Ambiguous column error while submitting stock entry
2023-07-12 10:18:38 +05:30
Gursheen Anand
dd8c3d5462 feat: filter based on accounting dimension in profitability analysis 2023-07-12 10:00:18 +05:30
mergify[bot]
8580287092 fix: allow manual asset receipt mov from nowhere (backport #36093) (#36094)
fix: allow manual asset receipt mov from nowhere (#36093)

(cherry picked from commit 4aaa1a15d7)

Co-authored-by: Anand Baburajan <anandbaburajan@gmail.com>
2023-07-12 08:26:49 +05:30
HarryPaulo
2268f7db43 fix: paid_amount when the group is mode of payment 2023-07-11 11:35:37 -03:00
rohitwaghchaure
59e54eabef Merge pull request #36088 from rohitwaghchaure/fixed-reposting-circulr-dependecy
fix: circular dependency during reposting causing timeout error
2023-07-11 18:28:39 +05:30
Ankush Menat
7e4b6683e6 fix: Dont bold URL parts
closes https://github.com/frappe/frappe/issues/21445
2023-07-11 18:19:50 +05:30
Rohit Waghchaure
c16a5814d4 fix: circular dependency during reposting causing timeout error 2023-07-11 17:51:44 +05:30
s-aga-r
be5881280f fix: incorrect status in MR created from PP (#36085) 2023-07-11 17:09:23 +05:30
Gursheen Anand
7650b0073a fix: validate party filter for fetching payments 2023-07-11 15:18:28 +05:30
Gursheen Anand
d5aa0e325e feat: fetch JV with PE 2023-07-11 14:47:23 +05:30
Deepesh Garg
ce9164ec69 fix: Validate for missing expense account (#36078)
* fix: Validate for missing expense account

* fix: Validate for missing expense account
2023-07-11 12:03:38 +05:30
ruthra kumar
e44615f52b Merge pull request #36076 from ruthra-kumar/possible_type_error_on_err_creation
fix: possible type error on ERR creation
2023-07-11 10:37:37 +05:30
ruthra kumar
176966daab fix: possible type error on ERR creation 2023-07-11 10:04:17 +05:30
Raffael Meyer
bf84e0d441 refactor: remove frappe.dynamic_link (#35096) 2023-07-10 21:22:06 +05:30
mergify[bot]
872a23c77d fix: also check on_hold (#35910)
fix: also check on_hold (#35910)

(cherry picked from commit 5aa02b8571)

Co-authored-by: RJPvT <48353029+RJPvT@users.noreply.github.com>
2023-07-10 20:34:54 +05:30
Dany Robert
361a357088 fix: payment entry voucher_type error (#35779)
* fix: payment entry `voucher_type` error

* chore: linters
2023-07-10 19:32:59 +05:30
Gursheen Anand
9c87997dae fix: fetch cost center for PE 2023-07-10 19:12:19 +05:30
Gursheen Anand
cbef6c30c3 refactor: move repeating code to common controller 2023-07-10 18:39:35 +05:30
Gursheen Anand
d7ffad1dd3 feat: fetch PE along with SI 2023-07-10 18:07:55 +05:30
Wolfram Schmidt
49c61e7ebb fix: Add company filter in list view (#36047)
fix: Add company filter in list view
2023-07-10 18:03:50 +05:30
rohitwaghchaure
06dcc4ed96 Merge pull request #36063 from rohitwaghchaure/fixed-valuation-for-dn-return
fix: Delivery Note return valuation
2023-07-10 17:48:41 +05:30
Rohit Waghchaure
6a10ae662c fix: Delivery Note return valuation 2023-07-10 17:06:02 +05:30
Dany Robert
5c820ecc20 fix: precision causing outstanding issue on partly paid invoices (#36030)
* fix: precision causing outstanding issue on partly paid invoices

* chore: linters
2023-07-10 16:20:45 +05:30
Dany Robert
12b459df8c fix: skip twc if not account set 2023-07-10 10:35:45 +00:00
Gursheen Anand
44493707e2 refactor: use single qb query for PE and PI 2023-07-10 14:37:33 +05:30
mergify[bot]
b3a99e38cc chore: add asset depr posting error in error log (backport #36052) (#36055)
chore: add asset depr posting error in error log (#36052)

(cherry picked from commit 0f9a6ee70a)

Co-authored-by: Anand Baburajan <anandbaburajan@gmail.com>
2023-07-10 14:31:19 +05:30
MohsinAli
2816076789 1052, "Column 'qty' in field list is ambiguous in work_order.py 2023-07-10 14:09:41 +05:30
rohitwaghchaure
22eee472dd Merge pull request #36001 from rohitwaghchaure/fixed-added-validation-for-rejected-warerhouse
fix: accepted warehouse and rejected warehouse can't be same
2023-07-10 13:55:20 +05:30
Gursheen Anand
4f0aa54c09 feat: add check for fetching PE along with Invoice details in Purchase Register 2023-07-10 13:38:30 +05:30
rohitwaghchaure
b16f364866 Merge pull request #36054 from rohitwaghchaure/fixed-incorrect-stock-levels
fix: incorrect stock levels in the Batch
2023-07-10 13:35:59 +05:30
Rohit Waghchaure
d618aaef32 fix: accepted warehouse and rejected warehouse can't be same 2023-07-10 13:19:17 +05:30
Rohit Waghchaure
aeaf8fd89c fix: incorrect stock levels in the Batch 2023-07-10 13:03:10 +05:30
ruthra kumar
3ef034dda8 Merge pull request #36051 from ruthra-kumar/auto_exchange_rate_revaluation_creation
feat: Provision to auto create Exchange Rate Revaluation
2023-07-10 12:59:23 +05:30
Ankush Menat
407642869a ci: auto release beta version
[skip ci]
2023-07-10 12:48:47 +05:30
aioaccount
46fe9ac5cd fix: labels and translations (#35963)
fix: labels and translations
* fix: Vietnamese translation of customer
* fix: Vietnamese translation of bill
2023-07-09 20:41:52 +05:30
Gursheen Kaur Anand
674af15696 fix: deferred accounting entries on accounts frozen (#35978)
* fix: accounts frozen entries in deferred accounting

* test: accounts frozen date in deferred accounting

* fix: reset account settings after running test

* fix: resolve conflicts

* fix: modify expected gle when deferred accounting is disabled through JE

* fix: change posting date when accounts not frozen
2023-07-09 20:41:12 +05:30
Raffael Meyer
af28f95c60 refactor(Payment Entry): translatable strings (#36017)
* refactor(Payment Entry): translatable strings

* fix: German translations
2023-07-09 20:19:53 +05:30
aioaccount
ef7fd7548c fix: Vietnamese translation of "Company" (#35887)
fix: Vietnamese translation of "Company"
2023-07-09 20:17:35 +05:30
Deepesh Garg
4d07e20b05 fix: Opening balance in presentation currency in Trial Balance report (#36036) 2023-07-09 20:16:12 +05:30
Raffael Meyer
353d765140 fix: German translations (#35990)
* fix: add missing German translation

* fix: wrong German translation
2023-07-09 14:14:34 +05:30
Navin Balaji
828e647019 fix: bank reconciliation tool variable issue (#36022)
fix: bank reconciliation tool variable issue (#36022)
2023-07-09 14:13:48 +05:30
Deepesh Garg
bb5387fa5d fix: Add demo setup check in setup wizard 2023-07-07 10:49:56 +05:30
ruthra kumar
4f51c5a433 refactor: submit and make JV through background job 2023-07-07 05:49:53 +05:30
Raffael Meyer
4badac8e9e fix(Payment Entry): compare rounded amount (#36011) 2023-07-05 21:35:41 +05:30
mergify[bot]
98281341b9 fix: handle loan_repayment's posting_date datetime in bank_clearance_summary report (backport #36004) (#36005)
* fix: handle loan_repayment's posting_date datetime in bank_clearance_summary report (#36004)

(cherry picked from commit 937e1fb024)

# Conflicts:
#	erpnext/accounts/report/bank_clearance_summary/bank_clearance_summary.py

* chore: resolving conflicts

---------

Co-authored-by: Anand Baburajan <anandbaburajan@gmail.com>
2023-07-04 22:46:00 +05:30
Deepesh Garg
0a17c78a36 fix: Share ledger showing cancelled docs (#35993) 2023-07-04 17:49:07 +05:30
Sagar Vora
30e4052a76 feat(accounts): standardize additional columns implementation for sales/purchase reports (#36000) 2023-07-04 17:41:30 +05:30
Deepesh Garg
2f169575e9 fix: Netherlands - Grootboekschema COA structure (#35991)
fix: Netherlands - Grootboekschema coa structure
2023-07-04 15:30:27 +05:30
Ankush Menat
a449a4be29 chore: Add frappe school links (#35995)
Frappe School provides plenty of free tutorial for learning ERPNext.
2023-07-04 14:58:45 +05:30
barredterra
a939431d48 fix: german translations 2023-07-03 21:03:24 +02:00
barredterra
e686bb0739 Merge remote-tracking branch 'upstream/develop' into payments-based-dunning 2023-07-03 19:56:42 +02:00
rohitwaghchaure
8179d6a30d Merge pull request #35977 from rohitwaghchaure/reserve-pos-invoice-batches
fix: reserve the pos invoice batches
2023-07-03 22:33:45 +05:30
Rohit Waghchaure
1e8f6c0840 fix: reserve the pos invoice batches 2023-07-03 17:38:48 +05:30
ruthra kumar
6644311c8b refactor: checkbox for enabling auto ERR creation 2023-07-03 14:31:13 +05:30
Anand Baburajan
dedb5e23f7 fix: delete loan module workspace properly after separation (#35971)
* fix: delete loan module workspace properly after separation

* chore: run remove_loan_management_module patch again
2023-07-03 13:06:46 +05:30
Deepesh Garg
5448859254 fix: Update no copy for received_qty field (#35965) 2023-07-03 13:03:52 +05:30
Vishnu VS
e05b33a6c2 feat: add method for ordered quantity in supplier scorecard (#35930)
fix: add method for getting ordered quantity in the supplier scorecard variable.

Co-authored-by: vishnu <vishnuviswambara2002@gmail.com>
2023-07-03 09:23:27 +05:30
rohitwaghchaure
ab58c01a0f Merge pull request #35961 from frappe/mergify/bp/develop/pr-35955
fix: incorrect reposting causing stock adjustment entry (backport #35955)
2023-07-02 11:17:37 +05:30
rohitwaghchaure
232dfad13a fix: conflicts 2023-07-02 10:45:12 +05:30
Rohit Waghchaure
b77a808921 fix: reposting has not changed valuation rate
(cherry picked from commit c0c693d8b0)

# Conflicts:
#	erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
2023-07-02 05:13:29 +00:00
Deepesh Garg
3df0c5e32f Merge pull request #35609 from GursheenK/#34282-Record-advance-payment-as-a-liability
feat: Record Advance Payment as a liability
2023-07-01 17:49:49 +05:30
Deepesh Garg
d54f52474a fix: Expense Account filter in Sales Invoice (#35944) 2023-06-30 20:02:46 +05:30
Deepesh Garg
be5cb1aa17 Merge pull request #35943 from GursheenK/company-specific-proj-filtering
fix: project filtering based on company in P&L Report
2023-06-30 20:01:24 +05:30
Deepesh Garg
fda2d2bd59 Merge branch 'develop' of https://github.com/frappe/erpnext into #34282-Record-advance-payment-as-a-liability 2023-06-30 19:35:34 +05:30
Deepesh Garg
80e6c90740 chore: precision in test 2023-06-30 19:35:22 +05:30
Florian HENRY
da72bd9819 feat: add Lead to Adresse And contact report 2023-06-30 15:11:45 +02:00
Deepesh Garg
7e7737d692 test: Update test account 2023-06-30 18:37:52 +05:30
Deepesh Garg
0a49213338 test: Update test records 2023-06-30 17:32:42 +05:30
s-aga-r
fa3ab678e1 Merge pull request #35945 from s-aga-r/BATCH-DISABLE-FILTER
fix: add filter for disabled batch
2023-06-30 13:39:11 +05:30
Marica
0a67a3a9c4 Merge branch 'develop' into payments-based-dunning 2023-06-30 13:32:50 +05:30
Deepesh Garg
bbb6ebb84e fix: Outstanding amount validation 2023-06-30 13:25:22 +05:30
Gursheen Anand
84d4888f5f fix: make company field mandatory in project doctype 2023-06-30 12:54:45 +05:30
Gursheen Anand
ce252a0d45 fix: show projects with no company value set 2023-06-30 12:42:19 +05:30
s-aga-r
90a77030a7 fix: add filter for disabled batch 2023-06-30 12:34:39 +05:30
Gursheen Anand
904ca746a6 fix: project filtering in P&L Report 2023-06-30 12:11:23 +05:30
Anand Baburajan
988d755906 refactor!: removing loan management module (#35522)
* chore: resolving conflicts

* refactor: bank_clearance and add hook for get_payment_entries_for_bank_clearance

* refactor: bank_reconciliation_tool and add hook for get_matching_vouchers_for_bank_reconciliation

* fix: remove sales invoice from bank_reconciliation_doctypes and use hook for voucher clearance

* refactor: remove loan tests from test_bank_transaction

* refactor: bank_clearance_summary and add hook for get_entries_for_bank_clearance_summary

* refactor: removed test_bank_reconciliation_statement

* refactor: bank_reconciliation_statement and add hook for get_amounts_not_reflected_in_system_for_bank_reconciliation_statement

* refactor: add missing hook and patches for module removal and deprecation warning

* refactor: remove loan management translations

* chore: add erpnext tests dependent on lending
2023-06-30 11:02:49 +05:30
rohitwaghchaure
9f1cf0bbb0 Merge pull request #35921 from rohitwaghchaure/fixed-seperate-table-for-schedule
refactor: separate table added to track scheduling in the job card.
2023-06-29 22:24:47 +05:30
s-aga-r
fe4161e4d7 Merge pull request #35935 from s-aga-r/FIX-35898
feat: allow the partial return of components against SCO
2023-06-29 21:20:59 +05:30
Rohit Waghchaure
497c83eb7e refactor: separate table added to track scheduling in the job card 2023-06-29 20:51:44 +05:30
s-aga-r
2a60884abc fix: reduce return qty while calculating transferred qty 2023-06-29 18:59:18 +05:30
s-aga-r
2f6d56dd62 fix: don't update SCO status to closed until full return 2023-06-29 18:44:40 +05:30
Deepesh Garg
0408b6d655 Merge branch 'develop' of https://github.com/frappe/erpnext into #34282-Record-advance-payment-as-a-liability 2023-06-29 12:19:42 +05:30
Deepesh Garg
1e078d03bb fix: Partial PLE cancellation 2023-06-29 12:18:25 +05:30
RJPvT
1d1103f39c chore: update translations
chore: update translations
2023-06-29 11:02:08 +05:30
Deepesh Garg
06821f9781 Merge pull request #35904 from GursheenK/voucher-wise-balance-report
feat: add voucher-wise balance report for unequal dr/cr GL entries
2023-06-29 09:07:45 +05:30
Anand Baburajan
50cbdc778f Merge pull request #35923 from frappe/mergify/bp/develop/pr-35918
fix: asset movement (backport #35918)
2023-06-28 20:59:50 +05:30
Anand Baburajan
a4d6f2eba6 fix: asset movement (#35918)
fix: asset movement fixes
(cherry picked from commit e16c14863b)
2023-06-28 14:46:27 +00:00
Ankush Menat
86f453593a perf: avoid perm checks from background jobs 2023-06-28 20:15:29 +05:30
Ankush Menat
9e1736e027 fix: index collect_progress and project date (#35920)
There's background job to send progress update, this ends up scanning
entire table.
2023-06-28 19:19:14 +05:30
marination
5a952987a3 fix: Use this.frm (Linter) 2023-06-28 17:13:34 +05:30
Marica
0498a31c42 Merge branch 'develop' into payments-based-dunning 2023-06-28 16:48:22 +05:30
Gursheen Kaur Anand
b9e9204e52 fix: create multiple variants button count and status (#35915)
fix: change class for fetching columns in multiple variants
2023-06-28 15:39:00 +05:30
Gursheen Kaur Anand
5113a417a1 fix!: UX of supplier linking with supplier users on portal pages (#35836)
* fix: create and add Portal Users child table in Supplier/Customer

Issue #35772

* fix: modify the original permission check hook

* fix: auto-add role for portal users

* fix: added patch for auto-populating portal users

* fix: modify patch to fetch users correctly

* fix: remove unnecessary code for updating naming_series

* fix(UX): show portal user in list view

Also split columns to reduce whitespace.

* refactor: simpler role checking

* fix: consider parenttype while fetching portal user

* refactor: simpler code, rename variable

* test: supplier portal user can access their docs

* refactor: only add role if not added

* refactor: rename and move patch to supplier

* refactor: dont add role if no perm or existing doc

* fix: add role before save

* refactor: run query directly

* refactor: split patch and apply roles

- if role isn't present dont add portal user
- ignore failure as it's not critical

* test: fix permission creation for webform test

---------

Co-authored-by: Ankush Menat <ankush@frappe.io>
2023-06-28 11:22:40 +05:30
mergify[bot]
e832455790 perf: improve item wise register reports (backport #35908) (#35911)
perf: improve item wise register reports (#35908)

(cherry picked from commit 33ee01174b)

Co-authored-by: Anand Baburajan <anandbaburajan@gmail.com>
2023-06-28 10:25:03 +05:30
Gursheen Anand
6b9f9f9b0e fix: remove debug flag from sql 2023-06-27 21:59:35 +05:30
Deepesh Garg
7312827d4d fix: On cancel flow 2023-06-27 18:25:10 +05:30
Deepesh Garg
f2edc91dc6 fix: Multi invoice reconciliation 2023-06-27 18:11:47 +05:30
Gursheen Anand
5d726ef037 feat: add voucher-wise balance report logic 2023-06-27 16:49:28 +05:30
HLD
af418d2342 fix: filter parent warehouses not showing (#35897) 2023-06-27 13:17:52 +05:30
s-aga-r
77d08b6dbe Merge pull request #35894 from s-aga-r/FIX-35888
fix(ux): PO Get Items From Open Material Requests
2023-06-27 11:56:46 +05:30
s-aga-r
3a00bf83d6 fix(ux): PO Get Items From Open Material Requests 2023-06-27 11:55:45 +05:30
David Arnold
742df8a25e fix: delivery trip driver is only required on submit (#35876)
This allows drafting trips and stops without yet deciding on the
assignable driver which, in real life, may well be decided on after
preparing and planning the trip.
2023-06-27 11:36:44 +05:30
Deepesh Garg
2d2f0f02d6 Merge pull request #35886 from deepeshgarg007/ldc_breach_fix
fix: TDS amount calculation post LDC breach
2023-06-27 09:39:06 +05:30
Deepesh Garg
62c3ca8286 fix: Paid invoice in AR report 2023-06-26 23:53:55 +05:30
Deepesh Garg
1f9ef6c48f fix: TDS amount calculation post LDC breach 2023-06-26 22:01:12 +05:30
Deepesh Garg
d5bdd9387a chore: Do not update shopping cart settings on install 2023-06-26 18:35:01 +05:30
Deepesh Garg
490b64575b test: Add basic test for demo data 2023-06-26 18:33:51 +05:30
ruthra kumar
84ea0a828c Merge pull request #35882 from ruthra-kumar/refactor_cr_note_reconciliation_with_exchange_gain_loss
refactor: simplify exchange logic on cr/dr note reconciliation
2023-06-26 17:32:12 +05:30
rohitwaghchaure
0e14ea4e32 Merge pull request #35881 from rohitwaghchaure/fixed-serial-batch-bundle-print
fix: serial and batch bundle values in the standard print format
2023-06-26 16:21:34 +05:30
ruthra kumar
af75f6cea7 refactor: simplify exchange logic on cr/dr note reconciliation 2023-06-26 16:09:54 +05:30
Rohit Waghchaure
9cf645e07f fix: serial and batch bundle values in the standard print format 2023-06-26 16:00:53 +05:30
Suraj Shetty
f0a0f078fc Merge pull request #35880 from surajshetty3416/update-node-version 2023-06-26 13:10:30 +05:30
Suraj Shetty
881e95b440 chore: Update required node version to v18 2023-06-26 13:02:08 +05:30
Anand Baburajan
36d26d40a0 perf: improve asset depr schedule creation patch (#35867) 2023-06-26 10:58:36 +05:30
ruthra kumar
a90fe25cc4 Merge pull request #35868 from ruthra-kumar/get_base_grand_total_while_pulling_reference_details
fix: incorrect outstanding and total amount in reference table of payment entry
2023-06-25 18:29:54 +05:30
Deepesh Garg
ebeb5e0cb7 Merge pull request #35594 from nikkothari22/make-accounting-dimension-filter-values-optional
feat: added support for mandatory dimensions per account without applying restrictions on dimension values
2023-06-25 17:55:26 +05:30
Deepesh Garg
63b126967e chore: Linting Issues 2023-06-25 16:24:22 +05:30
Deepesh Garg
bcff4b0e5a chore: linting issues 2023-06-25 16:03:58 +05:30
Deepesh Garg
c7186ff95c Merge pull request #35789 from GursheenK/Provision-to-send-Accounts-Receivable-Reports
feat: Provision to send Accounts Receivable Reports using Process SOA
2023-06-24 17:10:50 +05:30
Patrick Eissler
feafa956f7 feat: add German translations for new email template feature (#35865) 2023-06-24 16:35:52 +05:30
HarryPaulo
1e20016059 fix: POS Closing Entry load all invoices with one request on save (#35819)
fix: load all invoices with one request
2023-06-24 16:34:24 +05:30
Deepesh Garg
4de7a4c571 chore: update typo in patch 2023-06-24 16:31:19 +05:30
Devin Slauenwhite
f9ed8c10ab fix: make reorder_level not required (#35831)
* fix: make reorder_level not required

* fix: allow material request to be made if projected_qty <= reorder_level
2023-06-24 16:03:15 +05:30
Devin Slauenwhite
802c89ffb3 feat: allow Sales Invoice as data source (#35855)
* feat: allow Sales Invoice as data source

* chore: linter
2023-06-24 12:31:16 +05:30
Deepesh Garg
1894dc8197 fix: Test case and code cleanup 2023-06-23 21:53:34 +05:30
Deepesh Garg
da6bc1a13e refactor: Redo workflows 2023-06-23 20:57:51 +05:30
ruthra kumar
2f638ae32a Merge pull request #35604 from pps190/fix-reconcile-invoice-return
fix: reconcile invoice against credit note.
2023-06-23 17:44:25 +05:30
ruthra kumar
9655d78642 test: test reference details response 2023-06-23 17:24:19 +05:30
Marica
2868baebab fix: Payment Term must be mandatory if Allocate Payment based on .. is checked (#35798)
- Front and Back end validation of condition
- Fix test to accomodate fix
2023-06-23 16:00:20 +05:30
Deepesh Garg
df035f6b19 Merge branch 'develop' into Provision-to-send-Accounts-Receivable-Reports 2023-06-23 15:58:38 +05:30
ruthra kumar
9e73af891d fix: get base grand total while pulling reference details in PE 2023-06-23 14:50:14 +05:30
Gursheen Anand
cde82bc0cc fix: modify patch 2023-06-23 12:12:32 +05:30
Gursheen Anand
555c126eb9 fix: add patch for setting default value of report field 2023-06-23 10:52:25 +05:30
mergify[bot]
9a993b0364 fix: show non-depreciable assets in fixed asset register (backport #35858) (#35860)
fix: show non-depreciable assets in fixed asset register (#35858)

fix: show non-depr assets in fixed asset register
(cherry picked from commit 42d09448ee)

Co-authored-by: Anand Baburajan <anandbaburajan@gmail.com>
2023-06-23 08:25:00 +05:30
Anand Baburajan
f37484c6fe chore: better err msg on cancelling JE for asset scrap [dev] (#35850)
chore: better err msg on cancelling JE for asset scrap
2023-06-22 22:32:06 +05:30
rohitwaghchaure
f4f8df6cfe Merge pull request #35842 from rohitwaghchaure/fixed-multiple-work-orders-against-sigle-production-order
fix: multiple Work Orders against same production plan
2023-06-22 22:11:09 +05:30
Deepesh Garg
904f835d4a Merge pull request #35602 from deepeshgarg007/pl_account_balance
fix: Remove special treatment for P&L Accounts
2023-06-22 21:11:23 +05:30
Deepesh Garg
05c2198569 test: Update order 2023-06-22 21:08:58 +05:30
Deepesh Garg
13c0c129df Merge pull request #35828 from phot0n/pr-fieldname-item-wise-purchase-register
fix: use correct fieldname for purchase receipt column in item_wise_purchase_register report
2023-06-22 20:40:14 +05:30
Deepesh Garg
e8dff30973 Merge pull request #35846 from deepeshgarg007/patch_workflow_update
ci: use multiple python version in patch test
2023-06-22 20:38:05 +05:30
Deepesh Garg
11a9bd523d test: Add posting date parameter 2023-06-22 20:26:12 +05:30
Deepesh Garg
56e81ada56 ci: use multiple python version in patch test 2023-06-22 19:57:23 +05:30
Deepesh Garg
b101dceb2a test: GL Entry order 2023-06-22 19:38:33 +05:30
mergify[bot]
e745312a10 fix: asset capitalization (backport #35832) (#35843)
* fix: asset capitalization (#35832)

* fix: misc asset capitalisation fixes

* chore: add location in tests and remove unnecessary code

* chore: more fixes and removals

* chore: show company and fix tests

* chore: make target qty read only on capitalization

(cherry picked from commit fb823b53d1)

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

* chore: fixing conflicts

---------

Co-authored-by: Anand Baburajan <anandbaburajan@gmail.com>
2023-06-22 19:21:52 +05:30
Deepesh Garg
754eb6bdb6 Merge pull request #35650 from deepeshgarg007/ledger_preview
feat: Ledger Preview
2023-06-22 18:30:03 +05:30
Deepesh Garg
d81d6069fb fix: JV query 2023-06-22 18:28:16 +05:30
Deepesh Garg
d9e7bc545e fix: Do full rollback 2023-06-22 16:07:32 +05:30
Deepesh Garg
5c6e3269fb fix: Use GET request 2023-06-22 15:58:41 +05:30
Rohit Waghchaure
80fffbd64b fix: multiple Work Orders agaist same production plan 2023-06-22 15:57:28 +05:30
Deepesh Garg
b523c779f5 Merge branch 'develop' of https://github.com/frappe/erpnext into ledger_preview 2023-06-22 15:43:43 +05:30
Deepesh Garg
0e68da5a2a feat: Show stock ledger preview 2023-06-22 15:43:32 +05:30
ruthra kumar
dde09cb959 Merge pull request #35837 from ruthra-kumar/increase_precision_on_exchange_rate_revaluation
refactor: increase precision for current exc rate in Exchange Rate Revaluation
2023-06-22 13:39:51 +05:30
Deepesh Garg
6d121ae6e4 chore: fix typo 2023-06-22 13:03:09 +05:30
ruthra kumar
b4db25dd18 refactor: increase precision for current exc rate in ERR 2023-06-22 12:40:02 +05:30
rohitwaghchaure
d1bccc8c65 Merge pull request #35829 from rohitwaghchaure/refactor-returned-from-rejected-warehouse
fix: return against rejected warehouse (UX Issue)
2023-06-22 12:03:38 +05:30
Deepesh Garg
3aead05f42 fix: Test related errors 2023-06-22 11:41:43 +05:30
ruthra kumar
4e7deba2ad Merge pull request #35825 from ruthra-kumar/convert_db_call_to_whitelisted_method
fix: multiple fixes in reconciliation tools
2023-06-22 11:27:04 +05:30
ruthra kumar
41b9e92868 fix: incorrect cost center error in bank reconciliation 2023-06-22 10:43:13 +05:30
Deepesh Garg
b64ebc6fcc test: fix payment reco tests 2023-06-21 17:49:45 +05:30
Rohit Waghchaure
756dbe7ce8 refactor: return against rejected warehouse 2023-06-21 17:40:48 +05:30
Deepesh Garg
e7d2bcf108 Merge branch 'develop' of https://github.com/frappe/erpnext into ledger_preview 2023-06-21 17:16:46 +05:30
Deepesh Garg
ed76ee3e16 fix: Move ledger display to dialog 2023-06-21 17:15:46 +05:30
phot0n
dcfc86e3af fix: use correct fieldname for purchase receipt column in item_wise_purcchase_register report 2023-06-21 16:49:54 +05:30
mergify[bot]
39a1f4a4c1 fix: issue of asset value_after_depreciation field getting updated twice if workflow is enabled in Journal Entry (backport #35821) (#35826)
* Fixes issue of asset value_after_depreciation field getting updated twice if workflow is enabled in Journal Entry (#35821)

* Fixes issue of asset value_after_depreciation field getting updated twice if workflow is enabled in Journal Entry

* chore: remove unnecessary line break

* chore: formatting

---------

Co-authored-by: Anand Baburajan <anandbaburajan@gmail.com>
(cherry picked from commit 000ebe4479)

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

* chore: resolve conflicts

---------

Co-authored-by: saeedkola <mohammedsaeedk@gmail.com>
Co-authored-by: Anand Baburajan <anandbaburajan@gmail.com>
2023-06-21 15:38:06 +05:30
ruthra kumar
ad758b8d85 fix: no permission for accounts settings on payment reconciliation 2023-06-21 14:19:02 +05:30
rohitwaghchaure
edc38edabf Merge pull request #35611 from rohitwaghchaure/fix-dont-allow-to-create-reposting-entry-for-closing-stock-balance
fix: don't allow to make reposting entry for closing stock balance period
2023-06-21 14:15:40 +05:30
Deepesh Garg
92f845c0e1 chore: Advance fetching order 2023-06-21 12:21:19 +05:30
Rohit Waghchaure
96c5c7b1df fix: don't allow to make reposting entry for closing stock balance period 2023-06-21 11:55:51 +05:30
Deepesh Garg
ddbd7d8bbc Merge pull request #35591 from resilient-tech/remove-whitelisting
chore: remove whitelisting for methods not accessed from UI
2023-06-20 20:29:49 +05:30
rohitwaghchaure
8816039bd9 Merge pull request #35810 from rohitwaghchaure/stock-error-for-service-item
fix: stock error for service item
2023-06-20 17:20:26 +05:30
rohitwaghchaure
79e41e329e Merge pull request #35809 from rohitwaghchaure/fixed-key-error-in-stock-balance-report
fix: key error while checking the stock balance report
2023-06-20 17:00:44 +05:30
Rohit Waghchaure
32965f1af9 fix: stock error for service item 2023-06-20 16:27:23 +05:30
Rohit Waghchaure
a627d2a38c fix: keyerror while checking the stock balance report 2023-06-20 15:55:18 +05:30
ruthra kumar
8aa47a13e3 Merge pull request #35794 from ruthra-kumar/exchange_revaluation_only_post_on_account_currency_based_on_scenario
fix: Exchange Rate Revaluation should only post on the currency that has balance in a 'zero' balance account
2023-06-20 13:58:54 +05:30
Deepesh Garg
98cfea6f63 Merge branch 'develop' of https://github.com/frappe/erpnext into #34282-Record-advance-payment-as-a-liability 2023-06-20 13:26:14 +05:30
Deepesh Garg
32c35b87f9 Merge pull request #34675 from frappe/bank-trans-party-automatch
feat: Auto set Party in Bank Transaction
2023-06-20 13:24:44 +05:30
Deepesh Garg
016ed951da test: Update tests 2023-06-20 13:22:32 +05:30
Anand Baburajan
df090cbe87 chore: minor typo in fixed asset register (#35801)
chore: renaming entries to assets
2023-06-20 13:03:15 +05:30
ruthra kumar
6694175a51 refactor: higher precision for rounding loss and allow '0' 2023-06-20 12:44:08 +05:30
ruthra kumar
4567474418 refactor: allow '0' rounding allowance 2023-06-20 12:44:08 +05:30
ruthra kumar
9d04af9ecc refactor: allow higher precision for new exchange rate 2023-06-20 12:44:08 +05:30
ruthra kumar
1b33afd699 fix: for zero bal accounts, dr/cr only on currency that has balance 2023-06-20 12:44:04 +05:30
Anand Baburajan
0d12588583 fix: date and finance book fixes in fixed asset register (#35751)
* fix: handle finance books properly and show all assets by default in fixed asset register

* chore: rename value to depr amount

* chore: get asset value for correct fb properly

* chore: rename include_default_book_entries to include_default_book_assets
2023-06-20 12:06:27 +05:30
marination
8f2e5288ff test: Dunning and PE against partially due invoice
- Check if the right payment portion is picked
- Check if the SI and Dunning are updated on submission and cancellation of PE
2023-06-20 11:47:04 +05:30
Deepesh Garg
175a7baa60 Merge branch 'develop' of https://github.com/frappe/erpnext into #34282-Record-advance-payment-as-a-liability 2023-06-19 21:39:01 +05:30
Smit Vora
4fbff20954 fix: make credit note and debit note exclusive (#35781) 2023-06-19 21:14:42 +05:30
Gursheen Anand
b3d565c91f feat: Provision to send Accounts Receivable Reports using Process Statement of Accounts
Issue #35707
2023-06-19 19:59:24 +05:30
Anand Baburajan
c1da3ddbbf fix: fix get outstanding invoices btn and add get outstanding orders btn (#35776)
* fix: fix get outstanding invoices btn and add get outstanding orders btn

* chore: remove unnecessary arg
2023-06-19 19:53:05 +05:30
Marica
8ab8230adf Merge branch 'develop' into bank-trans-party-automatch 2023-06-19 19:19:15 +05:30
Sagar Sharma
b26d70b527 Merge pull request #35782 from s-aga-r/SE-PURPOSE-INDEX
perf: index `purpose` in `Stock Entry`
2023-06-19 18:43:02 +05:30
s-aga-r
4f941ac5c0 perf: index purpose in Stock Entry 2023-06-19 18:42:25 +05:30
Raffael Meyer
11126521c9 Merge branch 'develop' into bank-trans-party-automatch 2023-06-19 15:04:37 +02:00
Deepesh Garg
85e1c85b52 chore: Add payment entry 2023-06-19 14:12:23 +05:30
Deepesh Garg
9d27a25e5f fix: Allocated amount validation for other party types (#35741)
* fix: Allocated amount validation for other party types

* chore: Validation for return allocations

* chore: minor typo

---------

Co-authored-by: anandbaburajan <anandbaburajan@gmail.com>
2023-06-19 11:04:50 +05:30
Deepesh Garg
7ec9d76545 Merge branch 'develop' of https://github.com/frappe/erpnext into #34282-Record-advance-payment-as-a-liability 2023-06-19 09:48:01 +05:30
Deepesh Garg
86744b6fbb chore: Add more invoices 2023-06-19 09:44:57 +05:30
Deepesh Garg
5e9014be8c Merge branch 'develop' into make-accounting-dimension-filter-values-optional 2023-06-19 09:21:04 +05:30
mergify[bot]
78fbd6452b fix: unsupported operand type(s) for //: 'float' and 'NoneType' for POS Barcode search (#35710)
* fix: unsupported operand type(s) for //: 'float' and 'NoneType' for POS Barcode search (#35710)

(cherry picked from commit 58a6bbcf6d)

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

* chore: resolve conflicts

---------

Co-authored-by: Vishal Dhayagude <vishdha@users.noreply.github.com>
Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
2023-06-19 09:14:43 +05:30
Abhinav Raut
2a24423ad2 fix: loan interest accrual date (#35695)
fix: loan interest accrual date

---------

Co-authored-by: Abhinav Raut <abhinav.raut@zerodha.com>
Co-authored-by: Deepesh Garg <deepeshgarg6@gmail.com>
2023-06-18 23:11:52 +05:30
HENRY Florian
d12c9b434e chore: fr translation lead vs prospect (#35697)
chore: fr translation lead vs prospect
2023-06-18 22:30:15 +05:30
Türker Tunalı
507c966aa7 chore: Make material request title translatable (#35764)
chore: Make material request title translatable
2023-06-18 22:29:42 +05:30
Lakshit Jain
93c0c26843 fix: modify filters for account in journal entry (#35626) 2023-06-18 22:25:28 +05:30
David Arnold
0444b98802 feat: add verified chart of accounts for colombia in two variants (#34508)
This information is scraped from the in Colombia widely trusted site
dedicated to the plan unico de cuentas (PUC): puc.com.co

feat(accounts): add account_type overlay to colombian CoA

Add account_type overlay with a most significant number matching
strategy and a hand-crafted dictionary based on the erpnext
documentation and the corresponding account description from puc.com.co

Script used for scraping:
https://gist.github.com/blaggacao/d45a454d27556f41fef88833937088f1
2023-06-18 22:17:31 +05:30
Sagar Sharma
b5c1c725be Merge pull request #35739 from s-aga-r/FIX-35493
fix(ux): set route options for new `SBB`
2023-06-18 15:13:15 +05:30
rohitwaghchaure
c51e6dba8d Merge pull request #35756 from rohitwaghchaure/fixed-stock-entry-not-able-to-save
fix: validation of job card in stock entry
2023-06-17 13:32:20 +05:30
Deepesh Garg
5b6a9fcca9 feat: Clear demo data 2023-06-17 13:08:18 +05:30
Rohit Waghchaure
df8c3f0888 fix: validation of job card in stock entry 2023-06-17 12:45:55 +05:30
Sagar Sharma
9fb6fc5b9a Merge pull request #35677 from s-aga-r/FIX-ISS-23-24-01397
fix: add validation for QI in PR
2023-06-17 12:19:07 +05:30
mergify[bot]
e3afcc6945 fix: cannot start / stop Job Card (backport #35753) (#35755)
fix: cannot start / stop jobs

(cherry picked from commit 53ec2a9268)

Co-authored-by: Anoop Kurungadam <anoop@earthianslive.com>
2023-06-17 12:15:47 +05:30
rohitwaghchaure
86612b6c05 Merge pull request #35747 from rohitwaghchaure/fixed-incorrect-stock-value-for-pr-return
fix: incorrect stock value for purchase returned with rejected qty
2023-06-16 23:08:17 +05:30
Marica
05e64b342a Merge branch 'develop' into payments-based-dunning 2023-06-16 19:20:18 +05:30
Ankush Menat
6086d1a99d perf: duplicate queries while checking prevdoc (#35746)
These values can't change durning DB transaction AFAIK
2023-06-16 18:25:58 +05:30
Rohit Waghchaure
28dd758aa3 fix: incorrect stock value for purchase returned with rejected qty 2023-06-16 16:44:56 +05:30
Ankush Menat
29da1db516 perf: Duplicate queries for UOM (#35744)
This query repeats for every item, UOMs rarely if ever change
2023-06-16 16:38:30 +05:30
Ankush Menat
433489a9e6 perf: Index pick list field in stock entry and DN (#35738)
We check if pick list is created against them but there's no index so we
end up reading entire table.

```
+------+-------------+------------------+-------+---------------+----------+---------+------+--------+-----------+----------+------------+-------------+
| id   | select_type | table            | type  | possible_keys | key      | key_len | ref  | rows   | r_rows    | filtered | r_filtered | Extra       |
+------+-------------+------------------+-------+---------------+----------+---------+------+--------+-----------+----------+------------+-------------+
|    1 | SIMPLE      | tabDelivery Note | index | NULL          | modified | 9       | NULL | 207015 | 348940.00 |   100.00 |       0.00 | Using where |
+------+-------------+------------------+-------+---------------+----------+---------+------+--------+-----------+----------+------------+-------------+
```

After

```
+------+-------------+------------------+------+-----------------+-----------------+---------+-------+------+--------+----------+------------+------------------------------->
| id   | select_type | table            | type | possible_keys   | key             | key_len | ref   | rows | r_rows | filtered | r_filtered | Extra                         >
+------+-------------+------------------+------+-----------------+-----------------+---------+-------+------+--------+----------+------------+------------------------------->
|    1 | SIMPLE      | tabDelivery Note | ref  | pick_list_index | pick_list_index | 563     | const | 1    | 0.00   |   100.00 |     100.00 | Using index condition; Using w>
+------+-------------+------------------+------+-----------------+-----------------+---------+-------+------+--------+----------+------------+------------------------------->
```
2023-06-16 15:26:40 +05:30
Ankush Menat
81f916b7d3 perf: Ignore cancelled pick lists while fetching picked items (#35737) 2023-06-16 15:26:01 +05:30
s-aga-r
4b5454c752 fix(ux): set route options for new SBB 2023-06-16 15:04:37 +05:30
marination
47852803f0 fix: Set Address via JS and Py files (for API usecases) 2023-06-16 14:10:07 +05:30
Ankush Menat
07d748c290 perf: Index sales_order_item in Pick list item (#35735)
- `get_picked_items_qty` does full table scan
- because it also locks, it does full table lock.
2023-06-16 14:06:24 +05:30
Deepesh Garg
77a29574a6 fix: Create transactions 2023-06-16 13:43:55 +05:30
Gursheen Anand
442e3f2aa2 fix: update outstanding amount and unpaid status on cancellation of payment entry 2023-06-16 13:38:47 +05:30
mergify[bot]
50f83859db fix: consider field precision while setting sle actual_qty (backport #35717) (#35720)
* fix: consider field precision while setting sle actual_qty (#35717)

(cherry picked from commit 3f62e854e5)

# Conflicts:
#	erpnext/controllers/buying_controller.py

* chore: `conflicts`

---------

Co-authored-by: Sagar Sharma <sagarsharma.s312@gmail.com>
2023-06-15 20:18:17 +05:30
Raffael Meyer
51848ee9d7 Merge branch 'develop' into bank-trans-party-automatch 2023-06-15 16:36:17 +02:00
marination
c32113918e fix: Updation of dunning on PE cancellation 2023-06-15 20:04:54 +05:30
Rucha Mahabal
6dd5117f61 Merge pull request #35709 from ruchamahabal/remove-hierarchy-chart 2023-06-15 19:15:39 +05:30
rohitwaghchaure
6cb31a9770 Merge pull request #35712 from s-aga-r/FIX-ISS-23-24-01470
fix: `Process Loss Report`
2023-06-15 19:13:08 +05:30
rohitwaghchaure
fc38d45c35 Merge pull request #35711 from rohitwaghchaure/fixed-incorrect-gl-for-debit-note
fix: incorrect gl entries for standalone debit note
2023-06-15 19:12:29 +05:30
marination
254bab33da fix: Consider installments/partial payments while back updating Dunning
- Also use data from Overdue Payment table and not just Dunning parent document
2023-06-15 19:00:24 +05:30
Rohit Waghchaure
f9f662679f test: added test case 2023-06-15 18:09:56 +05:30
Anand Baburajan
bb39a2cac7 fix: don't add GL Entry for Acc. Depr. while scrapping non-depreciable assets (#35714)
fix: on asset scrap, don't add gl entry for acc. depr. if no acc. depr.
2023-06-15 17:12:59 +05:30
s-aga-r
d176d86e2c fix: Process Loss Report 2023-06-15 16:01:08 +05:30
marination
4673aa412e fix: Broken pop-up and references to non-existent field
- `child_fieldname` misspelled causing broken pop up to fetch overdue payments
- `sales_invoice` referenced in dunning fields, which has been removed
- Fetch `customer_name` from `customer` link field
2023-06-15 15:48:50 +05:30
Rohit Waghchaure
6e198188ff fix: incorrect gl entries for standalone debit note with update stock 2023-06-15 14:45:27 +05:30
rohitwaghchaure
24d1bf275a Merge pull request #35699 from rohitwaghchaure/fixed-added-validation-for-incorrect-type
fix: added validation for incorrect type
2023-06-15 14:17:04 +05:30
Rucha Mahabal
8c374f57ed chore: remove html2canvas from dependencies
- was used for hierarchy charts (org charts)
2023-06-15 13:56:05 +05:30
Marica
b497436d4f Merge branch 'develop' into payments-based-dunning 2023-06-15 13:12:34 +05:30
Rucha Mahabal
520268002f refactor!: remove hierarchy charts 2023-06-15 13:10:19 +05:30
Rohit Waghchaure
1c2fe085b5 fix: test case and removed outward field 2023-06-15 12:56:41 +05:30
ruthra kumar
490ec63114 Merge pull request #35701 from ruthra-kumar/typeerror_on_exchange_rate_revaluation
fix: typeerror on exchange rate revaluation
2023-06-15 12:24:07 +05:30
ruthra kumar
f8273f7db6 fix: typeerror on exchange rate revaluation 2023-06-15 11:37:59 +05:30
Rohit Waghchaure
f968f0f257 fix: added validation for incorrect type 2023-06-14 23:26:35 +05:30
marination
772f6ffd21 fix: Linter and incorrect cost center in test records 2023-06-14 16:48:18 +05:30
s-aga-r
2c1ab569a7 fix: add validation for QI in PR 2023-06-14 15:37:28 +05:30
Gursheen Anand
033e4e84f5 fix: modify voucher details for liability entries 2023-06-14 14:20:42 +05:30
barredterra
18495ed624 fix: semgrep issues 2023-06-14 13:53:05 +05:30
barredterra
15816c8afd test: test records for dunning type 2023-06-14 13:52:47 +05:30
barredterra
315df7b2cf test: fix dunning test 2023-06-14 13:52:47 +05:30
barredterra
04aaadcb39 style: sider issues 2023-06-14 13:52:46 +05:30
barredterra
4911c3b5b7 fix: precision for interst 2023-06-14 13:47:16 +05:30
barredterra
ccefe96665 fix: map only overdue payments 2023-06-14 13:47:16 +05:30
barredterra
88f67e4786 fix: set income account and cost center 2023-06-14 13:41:04 +05:30
barredterra
fd6d86eefc fix: show "Create Dunning" when any scheduled payment is overdue 2023-06-14 13:41:04 +05:30
barredterra
028d19f32d test: link Dunning Type to COmpany 2023-06-14 13:41:03 +05:30
Raffael Meyer
d790710ae7 refactor: apply suggestions from code review
Co-authored-by: Himanshu <himanshuwarekar@yahoo.com>
2023-06-14 13:41:03 +05:30
barredterra
28dfbdda93 feat: fetch income account and cost center from dunning type 2023-06-14 13:41:03 +05:30
barredterra
60b6afb470 fix: fetch overdue payments 2023-06-14 13:40:51 +05:30
barredterra
8bfe865759 fix: ignore cancelled dunnings 2023-06-14 13:40:50 +05:30
barredterra
0a06241e7c test: refactor, fix missing income account 2023-06-14 13:40:50 +05:30
barredterra
d55c59f298 test: make failing tests work 2023-06-14 13:40:50 +05:30
barredterra
84459c7196 fix: create payment entry 2023-06-14 13:40:50 +05:30
barredterra
e37f98267b fix: resolve dunning 2023-06-14 13:38:53 +05:30
barredterra
8652331d1c Revert "feat: remove dunning as possible reference from payment entry"
This reverts commit b774d8d0e3.
2023-06-14 13:38:53 +05:30
barredterra
9eeaac0c3e feat: remove dunning as possible reference from payment entry 2023-06-14 13:29:21 +05:30
barredterra
c17ccb455d refactor: run pre-commit 2023-06-14 13:08:56 +05:30
barredterra
24f400b123 feat: remove Dunning dashboard as there are no incoming links 2023-06-14 13:08:55 +05:30
barredterra
1250e56dd6 feat: add Dunning to Dunning Type's dashboard 2023-06-14 13:07:48 +05:30
barredterra
0990011e74 feat: add patch for dunning 2023-06-14 13:07:47 +05:30
barredterra
fd7be5da99 feat: remove obsolete "debit_to" field 2023-06-14 13:01:28 +05:30
barredterra
c142d89952 tests: remove obsolete test 2023-06-14 13:01:14 +05:30
barredterra
ac8b6bba5c feat: resolve dunning on payment entry 2023-06-14 13:00:47 +05:30
barredterra
270040303c refactor: make sider happy 2023-06-14 12:59:27 +05:30
barredterra
6b6f4dd017 refactor: run pre-commit 2023-06-14 12:59:26 +05:30
barredterra
ff7ec977e6 feat: more info for payment deductions 2023-06-14 12:59:26 +05:30
barredterra
16a23d9f0f refactor: dunning 2023-06-14 12:59:26 +05:30
barredterra
603117eb6b feat: change print format to reflect doctype changes 2023-06-14 12:56:28 +05:30
barredterra
3895c03ba9 feat: change make_gl_entries to work with new data structure 2023-06-14 12:56:28 +05:30
barredterra
bc40f3f425 refactor: rename interest_amount to interest, dunning_level 2023-06-14 12:54:17 +05:30
barredterra
be5fb94837 feat: currency section , debit_to, base_dunning_amount 2023-06-14 12:54:14 +05:30
Deepesh Garg
8ef257abbc feat: Demo data creation 2023-06-14 12:54:10 +05:30
barredterra
df840cca75 refactor: validate totals 2023-06-14 12:54:01 +05:30
barredterra
24e7a21839 refactor: remove redndant argument 2023-06-14 12:54:00 +05:30
barredterra
f143fe7dcc refactor: tests 2023-06-14 12:53:56 +05:30
barredterra
676ed6b881 feat: hide fields in print 2023-06-14 12:50:57 +05:30
barredterra
043066a2c8 style: use double quotes 2023-06-14 12:50:41 +05:30
barredterra
938f7d2266 reafctor: validate instead of postprocess 2023-06-14 12:42:21 +05:30
barredterra
9016baddca feat: company address query + style 2023-06-14 12:42:21 +05:30
barredterra
b07620aacf feat: child table triggers calculation of totals 2023-06-14 12:42:20 +05:30
barredterra
b186f8e9d7 feat: address display 2023-06-14 12:42:17 +05:30
barredterra
db47e1b69c feat: address and contact queries 2023-06-14 12:42:02 +05:30
barredterra
4f51dfe4c5 refactor: remove unnecessary code 2023-06-14 12:42:02 +05:30
barredterra
2d0dadd9ac feat: rework dunning backend 2023-06-14 12:41:59 +05:30
Gursheen Anand
ba4ab06ae3 fix: changed account types in controller method 2023-06-14 12:39:16 +05:30
barredterra
2ee919220a feat: rework dunning frontend 2023-06-14 12:37:58 +05:30
barredterra
8976e94a1d feat: rework doctypes 2023-06-14 12:37:55 +05:30
barredterra
86a8b0b30f refactor: doctype naming
Overdue Payments -> Overdue Payment
2023-06-14 12:37:31 +05:30
barredterra
487c6018bf feat: restructure dunning doctype 2023-06-14 12:37:02 +05:30
barredterra
e7705327f0 feat: filter invoices 2023-06-14 12:35:30 +05:30
barredterra
e5b57ec965 feat: Overdue Payments table 2023-06-14 12:35:29 +05:30
Gursheen Anand
17341adf1c fix: calculate outstanding amount on reconcile correctly 2023-06-13 15:00:46 +05:30
Deepesh Garg
011ac131cf fix: Add column values 2023-06-12 18:42:49 +05:30
Gursheen Anand
5e9821dce2 test: modify test to check posting date 2023-06-12 18:00:15 +05:30
Gursheen Anand
a06017c2c3 fix: Use advance account from Reconciliation document for fetching Payment Entries 2023-06-12 15:24:53 +05:30
Deepesh Garg
e30c3eafef fix: Stock ledger preview 2023-06-12 11:46:51 +05:30
Gursheen Anand
7591f1010b fix: Make get party account method return a list instead of a single default account. 2023-06-12 11:06:03 +05:30
Gursheen Anand
b65e58c1ae test: add tests for advance liability entries
Add Sales and Purchase Invoice Tests to check if GL entries and Outstanding Amount are generated correctly when advance entries are recorded as liability.

Few changes to return value of added column in Payment Entry References.
2023-06-08 18:15:37 +05:30
Gursheen Anand
4ee163742a fix: Using one field for both advance liability accounts 2023-06-08 13:15:23 +05:30
Devin Slauenwhite
54935438e1 fix: reconcile invoice against credit note 2023-06-07 15:55:37 -04:00
Devin Slauenwhite
7973951c37 fix: missing attribute error 2023-06-07 15:55:16 -04:00
Devin Slauenwhite
f68ab3dfff test: reconcile credit against invoice 2023-06-07 15:14:24 -04:00
Deepesh Garg
0bd4de4504 fix: Remove special treatment for P&L Accounts 2023-06-07 22:33:35 +05:30
Nikhil Kothari
83a7584475 fix: tests now create filters with checkbox enabled 2023-06-07 15:00:05 +05:30
Nikhil Kothari
e1116bbbbb fix: added server side check for allow/restrict 2023-06-07 14:20:42 +05:30
Nikhil Kothari
83c46085fb feat: added support for mandatory dimensions per account 2023-06-07 14:14:57 +05:30
DaizyModi
5155d5bfb2 chore: remove whitelisting for methods not accessed from UI 2023-06-07 12:05:17 +05:30
marination
eb1db5eaa3 chore: Remove instances of bank_party_mapper and use new_doc 2023-06-07 11:54:51 +05:30
Marica
75387bbaef Merge branch 'develop' into bank-trans-party-automatch 2023-06-06 19:03:26 +05:30
marination
752a92bd8b chore: Remove Bank Party Mapper implementation
- Matching by Acc No/IBAN can easily happen with Bank Accounts. It's not a tedious query
- Historical lookups for  Party Name/Desc match are very tricky. The user could have manually set a match and we would not know. Also this leaves the Bank Party Mapper only useful for Party Name/Desc lookups, which feels excessive.
- We want to reduce the number of places the same data is stored and reduce confusion
- The Party Name/Desc will optionally happen fuzzily, or not at all
- There will be no Mapper lookups
2023-06-06 18:59:07 +05:30
Deepesh Garg
2e52a63b0d feat: Accounting Ledger Preview 2023-06-04 19:20:28 +05:30
Gursheen Anand
74619269f0 feat: Record Advance Payments as Liability
Ability to let user record advance payments as liability instead of a negative asset.

Issue #34282
2023-06-02 17:13:51 +05:30
Raffael Meyer
09872301bd Merge branch 'develop' into bank-trans-party-automatch 2023-06-01 18:03:10 +02:00
Marica
6fe5264ae2 Merge branch 'develop' into bank-trans-party-automatch 2023-05-18 12:57:58 +05:30
marination
4364fb9628 feat: Optional Fuzzy Matching & Skip Matches for multiple similar matches
- Fuzzy matching can be enabled optionally in the settings
- If a query gets multiple matches with the same score, do not set a party as it is an extremely close call
- misc: Add 'cancelled' status to Bank transaction
- Test for skipping matching with extremely close matches
2023-05-17 19:45:03 +05:30
marination
4a14e9ea4e fix: Tests 2023-05-17 14:23:44 +05:30
marination
dbf7a479b6 fix: Use existing bank fields to match by bank account no/IBAN
- Remove newly added fields in Party doctypes to store bank details
- Use Bank Account's fields to match against account no/iban
- For employee, if Bank Account does not exist, find in Employee doctype against account no/iban
2023-05-09 20:47:14 +05:30
Suraj Shetty
a0131a96cb Merge remote-tracking branch 'upstream/develop' into move-exotel-to-separate-app 2023-04-30 12:43:18 +05:30
Marica
88647c63ba Merge branch 'develop' into bank-trans-party-automatch 2023-04-24 12:13:12 +05:30
Marica
fd38e8e0af Merge branch 'develop' into bank-trans-party-automatch 2023-04-17 16:34:46 +05:30
marination
430b247dfc fix: Remove bank details fields from Shareholder 2023-04-11 01:33:08 +05:30
marination
7ed8f59dc8 test: Match by Account No, IBAN, Party Name, Desc and match correction 2023-04-10 22:11:00 +05:30
Marica
36de35c6d9 Merge branch 'develop' into bank-trans-party-automatch 2023-04-10 20:04:16 +05:30
Marica
fcc8f9f164 Merge branch 'develop' into bank-trans-party-automatch 2023-04-05 17:04:07 +05:30
marination
d7bc192804 fix: Match by both Account No and IBAN & other cleanups
- A BT could have both account and iban, and a Supplier could have only IBAN set
- In this case, matching by either (only account) gives no match
- Match by Account OR IBAN, use `or_filters`
- If matched, set both account no. and IBAN in Bank Party Mapper

- Explain AutoMatchParty
- Add type hints to return values
- Use `set_value` to set values in BT after matching since its an after submit event
2023-04-05 15:28:47 +05:30
marination
aea4315435 chore: Make auto matching party configurable
- Checkbox in Accounts settings "Enable Automatic Party Matching"
- Check before invoking automatching methods
- misc: Remove TODO comments
2023-04-04 20:16:14 +05:30
marination
33604550ce chore: Perform automatch on submit
- misc: Clearer naming
2023-04-04 19:42:25 +05:30
marination
27ce789023 feat: Manually Update/Correct Party in Bank Transaction
- On updating bank trans.n party after submit, the corresponding mapper doc will be updated too
- The mapper doc in turn will update all linked bank transactions that do not have this updated value
- Added Bank Party Mapper hidden link in Bank Transaction
- Rename field in BPM to `Party Name` as it does not hold description data
- If a BT matches with a BPM record, link that record in the BT
2023-04-04 19:27:01 +05:30
marination
37c1331aba fix: Don't set description as key in Mapper doc if matched by description
- Description is volatile and will keep changing
- It will lead to multiple Bank Party Mapper docs for the same party that will never be referenced again
- Parts of the descripton keep changing which is why it will never match a mapper record
- If matched by desc, dont create mapper record.
2023-04-04 14:03:35 +05:30
marination
3a898289b0 chore: Single query with or filter to search Party Mapper by name/desc 2023-04-03 16:11:00 +05:30
marination
e7745033df feat: Party auto-matcher from Bank Transaction data
- Created Bank Party Mapper
- Created class to auto match by account/iban or party name/description(fuzzy)
- Automatch and set in transaction or create mapper
- `rapidfuzz` introduced
2023-03-31 16:11:00 +05:30
marination
ad31e02616 feat: Store Party bank details in party records (Customer/Supplier/Employee/Shareholder) 2023-04-04 11:45:37 +05:30
Suraj Shetty
64f439600b Merge branch 'develop' of https://github.com/frappe/erpnext into move-exotel-to-separate-app 2023-02-25 13:34:23 +05:30
Suraj Shetty
6349f29aed fix: Remove option from Communication Medium 2022-07-30 14:26:37 +05:30
Suraj Shetty
45544c2b1e Merge branch 'develop' of https://github.com/frappe/erpnext into move-exotel-to-separate-app 2022-07-28 10:07:40 +05:30
Suraj Shetty
3593573ed2 Merge branch 'develop' of https://github.com/frappe/erpnext into move-exotel-to-separate-app 2022-07-22 12:24:20 +05:30
Suraj Shetty
cf9c065cf8 refactor: Add exotel deprecation warning 2022-07-22 12:22:57 +05:30
Suraj Shetty
ec1607e825 Merge branch 'develop' of https://github.com/frappe/erpnext into move-exotel-to-separate-app 2022-05-08 16:10:55 +05:30
Suraj Shetty
e0bc437ddb refactor: Simplify call log code 2022-05-08 16:05:04 +05:30
Suraj Shetty
53e4fee4db refactor: Remove exotel
Move it to separate app
2022-05-08 16:04:14 +05:30
1789 changed files with 79463 additions and 135413 deletions

View File

@@ -2,65 +2,32 @@
"env": {
"browser": true,
"node": true,
"es6": true
"es2022": true
},
"parserOptions": {
"ecmaVersion": 11,
"sourceType": "module"
},
"extends": "eslint:recommended",
"rules": {
"indent": [
"error",
"tab",
{ "SwitchCase": 1 }
],
"brace-style": [
"error",
"1tbs"
],
"space-unary-ops": [
"error",
{ "words": true }
],
"linebreak-style": [
"error",
"unix"
],
"quotes": [
"off"
],
"semi": [
"warn",
"always"
],
"camelcase": [
"off"
],
"no-unused-vars": [
"warn"
],
"no-redeclare": [
"warn"
],
"no-console": [
"warn"
],
"no-extra-boolean-cast": [
"off"
],
"no-control-regex": [
"off"
],
"space-before-blocks": "warn",
"keyword-spacing": "warn",
"comma-spacing": "warn",
"key-spacing": "warn"
"indent": "off",
"brace-style": "off",
"no-mixed-spaces-and-tabs": "off",
"no-useless-escape": "off",
"space-unary-ops": ["error", { "words": true }],
"linebreak-style": "off",
"quotes": ["off"],
"semi": "off",
"camelcase": "off",
"no-unused-vars": "off",
"no-console": ["warn"],
"no-extra-boolean-cast": ["off"],
"no-control-regex": ["off"]
},
"root": true,
"globals": {
"frappe": true,
"Vue": true,
"SetVueGlobals": true,
"erpnext": true,
"hub": true,
"$": true,
@@ -97,8 +64,10 @@
"is_null": true,
"in_list": true,
"has_common": true,
"posthog": true,
"has_words": true,
"validate_email": true,
"open_web_template_values_editor": true,
"get_number_format": true,
"format_number": true,
"format_currency": true,
@@ -154,7 +123,6 @@
"before": true,
"beforeEach": true,
"onScan": true,
"html2canvas": true,
"extend_cscript": true,
"localforage": true
}

View File

@@ -28,4 +28,7 @@ b147b85e6ac19a9220cd1e2958a6ebd99373283a
494bd9ef78313436f0424b918f200dab8fc7c20b
# bulk format python code with black
baec607ff5905b1c67531096a9cf50ec7ff00a5d
baec607ff5905b1c67531096a9cf50ec7ff00a5d
# bulk refactor with sourcery
eb9ee3f79b94e594fc6dfa4f6514580e125eee8c

View File

@@ -4,7 +4,9 @@ set -e
cd ~ || exit
sudo apt update && sudo apt install redis-server libcups2-dev
sudo apt update
sudo apt remove mysql-server mysql-client
sudo apt install libcups2-dev redis-server mariadb-client-10.6
pip install frappe-bench
@@ -25,14 +27,14 @@ fi
if [ "$DB" == "mariadb" ];then
mysql --host 127.0.0.1 --port 3306 -u root -proot -e "SET GLOBAL character_set_server = 'utf8mb4'"
mysql --host 127.0.0.1 --port 3306 -u root -proot -e "SET GLOBAL collation_server = 'utf8mb4_unicode_ci'"
mariadb --host 127.0.0.1 --port 3306 -u root -proot -e "SET GLOBAL character_set_server = 'utf8mb4'"
mariadb --host 127.0.0.1 --port 3306 -u root -proot -e "SET GLOBAL collation_server = 'utf8mb4_unicode_ci'"
mysql --host 127.0.0.1 --port 3306 -u root -proot -e "CREATE USER 'test_frappe'@'localhost' IDENTIFIED BY 'test_frappe'"
mysql --host 127.0.0.1 --port 3306 -u root -proot -e "CREATE DATABASE test_frappe"
mysql --host 127.0.0.1 --port 3306 -u root -proot -e "GRANT ALL PRIVILEGES ON \`test_frappe\`.* TO 'test_frappe'@'localhost'"
mariadb --host 127.0.0.1 --port 3306 -u root -proot -e "CREATE USER 'test_frappe'@'localhost' IDENTIFIED BY 'test_frappe'"
mariadb --host 127.0.0.1 --port 3306 -u root -proot -e "CREATE DATABASE test_frappe"
mariadb --host 127.0.0.1 --port 3306 -u root -proot -e "GRANT ALL PRIVILEGES ON \`test_frappe\`.* TO 'test_frappe'@'localhost'"
mysql --host 127.0.0.1 --port 3306 -u root -proot -e "FLUSH PRIVILEGES"
mariadb --host 127.0.0.1 --port 3306 -u root -proot -e "FLUSH PRIVILEGES"
fi
if [ "$DB" == "postgres" ];then
@@ -68,6 +70,6 @@ if [ "$TYPE" == "server" ]; then bench setup requirements --dev; fi
wait $wkpid
bench start &> bench_run_logs.txt &
bench start &>> ~/frappe-bench/bench_start.log &
CI=Yes bench build --app frappe &
bench --site test_site reinstall --yes

View File

@@ -21,6 +21,6 @@ jobs:
- name: Run backport
uses: ./actions/backport
with:
token: ${{secrets.BACKPORT_BOT_TOKEN}}
token: ${{secrets.RELEASE_TOKEN}}
labelsToAdd: "backport"
title: "{{originalTitle}}"

View File

@@ -9,13 +9,13 @@ on:
workflow_dispatch:
jobs:
release:
stable-release:
name: Release
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
version: ["13", "14"]
version: ["14", "15"]
steps:
- uses: octokit/request-action@v2.x

View File

@@ -9,21 +9,22 @@ jobs:
name: linters
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Set up Python 3.10
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: '3.10'
cache: pip
- name: Install and Run Pre-commit
uses: pre-commit/action@v2.0.3
uses: pre-commit/action@v3.0.0
- name: Download Semgrep rules
run: git clone --depth 1 https://github.com/frappe/semgrep-rules.git frappe-semgrep-rules
- name: Download semgrep
run: pip install semgrep==0.97.0
run: pip install semgrep
- name: Run Semgrep rules
run: semgrep ci --config ./frappe-semgrep-rules/rules --config r/python.lang.correctness

21
.github/workflows/lock.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
name: 'Lock threads'
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
permissions:
issues: write
pull-requests: write
jobs:
lock:
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v5
with:
github-token: ${{ github.token }}
issue-inactive-days: 14
pr-inactive-days: 14

View File

@@ -23,12 +23,12 @@ jobs:
services:
mysql:
image: mariadb:10.3
image: mariadb:10.6
env:
MARIADB_ROOT_PASSWORD: 'root'
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
options: --health-cmd="mariadb-admin ping" --health-interval=5s --health-timeout=2s --health-retries=3
steps:
- name: Clone
@@ -43,14 +43,14 @@ jobs:
fi
- name: Setup Python
uses: "gabrielfalcao/pyenv-action@v9"
uses: "actions/setup-python@v4"
with:
versions: 3.10:latest, 3.7:latest
python-version: '3.10'
- name: Setup Node
uses: actions/setup-node@v2
with:
node-version: 14
node-version: 18
check-latest: true
- name: Add to Hosts
@@ -92,7 +92,6 @@ jobs:
- name: Install
run: |
pip install frappe-bench
pyenv global $(pyenv versions | grep '3.10')
bash ${GITHUB_WORKSPACE}/.github/helper/install.sh
env:
DB: mariadb
@@ -101,42 +100,61 @@ jobs:
- name: Run Patch Tests
run: |
cd ~/frappe-bench/
wget https://erpnext.com/files/v10-erpnext.sql.gz
bench --site test_site --force restore ~/frappe-bench/v10-erpnext.sql.gz
bench remove-app payments --force
jq 'del(.install_apps)' ~/frappe-bench/sites/test_site/site_config.json > tmp.json
mv tmp.json ~/frappe-bench/sites/test_site/site_config.json
wget https://erpnext.com/files/v13-erpnext.sql.gz
bench --site test_site --force restore ~/frappe-bench/v13-erpnext.sql.gz
git -C "apps/frappe" remote set-url upstream https://github.com/frappe/frappe.git
git -C "apps/erpnext" remote set-url upstream https://github.com/frappe/erpnext.git
pyenv global $(pyenv versions | grep '3.7')
for version in $(seq 12 13)
do
echo "Updating to v$version"
branch_name="version-$version-hotfix"
git -C "apps/frappe" fetch --depth 1 upstream $branch_name:$branch_name
git -C "apps/erpnext" fetch --depth 1 upstream $branch_name:$branch_name
function update_to_version() {
version=$1
git -C "apps/frappe" checkout -q -f $branch_name
git -C "apps/erpnext" checkout -q -f $branch_name
branch_name="version-$version-hotfix"
echo "Updating to v$version"
rm -rf ~/frappe-bench/env
bench setup env
bench pip install -e ./apps/payments
bench pip install -e ./apps/erpnext
# Fetch and checkout branches
git -C "apps/frappe" fetch --depth 1 upstream $branch_name:$branch_name
git -C "apps/erpnext" fetch --depth 1 upstream $branch_name:$branch_name
git -C "apps/frappe" checkout -q -f $branch_name
git -C "apps/erpnext" checkout -q -f $branch_name
bench --site test_site migrate
done
# Resetup env and install apps
pgrep honcho | xargs kill
rm -rf ~/frappe-bench/env
bench -v setup env
bench pip install -e ./apps/erpnext
bench start &>> ~/frappe-bench/bench_start.log &
bench --site test_site migrate
}
update_to_version 14
update_to_version 15
echo "Updating to latest version"
git -C "apps/frappe" checkout -q -f "${GITHUB_BASE_REF:-${GITHUB_REF##*/}}"
git -C "apps/erpnext" checkout -q -f "$GITHUB_SHA"
pyenv global $(pyenv versions | grep '3.10')
pgrep honcho | xargs kill
rm -rf ~/frappe-bench/env
bench -v setup env
bench pip install -e ./apps/payments
bench pip install -e ./apps/erpnext
bench start &>> ~/frappe-bench/bench_start.log &
bench --site test_site migrate
bench --site test_site install-app payments
- name: Show bench output
if: ${{ always() }}
run: |
cd ~/frappe-bench
cat bench_start.log || true
cd logs
for f in ./*.log*; do
echo "Printing log: $f";
cat $f
done

38
.github/workflows/release_notes.yml vendored Normal file
View File

@@ -0,0 +1,38 @@
# This action:
#
# 1. Generates release notes using github API.
# 2. Strips unnecessary info like chore/style etc from notes.
# 3. Updates release info.
# This action needs to be maintained on all branches that do releases.
name: 'Release Notes'
on:
workflow_dispatch:
inputs:
tag_name:
description: 'Tag of release like v13.0.0'
required: true
type: string
release:
types: [released]
permissions:
contents: read
jobs:
regen-notes:
name: 'Regenerate release notes'
runs-on: ubuntu-latest
steps:
- name: Update notes
run: |
NEW_NOTES=$(gh api --method POST -H "Accept: application/vnd.github+json" /repos/frappe/erpnext/releases/generate-notes -f tag_name=$RELEASE_TAG | jq -r '.body' | sed -E '/^\* (chore|ci|test|docs|style)/d' )
RELEASE_ID=$(gh api -H "Accept: application/vnd.github+json" /repos/frappe/erpnext/releases/tags/$RELEASE_TAG | jq -r '.id')
gh api --method PATCH -H "Accept: application/vnd.github+json" /repos/frappe/erpnext/releases/$RELEASE_ID -f body="$NEW_NOTES"
env:
GH_TOKEN: ${{ secrets.RELEASE_TOKEN }}
RELEASE_TAG: ${{ github.event.inputs.tag_name || github.event.release.tag_name }}

View File

@@ -21,7 +21,7 @@ jobs:
- uses: actions/setup-node@v3
with:
node-version: 14
node-version: 18
check-latest: true
- name: Check commit titles

View File

@@ -7,11 +7,9 @@ on:
- '**.css'
- '**.md'
- '**.html'
push:
branches: [ develop ]
paths-ignore:
- '**.js'
- '**.md'
schedule:
# Run everday at midnight UTC / 5:30 IST
- cron: "0 0 * * *"
workflow_dispatch:
inputs:
user:
@@ -49,7 +47,7 @@ jobs:
MARIADB_ROOT_PASSWORD: 'root'
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
options: --health-cmd="mariadb-admin ping" --health-interval=5s --health-timeout=2s --health-retries=3
steps:
- name: Clone
@@ -71,7 +69,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@v2
with:
node-version: 14
node-version: 18
check-latest: true
- name: Add to Hosts
@@ -125,6 +123,10 @@ jobs:
CI_BUILD_ID: ${{ github.run_id }}
ORCHESTRATOR_URL: http://test-orchestrator.frappe.io
- name: Show bench output
if: ${{ always() }}
run: cat ~/frappe-bench/bench_start.log || true
- name: Upload coverage data
uses: actions/upload-artifact@v3
with:

View File

@@ -59,7 +59,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@v2
with:
node-version: 14
node-version: 18
check-latest: true
- name: Add to Hosts

View File

@@ -15,6 +15,9 @@ pull_request_rules:
- or:
- base=version-13
- base=version-12
- base=version-14
- base=version-15
- base=version-16
actions:
close:
comment:
@@ -22,16 +25,6 @@ pull_request_rules:
@{{author}}, thanks for the contribution, but we do not accept pull requests on a stable branch. Please raise PR on an appropriate hotfix branch.
https://github.com/frappe/erpnext/wiki/Pull-Request-Checklist#which-branch
- name: Auto-close PRs on pre-release branch
conditions:
- base=version-13-pre-release
actions:
close:
comment:
message: |
@{{author}}, pre-release branch is not maintained anymore. Releases are directly done by merging hotfix branch to stable branches.
- name: backport to develop
conditions:
- label="backport develop"
@@ -52,13 +45,13 @@ pull_request_rules:
assignees:
- "{{ author }}"
- name: backport to version-14-pre-release
- name: backport to version-15-hotfix
conditions:
- label="backport version-14-pre-release"
- label="backport version-15-hotfix"
actions:
backport:
branches:
- version-14-pre-release
- version-15-hotfix
assignees:
- "{{ author }}"
@@ -72,35 +65,6 @@ pull_request_rules:
assignees:
- "{{ author }}"
- name: backport to version-13-pre-release
conditions:
- label="backport version-13-pre-release"
actions:
backport:
branches:
- version-13-pre-release
assignees:
- "{{ author }}"
- name: backport to version-12-hotfix
conditions:
- label="backport version-12-hotfix"
actions:
backport:
branches:
- version-12-hotfix
assignees:
- "{{ author }}"
- name: backport to version-12-pre-release
conditions:
- label="backport version-12-pre-release"
actions:
backport:
branches:
- version-12-pre-release
assignees:
- "{{ author }}"
- name: Automatic merge on CI success and review
conditions:

View File

@@ -5,7 +5,7 @@ fail_fast: false
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.0.1
rev: v4.3.0
hooks:
- id: trailing-whitespace
files: "erpnext.*"
@@ -15,13 +15,36 @@ repos:
args: ['--branch', 'develop']
- id: check-merge-conflict
- id: check-ast
- id: check-json
- id: check-toml
- id: check-yaml
- id: debug-statements
- repo: https://github.com/pre-commit/mirrors-eslint
rev: v8.44.0
hooks:
- id: eslint
types_or: [javascript]
args: ['--quiet']
# Ignore any files that might contain jinja / bundles
exclude: |
(?x)^(
erpnext/public/dist/.*|
cypress/.*|
.*node_modules.*|
.*boilerplate.*|
erpnext/public/js/controllers/.*|
erpnext/templates/pages/order.js|
erpnext/templates/includes/.*
)$
- repo: https://github.com/PyCQA/flake8
rev: 5.0.4
rev: 6.0.0
hooks:
- id: flake8
additional_dependencies: [
'flake8-bugbear',
'flake8-tuple',
]
args: ['--config', '.github/helper/.flake8_strict']
exclude: ".*setup.py$"

View File

@@ -5,7 +5,6 @@
erpnext/accounts/ @deepeshgarg007 @ruthra-kumar
erpnext/assets/ @anandbaburajan @deepeshgarg007
erpnext/loan_management/ @deepeshgarg007
erpnext/regional @deepeshgarg007 @ruthra-kumar
erpnext/selling @deepeshgarg007 @ruthra-kumar
erpnext/support/ @deepeshgarg007

View File

@@ -73,8 +73,6 @@ New passwords will be created for the ERPNext "Administrator" user, the MariaDB
1. [Issue Guidelines](https://github.com/frappe/erpnext/wiki/Issue-Guidelines)
1. [Report Security Vulnerabilities](https://erpnext.com/security)
1. [Pull Request Requirements](https://github.com/frappe/erpnext/wiki/Contribution-Guidelines)
1. [Translations](https://translate.erpnext.com)
## License

View File

@@ -3,7 +3,7 @@ import inspect
import frappe
__version__ = "15.0.0-dev"
__version__ = "16.0.0-dev"
def get_default_company(user=None):
@@ -36,7 +36,7 @@ def get_default_cost_center(company):
if not frappe.flags.company_cost_center:
frappe.flags.company_cost_center = {}
if not company in frappe.flags.company_cost_center:
if company not in frappe.flags.company_cost_center:
frappe.flags.company_cost_center[company] = frappe.get_cached_value(
"Company", company, "cost_center"
)
@@ -47,7 +47,7 @@ def get_company_currency(company):
"""Returns the default company currency"""
if not frappe.flags.company_currency:
frappe.flags.company_currency = {}
if not company in frappe.flags.company_currency:
if company not in frappe.flags.company_currency:
frappe.flags.company_currency[company] = frappe.db.get_value(
"Company", company, "default_currency", cache=True
)
@@ -81,7 +81,7 @@ def is_perpetual_inventory_enabled(company):
if not hasattr(frappe.local, "enable_perpetual_inventory"):
frappe.local.enable_perpetual_inventory = {}
if not company in frappe.local.enable_perpetual_inventory:
if company not in frappe.local.enable_perpetual_inventory:
frappe.local.enable_perpetual_inventory[company] = (
frappe.get_cached_value("Company", company, "enable_perpetual_inventory") or 0
)
@@ -96,7 +96,7 @@ def get_default_finance_book(company=None):
if not hasattr(frappe.local, "default_finance_book"):
frappe.local.default_finance_book = {}
if not company in frappe.local.default_finance_book:
if company not in frappe.local.default_finance_book:
frappe.local.default_finance_book[company] = frappe.get_cached_value(
"Company", company, "default_finance_book"
)
@@ -108,7 +108,7 @@ def get_party_account_type(party_type):
if not hasattr(frappe.local, "party_account_types"):
frappe.local.party_account_types = {}
if not party_type in frappe.local.party_account_types:
if party_type not in frappe.local.party_account_types:
frappe.local.party_account_types[party_type] = (
frappe.db.get_value("Party Type", party_type, "account_type") or ""
)

View File

@@ -4,18 +4,19 @@
"creation": "2020-07-17 11:25:34.593061",
"docstatus": 0,
"doctype": "Dashboard Chart",
"dynamic_filters_json": "{\"company\":\"frappe.defaults.get_user_default(\\\"Company\\\")\",\"from_fiscal_year\":\"frappe.sys_defaults.fiscal_year\",\"to_fiscal_year\":\"frappe.sys_defaults.fiscal_year\"}",
"dynamic_filters_json": "{\"company\":\"frappe.defaults.get_user_default(\\\"Company\\\")\",\"from_fiscal_year\":\"erpnext.utils.get_fiscal_year()\",\"to_fiscal_year\":\"erpnext.utils.get_fiscal_year()\"}",
"filters_json": "{\"period\":\"Monthly\",\"budget_against\":\"Cost Center\",\"show_cumulative\":0}",
"idx": 0,
"is_public": 1,
"is_standard": 1,
"modified": "2020-07-22 12:24:49.144210",
"modified": "2023-07-19 13:13:13.307073",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Budget Variance",
"number_of_groups": 0,
"owner": "Administrator",
"report_name": "Budget Variance Report",
"roles": [],
"timeseries": 0,
"type": "Bar",
"use_report_chart": 1,

View File

@@ -4,18 +4,19 @@
"creation": "2020-07-17 11:25:34.448572",
"docstatus": 0,
"doctype": "Dashboard Chart",
"dynamic_filters_json": "{\"company\":\"frappe.defaults.get_user_default(\\\"Company\\\")\",\"from_fiscal_year\":\"frappe.sys_defaults.fiscal_year\",\"to_fiscal_year\":\"frappe.sys_defaults.fiscal_year\"}",
"dynamic_filters_json": "{\"company\":\"frappe.defaults.get_user_default(\\\"Company\\\")\",\"from_fiscal_year\":\"erpnext.utils.get_fiscal_year()\",\"to_fiscal_year\":\"erpnext.utils.get_fiscal_year()\"}",
"filters_json": "{\"filter_based_on\":\"Fiscal Year\",\"period_start_date\":\"2020-04-01\",\"period_end_date\":\"2021-03-31\",\"periodicity\":\"Yearly\",\"include_default_book_entries\":1}",
"idx": 0,
"is_public": 1,
"is_standard": 1,
"modified": "2020-07-22 12:33:48.888943",
"modified": "2023-07-19 13:08:56.470390",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Profit and Loss",
"number_of_groups": 0,
"owner": "Administrator",
"report_name": "Profit and Loss Statement",
"roles": [],
"timeseries": 0,
"type": "Bar",
"use_report_chart": 1,

View File

@@ -136,7 +136,7 @@ def convert_deferred_revenue_to_income(
send_mail(deferred_process)
def get_booking_dates(doc, item, posting_date=None):
def get_booking_dates(doc, item, posting_date=None, prev_posting_date=None):
if not posting_date:
posting_date = add_days(today(), -1)
@@ -146,39 +146,42 @@ def get_booking_dates(doc, item, posting_date=None):
"deferred_revenue_account" if doc.doctype == "Sales Invoice" else "deferred_expense_account"
)
prev_gl_entry = frappe.db.sql(
"""
select name, posting_date from `tabGL Entry` where company=%s and account=%s and
voucher_type=%s and voucher_no=%s and voucher_detail_no=%s
and is_cancelled = 0
order by posting_date desc limit 1
""",
(doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name),
as_dict=True,
)
if not prev_posting_date:
prev_gl_entry = frappe.db.sql(
"""
select name, posting_date from `tabGL Entry` where company=%s and account=%s and
voucher_type=%s and voucher_no=%s and voucher_detail_no=%s
and is_cancelled = 0
order by posting_date desc limit 1
""",
(doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name),
as_dict=True,
)
prev_gl_via_je = frappe.db.sql(
"""
SELECT p.name, p.posting_date FROM `tabJournal Entry` p, `tabJournal Entry Account` c
WHERE p.name = c.parent and p.company=%s and c.account=%s
and c.reference_type=%s and c.reference_name=%s
and c.reference_detail_no=%s and c.docstatus < 2 order by posting_date desc limit 1
""",
(doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name),
as_dict=True,
)
prev_gl_via_je = frappe.db.sql(
"""
SELECT p.name, p.posting_date FROM `tabJournal Entry` p, `tabJournal Entry Account` c
WHERE p.name = c.parent and p.company=%s and c.account=%s
and c.reference_type=%s and c.reference_name=%s
and c.reference_detail_no=%s and c.docstatus < 2 order by posting_date desc limit 1
""",
(doc.company, item.get(deferred_account), doc.doctype, doc.name, item.name),
as_dict=True,
)
if prev_gl_via_je:
if (not prev_gl_entry) or (
prev_gl_entry and prev_gl_entry[0].posting_date < prev_gl_via_je[0].posting_date
):
prev_gl_entry = prev_gl_via_je
if prev_gl_via_je:
if (not prev_gl_entry) or (
prev_gl_entry and prev_gl_entry[0].posting_date < prev_gl_via_je[0].posting_date
):
prev_gl_entry = prev_gl_via_je
if prev_gl_entry:
start_date = getdate(add_days(prev_gl_entry[0].posting_date, 1))
else:
start_date = item.service_start_date
if prev_gl_entry:
start_date = getdate(add_days(prev_gl_entry[0].posting_date, 1))
else:
start_date = item.service_start_date
start_date = getdate(add_days(prev_posting_date, 1))
end_date = get_last_day(start_date)
if end_date >= item.service_end_date:
end_date = item.service_end_date
@@ -229,7 +232,7 @@ def calculate_monthly_amount(
if amount + already_booked_amount_in_account_currency > item.net_amount:
amount = item.net_amount - already_booked_amount_in_account_currency
if not (get_first_day(start_date) == start_date and get_last_day(end_date) == end_date):
if get_first_day(start_date) != start_date or get_last_day(end_date) != end_date:
partial_month = flt(date_diff(end_date, start_date)) / flt(
date_diff(get_last_day(end_date), get_first_day(start_date))
)
@@ -338,20 +341,28 @@ def book_deferred_income_or_expense(doc, deferred_process, posting_date=None):
"enable_deferred_revenue" if doc.doctype == "Sales Invoice" else "enable_deferred_expense"
)
accounts_frozen_upto = frappe.get_cached_value("Accounts Settings", "None", "acc_frozen_upto")
accounts_frozen_upto = frappe.db.get_single_value("Accounts Settings", "acc_frozen_upto")
def _book_deferred_revenue_or_expense(
item, via_journal_entry, submit_journal_entry, book_deferred_entries_based_on
item,
via_journal_entry,
submit_journal_entry,
book_deferred_entries_based_on,
prev_posting_date=None,
):
start_date, end_date, last_gl_entry = get_booking_dates(doc, item, posting_date=posting_date)
start_date, end_date, last_gl_entry = get_booking_dates(
doc, item, posting_date=posting_date, prev_posting_date=prev_posting_date
)
if not (start_date and end_date):
return
account_currency = get_account_currency(item.expense_account or item.income_account)
if doc.doctype == "Sales Invoice":
against_type = "Customer"
against, project = doc.customer, doc.project
credit_account, debit_account = item.income_account, item.deferred_revenue_account
else:
against_type = "Supplier"
against, project = doc.supplier, item.project
credit_account, debit_account = item.deferred_expense_account, item.expense_account
@@ -377,9 +388,12 @@ def book_deferred_income_or_expense(doc, deferred_process, posting_date=None):
if not amount:
return
gl_posting_date = end_date
prev_posting_date = None
# check if books nor frozen till endate:
if accounts_frozen_upto and getdate(end_date) <= getdate(accounts_frozen_upto):
end_date = get_last_day(add_days(accounts_frozen_upto, 1))
gl_posting_date = get_last_day(add_days(accounts_frozen_upto, 1))
prev_posting_date = end_date
if via_journal_entry:
book_revenue_via_journal_entry(
@@ -388,7 +402,7 @@ def book_deferred_income_or_expense(doc, deferred_process, posting_date=None):
debit_account,
amount,
base_amount,
end_date,
gl_posting_date,
project,
account_currency,
item.cost_center,
@@ -401,10 +415,11 @@ def book_deferred_income_or_expense(doc, deferred_process, posting_date=None):
doc,
credit_account,
debit_account,
against_type,
against,
amount,
base_amount,
end_date,
gl_posting_date,
project,
account_currency,
item.cost_center,
@@ -418,7 +433,11 @@ def book_deferred_income_or_expense(doc, deferred_process, posting_date=None):
if getdate(end_date) < getdate(posting_date) and not last_gl_entry:
_book_deferred_revenue_or_expense(
item, via_journal_entry, submit_journal_entry, book_deferred_entries_based_on
item,
via_journal_entry,
submit_journal_entry,
book_deferred_entries_based_on,
prev_posting_date,
)
via_journal_entry = cint(
@@ -478,6 +497,7 @@ def make_gl_entries(
doc,
credit_account,
debit_account,
against_type,
against,
amount,
base_amount,
@@ -499,7 +519,9 @@ def make_gl_entries(
doc.get_gl_dict(
{
"account": credit_account,
"against_type": against_type,
"against": against,
"against_link": against,
"credit": base_amount,
"credit_in_account_currency": amount,
"cost_center": cost_center,
@@ -518,7 +540,9 @@ def make_gl_entries(
doc.get_gl_dict(
{
"account": debit_account,
"against_type": against_type,
"against": against,
"against_link": against,
"debit": base_amount,
"debit_in_account_currency": amount,
"cost_center": cost_center,

View File

@@ -1,67 +1,83 @@
// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
// License: GNU General Public License v3. See license.txt
frappe.ui.form.on('Account', {
setup: function(frm) {
frm.add_fetch('parent_account', 'report_type', 'report_type');
frm.add_fetch('parent_account', 'root_type', 'root_type');
frappe.ui.form.on("Account", {
setup: function (frm) {
frm.add_fetch("parent_account", "report_type", "report_type");
frm.add_fetch("parent_account", "root_type", "root_type");
},
onload: function(frm) {
frm.set_query('parent_account', function(doc) {
onload: function (frm) {
frm.set_query("parent_account", function (doc) {
return {
filters: {
"is_group": 1,
"company": doc.company
}
is_group: 1,
company: doc.company,
},
};
});
},
refresh: function(frm) {
frm.toggle_display('account_name', frm.is_new());
refresh: function (frm) {
frm.toggle_display("account_name", frm.is_new());
// hide fields if group
frm.toggle_display(['account_type', 'tax_rate'], cint(frm.doc.is_group) == 0);
frm.toggle_display(["tax_rate"], cint(frm.doc.is_group) == 0);
// disable fields
frm.toggle_enable(['is_group', 'company'], false);
frm.toggle_enable(["is_group", "company"], false);
if (cint(frm.doc.is_group) == 0) {
frm.toggle_display('freeze_account', frm.doc.__onload
&& frm.doc.__onload.can_freeze_account);
frm.toggle_display(
"freeze_account",
frm.doc.__onload && frm.doc.__onload.can_freeze_account
);
}
// read-only for root accounts
if (!frm.is_new()) {
if (!frm.doc.parent_account) {
frm.set_read_only();
frm.set_intro(__("This is a root account and cannot be edited."));
frm.set_intro(
__("This is a root account and cannot be edited.")
);
} else {
// credit days and type if customer or supplier
frm.set_intro(null);
frm.trigger('account_type');
frm.trigger("account_type");
// show / hide convert buttons
frm.trigger('add_toolbar_buttons');
frm.trigger("add_toolbar_buttons");
}
if (frm.has_perm('write')) {
frm.add_custom_button(__('Merge Account'), function () {
frm.trigger("merge_account");
}, __('Actions'));
frm.add_custom_button(__('Update Account Name / Number'), function () {
frm.trigger("update_account_number");
}, __('Actions'));
if (frm.has_perm("write")) {
frm.add_custom_button(
__("Merge Account"),
function () {
frm.trigger("merge_account");
},
__("Actions")
);
frm.add_custom_button(
__("Update Account Name / Number"),
function () {
frm.trigger("update_account_number");
},
__("Actions")
);
}
}
},
account_type: function (frm) {
if (frm.doc.is_group == 0) {
frm.toggle_display(['tax_rate'], frm.doc.account_type == 'Tax');
frm.toggle_display('warehouse', frm.doc.account_type == 'Stock');
frm.toggle_display(["tax_rate"], frm.doc.account_type == "Tax");
frm.toggle_display("warehouse", frm.doc.account_type == "Stock");
}
},
add_toolbar_buttons: function(frm) {
frm.add_custom_button(__('Chart of Accounts'), () => {
frappe.set_route("Tree", "Account");
}, __('View'));
add_toolbar_buttons: function (frm) {
frm.add_custom_button(
__("Chart of Accounts"),
() => {
frappe.set_route("Tree", "Account");
},
__("View")
);
if (frm.doc.is_group == 1) {
frm.add_custom_button(__('Convert to Non-Group'), function () {
@@ -79,84 +95,88 @@ frappe.ui.form.on('Account', {
frm.add_custom_button(__('General Ledger'), function () {
frappe.route_options = {
"account": frm.doc.name,
"from_date": frappe.sys_defaults.year_start_date,
"to_date": frappe.sys_defaults.year_end_date,
"from_date": erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[1],
"to_date": erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[2],
"company": frm.doc.company
};
frappe.set_route("query-report", "General Ledger");
}, __('View'));
frm.add_custom_button(__('Convert to Group'), function () {
return frappe.call({
doc: frm.doc,
method: 'convert_ledger_to_group',
callback: function() {
frm.refresh();
}
});
}, __('Actions'));
frm.add_custom_button(
__("Convert to Group"),
function () {
return frappe.call({
doc: frm.doc,
method: "convert_ledger_to_group",
callback: function () {
frm.refresh();
},
});
},
__("Actions")
);
}
},
merge_account: function(frm) {
merge_account: function (frm) {
var d = new frappe.ui.Dialog({
title: __('Merge with Existing Account'),
title: __("Merge with Existing Account"),
fields: [
{
"label" : "Name",
"fieldname": "name",
"fieldtype": "Data",
"reqd": 1,
"default": frm.doc.name
}
label: "Name",
fieldname: "name",
fieldtype: "Data",
reqd: 1,
default: frm.doc.name,
},
],
primary_action: function() {
primary_action: function () {
var data = d.get_values();
frappe.call({
method: "erpnext.accounts.doctype.account.account.merge_account",
args: {
old: frm.doc.name,
new: data.name,
is_group: frm.doc.is_group,
root_type: frm.doc.root_type,
company: frm.doc.company
},
callback: function(r) {
if(!r.exc) {
if(r.message) {
callback: function (r) {
if (!r.exc) {
if (r.message) {
frappe.set_route("Form", "Account", r.message);
}
d.hide();
}
}
},
});
},
primary_action_label: __('Merge')
primary_action_label: __("Merge"),
});
d.show();
},
update_account_number: function(frm) {
update_account_number: function (frm) {
var d = new frappe.ui.Dialog({
title: __('Update Account Number / Name'),
title: __("Update Account Number / Name"),
fields: [
{
"label": "Account Name",
"fieldname": "account_name",
"fieldtype": "Data",
"reqd": 1,
"default": frm.doc.account_name
label: "Account Name",
fieldname: "account_name",
fieldtype: "Data",
reqd: 1,
default: frm.doc.account_name,
},
{
"label": "Account Number",
"fieldname": "account_number",
"fieldtype": "Data",
"default": frm.doc.account_number
}
label: "Account Number",
fieldname: "account_number",
fieldtype: "Data",
default: frm.doc.account_number,
},
],
primary_action: function() {
primary_action: function () {
var data = d.get_values();
if(data.account_number === frm.doc.account_number && data.account_name === frm.doc.account_name) {
if (
data.account_number === frm.doc.account_number &&
data.account_name === frm.doc.account_name
) {
d.hide();
return;
}
@@ -166,23 +186,29 @@ frappe.ui.form.on('Account', {
args: {
account_number: data.account_number,
account_name: data.account_name,
name: frm.doc.name
name: frm.doc.name,
},
callback: function(r) {
if(!r.exc) {
if(r.message) {
callback: function (r) {
if (!r.exc) {
if (r.message) {
frappe.set_route("Form", "Account", r.message);
} else {
frm.set_value("account_number", data.account_number);
frm.set_value("account_name", data.account_name);
frm.set_value(
"account_number",
data.account_number
);
frm.set_value(
"account_name",
data.account_name
);
}
d.hide();
}
}
},
});
},
primary_action_label: __('Update')
primary_action_label: __("Update"),
});
d.show();
}
},
});

View File

@@ -123,7 +123,7 @@
"label": "Account Type",
"oldfieldname": "account_type",
"oldfieldtype": "Select",
"options": "\nAccumulated Depreciation\nAsset Received But Not Billed\nBank\nCash\nChargeable\nCapital Work in Progress\nCost of Goods Sold\nDepreciation\nEquity\nExpense Account\nExpenses Included In Asset Valuation\nExpenses Included In Valuation\nFixed Asset\nIncome Account\nPayable\nReceivable\nRound Off\nStock\nStock Adjustment\nStock Received But Not Billed\nService Received But Not Billed\nTax\nTemporary"
"options": "\nAccumulated Depreciation\nAsset Received But Not Billed\nBank\nCash\nChargeable\nCapital Work in Progress\nCost of Goods Sold\nCurrent Asset\nCurrent Liability\nDepreciation\nDirect Expense\nDirect Income\nEquity\nExpense Account\nExpenses Included In Asset Valuation\nExpenses Included In Valuation\nFixed Asset\nIncome Account\nIndirect Expense\nIndirect Income\nLiability\nPayable\nReceivable\nRound Off\nStock\nStock Adjustment\nStock Received But Not Billed\nService Received But Not Billed\nTax\nTemporary"
},
{
"description": "Rate at which this tax is applied",
@@ -192,7 +192,7 @@
"idx": 1,
"is_tree": 1,
"links": [],
"modified": "2023-04-11 16:08:46.983677",
"modified": "2023-07-20 18:18:44.405723",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Account",
@@ -243,7 +243,6 @@
"read": 1,
"report": 1,
"role": "Accounts Manager",
"set_user_permissions": 1,
"share": 1,
"write": 1
}

View File

@@ -18,7 +18,70 @@ class BalanceMismatchError(frappe.ValidationError):
pass
class InvalidAccountMergeError(frappe.ValidationError):
pass
class Account(NestedSet):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
account_currency: DF.Link | None
account_name: DF.Data
account_number: DF.Data | None
account_type: DF.Literal[
"",
"Accumulated Depreciation",
"Asset Received But Not Billed",
"Bank",
"Cash",
"Chargeable",
"Capital Work in Progress",
"Cost of Goods Sold",
"Current Asset",
"Current Liability",
"Depreciation",
"Direct Expense",
"Direct Income",
"Equity",
"Expense Account",
"Expenses Included In Asset Valuation",
"Expenses Included In Valuation",
"Fixed Asset",
"Income Account",
"Indirect Expense",
"Indirect Income",
"Liability",
"Payable",
"Receivable",
"Round Off",
"Stock",
"Stock Adjustment",
"Stock Received But Not Billed",
"Service Received But Not Billed",
"Tax",
"Temporary",
]
balance_must_be: DF.Literal["", "Debit", "Credit"]
company: DF.Link
disabled: DF.Check
freeze_account: DF.Literal["No", "Yes"]
include_in_gross: DF.Check
is_group: DF.Check
lft: DF.Int
old_parent: DF.Data | None
parent_account: DF.Link
report_type: DF.Literal["", "Balance Sheet", "Profit and Loss"]
rgt: DF.Int
root_type: DF.Literal["", "Asset", "Liability", "Income", "Expense", "Equity"]
tax_rate: DF.Float
# end: auto-generated types
nsm_parent_field = "parent_account"
def on_update(self):
@@ -28,8 +91,8 @@ class Account(NestedSet):
super(Account, self).on_update()
def onload(self):
frozen_accounts_modifier = frappe.db.get_value(
"Accounts Settings", "Accounts Settings", "frozen_accounts_modifier"
frozen_accounts_modifier = frappe.db.get_single_value(
"Accounts Settings", "frozen_accounts_modifier"
)
if not frozen_accounts_modifier or frozen_accounts_modifier in frappe.get_roles():
self.set_onload("can_freeze_account", True)
@@ -45,6 +108,7 @@ class Account(NestedSet):
if frappe.local.flags.allow_unverified_charts:
return
self.validate_parent()
self.validate_parent_child_account_type()
self.validate_root_details()
validate_field_number("Account", self.name, self.account_number, self.company, "account_number")
self.validate_group_or_ledger()
@@ -55,6 +119,20 @@ class Account(NestedSet):
self.validate_account_currency()
self.validate_root_company_and_sync_account_to_children()
def validate_parent_child_account_type(self):
if self.parent_account:
if self.account_type in [
"Direct Income",
"Indirect Income",
"Current Asset",
"Current Liability",
"Direct Expense",
"Indirect Expense",
]:
parent_account_type = frappe.db.get_value("Account", self.parent_account, ["account_type"])
if parent_account_type == self.account_type:
throw(_("Only Parent can be of type {0}").format(self.account_type))
def validate_parent(self):
"""Fetch Parent Details and validate parent account"""
if self.parent_account:
@@ -445,25 +523,34 @@ def update_account_number(name, account_name, account_number=None, from_descenda
@frappe.whitelist()
def merge_account(old, new, is_group, root_type, company):
def merge_account(old, new):
# Validate properties before merging
new_account = frappe.get_cached_doc("Account", new)
old_account = frappe.get_cached_doc("Account", old)
if not new_account:
throw(_("Account {0} does not exist").format(new))
if (new_account.is_group, new_account.root_type, new_account.company) != (
cint(is_group),
root_type,
company,
if (
cint(new_account.is_group),
new_account.root_type,
new_account.company,
cstr(new_account.account_currency),
) != (
cint(old_account.is_group),
old_account.root_type,
old_account.company,
cstr(old_account.account_currency),
):
throw(
_(
"""Merging is only possible if following properties are same in both records. Is Group, Root Type, Company"""
)
msg=_(
"""Merging is only possible if following properties are same in both records. Is Group, Root Type, Company and Account Currency"""
),
title=("Invalid Accounts"),
exc=InvalidAccountMergeError,
)
if is_group and new_account.parent_account == old:
if old_account.is_group and new_account.parent_account == old:
new_account.db_set("parent_account", frappe.get_cached_value("Account", old, "parent_account"))
frappe.rename_doc("Account", old, new, merge=1, force=1)

View File

@@ -77,7 +77,7 @@ frappe.treeview_settings["Account"] = {
// show Dr if positive since balance is calculated as debit - credit else show Cr
const balance = account.balance_in_account_currency || account.balance;
const dr_or_cr = balance > 0 ? "Dr": "Cr";
const dr_or_cr = balance > 0 ? __("Dr"): __("Cr");
const format = (value, currency) => format_currency(Math.abs(value), currency);
if (account.balance!==undefined) {
@@ -194,8 +194,8 @@ frappe.treeview_settings["Account"] = {
click: function(node, btn) {
frappe.route_options = {
"account": node.label,
"from_date": frappe.sys_defaults.year_start_date,
"to_date": frappe.sys_defaults.year_end_date,
"from_date": erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[1],
"to_date": erpnext.utils.get_fiscal_year(frappe.datetime.get_today(), true)[2],
"company": frappe.treeview_settings['Account'].treeview.page.fields_dict.company.get_value()
};
frappe.set_route("query-report", "General Ledger");

View File

@@ -74,7 +74,7 @@ def create_charts(
# after all accounts are already inserted.
frappe.local.flags.ignore_update_nsm = True
_import_accounts(chart, None, None, root_account=True)
rebuild_tree("Account", "parent_account")
rebuild_tree("Account")
frappe.local.flags.ignore_update_nsm = False
@@ -231,6 +231,8 @@ def build_account_tree(tree, parent, all_accounts):
tree[child.account_name]["account_type"] = child.account_type
if child.tax_rate:
tree[child.account_name]["tax_rate"] = child.tax_rate
if child.account_currency:
tree[child.account_name]["account_currency"] = child.account_currency
if not parent:
tree[child.account_name]["root_type"] = child.root_type

View File

@@ -1,289 +0,0 @@
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
"""
Import chart of accounts from OpenERP sources
"""
import ast
import json
import os
from xml.etree import ElementTree as ET
import frappe
from frappe.utils.csvutils import read_csv_content
path = "/Users/nabinhait/projects/odoo/addons"
accounts = {}
charts = {}
all_account_types = []
all_roots = {}
def go():
global accounts, charts
default_account_types = get_default_account_types()
country_dirs = []
for basepath, folders, files in os.walk(path):
basename = os.path.basename(basepath)
if basename.startswith("l10n_"):
country_dirs.append(basename)
for country_dir in country_dirs:
accounts, charts = {}, {}
country_path = os.path.join(path, country_dir)
manifest = ast.literal_eval(open(os.path.join(country_path, "__openerp__.py")).read())
data_files = (
manifest.get("data", []) + manifest.get("init_xml", []) + manifest.get("update_xml", [])
)
files_path = [os.path.join(country_path, d) for d in data_files]
xml_roots = get_xml_roots(files_path)
csv_content = get_csv_contents(files_path)
prefix = country_dir if csv_content else None
account_types = get_account_types(
xml_roots.get("account.account.type", []), csv_content.get("account.account.type", []), prefix
)
account_types.update(default_account_types)
if xml_roots:
make_maps_for_xml(xml_roots, account_types, country_dir)
if csv_content:
make_maps_for_csv(csv_content, account_types, country_dir)
make_account_trees()
make_charts()
create_all_roots_file()
def get_default_account_types():
default_types_root = []
default_types_root.append(
ET.parse(os.path.join(path, "account", "data", "data_account_type.xml")).getroot()
)
return get_account_types(default_types_root, None, prefix="account")
def get_xml_roots(files_path):
xml_roots = frappe._dict()
for filepath in files_path:
fname = os.path.basename(filepath)
if fname.endswith(".xml"):
tree = ET.parse(filepath)
root = tree.getroot()
for node in root[0].findall("record"):
if node.get("model") in [
"account.account.template",
"account.chart.template",
"account.account.type",
]:
xml_roots.setdefault(node.get("model"), []).append(root)
break
return xml_roots
def get_csv_contents(files_path):
csv_content = {}
for filepath in files_path:
fname = os.path.basename(filepath)
for file_type in ["account.account.template", "account.account.type", "account.chart.template"]:
if fname.startswith(file_type) and fname.endswith(".csv"):
with open(filepath, "r") as csvfile:
try:
csv_content.setdefault(file_type, []).append(read_csv_content(csvfile.read()))
except Exception as e:
continue
return csv_content
def get_account_types(root_list, csv_content, prefix=None):
types = {}
account_type_map = {
"cash": "Cash",
"bank": "Bank",
"tr_cash": "Cash",
"tr_bank": "Bank",
"receivable": "Receivable",
"tr_receivable": "Receivable",
"account rec": "Receivable",
"payable": "Payable",
"tr_payable": "Payable",
"equity": "Equity",
"stocks": "Stock",
"stock": "Stock",
"tax": "Tax",
"tr_tax": "Tax",
"tax-out": "Tax",
"tax-in": "Tax",
"charges_personnel": "Chargeable",
"fixed asset": "Fixed Asset",
"cogs": "Cost of Goods Sold",
}
for root in root_list:
for node in root[0].findall("record"):
if node.get("model") == "account.account.type":
data = {}
for field in node.findall("field"):
if (
field.get("name") == "code"
and field.text.lower() != "none"
and account_type_map.get(field.text)
):
data["account_type"] = account_type_map[field.text]
node_id = prefix + "." + node.get("id") if prefix else node.get("id")
types[node_id] = data
if csv_content and csv_content[0][0] == "id":
for row in csv_content[1:]:
row_dict = dict(zip(csv_content[0], row))
data = {}
if row_dict.get("code") and account_type_map.get(row_dict["code"]):
data["account_type"] = account_type_map[row_dict["code"]]
if data and data.get("id"):
node_id = prefix + "." + data.get("id") if prefix else data.get("id")
types[node_id] = data
return types
def make_maps_for_xml(xml_roots, account_types, country_dir):
"""make maps for `charts` and `accounts`"""
for model, root_list in xml_roots.items():
for root in root_list:
for node in root[0].findall("record"):
if node.get("model") == "account.account.template":
data = {}
for field in node.findall("field"):
if field.get("name") == "name":
data["name"] = field.text
if field.get("name") == "parent_id":
parent_id = field.get("ref") or field.get("eval")
data["parent_id"] = parent_id
if field.get("name") == "user_type":
value = field.get("ref")
if account_types.get(value, {}).get("account_type"):
data["account_type"] = account_types[value]["account_type"]
if data["account_type"] not in all_account_types:
all_account_types.append(data["account_type"])
data["children"] = []
accounts[node.get("id")] = data
if node.get("model") == "account.chart.template":
data = {}
for field in node.findall("field"):
if field.get("name") == "name":
data["name"] = field.text
if field.get("name") == "account_root_id":
data["account_root_id"] = field.get("ref")
data["id"] = country_dir
charts.setdefault(node.get("id"), {}).update(data)
def make_maps_for_csv(csv_content, account_types, country_dir):
for content in csv_content.get("account.account.template", []):
for row in content[1:]:
data = dict(zip(content[0], row))
account = {
"name": data.get("name"),
"parent_id": data.get("parent_id:id") or data.get("parent_id/id"),
"children": [],
}
user_type = data.get("user_type/id") or data.get("user_type:id")
if account_types.get(user_type, {}).get("account_type"):
account["account_type"] = account_types[user_type]["account_type"]
if account["account_type"] not in all_account_types:
all_account_types.append(account["account_type"])
accounts[data.get("id")] = account
if not account.get("parent_id") and data.get("chart_template_id:id"):
chart_id = data.get("chart_template_id:id")
charts.setdefault(chart_id, {}).update({"account_root_id": data.get("id")})
for content in csv_content.get("account.chart.template", []):
for row in content[1:]:
if row:
data = dict(zip(content[0], row))
charts.setdefault(data.get("id"), {}).update(
{
"account_root_id": data.get("account_root_id:id") or data.get("account_root_id/id"),
"name": data.get("name"),
"id": country_dir,
}
)
def make_account_trees():
"""build tree hierarchy"""
for id in accounts.keys():
account = accounts[id]
if account.get("parent_id"):
if accounts.get(account["parent_id"]):
# accounts[account["parent_id"]]["children"].append(account)
accounts[account["parent_id"]][account["name"]] = account
del account["parent_id"]
del account["name"]
# remove empty children
for id in accounts.keys():
if "children" in accounts[id] and not accounts[id].get("children"):
del accounts[id]["children"]
def make_charts():
"""write chart files in app/setup/doctype/company/charts"""
for chart_id in charts:
src = charts[chart_id]
if not src.get("name") or not src.get("account_root_id"):
continue
if not src["account_root_id"] in accounts:
continue
filename = src["id"][5:] + "_" + chart_id
print("building " + filename)
chart = {}
chart["name"] = src["name"]
chart["country_code"] = src["id"][5:]
chart["tree"] = accounts[src["account_root_id"]]
for key, val in chart["tree"].items():
if key in ["name", "parent_id"]:
chart["tree"].pop(key)
if type(val) == dict:
val["root_type"] = ""
if chart:
fpath = os.path.join(
"erpnext", "erpnext", "accounts", "doctype", "account", "chart_of_accounts", filename + ".json"
)
with open(fpath, "r") as chartfile:
old_content = chartfile.read()
if not old_content or (
json.loads(old_content).get("is_active", "No") == "No"
and json.loads(old_content).get("disabled", "No") == "No"
):
with open(fpath, "w") as chartfile:
chartfile.write(json.dumps(chart, indent=4, sort_keys=True))
all_roots.setdefault(filename, chart["tree"].keys())
def create_all_roots_file():
with open("all_roots.txt", "w") as f:
for filename, roots in sorted(all_roots.items()):
f.write(filename)
f.write("\n----------------------\n")
for r in sorted(roots):
f.write(r.encode("utf-8"))
f.write("\n")
f.write("\n\n\n")
if __name__ == "__main__":
go()

View File

@@ -26,7 +26,7 @@
"0360 Bauliche Investitionen in fremden (gepachteten) Betriebs- und Geschäftsgebäuden": {"account_type": "Fixed Asset"},
"0370 Bauliche Investitionen in fremden (gepachteten) Wohn- und Sozialgebäuden": {"account_type": "Fixed Asset"},
"0390 Kumulierte Abschreibungen zu Grundstücken ": {"account_type": "Fixed Asset"},
"0400 Maschinen und Geräte ": {"account_type": "Fixed Asset"},
"0400 Maschinen und Geräte ": {"account_type": "Fixed Asset"},
"0500 Maschinenwerkzeuge ": {"account_type": "Fixed Asset"},
"0510 Allgemeine Werkzeuge und Handwerkzeuge ": {"account_type": "Fixed Asset"},
"0520 Prototypen, Formen, Modelle ": {"account_type": "Fixed Asset"},
@@ -65,42 +65,41 @@
"0980 Geleistete Anzahlungen auf Finanzanlagen ": {"account_type": "Fixed Asset"},
"0990 Kumulierte Abschreibungen zu Finanzanlagen ": {"account_type": "Fixed Asset"},
"root_type": "Asset"
},
},
"Klasse 1 Aktiva: Vorr\u00e4te": {
"1000 Bezugsverrechnung": {"account_type": "Stock"},
"1100 Rohstoffe": {"account_type": "Stock"},
"1200 Bezogene Teile": {"account_type": "Stock"},
"1300 Hilfsstoffe": {"account_type": "Stock"},
"1350 Betriebsstoffe": {"account_type": "Stock"},
"1360 Vorrat Energietraeger": {"account_type": "Stock"},
"1360 Vorrat Energietraeger": {"account_type": "Stock"},
"1400 Unfertige Erzeugnisse": {"account_type": "Stock"},
"1500 Fertige Erzeugnisse": {"account_type": "Stock"},
"1600 Handelswarenvorrat": {"account_type": "Stock Received But Not Billed"},
"1700 Noch nicht abrechenbare Leistungen": {"account_type": "Stock"},
"1900 Wertberichtigungen": {"account_type": "Stock"},
"1800 Geleistete Anzahlungen": {"account_type": "Stock"},
"1900 Wertberichtigungen": {"account_type": "Stock"},
"root_type": "Asset"
},
},
"Klasse 3 Passiva: Verbindlichkeiten": {
"3000 Allgemeine Verbindlichkeiten (Schuld)": {"account_type": "Payable"},
"3010 R\u00fcckstellungen f\u00fcr Pensionen": {"account_type": "Payable"},
"3020 Steuerr\u00fcckstellungen": {"account_type": "Tax"},
"3041 Sonstige R\u00fcckstellungen": {"account_type": "Payable"},
"3041 Sonstige R\u00fcckstellungen": {"account_type": "Payable"},
"3110 Verbindlichkeiten gegen\u00fcber Bank": {"account_type": "Payable"},
"3150 Verbindlichkeiten Darlehen": {"account_type": "Payable"},
"3185 Verbindlichkeiten Kreditkarte": {"account_type": "Payable"},
"3185 Verbindlichkeiten Kreditkarte": {"account_type": "Payable"},
"3380 Verbindlichkeiten aus der Annahme gezogener Wechsel u. d. Ausstellungen eigener Wechsel": {
"account_type": "Payable"
},
"3400 Verbindlichkeiten gegen\u00fc. verb. Untern., Verbindl. gegen\u00fc. Untern., mit denen eine Beteiligungsverh\u00e4lnis besteht": {},
"3460 Verbindlichkeiten gegenueber Gesellschaftern": {"account_type": "Payable"},
"3470 Einlagen stiller Gesellschafter": {"account_type": "Payable"},
"3585 Verbindlichkeiten Lohnsteuer": {"account_type": "Tax"},
"3590 Verbindlichkeiten Kommunalabgaben": {"account_type": "Tax"},
"3595 Verbindlichkeiten Dienstgeberbeitrag": {"account_type": "Tax"},
"3585 Verbindlichkeiten Lohnsteuer": {"account_type": "Tax"},
"3590 Verbindlichkeiten Kommunalabgaben": {"account_type": "Tax"},
"3595 Verbindlichkeiten Dienstgeberbeitrag": {"account_type": "Tax"},
"3600 Verbindlichkeiten Sozialversicherung": {"account_type": "Payable"},
"3640 Verbindlichkeiten Loehne und Gehaelter": {"account_type": "Payable"},
"3640 Verbindlichkeiten Loehne und Gehaelter": {"account_type": "Payable"},
"3700 Sonstige Verbindlichkeiten": {"account_type": "Payable"},
"3900 Passive Rechnungsabgrenzungsposten": {"account_type": "Payable"},
"3100 Anleihen (einschlie\u00dflich konvertibler)": {"account_type": "Payable"},
@@ -119,13 +118,13 @@
},
"3515 Umsatzsteuer Inland 10%": {
"account_type": "Tax"
},
},
"3520 Umsatzsteuer aus i.g. Erwerb 20%": {
"account_type": "Tax"
},
"3525 Umsatzsteuer aus i.g. Erwerb 10%": {
"account_type": "Tax"
},
},
"3560 Umsatzsteuer-Evidenzkonto f\u00fcr erhaltene Anzahlungen auf Bestellungen": {},
"3360 Verbindlichkeiten aus Lieferungen u. Leistungen EU": {
"account_type": "Payable"
@@ -141,7 +140,7 @@
"account_type": "Tax"
},
"root_type": "Liability"
},
},
"Klasse 2 Aktiva: Umlaufverm\u00f6gen, Rechnungsabgrenzungen": {
"2030 Forderungen aus Lieferungen und Leistungen Inland (0% USt, umsatzsteuerfrei)": {
"account_type": "Receivable"
@@ -154,7 +153,7 @@
},
"2040 Forderungen aus Lieferungen und Leistungen Inland (sonstiger USt-Satz)": {
"account_type": "Receivable"
},
},
"2100 Forderungen aus Lieferungen und Leistungen EU": {
"account_type": "Receivable"
},
@@ -192,7 +191,7 @@
"account_type": "Receivable"
},
"2570 Einfuhrumsatzsteuer (bezahlt)": {"account_type": "Tax"},
"2460 Eingeforderte aber noch nicht eingezahlte Einlagen": {
"account_type": "Receivable"
},
@@ -243,10 +242,10 @@
},
"2800 Guthaben bei Bank": {
"account_type": "Bank"
},
},
"2801 Guthaben bei Bank - Sparkonto": {
"account_type": "Bank"
},
},
"2810 Guthaben bei Paypal": {
"account_type": "Bank"
},
@@ -264,19 +263,19 @@
},
"2895 Schwebende Geldbewegugen": {
"account_type": "Bank"
},
},
"2513 Vorsteuer Inland 5%": {
"account_type": "Tax"
},
"2515 Vorsteuer Inland 20%": {
"account_type": "Tax"
},
},
"2520 Vorsteuer aus innergemeinschaftlichem Erwerb 10%": {
"account_type": "Tax"
},
"2525 Vorsteuer aus innergemeinschaftlichem Erwerb 20%": {
"account_type": "Tax"
},
},
"2530 Vorsteuer \u00a719/Art 19 ( reverse charge ) ": {
"account_type": "Tax"
},
@@ -286,16 +285,16 @@
"root_type": "Asset"
},
"Klasse 4: Betriebliche Erträge": {
"4000 Erlöse 20 %": {"account_type": "Income Account"},
"4020 Erl\u00f6se 0 % steuerbefreit": {"account_type": "Income Account"},
"4000 Erlöse 20 %": {"account_type": "Income Account"},
"4020 Erl\u00f6se 0 % steuerbefreit": {"account_type": "Income Account"},
"4010 Erl\u00f6se 10 %": {"account_type": "Income Account"},
"4030 Erl\u00f6se 13 %": {"account_type": "Income Account"},
"4040 Erl\u00f6se 0 % innergemeinschaftliche Lieferungen": {"account_type": "Income Account"},
"4400 Erl\u00f6sreduktion 0 % steuerbefreit": {"account_type": "Expense Account"},
"4030 Erl\u00f6se 13 %": {"account_type": "Income Account"},
"4040 Erl\u00f6se 0 % innergemeinschaftliche Lieferungen": {"account_type": "Income Account"},
"4400 Erl\u00f6sreduktion 0 % steuerbefreit": {"account_type": "Expense Account"},
"4410 Erl\u00f6sreduktion 10 %": {"account_type": "Expense Account"},
"4420 Erl\u00f6sreduktion 20 %": {"account_type": "Expense Account"},
"4430 Erl\u00f6sreduktion 13 %": {"account_type": "Expense Account"},
"4440 Erl\u00f6sreduktion 0 % innergemeinschaftliche Lieferungen": {"account_type": "Expense Account"},
"4430 Erl\u00f6sreduktion 13 %": {"account_type": "Expense Account"},
"4440 Erl\u00f6sreduktion 0 % innergemeinschaftliche Lieferungen": {"account_type": "Expense Account"},
"4500 Ver\u00e4nderungen des Bestandes an fertigen und unfertigen Erzeugn. sowie an noch nicht abrechenbaren Leistungen": {"account_type": "Income Account"},
"4580 Aktivierte Eigenleistungen": {"account_type": "Income Account"},
"4600 Erl\u00f6se aus dem Abgang vom Anlageverm\u00f6gen, ausgen. Finanzanlagen": {"account_type": "Income Account"},
@@ -304,15 +303,15 @@
"4700 Ertr\u00e4ge aus der Aufl\u00f6sung von R\u00fcckstellungen": {"account_type": "Income Account"},
"4800 \u00dcbrige betriebliche Ertr\u00e4ge": {"account_type": "Income Account"},
"root_type": "Income"
},
},
"Klasse 5: Aufwand f\u00fcr Material und Leistungen": {
"5000 Einkauf Partnerleistungen": {"account_type": "Cost of Goods Sold"},
"5000 Einkauf Partnerleistungen": {"account_type": "Cost of Goods Sold"},
"5100 Verbrauch an Rohstoffen": {"account_type": "Cost of Goods Sold"},
"5200 Verbrauch von bezogenen Fertig- und Einzelteilen": {"account_type": "Cost of Goods Sold"},
"5300 Verbrauch von Hilfsstoffen": {"account_type": "Cost of Goods Sold"},
"5340 Verbrauch Verpackungsmaterial": {"account_type": "Cost of Goods Sold"},
"5470 Verbrauch von Kleinmaterial": {"account_type": "Cost of Goods Sold"},
"5450 Verbrauch von Reinigungsmaterial": {"account_type": "Cost of Goods Sold"},
"5450 Verbrauch von Reinigungsmaterial": {"account_type": "Cost of Goods Sold"},
"5400 Verbrauch von Betriebsstoffen": {"account_type": "Cost of Goods Sold"},
"5500 Verbrauch von Werkzeugen und anderen Erzeugungshilfsmittel": {"account_type": "Cost of Goods Sold"},
"5600 Verbrauch von Brenn- und Treibstoffen, Energie und Wasser": {"account_type": "Cost of Goods Sold"},
@@ -340,7 +339,7 @@
"6700 Sonstige Sozialaufwendungen": {"account_type": "Payable"},
"6900 Aufwandsstellenrechnung Personal": {"account_type": "Payable"},
"root_type": "Expense"
},
},
"Klasse 7: Abschreibungen und sonstige betriebliche Aufwendungen": {
"7010 Abschreibungen auf das Anlageverm\u00f6gen (ausgenommen Finanzanlagen)": {"account_type": "Depreciation"},
"7100 Sonstige Steuern und Geb\u00fchren": {"account_type": "Tax"},
@@ -349,7 +348,7 @@
"7310 Fahrrad - Aufwand": {"account_type": "Expense Account"},
"7320 Kfz - Aufwand": {"account_type": "Expense Account"},
"7330 LKW - Aufwand": {"account_type": "Expense Account"},
"7340 Lastenrad - Aufwand": {"account_type": "Expense Account"},
"7340 Lastenrad - Aufwand": {"account_type": "Expense Account"},
"7350 Reise- und Fahraufwand": {"account_type": "Expense Account"},
"7360 Tag- und N\u00e4chtigungsgelder": {"account_type": "Expense Account"},
"7380 Nachrichtenaufwand": {"account_type": "Expense Account"},
@@ -409,7 +408,7 @@
"8990 Gewinnabfuhr bzw. Verlust\u00fcberrechnung aus Ergebnisabf\u00fchrungsvertr\u00e4gen": {"account_type": "Expense Account"},
"8350 nicht ausgenutzte Lieferantenskonti": {"account_type": "Expense Account"},
"root_type": "Income"
},
},
"Klasse 9 Passiva: Eigenkapital, R\u00fccklagen, stille Einlagen, Abschlusskonten": {
"9000 Gezeichnetes bzw. gewidmetes Kapital": {
"account_type": "Equity"
@@ -435,5 +434,5 @@
},
"root_type": "Equity"
}
}
}
}

View File

@@ -437,12 +437,20 @@
},
"Sales": {
"Sales from Other Regions": {
"Sales from Other Region": {}
"Sales from Other Region": {
"account_type": "Income Account"
}
},
"Sales of same region": {
"Management Consultancy Fees 1": {},
"Sales Account": {},
"Sales of I/C": {}
"Management Consultancy Fees 1": {
"account_type": "Income Account"
},
"Sales Account": {
"account_type": "Income Account"
},
"Sales of I/C": {
"account_type": "Income Account"
}
}
},
"root_type": "Income"

View File

@@ -33,7 +33,9 @@
},
"Stocks": {
"Mati\u00e8res premi\u00e8res": {},
"Stock de produits fini": {},
"Stock de produits fini": {
"account_type": "Stock"
},
"Stock exp\u00e9di\u00e9 non-factur\u00e9": {},
"Travaux en cours": {},
"account_type": "Stock"
@@ -395,9 +397,11 @@
},
"Produits": {
"Revenus de ventes": {
" Escomptes de volume sur ventes": {},
"Escomptes de volume sur ventes": {},
"Autres produits d'exploitation": {},
"Ventes": {},
"Ventes": {
"account_type": "Income Account"
},
"Ventes avec des provinces harmonis\u00e9es": {},
"Ventes avec des provinces non-harmonis\u00e9es": {},
"Ventes \u00e0 l'\u00e9tranger": {}

View File

@@ -53,8 +53,13 @@
},
"II. Forderungen und sonstige Vermögensgegenstände": {
"is_group": 1,
"Ford. a. Lieferungen und Leistungen": {
"Forderungen aus Lieferungen und Leistungen mit Kontokorrent": {
"account_number": "1400",
"account_type": "Receivable",
"is_group": 1
},
"Forderungen aus Lieferungen und Leistungen ohne Kontokorrent": {
"account_number": "1410",
"account_type": "Receivable"
},
"Durchlaufende Posten": {
@@ -180,8 +185,13 @@
},
"IV. Verbindlichkeiten aus Lieferungen und Leistungen": {
"is_group": 1,
"Verbindlichkeiten aus Lieferungen u. Leistungen": {
"Verbindlichkeiten aus Lieferungen und Leistungen mit Kontokorrent": {
"account_number": "1600",
"account_type": "Payable",
"is_group": 1
},
"Verbindlichkeiten aus Lieferungen und Leistungen ohne Kontokorrent": {
"account_number": "1610",
"account_type": "Payable"
}
},

View File

@@ -1,4 +1,6 @@
{
"country_code": "hu",
"name": "Hungary - Chart of Accounts for Microenterprises",
"tree": {
"SZ\u00c1MLAOSZT\u00c1LY BEFEKTETETT ESZK\u00d6Z\u00d6K": {
"account_number": 1,
@@ -1651,4 +1653,4 @@
}
}
}
}
}

View File

@@ -69,8 +69,7 @@
"Persediaan Barang": {
"Persediaan Barang": {
"account_number": "1141.000",
"account_type": "Stock",
"is_group": 1
"account_type": "Stock"
},
"Uang Muka Pembelian": {
"Uang Muka Pembelian": {
@@ -670,7 +669,8 @@
},
"Penjualan Barang Dagangan": {
"Penjualan": {
"account_number": "4110.000"
"account_number": "4110.000",
"account_type": "Income Account"
},
"Potongan Penjualan": {
"account_number": "4130.000"

View File

@@ -109,8 +109,7 @@
}
},
"INVENTARIOS": {
"account_type": "Stock",
"is_group": 1
"account_type": "Stock"
}
},
"ACTIVO LARGO PLAZO": {
@@ -398,10 +397,18 @@
"INGRESOS POR SERVICIOS 1": {}
},
"VENTAS": {
"VENTAS EXPORTACION": {},
"VENTAS INMUEBLES": {},
"VENTAS NACIONALES": {},
"VENTAS NACIONALES AL DETAL": {}
"VENTAS EXPORTACION": {
"account_type": "Income Account"
},
"VENTAS INMUEBLES": {
"account_type": "Income Account"
},
"VENTAS NACIONALES": {
"account_type": "Income Account"
},
"VENTAS NACIONALES AL DETAL": {
"account_type": "Income Account"
}
}
}
},

View File

@@ -1,6 +1,6 @@
{
"country_code": "ni",
"name": "Nicaragua - Catalogo de Cuentas",
"name": "Nicaragua - Catálogo de Cuentas",
"tree": {
"Activo": {
"Activo Corriente": {
@@ -491,4 +491,4 @@
"root_type": "Liability"
}
}
}
}

View File

@@ -2,75 +2,13 @@
"country_code": "nl",
"name": "Netherlands - Grootboekschema",
"tree": {
"FABRIKAGEREKENINGEN": {
"is_group": 1,
"root_type": "Expense"
},
"FINANCIELE REKENINGEN, KORTLOPENDE VORDERINGEN EN SCHULDEN": {
"Bank": {
"RABO Bank": {
"account_type": "Bank"
},
"account_type": "Bank"
},
"KORTLOPENDE SCHULDEN": {
"Af te dragen Btw-verlegd": {
"account_type": "Tax"
},
"Afdracht loonheffing": {},
"Btw af te dragen hoog": {
"account_type": "Tax"
},
"Btw af te dragen laag": {
"account_type": "Tax"
},
"Btw af te dragen overig": {
"account_type": "Tax"
},
"Btw oude jaren": {
"account_type": "Tax"
},
"Btw te vorderen hoog": {
"account_type": "Tax"
},
"Btw te vorderen laag": {
"account_type": "Tax"
},
"Btw te vorderen overig": {
"account_type": "Tax"
},
"Btw-afdracht": {
"account_type": "Tax"
},
"Crediteuren": {
"account_type": "Payable"
},
"Dividend": {},
"Dividendbelasting": {},
"Energiekosten 1": {},
"Investeringsaftrek": {},
"Loonheffing": {},
"Overige te betalen posten": {},
"Pensioenpremies 1": {},
"Premie WIR": {},
"Rekening-courant inkoopvereniging": {},
"Rente": {},
"Sociale lasten 1": {},
"Stock Recieved niet gefactureerd": {
"account_type": "Stock Received But Not Billed"
},
"Tanti\u00e8mes 1": {},
"Te vorderen Btw-verlegd": {
"account_type": "Tax"
},
"Telefoon/telefax 1": {},
"Termijnen onderh. werk": {},
"Vakantiedagen": {},
"Vakantiegeld 1": {},
"Vakantiezegels": {},
"Vennootschapsbelasting": {},
"Vooruit ontvangen bedr.": {}
},
},
"LIQUIDE MIDDELEN": {
"ABN-AMRO bank": {},
"Bankbetaalkaarten": {},
@@ -91,6 +29,110 @@
},
"account_type": "Cash"
},
"TUSSENREKENINGEN": {
"Betaalwijze cadeaubonnen": {
"account_type": "Cash"
},
"Betaalwijze chipknip": {
"account_type": "Cash"
},
"Betaalwijze contant": {
"account_type": "Cash"
},
"Betaalwijze pin": {
"account_type": "Cash"
},
"Inkopen Nederland hoog": {
"account_type": "Cash"
},
"Inkopen Nederland laag": {
"account_type": "Cash"
},
"Inkopen Nederland onbelast": {
"account_type": "Cash"
},
"Inkopen Nederland overig": {
"account_type": "Cash"
},
"Inkopen Nederland verlegd": {
"account_type": "Cash"
},
"Inkopen binnen EU hoog": {
"account_type": "Cash"
},
"Inkopen binnen EU laag": {
"account_type": "Cash"
},
"Inkopen binnen EU overig": {
"account_type": "Cash"
},
"Inkopen buiten EU hoog": {
"account_type": "Cash"
},
"Inkopen buiten EU laag": {
"account_type": "Cash"
},
"Inkopen buiten EU overig": {
"account_type": "Cash"
},
"Kassa 1": {
"account_type": "Cash"
},
"Kassa 2": {
"account_type": "Cash"
},
"Netto lonen": {
"account_type": "Cash"
},
"Tegenrekening Inkopen": {
"account_type": "Cash"
},
"Tussenrek. autom. betalingen": {
"account_type": "Cash"
},
"Tussenrek. autom. loonbetalingen": {
"account_type": "Cash"
},
"Tussenrek. cadeaubonbetalingen": {
"account_type": "Cash"
},
"Tussenrekening balans": {
"account_type": "Cash"
},
"Tussenrekening chipknip": {
"account_type": "Cash"
},
"Tussenrekening correcties": {
"account_type": "Cash"
},
"Tussenrekening pin": {
"account_type": "Cash"
},
"Vraagposten": {
"account_type": "Cash"
},
"VOORRAAD GRONDSTOFFEN, HULPMATERIALEN EN HANDELSGOEDEREN": {
"Emballage": {},
"Gereed product 1": {},
"Gereed product 2": {},
"Goederen 1": {},
"Goederen 2": {},
"Goederen in consignatie": {},
"Goederen onderweg": {},
"Grondstoffen 1": {},
"Grondstoffen 2": {},
"Halffabrikaten 1": {},
"Halffabrikaten 2": {},
"Hulpstoffen 1": {},
"Hulpstoffen 2": {},
"Kantoorbenodigdheden": {},
"Onderhanden werk": {},
"Verpakkingsmateriaal": {},
"Zegels": {},
"root_type": "Asset"
},
"root_type": "Asset"
},
"VORDERINGEN": {
"Debiteuren": {
"account_type": "Receivable"
@@ -104,278 +146,299 @@
"Voorziening dubieuze debiteuren": {}
},
"root_type": "Asset"
},
"INDIRECTE KOSTEN": {
},
"KORTLOPENDE SCHULDEN": {
"Af te dragen Btw-verlegd": {
"account_type": "Tax"
},
"Afdracht loonheffing": {},
"Btw af te dragen hoog": {
"account_type": "Tax"
},
"Btw af te dragen laag": {
"account_type": "Tax"
},
"Btw af te dragen overig": {
"account_type": "Tax"
},
"Btw oude jaren": {
"account_type": "Tax"
},
"Btw te vorderen hoog": {
"account_type": "Tax"
},
"Btw te vorderen laag": {
"account_type": "Tax"
},
"Btw te vorderen overig": {
"account_type": "Tax"
},
"Btw-afdracht": {
"account_type": "Tax"
},
"Crediteuren": {
"account_type": "Payable"
},
"Dividend": {},
"Dividendbelasting": {},
"Energiekosten 1": {},
"Investeringsaftrek": {},
"Loonheffing": {},
"Overige te betalen posten": {},
"Pensioenpremies 1": {},
"Premie WIR": {},
"Rekening-courant inkoopvereniging": {},
"Rente": {},
"Sociale lasten 1": {},
"Stock Recieved niet gefactureerd": {
"account_type": "Stock Received But Not Billed"
},
"Tanti\u00e8mes 1": {},
"Te vorderen Btw-verlegd": {
"account_type": "Tax"
},
"Telefoon/telefax 1": {},
"Termijnen onderh. werk": {},
"Vakantiedagen": {},
"Vakantiegeld 1": {},
"Vakantiezegels": {},
"Vennootschapsbelasting": {},
"Vooruit ontvangen bedr.": {},
"is_group": 1,
"root_type": "Liability"
},
"FABRIKAGEREKENINGEN": {
"is_group": 1,
"root_type": "Expense"
},
"KOSTENREKENINGEN": {
"AFSCHRIJVINGEN": {
"Aanhangwagens": {},
"Aankoopkosten": {},
"Aanloopkosten": {},
"Auteursrechten": {},
"Bedrijfsgebouwen": {},
"Bedrijfsinventaris": {
"root_type": "Expense",
"INDIRECTE KOSTEN": {
"is_group": 1,
"root_type": "Expense"
},
"KOSTENREKENINGEN": {
"AFSCHRIJVINGEN": {
"Aanhangwagens": {},
"Aankoopkosten": {},
"Aanloopkosten": {},
"Auteursrechten": {},
"Bedrijfsgebouwen": {},
"Bedrijfsinventaris": {
"account_type": "Depreciation"
},
"Drankvergunningen": {},
"Fabrieksinventaris": {
"account_type": "Depreciation"
},
"Gebouwen": {},
"Gereedschappen": {},
"Goodwill": {},
"Grondverbetering": {},
"Heftrucks": {},
"Kantine-inventaris": {},
"Kantoorinventaris": {
"account_type": "Depreciation"
},
"Kantoormachines": {},
"Licenties": {},
"Machines 1": {},
"Magazijninventaris": {},
"Octrooien": {},
"Ontwikkelingskosten": {},
"Pachtersinvestering": {},
"Parkeerplaats": {},
"Personenauto's": {
"account_type": "Depreciation"
},
"Rijwielen en bromfietsen": {},
"Tonnagevergunningen": {},
"Verbouwingen": {},
"Vergunningen": {},
"Voorraadverschillen": {},
"Vrachtauto's": {},
"Winkels": {},
"Woon-winkelhuis": {},
"account_type": "Depreciation"
},
"Drankvergunningen": {},
"Fabrieksinventaris": {
"account_type": "Depreciation"
"ALGEMENE KOSTEN": {
"Accountantskosten": {},
"Advieskosten": {},
"Assuranties 1": {},
"Bankkosten": {},
"Juridische kosten": {},
"Overige algemene kosten": {},
"Toev. Ass. eigen risico": {}
},
"Gebouwen": {},
"Gereedschappen": {},
"Goodwill": {},
"Grondverbetering": {},
"Heftrucks": {},
"Kantine-inventaris": {},
"Kantoorinventaris": {
"account_type": "Depreciation"
"BEDRIJFSKOSTEN": {
"Assuranties 2": {},
"Energie (krachtstroom)": {},
"Gereedschappen 1": {},
"Hulpmaterialen 1": {},
"Huur inventaris": {},
"Huur machines": {},
"Leasing invent.operational": {},
"Leasing mach. operational": {},
"Onderhoud inventaris": {},
"Onderhoud machines": {},
"Ophalen/vervoer afval": {},
"Overige bedrijfskosten": {}
},
"Kantoormachines": {},
"Licenties": {},
"Machines 1": {},
"Magazijninventaris": {},
"Octrooien": {},
"Ontwikkelingskosten": {},
"Pachtersinvestering": {},
"Parkeerplaats": {},
"Personenauto's": {
"account_type": "Depreciation"
"FINANCIERINGSKOSTEN 1": {
"Overige rentebaten": {},
"Overige rentelasten": {},
"Rente bankkrediet": {},
"Rente huurkoopcontracten": {},
"Rente hypotheek": {},
"Rente leasecontracten": {},
"Rente lening o/g": {},
"Rente lening u/g": {}
},
"Rijwielen en bromfietsen": {},
"Tonnagevergunningen": {},
"Verbouwingen": {},
"Vergunningen": {},
"Voorraadverschillen": {},
"Vrachtauto's": {},
"Winkels": {},
"Woon-winkelhuis": {},
"account_type": "Depreciation"
},
"ALGEMENE KOSTEN": {
"Accountantskosten": {},
"Advieskosten": {},
"Assuranties 1": {},
"Bankkosten": {},
"Juridische kosten": {},
"Overige algemene kosten": {},
"Toev. Ass. eigen risico": {}
},
"BEDRIJFSKOSTEN": {
"Assuranties 2": {},
"Energie (krachtstroom)": {},
"Gereedschappen 1": {},
"Hulpmaterialen 1": {},
"Huur inventaris": {},
"Huur machines": {},
"Leasing invent.operational": {},
"Leasing mach. operational": {},
"Onderhoud inventaris": {},
"Onderhoud machines": {},
"Ophalen/vervoer afval": {},
"Overige bedrijfskosten": {}
},
"FINANCIERINGSKOSTEN 1": {
"Overige rentebaten": {},
"Overige rentelasten": {},
"Rente bankkrediet": {},
"Rente huurkoopcontracten": {},
"Rente hypotheek": {},
"Rente leasecontracten": {},
"Rente lening o/g": {},
"Rente lening u/g": {}
},
"HUISVESTINGSKOSTEN": {
"Assurantie onroerend goed": {},
"Belastingen onr. Goed": {},
"Energiekosten": {},
"Groot onderhoud onr. Goed": {},
"Huur": {},
"Huurwaarde woongedeelte": {},
"Onderhoud onroerend goed": {},
"Ontvangen huren": {},
"Overige huisvestingskosten": {},
"Pacht": {},
"Schoonmaakkosten": {},
"Toevoeging egalisatieres. Groot onderhoud": {}
},
"KANTOORKOSTEN": {
"Administratiekosten": {},
"Contributies/abonnementen": {},
"Huur kantoorapparatuur": {},
"Internetaansluiting": {},
"Kantoorbenodigdh./drukw.": {},
"Onderhoud kantoorinvent.": {},
"Overige kantoorkosten": {},
"Porti": {},
"Telefoon/telefax": {}
},
"OVERIGE BATEN EN LASTEN": {
"Betaalde schadevergoed.": {},
"Boekverlies vaste activa": {},
"Boekwinst van vaste activa": {},
"K.O. regeling OB": {},
"Kasverschillen": {},
"Kosten loonbelasting": {},
"Kosten omzetbelasting": {},
"Nadelige koersverschillen": {},
"Naheffing bedrijfsver.": {},
"Ontvangen schadevergoed.": {},
"Overige baten": {},
"Overige lasten": {},
"Voordelige koersverschil.": {}
},
"PERSONEELSKOSTEN": {
"Autokostenvergoeding": {},
"Bedrijfskleding": {},
"Belastingvrije uitkeringen": {},
"Bijzondere beloningen": {},
"Congressen, seminars en symposia": {},
"Gereedschapsgeld": {},
"Geschenken personeel": {},
"Gratificaties": {},
"Inhouding pensioenpremies": {},
"Inhouding sociale lasten": {},
"Kantinekosten": {},
"Lonen en salarissen": {},
"Loonwerk": {},
"Managementvergoedingen": {},
"Opleidingskosten": {},
"Oprenting stamrechtverpl.": {},
"Overhevelingstoeslag": {},
"Overige kostenverg.": {},
"Overige personeelskosten": {},
"Overige uitkeringen": {},
"Pensioenpremies": {},
"Provisie 1": {},
"Reiskosten": {},
"Rijwielvergoeding": {},
"Sociale lasten": {},
"Tanti\u00e8mes": {},
"Thuiswerkers": {},
"Toev. Backservice pens.verpl.": {},
"Toevoeging pensioenverpl.": {},
"Uitkering ziekengeld": {},
"Uitzendkrachten": {},
"Vakantiebonnen": {},
"Vakantiegeld": {},
"Vergoeding studiekosten": {},
"Wervingskosten personeel": {}
},
"VERKOOPKOSTEN": {
"Advertenties": {},
"Afschrijving dubieuze deb.": {},
"Beurskosten": {},
"Etalagekosten": {},
"Exportkosten": {},
"Kascorrecties": {},
"Overige verkoopkosten": {},
"Provisie": {},
"Reclame": {},
"Reis en verblijfkosten": {},
"Relatiegeschenken": {},
"Representatiekosten": {},
"Uitgaande vrachten": {},
"Veilingkosten": {},
"Verpakkingsmateriaal 1": {},
"Websitekosten": {}
},
"VERVOERSKOSTEN": {
"Assuranties auto's": {},
"Brandstoffen": {},
"Leasing auto's": {},
"Onderhoud personenauto's": {},
"Onderhoud vrachtauto's": {},
"Overige vervoerskosten": {},
"Priv\u00e9-gebruik auto's": {},
"Wegenbelasting": {}
},
"root_type": "Expense"
},
"TUSSENREKENINGEN": {
"Betaalwijze cadeaubonnen": {
"account_type": "Cash"
},
"Betaalwijze chipknip": {
"account_type": "Cash"
},
"Betaalwijze contant": {
"account_type": "Cash"
},
"Betaalwijze pin": {
"account_type": "Cash"
},
"Inkopen Nederland hoog": {
"account_type": "Cash"
},
"Inkopen Nederland laag": {
"account_type": "Cash"
},
"Inkopen Nederland onbelast": {
"account_type": "Cash"
},
"Inkopen Nederland overig": {
"account_type": "Cash"
},
"Inkopen Nederland verlegd": {
"account_type": "Cash"
},
"Inkopen binnen EU hoog": {
"account_type": "Cash"
},
"Inkopen binnen EU laag": {
"account_type": "Cash"
},
"Inkopen binnen EU overig": {
"account_type": "Cash"
},
"Inkopen buiten EU hoog": {
"account_type": "Cash"
},
"Inkopen buiten EU laag": {
"account_type": "Cash"
},
"Inkopen buiten EU overig": {
"account_type": "Cash"
},
"Kassa 1": {
"account_type": "Cash"
},
"Kassa 2": {
"account_type": "Cash"
},
"Netto lonen": {
"account_type": "Cash"
},
"Tegenrekening Inkopen": {
"account_type": "Cash"
},
"Tussenrek. autom. betalingen": {
"account_type": "Cash"
},
"Tussenrek. autom. loonbetalingen": {
"account_type": "Cash"
},
"Tussenrek. cadeaubonbetalingen": {
"account_type": "Cash"
},
"Tussenrekening balans": {
"account_type": "Cash"
},
"Tussenrekening chipknip": {
"account_type": "Cash"
},
"Tussenrekening correcties": {
"account_type": "Cash"
},
"Tussenrekening pin": {
"account_type": "Cash"
},
"Vraagposten": {
"account_type": "Cash"
},
"root_type": "Asset"
"HUISVESTINGSKOSTEN": {
"Assurantie onroerend goed": {},
"Belastingen onr. Goed": {},
"Energiekosten": {},
"Groot onderhoud onr. Goed": {},
"Huur": {},
"Huurwaarde woongedeelte": {},
"Onderhoud onroerend goed": {},
"Ontvangen huren": {},
"Overige huisvestingskosten": {},
"Pacht": {},
"Schoonmaakkosten": {},
"Toevoeging egalisatieres. Groot onderhoud": {}
},
"KANTOORKOSTEN": {
"Administratiekosten": {},
"Contributies/abonnementen": {},
"Huur kantoorapparatuur": {},
"Internetaansluiting": {},
"Kantoorbenodigdh./drukw.": {},
"Onderhoud kantoorinvent.": {},
"Overige kantoorkosten": {},
"Porti": {},
"Telefoon/telefax": {}
},
"OVERIGE BATEN EN LASTEN": {
"Betaalde schadevergoed.": {},
"Boekverlies vaste activa": {},
"Boekwinst van vaste activa": {},
"K.O. regeling OB": {},
"Kasverschillen": {},
"Kosten loonbelasting": {},
"Kosten omzetbelasting": {},
"Nadelige koersverschillen": {},
"Naheffing bedrijfsver.": {},
"Ontvangen schadevergoed.": {},
"Overige baten": {},
"Overige lasten": {},
"Voordelige koersverschil.": {}
},
"PERSONEELSKOSTEN": {
"Autokostenvergoeding": {},
"Bedrijfskleding": {},
"Belastingvrije uitkeringen": {},
"Bijzondere beloningen": {},
"Congressen, seminars en symposia": {},
"Gereedschapsgeld": {},
"Geschenken personeel": {},
"Gratificaties": {},
"Inhouding pensioenpremies": {},
"Inhouding sociale lasten": {},
"Kantinekosten": {},
"Lonen en salarissen": {},
"Loonwerk": {},
"Managementvergoedingen": {},
"Opleidingskosten": {},
"Oprenting stamrechtverpl.": {},
"Overhevelingstoeslag": {},
"Overige kostenverg.": {},
"Overige personeelskosten": {},
"Overige uitkeringen": {},
"Pensioenpremies": {},
"Provisie 1": {},
"Reiskosten": {},
"Rijwielvergoeding": {},
"Sociale lasten": {},
"Tanti\u00e8mes": {},
"Thuiswerkers": {},
"Toev. Backservice pens.verpl.": {},
"Toevoeging pensioenverpl.": {},
"Uitkering ziekengeld": {},
"Uitzendkrachten": {},
"Vakantiebonnen": {},
"Vakantiegeld": {},
"Vergoeding studiekosten": {},
"Wervingskosten personeel": {}
},
"VERKOOPKOSTEN": {
"Advertenties": {},
"Afschrijving dubieuze deb.": {},
"Beurskosten": {},
"Etalagekosten": {},
"Exportkosten": {},
"Kascorrecties": {},
"Overige verkoopkosten": {},
"Provisie": {},
"Reclame": {},
"Reis en verblijfkosten": {},
"Relatiegeschenken": {},
"Representatiekosten": {},
"Uitgaande vrachten": {},
"Veilingkosten": {},
"Verpakkingsmateriaal 1": {},
"Websitekosten": {}
},
"VERVOERSKOSTEN": {
"Assuranties auto's": {},
"Brandstoffen": {},
"Leasing auto's": {},
"Onderhoud personenauto's": {},
"Onderhoud vrachtauto's": {},
"Overige vervoerskosten": {},
"Priv\u00e9-gebruik auto's": {},
"Wegenbelasting": {}
},
"VOORRAAD GEREED PRODUCT EN ONDERHANDEN WERK": {
"Betalingskort. crediteuren": {},
"Garantiekosten": {},
"Hulpmaterialen": {},
"Inkomende vrachten": {
"account_type": "Expenses Included In Valuation"
},
"Inkoop import buiten EU hoog": {},
"Inkoop import buiten EU laag": {},
"Inkoop import buiten EU overig": {},
"Inkoopbonussen": {},
"Inkoopkosten": {},
"Inkoopprovisie": {},
"Inkopen BTW verlegd": {},
"Inkopen EU hoog tarief": {},
"Inkopen EU laag tarief": {},
"Inkopen EU overig": {},
"Inkopen hoog": {},
"Inkopen laag": {},
"Inkopen nul": {},
"Inkopen overig": {},
"Invoerkosten": {},
"Kosten inkoopvereniging": {},
"Kostprijs omzet grondstoffen": {
"account_type": "Cost of Goods Sold"
},
"Kostprijs omzet handelsgoederen": {},
"Onttrekking uitgev.garantie": {},
"Priv\u00e9-gebruik goederen": {},
"Stock aanpassing": {
"account_type": "Stock Adjustment"
},
"Tegenrekening inkoop": {},
"Toev. Voorz. incour. grondst.": {},
"Toevoeging garantieverpl.": {},
"Toevoeging voorz. incour. handelsgoed.": {},
"Uitbesteed werk": {},
"Voorz. Incourourant grondst.": {},
"Voorz.incour. handelsgoed.": {},
"root_type": "Expense"
},
"root_type": "Expense"
}
},
"VASTE ACTIVA, EIGEN VERMOGEN, LANGLOPEND VREEMD VERMOGEN EN VOORZIENINGEN": {
"EIGEN VERMOGEN": {
@@ -602,7 +665,7 @@
"account_type": "Equity"
}
},
"root_type": "Asset"
"root_type": "Equity"
},
"VERKOOPRESULTATEN": {
"Diensten fabric. 0% niet-EU": {},
@@ -627,67 +690,6 @@
"Verleende Kredietbep. fabricage": {},
"Verleende Kredietbep. handel": {},
"root_type": "Income"
},
"VOORRAAD GEREED PRODUCT EN ONDERHANDEN WERK": {
"Betalingskort. crediteuren": {},
"Garantiekosten": {},
"Hulpmaterialen": {},
"Inkomende vrachten": {
"account_type": "Expenses Included In Valuation"
},
"Inkoop import buiten EU hoog": {},
"Inkoop import buiten EU laag": {},
"Inkoop import buiten EU overig": {},
"Inkoopbonussen": {},
"Inkoopkosten": {},
"Inkoopprovisie": {},
"Inkopen BTW verlegd": {},
"Inkopen EU hoog tarief": {},
"Inkopen EU laag tarief": {},
"Inkopen EU overig": {},
"Inkopen hoog": {},
"Inkopen laag": {},
"Inkopen nul": {},
"Inkopen overig": {},
"Invoerkosten": {},
"Kosten inkoopvereniging": {},
"Kostprijs omzet grondstoffen": {
"account_type": "Cost of Goods Sold"
},
"Kostprijs omzet handelsgoederen": {},
"Onttrekking uitgev.garantie": {},
"Priv\u00e9-gebruik goederen": {},
"Stock aanpassing": {
"account_type": "Stock Adjustment"
},
"Tegenrekening inkoop": {},
"Toev. Voorz. incour. grondst.": {},
"Toevoeging garantieverpl.": {},
"Toevoeging voorz. incour. handelsgoed.": {},
"Uitbesteed werk": {},
"Voorz. Incourourant grondst.": {},
"Voorz.incour. handelsgoed.": {},
"root_type": "Expense"
},
"VOORRAAD GRONDSTOFFEN, HULPMATERIALEN EN HANDELSGOEDEREN": {
"Emballage": {},
"Gereed product 1": {},
"Gereed product 2": {},
"Goederen 1": {},
"Goederen 2": {},
"Goederen in consignatie": {},
"Goederen onderweg": {},
"Grondstoffen 1": {},
"Grondstoffen 2": {},
"Halffabrikaten 1": {},
"Halffabrikaten 2": {},
"Hulpstoffen 1": {},
"Hulpstoffen 2": {},
"Kantoorbenodigdheden": {},
"Onderhanden werk": {},
"Verpakkingsmateriaal": {},
"Zegels": {},
"root_type": "Asset"
}
}
}

View File

@@ -7,7 +7,11 @@ import unittest
import frappe
from frappe.test_runner import make_test_records
from erpnext.accounts.doctype.account.account import merge_account, update_account_number
from erpnext.accounts.doctype.account.account import (
InvalidAccountMergeError,
merge_account,
update_account_number,
)
from erpnext.stock import get_company_default_inventory_account, get_warehouse_account
test_dependencies = ["Company"]
@@ -47,49 +51,53 @@ class TestAccount(unittest.TestCase):
frappe.delete_doc("Account", "1211-11-4 - 6 - Debtors 1 - Test - - _TC")
def test_merge_account(self):
if not frappe.db.exists("Account", "Current Assets - _TC"):
acc = frappe.new_doc("Account")
acc.account_name = "Current Assets"
acc.is_group = 1
acc.parent_account = "Application of Funds (Assets) - _TC"
acc.company = "_Test Company"
acc.insert()
if not frappe.db.exists("Account", "Securities and Deposits - _TC"):
acc = frappe.new_doc("Account")
acc.account_name = "Securities and Deposits"
acc.parent_account = "Current Assets - _TC"
acc.is_group = 1
acc.company = "_Test Company"
acc.insert()
if not frappe.db.exists("Account", "Earnest Money - _TC"):
acc = frappe.new_doc("Account")
acc.account_name = "Earnest Money"
acc.parent_account = "Securities and Deposits - _TC"
acc.company = "_Test Company"
acc.insert()
if not frappe.db.exists("Account", "Cash In Hand - _TC"):
acc = frappe.new_doc("Account")
acc.account_name = "Cash In Hand"
acc.is_group = 1
acc.parent_account = "Current Assets - _TC"
acc.company = "_Test Company"
acc.insert()
if not frappe.db.exists("Account", "Accumulated Depreciation - _TC"):
acc = frappe.new_doc("Account")
acc.account_name = "Accumulated Depreciation"
acc.parent_account = "Fixed Assets - _TC"
acc.company = "_Test Company"
acc.account_type = "Accumulated Depreciation"
acc.insert()
create_account(
account_name="Current Assets",
is_group=1,
parent_account="Application of Funds (Assets) - _TC",
company="_Test Company",
)
create_account(
account_name="Securities and Deposits",
is_group=1,
parent_account="Current Assets - _TC",
company="_Test Company",
)
create_account(
account_name="Earnest Money",
parent_account="Securities and Deposits - _TC",
company="_Test Company",
)
create_account(
account_name="Cash In Hand",
is_group=1,
parent_account="Current Assets - _TC",
company="_Test Company",
)
create_account(
account_name="Receivable INR",
parent_account="Current Assets - _TC",
company="_Test Company",
account_currency="INR",
)
create_account(
account_name="Receivable USD",
parent_account="Current Assets - _TC",
company="_Test Company",
account_currency="USD",
)
doc = frappe.get_doc("Account", "Securities and Deposits - _TC")
parent = frappe.db.get_value("Account", "Earnest Money - _TC", "parent_account")
self.assertEqual(parent, "Securities and Deposits - _TC")
merge_account(
"Securities and Deposits - _TC", "Cash In Hand - _TC", doc.is_group, doc.root_type, doc.company
)
merge_account("Securities and Deposits - _TC", "Cash In Hand - _TC")
parent = frappe.db.get_value("Account", "Earnest Money - _TC", "parent_account")
# Parent account of the child account changes after merging
@@ -98,30 +106,28 @@ class TestAccount(unittest.TestCase):
# Old account doesn't exist after merging
self.assertFalse(frappe.db.exists("Account", "Securities and Deposits - _TC"))
doc = frappe.get_doc("Account", "Current Assets - _TC")
# Raise error as is_group property doesn't match
self.assertRaises(
frappe.ValidationError,
InvalidAccountMergeError,
merge_account,
"Current Assets - _TC",
"Accumulated Depreciation - _TC",
doc.is_group,
doc.root_type,
doc.company,
)
doc = frappe.get_doc("Account", "Capital Stock - _TC")
# Raise error as root_type property doesn't match
self.assertRaises(
frappe.ValidationError,
InvalidAccountMergeError,
merge_account,
"Capital Stock - _TC",
"Softwares - _TC",
doc.is_group,
doc.root_type,
doc.company,
)
# Raise error as currency doesn't match
self.assertRaises(
InvalidAccountMergeError,
merge_account,
"Receivable INR - _TC",
"Receivable USD - _TC",
)
def test_account_sync(self):
@@ -400,11 +406,20 @@ def create_account(**kwargs):
"Account", filters={"account_name": kwargs.get("account_name"), "company": kwargs.get("company")}
)
if account:
return account
account = frappe.get_doc("Account", account)
account.update(
dict(
is_group=kwargs.get("is_group", 0),
parent_account=kwargs.get("parent_account"),
)
)
account.save()
return account.name
else:
account = frappe.get_doc(
dict(
doctype="Account",
is_group=kwargs.get("is_group", 0),
account_name=kwargs.get("account_name"),
account_type=kwargs.get("account_type"),
parent_account=kwargs.get("parent_account"),

View File

@@ -11,13 +11,34 @@ from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (
class AccountClosingBalance(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
account: DF.Link | None
account_currency: DF.Link | None
closing_date: DF.Date | None
company: DF.Link | None
cost_center: DF.Link | None
credit: DF.Currency
credit_in_account_currency: DF.Currency
debit: DF.Currency
debit_in_account_currency: DF.Currency
finance_book: DF.Link | None
is_period_closing_voucher_entry: DF.Check
period_closing_voucher: DF.Link | None
project: DF.Link | None
# end: auto-generated types
pass
def make_closing_entries(closing_entries, voucher_name):
def make_closing_entries(closing_entries, voucher_name, company, closing_date):
accounting_dimensions = get_accounting_dimensions()
company = closing_entries[0].get("company")
closing_date = closing_entries[0].get("closing_date")
previous_closing_entries = get_previous_closing_entries(
company, closing_date, accounting_dimensions
@@ -39,6 +60,7 @@ def make_closing_entries(closing_entries, voucher_name):
}
)
cle.flags.ignore_permissions = True
cle.flags.ignore_links = True
cle.submit()

View File

@@ -15,6 +15,17 @@ frappe.ui.form.on('Accounting Dimension', {
};
});
frm.set_query("offsetting_account", "dimension_defaults", function(doc, cdt, cdn) {
let d = locals[cdt][cdn];
return {
filters: {
company: d.company,
root_type: ["in", ["Asset", "Liability"]],
is_group: 0
}
}
});
if (!frm.is_new()) {
frm.add_custom_button(__('Show {0}', [frm.doc.document_type]), function () {
frappe.set_route("List", frm.doc.document_type);

View File

@@ -13,6 +13,25 @@ from frappe.utils import cstr
class AccountingDimension(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
from erpnext.accounts.doctype.accounting_dimension_detail.accounting_dimension_detail import (
AccountingDimensionDetail,
)
dimension_defaults: DF.Table[AccountingDimensionDetail]
disabled: DF.Check
document_type: DF.Link
fieldname: DF.Data | None
label: DF.Data | None
# end: auto-generated types
def before_insert(self):
self.set_fieldname_and_label()
@@ -39,6 +58,8 @@ class AccountingDimension(Document):
if not self.is_new():
self.validate_document_type_change()
self.validate_dimension_defaults()
def validate_document_type_change(self):
doctype_before_save = frappe.db.get_value("Accounting Dimension", self.name, "document_type")
if doctype_before_save != self.document_type:
@@ -46,6 +67,14 @@ class AccountingDimension(Document):
message += _("Please create a new Accounting Dimension if required.")
frappe.throw(message)
def validate_dimension_defaults(self):
companies = []
for default in self.get("dimension_defaults"):
if default.company not in companies:
companies.append(default.company)
else:
frappe.throw(_("Company {0} is added more than once").format(frappe.bold(default.company)))
def after_insert(self):
if frappe.flags.in_test:
make_dimension_in_accounting_doctypes(doc=self)
@@ -255,21 +284,28 @@ def get_dimension_with_children(doctype, dimensions):
@frappe.whitelist()
def get_dimensions(with_cost_center_and_project=False):
dimension_filters = frappe.db.sql(
"""
SELECT label, fieldname, document_type
FROM `tabAccounting Dimension`
WHERE disabled = 0
""",
as_dict=1,
c = frappe.qb.DocType("Accounting Dimension Detail")
p = frappe.qb.DocType("Accounting Dimension")
dimension_filters = (
frappe.qb.from_(p)
.select(p.label, p.fieldname, p.document_type)
.where(p.disabled == 0)
.run(as_dict=1)
)
default_dimensions = (
frappe.qb.from_(c)
.inner_join(p)
.on(c.parent == p.name)
.select(p.fieldname, c.company, c.default_dimension)
.run(as_dict=1)
)
default_dimensions = frappe.db.sql(
"""SELECT p.fieldname, c.company, c.default_dimension
FROM `tabAccounting Dimension Detail` c, `tabAccounting Dimension` p
WHERE c.parent = p.name""",
as_dict=1,
)
if isinstance(with_cost_center_and_project, str):
if with_cost_center_and_project.lower().strip() == "true":
with_cost_center_and_project = True
else:
with_cost_center_and_project = False
if with_cost_center_and_project:
dimension_filters.extend(
@@ -285,3 +321,30 @@ def get_dimensions(with_cost_center_and_project=False):
default_dimensions_map[dimension.company][dimension.fieldname] = dimension.default_dimension
return dimension_filters, default_dimensions_map
def create_accounting_dimensions_for_doctype(doctype):
accounting_dimensions = frappe.db.get_all(
"Accounting Dimension", fields=["fieldname", "label", "document_type", "disabled"]
)
if not accounting_dimensions:
return
for d in accounting_dimensions:
field = frappe.db.get_value("Custom Field", {"dt": doctype, "fieldname": d.fieldname})
if field:
continue
df = {
"fieldname": d.fieldname,
"label": d.label,
"fieldtype": "Link",
"options": d.document_type,
"insert_after": "accounting_dimensions_section",
}
create_custom_field(doctype, df, ignore_validate=True)
frappe.clear_cache(doctype=doctype)

View File

@@ -84,12 +84,22 @@ def create_dimension():
frappe.set_user("Administrator")
if not frappe.db.exists("Accounting Dimension", {"document_type": "Department"}):
frappe.get_doc(
dimension = frappe.get_doc(
{
"doctype": "Accounting Dimension",
"document_type": "Department",
}
).insert()
)
dimension.append(
"dimension_defaults",
{
"company": "_Test Company",
"reference_document": "Department",
"default_dimension": "_Test Department - _TC",
},
)
dimension.insert()
dimension.save()
else:
dimension = frappe.get_doc("Accounting Dimension", "Department")
dimension.disabled = 0

View File

@@ -8,7 +8,10 @@
"reference_document",
"default_dimension",
"mandatory_for_bs",
"mandatory_for_pl"
"mandatory_for_pl",
"column_break_lqns",
"automatically_post_balancing_accounting_entry",
"offsetting_account"
],
"fields": [
{
@@ -50,6 +53,23 @@
"fieldtype": "Check",
"in_list_view": 1,
"label": "Mandatory For Profit and Loss Account"
},
{
"default": "0",
"fieldname": "automatically_post_balancing_accounting_entry",
"fieldtype": "Check",
"label": "Automatically post balancing accounting entry"
},
{
"fieldname": "offsetting_account",
"fieldtype": "Link",
"label": "Offsetting Account",
"mandatory_depends_on": "eval: doc.automatically_post_balancing_accounting_entry",
"options": "Account"
},
{
"fieldname": "column_break_lqns",
"fieldtype": "Column Break"
}
],
"istable": 1,

View File

@@ -7,4 +7,24 @@ from frappe.model.document import Document
class AccountingDimensionDetail(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
automatically_post_balancing_accounting_entry: DF.Check
company: DF.Link | None
default_dimension: DF.DynamicLink | None
mandatory_for_bs: DF.Check
mandatory_for_pl: DF.Check
offsetting_account: DF.Link | None
parent: DF.Data
parentfield: DF.Data
parenttype: DF.Data
reference_document: DF.Link | None
# end: auto-generated types
pass

View File

@@ -68,6 +68,16 @@ frappe.ui.form.on('Accounting Dimension Filter', {
frm.refresh_field("dimensions");
frm.trigger('setup_filters');
},
apply_restriction_on_values: function(frm) {
/** If restriction on values is not applied, we should set "allow_or_restrict" to "Restrict" with an empty allowed dimension table.
* Hence it's not "restricted" on any value.
*/
if (!frm.doc.apply_restriction_on_values) {
frm.set_value("allow_or_restrict", "Restrict");
frm.clear_table("dimensions");
frm.refresh_field("dimensions");
}
}
});
frappe.ui.form.on('Allowed Dimension', {

View File

@@ -10,6 +10,7 @@
"disabled",
"column_break_2",
"company",
"apply_restriction_on_values",
"allow_or_restrict",
"section_break_4",
"accounts",
@@ -24,94 +25,80 @@
"fieldtype": "Select",
"in_list_view": 1,
"label": "Accounting Dimension",
"reqd": 1,
"show_days": 1,
"show_seconds": 1
"reqd": 1
},
{
"fieldname": "column_break_2",
"fieldtype": "Column Break",
"show_days": 1,
"show_seconds": 1
"fieldtype": "Column Break"
},
{
"fieldname": "section_break_4",
"fieldtype": "Section Break",
"hide_border": 1,
"show_days": 1,
"show_seconds": 1
"hide_border": 1
},
{
"fieldname": "column_break_6",
"fieldtype": "Column Break",
"show_days": 1,
"show_seconds": 1
"fieldtype": "Column Break"
},
{
"depends_on": "eval:doc.apply_restriction_on_values == 1;",
"fieldname": "allow_or_restrict",
"fieldtype": "Select",
"label": "Allow Or Restrict Dimension",
"options": "Allow\nRestrict",
"reqd": 1,
"show_days": 1,
"show_seconds": 1
"reqd": 1
},
{
"fieldname": "accounts",
"fieldtype": "Table",
"label": "Applicable On Account",
"options": "Applicable On Account",
"reqd": 1,
"show_days": 1,
"show_seconds": 1
"reqd": 1
},
{
"depends_on": "eval:doc.accounting_dimension",
"depends_on": "eval:doc.accounting_dimension && doc.apply_restriction_on_values",
"fieldname": "dimensions",
"fieldtype": "Table",
"label": "Applicable Dimension",
"options": "Allowed Dimension",
"reqd": 1,
"show_days": 1,
"show_seconds": 1
"mandatory_depends_on": "eval:doc.apply_restriction_on_values == 1;",
"options": "Allowed Dimension"
},
{
"default": "0",
"fieldname": "disabled",
"fieldtype": "Check",
"label": "Disabled",
"show_days": 1,
"show_seconds": 1
"label": "Disabled"
},
{
"fieldname": "company",
"fieldtype": "Link",
"label": "Company",
"options": "Company",
"reqd": 1,
"show_days": 1,
"show_seconds": 1
"reqd": 1
},
{
"fieldname": "dimension_filter_help",
"fieldtype": "HTML",
"label": "Dimension Filter Help",
"show_days": 1,
"show_seconds": 1
"label": "Dimension Filter Help"
},
{
"fieldname": "section_break_10",
"fieldtype": "Section Break",
"show_days": 1,
"show_seconds": 1
"fieldtype": "Section Break"
},
{
"default": "1",
"fieldname": "apply_restriction_on_values",
"fieldtype": "Check",
"label": "Apply restriction on dimension values"
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2021-02-03 12:04:58.678402",
"modified": "2023-06-07 14:59:41.869117",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Accounting Dimension Filter",
"naming_rule": "Expression",
"owner": "Administrator",
"permissions": [
{
@@ -154,5 +141,6 @@
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"states": [],
"track_changes": 1
}

View File

@@ -8,6 +8,34 @@ from frappe.model.document import Document
class AccountingDimensionFilter(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
from erpnext.accounts.doctype.allowed_dimension.allowed_dimension import AllowedDimension
from erpnext.accounts.doctype.applicable_on_account.applicable_on_account import (
ApplicableOnAccount,
)
accounting_dimension: DF.Literal
accounts: DF.Table[ApplicableOnAccount]
allow_or_restrict: DF.Literal["Allow", "Restrict"]
apply_restriction_on_values: DF.Check
company: DF.Link
dimensions: DF.Table[AllowedDimension]
disabled: DF.Check
# end: auto-generated types
def before_save(self):
# If restriction is not applied on values, then remove all the dimensions and set allow_or_restrict to Restrict
if not self.apply_restriction_on_values:
self.allow_or_restrict = "Restrict"
self.set("dimensions", [])
def validate(self):
self.validate_applicable_accounts()
@@ -44,12 +72,12 @@ def get_dimension_filter_map():
a.applicable_on_account, d.dimension_value, p.accounting_dimension,
p.allow_or_restrict, a.is_mandatory
FROM
`tabApplicable On Account` a, `tabAllowed Dimension` d,
`tabApplicable On Account` a,
`tabAccounting Dimension Filter` p
LEFT JOIN `tabAllowed Dimension` d ON d.parent = p.name
WHERE
p.name = a.parent
AND p.disabled = 0
AND p.name = d.parent
""",
as_dict=1,
)
@@ -76,4 +104,5 @@ def build_map(map_object, dimension, account, filter_value, allow_or_restrict, i
(dimension, account),
{"allowed_dimensions": [], "is_mandatory": is_mandatory, "allow_or_restrict": allow_or_restrict},
)
map_object[(dimension, account)]["allowed_dimensions"].append(filter_value)
if filter_value:
map_object[(dimension, account)]["allowed_dimensions"].append(filter_value)

View File

@@ -64,6 +64,7 @@ def create_accounting_dimension_filter():
"accounting_dimension": "Cost Center",
"allow_or_restrict": "Allow",
"company": "_Test Company",
"apply_restriction_on_values": 1,
"accounts": [
{
"applicable_on_account": "Sales - _TC",
@@ -85,6 +86,7 @@ def create_accounting_dimension_filter():
"doctype": "Accounting Dimension Filter",
"accounting_dimension": "Department",
"allow_or_restrict": "Allow",
"apply_restriction_on_values": 1,
"company": "_Test Company",
"accounts": [{"applicable_on_account": "Sales - _TC", "is_mandatory": 1}],
"dimensions": [{"accounting_dimension": "Department", "dimension_value": "Accounts - _TC"}],

View File

@@ -20,5 +20,11 @@ frappe.ui.form.on('Accounting Period', {
}
});
}
frm.set_query("document_type", "closed_documents", () => {
return {
query: "erpnext.controllers.queries.get_doctypes_for_closing",
}
});
}
});

View File

@@ -11,7 +11,28 @@ class OverlapError(frappe.ValidationError):
pass
class ClosedAccountingPeriod(frappe.ValidationError):
pass
class AccountingPeriod(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
from erpnext.accounts.doctype.closed_document.closed_document import ClosedDocument
closed_documents: DF.Table[ClosedDocument]
company: DF.Link
end_date: DF.Date
period_name: DF.Data
start_date: DF.Date
# end: auto-generated types
def validate(self):
self.validate_overlap()
@@ -65,3 +86,42 @@ class AccountingPeriod(Document):
"closed_documents",
{"document_type": doctype_for_closing.document_type, "closed": doctype_for_closing.closed},
)
def validate_accounting_period_on_doc_save(doc, method=None):
if doc.doctype == "Bank Clearance":
return
elif doc.doctype == "Asset":
if doc.is_existing_asset:
return
else:
date = doc.available_for_use_date
elif doc.doctype == "Asset Repair":
date = doc.completion_date
else:
date = doc.posting_date
ap = frappe.qb.DocType("Accounting Period")
cd = frappe.qb.DocType("Closed Document")
accounting_period = (
frappe.qb.from_(ap)
.from_(cd)
.select(ap.name)
.where(
(ap.name == cd.parent)
& (ap.company == doc.company)
& (cd.closed == 1)
& (cd.document_type == doc.doctype)
& (date >= ap.start_date)
& (date <= ap.end_date)
)
).run(as_dict=1)
if accounting_period:
frappe.throw(
_("You cannot create a {0} within the closed Accounting Period {1}").format(
doc.doctype, frappe.bold(accounting_period[0]["name"])
),
ClosedAccountingPeriod,
)

View File

@@ -6,9 +6,11 @@ import unittest
import frappe
from frappe.utils import add_months, nowdate
from erpnext.accounts.doctype.accounting_period.accounting_period import OverlapError
from erpnext.accounts.doctype.accounting_period.accounting_period import (
ClosedAccountingPeriod,
OverlapError,
)
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
from erpnext.accounts.general_ledger import ClosedAccountingPeriod
test_dependencies = ["Item"]
@@ -33,9 +35,9 @@ class TestAccountingPeriod(unittest.TestCase):
ap1.save()
doc = create_sales_invoice(
do_not_submit=1, cost_center="_Test Company - _TC", warehouse="Stores - _TC"
do_not_save=1, cost_center="_Test Company - _TC", warehouse="Stores - _TC"
)
self.assertRaises(ClosedAccountingPeriod, doc.submit)
self.assertRaises(ClosedAccountingPeriod, doc.save)
def tearDown(self):
for d in frappe.get_all("Accounting Period"):

View File

@@ -32,6 +32,7 @@
"column_break_19",
"add_taxes_from_item_tax_template",
"book_tax_discount_loss",
"round_row_wise_tax",
"print_settings",
"show_inclusive_tax_in_print",
"show_taxes_as_table_in_print",
@@ -58,10 +59,19 @@
"closing_settings_tab",
"period_closing_settings_section",
"acc_frozen_upto",
"ignore_account_closing_balance",
"column_break_25",
"frozen_accounts_modifier",
"tab_break_dpet",
"show_balance_in_coa"
"show_balance_in_coa",
"banking_tab",
"enable_party_matching",
"enable_fuzzy_matching",
"reports_tab",
"remarks_section",
"general_ledger_remarks_length",
"column_break_lvjk",
"receivable_payable_remarks_length"
],
"fields": [
{
@@ -383,6 +393,68 @@
"fieldname": "show_taxes_as_table_in_print",
"fieldtype": "Check",
"label": "Show Taxes as Table in Print"
},
{
"fieldname": "banking_tab",
"fieldtype": "Tab Break",
"label": "Banking"
},
{
"default": "0",
"description": "Auto match and set the Party in Bank Transactions",
"fieldname": "enable_party_matching",
"fieldtype": "Check",
"label": "Enable Automatic Party Matching"
},
{
"default": "0",
"depends_on": "enable_party_matching",
"description": "Approximately match the description/party name against parties",
"fieldname": "enable_fuzzy_matching",
"fieldtype": "Check",
"label": "Enable Fuzzy Matching"
},
{
"default": "0",
"description": "Financial reports will be generated using GL Entry doctypes (should be enabled if Period Closing Voucher is not posted for all years sequentially or missing) ",
"fieldname": "ignore_account_closing_balance",
"fieldtype": "Check",
"label": "Ignore Account Closing Balance"
},
{
"default": "0",
"description": "Tax Amount will be rounded on a row(items) level",
"fieldname": "round_row_wise_tax",
"fieldtype": "Check",
"label": "Round Tax Amount Row-wise"
},
{
"fieldname": "reports_tab",
"fieldtype": "Tab Break",
"label": "Reports"
},
{
"default": "0",
"description": "Truncates 'Remarks' column to set character length",
"fieldname": "general_ledger_remarks_length",
"fieldtype": "Int",
"label": "General Ledger"
},
{
"default": "0",
"description": "Truncates 'Remarks' column to set character length",
"fieldname": "receivable_payable_remarks_length",
"fieldtype": "Int",
"label": "Accounts Receivable/Payable"
},
{
"fieldname": "column_break_lvjk",
"fieldtype": "Column Break"
},
{
"fieldname": "remarks_section",
"fieldtype": "Section Break",
"label": "Remarks Column Length"
}
],
"icon": "icon-cog",
@@ -390,7 +462,7 @@
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
"modified": "2023-06-13 18:47:46.430291",
"modified": "2023-11-20 09:37:47.650347",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Accounts Settings",

View File

@@ -14,21 +14,78 @@ from erpnext.stock.utils import check_pending_reposting
class AccountsSettings(Document):
def on_update(self):
frappe.clear_cache()
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
acc_frozen_upto: DF.Date | None
add_taxes_from_item_tax_template: DF.Check
allow_multi_currency_invoices_against_single_party_account: DF.Check
allow_stale: DF.Check
auto_reconcile_payments: DF.Check
automatically_fetch_payment_terms: DF.Check
automatically_process_deferred_accounting_entry: DF.Check
book_asset_depreciation_entry_automatically: DF.Check
book_deferred_entries_based_on: DF.Literal["Days", "Months"]
book_deferred_entries_via_journal_entry: DF.Check
book_tax_discount_loss: DF.Check
check_supplier_invoice_uniqueness: DF.Check
credit_controller: DF.Link | None
delete_linked_ledger_entries: DF.Check
determine_address_tax_category_from: DF.Literal["Billing Address", "Shipping Address"]
enable_common_party_accounting: DF.Check
enable_fuzzy_matching: DF.Check
enable_party_matching: DF.Check
frozen_accounts_modifier: DF.Link | None
general_ledger_remarks_length: DF.Int
ignore_account_closing_balance: 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
role_allowed_to_over_bill: DF.Link | None
round_row_wise_tax: DF.Check
show_balance_in_coa: DF.Check
show_inclusive_tax_in_print: DF.Check
show_payment_schedule_in_print: DF.Check
show_taxes_as_table_in_print: DF.Check
stale_days: DF.Int
submit_journal_entries: DF.Check
unlink_advance_payment_on_cancelation_of_order: DF.Check
unlink_payment_on_cancellation_of_invoice: DF.Check
# end: auto-generated types
def validate(self):
frappe.db.set_default(
"add_taxes_from_item_tax_template", self.get("add_taxes_from_item_tax_template", 0)
)
old_doc = self.get_doc_before_save()
clear_cache = False
frappe.db.set_default(
"enable_common_party_accounting", self.get("enable_common_party_accounting", 0)
)
if old_doc.add_taxes_from_item_tax_template != self.add_taxes_from_item_tax_template:
frappe.db.set_default(
"add_taxes_from_item_tax_template", self.get("add_taxes_from_item_tax_template", 0)
)
clear_cache = True
if old_doc.enable_common_party_accounting != self.enable_common_party_accounting:
frappe.db.set_default(
"enable_common_party_accounting", self.get("enable_common_party_accounting", 0)
)
clear_cache = True
self.validate_stale_days()
self.enable_payment_schedule_in_print()
self.validate_pending_reposts()
if old_doc.show_payment_schedule_in_print != self.show_payment_schedule_in_print:
self.enable_payment_schedule_in_print()
if old_doc.acc_frozen_upto != self.acc_frozen_upto:
self.validate_pending_reposts()
if clear_cache:
frappe.clear_cache()
def validate_stale_days(self):
if not self.allow_stale and cint(self.stale_days) <= 0:

View File

@@ -6,4 +6,22 @@ from frappe.model.document import Document
class AdvanceTax(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
account_head: DF.Link | None
allocated_amount: DF.Currency
parent: DF.Data
parentfield: DF.Data
parenttype: DF.Data
reference_detail: DF.Data | None
reference_name: DF.DynamicLink | None
reference_type: DF.Link | None
# end: auto-generated types
pass

View File

@@ -7,4 +7,33 @@ from frappe.model.document import Document
class AdvanceTaxesandCharges(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
account_head: DF.Link
add_deduct_tax: DF.Literal["Add", "Deduct"]
allocated_amount: DF.Currency
base_tax_amount: DF.Currency
base_total: DF.Currency
charge_type: DF.Literal[
"", "Actual", "On Paid Amount", "On Previous Row Amount", "On Previous Row Total"
]
cost_center: DF.Link | None
currency: DF.Link | None
description: DF.SmallText
included_in_paid_amount: DF.Check
parent: DF.Data
parentfield: DF.Data
parenttype: DF.Data
rate: DF.Float
row_id: DF.Data | None
tax_amount: DF.Currency
total: DF.Currency
# end: auto-generated types
pass

View File

@@ -7,4 +7,19 @@ from frappe.model.document import Document
class AllowedDimension(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
accounting_dimension: DF.Link | None
dimension_value: DF.DynamicLink | None
parent: DF.Data
parentfield: DF.Data
parenttype: DF.Data
# end: auto-generated types
pass

View File

@@ -11,6 +11,7 @@
{
"fieldname": "company",
"fieldtype": "Link",
"ignore_user_permissions": 1,
"in_list_view": 1,
"label": "Company",
"options": "Company",
@@ -19,7 +20,7 @@
],
"istable": 1,
"links": [],
"modified": "2020-05-01 12:32:34.044911",
"modified": "2024-01-03 11:13:02.669632",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Allowed To Transact With",
@@ -28,5 +29,6 @@
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"states": [],
"track_changes": 1
}

View File

@@ -6,4 +6,18 @@ from frappe.model.document import Document
class AllowedToTransactWith(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
company: DF.Link
parent: DF.Data
parentfield: DF.Data
parenttype: DF.Data
# end: auto-generated types
pass

View File

@@ -7,4 +7,19 @@ from frappe.model.document import Document
class ApplicableOnAccount(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
applicable_on_account: DF.Link
is_mandatory: DF.Check
parent: DF.Data
parentfield: DF.Data
parenttype: DF.Data
# end: auto-generated types
pass

View File

@@ -8,9 +8,6 @@ frappe.ui.form.on('Bank', {
},
refresh: function(frm) {
add_fields_to_mapping_table(frm);
frappe.dynamic_link = { doc: frm.doc, fieldname: 'name', doctype: 'Bank' };
frm.toggle_display(['address_html','contact_html'], !frm.doc.__islocal);
if (frm.doc.__islocal) {
@@ -105,7 +102,7 @@ erpnext.integrations.refreshPlaidLink = class refreshPlaidLink {
}
onScriptLoaded(me) {
me.linkHandler = Plaid.create({
me.linkHandler = Plaid.create({ // eslint-disable-line no-undef
env: me.plaid_env,
token: me.token,
onSuccess: me.plaid_success

View File

@@ -10,6 +10,25 @@ from frappe.model.document import Document
class Bank(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
from erpnext.accounts.doctype.bank_transaction_mapping.bank_transaction_mapping import (
BankTransactionMapping,
)
bank_name: DF.Data
bank_transaction_mapping: DF.Table[BankTransactionMapping]
plaid_access_token: DF.Data | None
swift_number: DF.Data | None
website: DF.Data | None
# end: auto-generated types
def onload(self):
"""Load address and contacts in `__onload`"""
load_address_and_contact(self)

View File

@@ -13,6 +13,7 @@
"account_type",
"account_subtype",
"column_break_7",
"disabled",
"is_default",
"is_company_account",
"company",
@@ -199,10 +200,16 @@
"fieldtype": "Data",
"in_global_search": 1,
"label": "Branch Code"
},
{
"default": "0",
"fieldname": "disabled",
"fieldtype": "Check",
"label": "Disabled"
}
],
"links": [],
"modified": "2022-05-04 15:49:42.620630",
"modified": "2023-09-22 21:31:34.763977",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Bank Account",

View File

@@ -12,6 +12,33 @@ from frappe.model.document import Document
class BankAccount(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
account: DF.Link | None
account_name: DF.Data
account_subtype: DF.Link | None
account_type: DF.Link | None
bank: DF.Link
bank_account_no: DF.Data | None
branch_code: DF.Data | None
company: DF.Link | None
disabled: DF.Check
iban: DF.Data | None
integration_id: DF.Data | None
is_company_account: DF.Check
is_default: DF.Check
last_integration_date: DF.Date | None
mask: DF.Data | None
party: DF.DynamicLink | None
party_type: DF.Link | None
# end: auto-generated types
def onload(self):
"""Load address and contacts in `__onload`"""
load_address_and_contact(self)
@@ -70,7 +97,6 @@ def make_bank_account(doctype, docname):
return doc
@frappe.whitelist()
def get_party_bank_account(party_type, party):
return frappe.db.get_value(party_type, party, "default_bank_account")

View File

@@ -6,4 +6,15 @@ from frappe.model.document import Document
class BankAccountSubtype(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
account_subtype: DF.Data | None
# end: auto-generated types
pass

View File

@@ -7,4 +7,15 @@ from frappe.model.document import Document
class BankAccountType(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
account_type: DF.Data | None
# end: auto-generated types
pass

View File

@@ -5,7 +5,6 @@
import frappe
from frappe import _, msgprint
from frappe.model.document import Document
from frappe.query_builder.custom import ConstantColumn
from frappe.utils import flt, fmt_money, getdate
import erpnext
@@ -14,6 +13,28 @@ form_grid_templates = {"journal_entries": "templates/form_grid/bank_reconciliati
class BankClearance(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
from erpnext.accounts.doctype.bank_clearance_detail.bank_clearance_detail import (
BankClearanceDetail,
)
account: DF.Link
account_currency: DF.Link | None
bank_account: DF.Link | None
from_date: DF.Date
include_pos_transactions: DF.Check
include_reconciled_entries: DF.Check
payment_entries: DF.Table[BankClearanceDetail]
to_date: DF.Date
# end: auto-generated types
@frappe.whitelist()
def get_payment_entries(self):
if not (self.from_date and self.to_date):
@@ -22,167 +43,24 @@ class BankClearance(Document):
if not self.account:
frappe.throw(_("Account is mandatory to get payment entries"))
condition = ""
if not self.include_reconciled_entries:
condition = "and (clearance_date IS NULL or clearance_date='0000-00-00')"
entries = []
journal_entries = frappe.db.sql(
"""
select
"Journal Entry" as payment_document, t1.name as payment_entry,
t1.cheque_no as cheque_number, t1.cheque_date,
sum(t2.debit_in_account_currency) as debit, sum(t2.credit_in_account_currency) as credit,
t1.posting_date, t2.against_account, t1.clearance_date, t2.account_currency
from
`tabJournal Entry` t1, `tabJournal Entry Account` t2
where
t2.parent = t1.name and t2.account = %(account)s and t1.docstatus=1
and t1.posting_date >= %(from)s and t1.posting_date <= %(to)s
and ifnull(t1.is_opening, 'No') = 'No' {condition}
group by t2.account, t1.name
order by t1.posting_date ASC, t1.name DESC
""".format(
condition=condition
),
{"account": self.account, "from": self.from_date, "to": self.to_date},
as_dict=1,
)
if self.bank_account:
condition += "and bank_account = %(bank_account)s"
payment_entries = frappe.db.sql(
"""
select
"Payment Entry" as payment_document, name as payment_entry,
reference_no as cheque_number, reference_date as cheque_date,
if(paid_from=%(account)s, paid_amount + total_taxes_and_charges, 0) as credit,
if(paid_from=%(account)s, 0, received_amount) as debit,
posting_date, ifnull(party,if(paid_from=%(account)s,paid_to,paid_from)) as against_account, clearance_date,
if(paid_to=%(account)s, paid_to_account_currency, paid_from_account_currency) as account_currency
from `tabPayment Entry`
where
(paid_from=%(account)s or paid_to=%(account)s) and docstatus=1
and posting_date >= %(from)s and posting_date <= %(to)s
{condition}
order by
posting_date ASC, name DESC
""".format(
condition=condition
),
{
"account": self.account,
"from": self.from_date,
"to": self.to_date,
"bank_account": self.bank_account,
},
as_dict=1,
)
loan_disbursement = frappe.qb.DocType("Loan Disbursement")
query = (
frappe.qb.from_(loan_disbursement)
.select(
ConstantColumn("Loan Disbursement").as_("payment_document"),
loan_disbursement.name.as_("payment_entry"),
loan_disbursement.disbursed_amount.as_("credit"),
ConstantColumn(0).as_("debit"),
loan_disbursement.reference_number.as_("cheque_number"),
loan_disbursement.reference_date.as_("cheque_date"),
loan_disbursement.clearance_date.as_("clearance_date"),
loan_disbursement.disbursement_date.as_("posting_date"),
loan_disbursement.applicant.as_("against_account"),
)
.where(loan_disbursement.docstatus == 1)
.where(loan_disbursement.disbursement_date >= self.from_date)
.where(loan_disbursement.disbursement_date <= self.to_date)
.where(loan_disbursement.disbursement_account.isin([self.bank_account, self.account]))
.orderby(loan_disbursement.disbursement_date)
.orderby(loan_disbursement.name, order=frappe.qb.desc)
)
if not self.include_reconciled_entries:
query = query.where(loan_disbursement.clearance_date.isnull())
loan_disbursements = query.run(as_dict=1)
loan_repayment = frappe.qb.DocType("Loan Repayment")
query = (
frappe.qb.from_(loan_repayment)
.select(
ConstantColumn("Loan Repayment").as_("payment_document"),
loan_repayment.name.as_("payment_entry"),
loan_repayment.amount_paid.as_("debit"),
ConstantColumn(0).as_("credit"),
loan_repayment.reference_number.as_("cheque_number"),
loan_repayment.reference_date.as_("cheque_date"),
loan_repayment.clearance_date.as_("clearance_date"),
loan_repayment.applicant.as_("against_account"),
loan_repayment.posting_date,
)
.where(loan_repayment.docstatus == 1)
.where(loan_repayment.posting_date >= self.from_date)
.where(loan_repayment.posting_date <= self.to_date)
.where(loan_repayment.payment_account.isin([self.bank_account, self.account]))
)
if not self.include_reconciled_entries:
query = query.where(loan_repayment.clearance_date.isnull())
if frappe.db.has_column("Loan Repayment", "repay_from_salary"):
query = query.where((loan_repayment.repay_from_salary == 0))
query = query.orderby(loan_repayment.posting_date).orderby(
loan_repayment.name, order=frappe.qb.desc
)
loan_repayments = query.run(as_dict=True)
pos_sales_invoices, pos_purchase_invoices = [], []
if self.include_pos_transactions:
pos_sales_invoices = frappe.db.sql(
"""
select
"Sales Invoice Payment" as payment_document, sip.name as payment_entry, sip.amount as debit,
si.posting_date, si.customer as against_account, sip.clearance_date,
account.account_currency, 0 as credit
from `tabSales Invoice Payment` sip, `tabSales Invoice` si, `tabAccount` account
where
sip.account=%(account)s and si.docstatus=1 and sip.parent = si.name
and account.name = sip.account and si.posting_date >= %(from)s and si.posting_date <= %(to)s
order by
si.posting_date ASC, si.name DESC
""",
{"account": self.account, "from": self.from_date, "to": self.to_date},
as_dict=1,
)
pos_purchase_invoices = frappe.db.sql(
"""
select
"Purchase Invoice" as payment_document, pi.name as payment_entry, pi.paid_amount as credit,
pi.posting_date, pi.supplier as against_account, pi.clearance_date,
account.account_currency, 0 as debit
from `tabPurchase Invoice` pi, `tabAccount` account
where
pi.cash_bank_account=%(account)s and pi.docstatus=1 and account.name = pi.cash_bank_account
and pi.posting_date >= %(from)s and pi.posting_date <= %(to)s
order by
pi.posting_date ASC, pi.name DESC
""",
{"account": self.account, "from": self.from_date, "to": self.to_date},
as_dict=1,
# get entries from all the apps
for method_name in frappe.get_hooks("get_payment_entries_for_bank_clearance"):
entries += (
frappe.get_attr(method_name)(
self.from_date,
self.to_date,
self.account,
self.bank_account,
self.include_reconciled_entries,
self.include_pos_transactions,
)
or []
)
entries = sorted(
list(payment_entries)
+ list(journal_entries)
+ list(pos_sales_invoices)
+ list(pos_purchase_invoices)
+ list(loan_disbursements)
+ list(loan_repayments),
entries,
key=lambda k: getdate(k["posting_date"]),
)
@@ -235,3 +113,111 @@ class BankClearance(Document):
msgprint(_("Clearance Date updated"))
else:
msgprint(_("Clearance Date not mentioned"))
def get_payment_entries_for_bank_clearance(
from_date, to_date, account, bank_account, include_reconciled_entries, include_pos_transactions
):
entries = []
condition = ""
if not include_reconciled_entries:
condition = "and (clearance_date IS NULL or clearance_date='0000-00-00')"
journal_entries = frappe.db.sql(
"""
select
"Journal Entry" as payment_document, t1.name as payment_entry,
t1.cheque_no as cheque_number, t1.cheque_date,
sum(t2.debit_in_account_currency) as debit, sum(t2.credit_in_account_currency) as credit,
t1.posting_date, t2.against_account, t1.clearance_date, t2.account_currency
from
`tabJournal Entry` t1, `tabJournal Entry Account` t2
where
t2.parent = t1.name and t2.account = %(account)s and t1.docstatus=1
and t1.posting_date >= %(from)s and t1.posting_date <= %(to)s
and ifnull(t1.is_opening, 'No') = 'No' {condition}
group by t2.account, t1.name
order by t1.posting_date ASC, t1.name DESC
""".format(
condition=condition
),
{"account": account, "from": from_date, "to": to_date},
as_dict=1,
)
if bank_account:
condition += "and bank_account = %(bank_account)s"
payment_entries = frappe.db.sql(
"""
select
"Payment Entry" as payment_document, name as payment_entry,
reference_no as cheque_number, reference_date as cheque_date,
if(paid_from=%(account)s, paid_amount + total_taxes_and_charges, 0) as credit,
if(paid_from=%(account)s, 0, received_amount) as debit,
posting_date, ifnull(party,if(paid_from=%(account)s,paid_to,paid_from)) as against_account, clearance_date,
if(paid_to=%(account)s, paid_to_account_currency, paid_from_account_currency) as account_currency
from `tabPayment Entry`
where
(paid_from=%(account)s or paid_to=%(account)s) and docstatus=1
and posting_date >= %(from)s and posting_date <= %(to)s
{condition}
order by
posting_date ASC, name DESC
""".format(
condition=condition
),
{
"account": account,
"from": from_date,
"to": to_date,
"bank_account": bank_account,
},
as_dict=1,
)
pos_sales_invoices, pos_purchase_invoices = [], []
if include_pos_transactions:
pos_sales_invoices = frappe.db.sql(
"""
select
"Sales Invoice Payment" as payment_document, sip.name as payment_entry, sip.amount as debit,
si.posting_date, si.customer as against_account, sip.clearance_date,
account.account_currency, 0 as credit
from `tabSales Invoice Payment` sip, `tabSales Invoice` si, `tabAccount` account
where
sip.account=%(account)s and si.docstatus=1 and sip.parent = si.name
and account.name = sip.account and si.posting_date >= %(from)s and si.posting_date <= %(to)s
order by
si.posting_date ASC, si.name DESC
""",
{"account": account, "from": from_date, "to": to_date},
as_dict=1,
)
pos_purchase_invoices = frappe.db.sql(
"""
select
"Purchase Invoice" as payment_document, pi.name as payment_entry, pi.paid_amount as credit,
pi.posting_date, pi.supplier as against_account, pi.clearance_date,
account.account_currency, 0 as debit
from `tabPurchase Invoice` pi, `tabAccount` account
where
pi.cash_bank_account=%(account)s and pi.docstatus=1 and account.name = pi.cash_bank_account
and pi.posting_date >= %(from)s and pi.posting_date <= %(to)s
order by
pi.posting_date ASC, pi.name DESC
""",
{"account": account, "from": from_date, "to": to_date},
as_dict=1,
)
entries = (
list(payment_entries)
+ list(journal_entries)
+ list(pos_sales_invoices)
+ list(pos_purchase_invoices)
)
return entries

View File

@@ -8,26 +8,76 @@ from frappe.utils import add_months, getdate
from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry
from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice
from erpnext.loan_management.doctype.loan.test_loan import (
create_loan,
create_loan_accounts,
create_loan_type,
create_repayment_entry,
make_loan_disbursement_entry,
)
from erpnext.tests.utils import if_lending_app_installed, if_lending_app_not_installed
class TestBankClearance(unittest.TestCase):
@classmethod
def setUpClass(cls):
clear_payment_entries()
clear_loan_transactions()
make_bank_account()
create_loan_accounts()
create_loan_masters()
add_transactions()
# Basic test case to test if bank clearance tool doesn't break
# Detailed test can be added later
@if_lending_app_not_installed
def test_bank_clearance(self):
bank_clearance = frappe.get_doc("Bank Clearance")
bank_clearance.account = "_Test Bank Clearance - _TC"
bank_clearance.from_date = add_months(getdate(), -1)
bank_clearance.to_date = getdate()
bank_clearance.get_payment_entries()
self.assertEqual(len(bank_clearance.payment_entries), 1)
@if_lending_app_installed
def test_bank_clearance_with_loan(self):
from lending.loan_management.doctype.loan.test_loan import (
create_loan,
create_loan_accounts,
create_loan_product,
create_repayment_entry,
make_loan_disbursement_entry,
)
def create_loan_masters():
create_loan_product(
"Clearance Loan",
"Clearance Loan",
2000000,
13.5,
25,
0,
5,
"Cash",
"_Test Bank Clearance - _TC",
"_Test Bank Clearance - _TC",
"Loan Account - _TC",
"Interest Income Account - _TC",
"Penalty Income Account - _TC",
)
def make_loan():
loan = create_loan(
"_Test Customer",
"Clearance Loan",
280000,
"Repay Over Number of Periods",
20,
applicant_type="Customer",
)
loan.submit()
make_loan_disbursement_entry(loan.name, loan.loan_amount, disbursement_date=getdate())
repayment_entry = create_repayment_entry(
loan.name, "_Test Customer", getdate(), loan.loan_amount
)
repayment_entry.save()
repayment_entry.submit()
create_loan_accounts()
create_loan_masters()
make_loan()
bank_clearance = frappe.get_doc("Bank Clearance")
bank_clearance.account = "_Test Bank Clearance - _TC"
bank_clearance.from_date = add_months(getdate(), -1)
@@ -36,6 +86,19 @@ class TestBankClearance(unittest.TestCase):
self.assertEqual(len(bank_clearance.payment_entries), 3)
def clear_payment_entries():
frappe.db.delete("Payment Entry")
@if_lending_app_installed
def clear_loan_transactions():
for dt in [
"Loan Disbursement",
"Loan Repayment",
]:
frappe.db.delete(dt)
def make_bank_account():
if not frappe.db.get_value("Account", "_Test Bank Clearance - _TC"):
frappe.get_doc(
@@ -49,42 +112,8 @@ def make_bank_account():
).insert()
def create_loan_masters():
create_loan_type(
"Clearance Loan",
2000000,
13.5,
25,
0,
5,
"Cash",
"_Test Bank Clearance - _TC",
"_Test Bank Clearance - _TC",
"Loan Account - _TC",
"Interest Income Account - _TC",
"Penalty Income Account - _TC",
)
def add_transactions():
make_payment_entry()
make_loan()
def make_loan():
loan = create_loan(
"_Test Customer",
"Clearance Loan",
280000,
"Repay Over Number of Periods",
20,
applicant_type="Customer",
)
loan.submit()
make_loan_disbursement_entry(loan.name, loan.loan_amount, disbursement_date=getdate())
repayment_entry = create_repayment_entry(loan.name, "_Test Customer", getdate(), loan.loan_amount)
repayment_entry.save()
repayment_entry.submit()
def make_payment_entry():

View File

@@ -6,4 +6,25 @@ from frappe.model.document import Document
class BankClearanceDetail(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
against_account: DF.Data | None
amount: DF.Data | None
cheque_date: DF.Date | None
cheque_number: DF.Data | None
clearance_date: DF.Date | None
parent: DF.Data
parentfield: DF.Data
parenttype: DF.Data
payment_document: DF.Link | None
payment_entry: DF.DynamicLink | None
posting_date: DF.Date | None
# end: auto-generated types
pass

View File

@@ -8,6 +8,40 @@ from frappe.model.document import Document
class BankGuarantee(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
account: DF.Link | None
amended_from: DF.Link | None
amount: DF.Currency
bank: DF.Link | None
bank_account: DF.Link | None
bank_account_no: DF.Data | None
bank_guarantee_number: DF.Data | None
bg_type: DF.Literal["", "Receiving", "Providing"]
branch_code: DF.Data | None
charges: DF.Currency
customer: DF.Link | None
end_date: DF.Date | None
fixed_deposit_number: DF.Data | None
iban: DF.Data | None
margin_money: DF.Currency
more_information: DF.TextEditor | None
name_of_beneficiary: DF.Data | None
project: DF.Link | None
reference_docname: DF.DynamicLink | None
reference_doctype: DF.Link | None
start_date: DF.Date
supplier: DF.Link | None
swift_number: DF.Data | None
validity: DF.Int
# end: auto-generated types
def validate(self):
if not (self.customer or self.supplier):
frappe.throw(_("Select the customer or supplier."))

View File

@@ -19,7 +19,7 @@ frappe.ui.form.on("Bank Reconciliation Tool", {
onload: function (frm) {
// Set default filter dates
today = frappe.datetime.get_today()
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');
@@ -137,7 +137,7 @@ frappe.ui.form.on("Bank Reconciliation Tool", {
"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_from_date,
till_date: frappe.datetime.add_days(frm.doc.bank_statement_from_date, -1)
},
callback: (response) => {
frm.set_value("account_opening_balance", response.message);

View File

@@ -9,16 +9,39 @@ from frappe import _
from frappe.model.document import Document
from frappe.query_builder.custom import ConstantColumn
from frappe.utils import cint, flt
from pypika.terms import Parameter
from erpnext import get_default_cost_center
from erpnext.accounts.doctype.bank_transaction.bank_transaction import get_total_allocated_amount
from erpnext.accounts.report.bank_reconciliation_statement.bank_reconciliation_statement import (
get_amounts_not_reflected_in_system,
get_entries,
)
from erpnext.accounts.utils import get_balance_on
from erpnext.accounts.utils import get_account_currency, get_balance_on
from erpnext.setup.utils import get_exchange_rate
class BankReconciliationTool(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
account_currency: DF.Link | None
account_opening_balance: DF.Currency
bank_account: DF.Link | None
bank_statement_closing_balance: DF.Currency
bank_statement_from_date: DF.Date | None
bank_statement_to_date: DF.Date | None
company: DF.Link | None
filter_by_reference_date: DF.Check
from_reference_date: DF.Date | None
to_reference_date: DF.Date | None
# end: auto-generated types
pass
@@ -128,7 +151,7 @@ def create_journal_entry_bts(
bank_transaction = frappe.db.get_values(
"Bank Transaction",
bank_transaction_name,
fieldname=["name", "deposit", "withdrawal", "bank_account"],
fieldname=["name", "deposit", "withdrawal", "bank_account", "currency"],
as_dict=True,
)[0]
company_account = frappe.get_value("Bank Account", bank_transaction.bank_account, "account")
@@ -140,28 +163,96 @@ def create_journal_entry_bts(
second_account
)
)
accounts = []
# Multi Currency?
accounts.append(
{
"account": second_account,
"credit_in_account_currency": bank_transaction.deposit,
"debit_in_account_currency": bank_transaction.withdrawal,
"party_type": party_type,
"party": party,
}
)
accounts.append(
{
"account": company_account,
"bank_account": bank_transaction.bank_account,
"credit_in_account_currency": bank_transaction.withdrawal,
"debit_in_account_currency": bank_transaction.deposit,
}
)
company = frappe.get_value("Account", company_account, "company")
company_default_currency = frappe.get_cached_value("Company", company, "default_currency")
company_account_currency = frappe.get_cached_value("Account", company_account, "account_currency")
second_account_currency = frappe.get_cached_value("Account", second_account, "account_currency")
# determine if multi-currency Journal or not
is_multi_currency = (
True
if company_default_currency != company_account_currency
or company_default_currency != second_account_currency
or company_default_currency != bank_transaction.currency
else False
)
accounts = []
second_account_dict = {
"account": second_account,
"account_currency": second_account_currency,
"credit_in_account_currency": bank_transaction.deposit,
"debit_in_account_currency": bank_transaction.withdrawal,
"party_type": party_type,
"party": party,
"cost_center": get_default_cost_center(company),
}
company_account_dict = {
"account": company_account,
"account_currency": company_account_currency,
"bank_account": bank_transaction.bank_account,
"credit_in_account_currency": bank_transaction.withdrawal,
"debit_in_account_currency": bank_transaction.deposit,
"cost_center": get_default_cost_center(company),
}
# convert transaction amount to company currency
if is_multi_currency:
exc_rate = get_exchange_rate(bank_transaction.currency, company_default_currency, posting_date)
withdrawal_in_company_currency = flt(exc_rate * abs(bank_transaction.withdrawal))
deposit_in_company_currency = flt(exc_rate * abs(bank_transaction.deposit))
else:
withdrawal_in_company_currency = bank_transaction.withdrawal
deposit_in_company_currency = bank_transaction.deposit
# if second account is of foreign currency, convert and set debit and credit fields.
if second_account_currency != company_default_currency:
exc_rate = get_exchange_rate(second_account_currency, company_default_currency, posting_date)
second_account_dict.update(
{
"exchange_rate": exc_rate,
"credit": deposit_in_company_currency,
"debit": withdrawal_in_company_currency,
"credit_in_account_currency": flt(deposit_in_company_currency / exc_rate) or 0,
"debit_in_account_currency": flt(withdrawal_in_company_currency / exc_rate) or 0,
}
)
else:
second_account_dict.update(
{
"exchange_rate": 1,
"credit": deposit_in_company_currency,
"debit": withdrawal_in_company_currency,
"credit_in_account_currency": deposit_in_company_currency,
"debit_in_account_currency": withdrawal_in_company_currency,
}
)
# if company account is of foreign currency, convert and set debit and credit fields.
if company_account_currency != company_default_currency:
exc_rate = get_exchange_rate(company_account_currency, company_default_currency, posting_date)
company_account_dict.update(
{
"exchange_rate": exc_rate,
"credit": withdrawal_in_company_currency,
"debit": deposit_in_company_currency,
}
)
else:
company_account_dict.update(
{
"exchange_rate": 1,
"credit": withdrawal_in_company_currency,
"debit": deposit_in_company_currency,
"credit_in_account_currency": withdrawal_in_company_currency,
"debit_in_account_currency": deposit_in_company_currency,
}
)
accounts.append(second_account_dict)
accounts.append(company_account_dict)
journal_entry_dict = {
"voucher_type": entry_type,
@@ -171,6 +262,9 @@ def create_journal_entry_bts(
"cheque_no": reference_number,
"mode_of_payment": mode_of_payment,
}
if is_multi_currency:
journal_entry_dict.update({"multi_currency": True})
journal_entry = frappe.new_doc("Journal Entry")
journal_entry.update(journal_entry_dict)
journal_entry.set("accounts", accounts)
@@ -280,68 +374,68 @@ def auto_reconcile_vouchers(
to_reference_date=None,
):
frappe.flags.auto_reconcile_vouchers = True
document_types = ["payment_entry", "journal_entry"]
reconciled, partially_reconciled = set(), set()
bank_transactions = get_bank_transactions(bank_account)
matched_transaction = []
for transaction in bank_transactions:
linked_payments = get_linked_payments(
transaction.name,
document_types,
["payment_entry", "journal_entry"],
from_date,
to_date,
filter_by_reference_date,
from_reference_date,
to_reference_date,
)
vouchers = []
for r in linked_payments:
vouchers.append(
{
"payment_doctype": r[1],
"payment_name": r[2],
"amount": r[4],
}
)
transaction = frappe.get_doc("Bank Transaction", transaction.name)
account = frappe.db.get_value("Bank Account", transaction.bank_account, "account")
matched_trans = 0
for voucher in vouchers:
gl_entry = frappe.db.get_value(
"GL Entry",
dict(
account=account, voucher_type=voucher["payment_doctype"], voucher_no=voucher["payment_name"]
),
["credit", "debit"],
as_dict=1,
)
gl_amount, transaction_amount = (
(gl_entry.credit, transaction.deposit)
if gl_entry.credit > 0
else (gl_entry.debit, transaction.withdrawal)
)
allocated_amount = gl_amount if gl_amount >= transaction_amount else transaction_amount
transaction.append(
"payment_entries",
{
"payment_document": voucher["payment_doctype"],
"payment_entry": voucher["payment_name"],
"allocated_amount": allocated_amount,
if not linked_payments:
continue
vouchers = list(
map(
lambda entry: {
"payment_doctype": entry.get("doctype"),
"payment_name": entry.get("name"),
"amount": entry.get("paid_amount"),
},
linked_payments,
)
matched_transaction.append(str(transaction.name))
transaction.save()
transaction.update_allocations()
matched_transaction_len = len(set(matched_transaction))
if matched_transaction_len == 0:
frappe.msgprint(_("No matching references found for auto reconciliation"))
elif matched_transaction_len == 1:
frappe.msgprint(_("{0} transaction is reconcilied").format(matched_transaction_len))
else:
frappe.msgprint(_("{0} transactions are reconcilied").format(matched_transaction_len))
)
updated_transaction = reconcile_vouchers(transaction.name, json.dumps(vouchers))
if updated_transaction.status == "Reconciled":
reconciled.add(updated_transaction.name)
elif flt(transaction.unallocated_amount) != flt(updated_transaction.unallocated_amount):
# Partially reconciled (status = Unreconciled & unallocated amount changed)
partially_reconciled.add(updated_transaction.name)
alert_message, indicator = get_auto_reconcile_message(partially_reconciled, reconciled)
frappe.msgprint(title=_("Auto Reconciliation"), msg=alert_message, indicator=indicator)
frappe.flags.auto_reconcile_vouchers = False
return reconciled, partially_reconciled
return frappe.get_doc("Bank Transaction", transaction.name)
def get_auto_reconcile_message(partially_reconciled, reconciled):
"""Returns alert message and indicator for auto reconciliation depending on result state."""
alert_message, indicator = "", "blue"
if not partially_reconciled and not reconciled:
alert_message = _("No matches occurred via auto reconciliation")
return alert_message, indicator
indicator = "green"
if reconciled:
alert_message += _("{0} Transaction(s) Reconciled").format(len(reconciled))
alert_message += "<br>"
if partially_reconciled:
alert_message += _("{0} {1} Partially Reconciled").format(
len(partially_reconciled),
_("Transactions") if len(partially_reconciled) > 1 else _("Transaction"),
)
return alert_message, indicator
@frappe.whitelist()
@@ -350,7 +444,13 @@ def reconcile_vouchers(bank_transaction_name, vouchers):
vouchers = json.loads(vouchers)
transaction = frappe.get_doc("Bank Transaction", bank_transaction_name)
transaction.add_payment_entries(vouchers)
return frappe.get_doc("Bank Transaction", bank_transaction_name)
transaction.validate_duplicate_references()
transaction.allocate_payment_entries()
transaction.update_allocated_amount()
transaction.set_status()
transaction.save()
return transaction
@frappe.whitelist()
@@ -387,19 +487,13 @@ def subtract_allocations(gl_account, vouchers):
"Look up & subtract any existing Bank Transaction allocations"
copied = []
for voucher in vouchers:
rows = get_total_allocated_amount(voucher[1], voucher[2])
amount = None
for row in rows:
if row["gl_account"] == gl_account:
amount = row["total"]
break
rows = get_total_allocated_amount(voucher.get("doctype"), voucher.get("name"))
filtered_row = list(filter(lambda row: row.get("gl_account") == gl_account, rows))
if amount:
l = list(voucher)
l[3] -= amount
copied.append(tuple(l))
else:
copied.append(voucher)
if amount := None if not filtered_row else filtered_row[0]["total"]:
voucher["paid_amount"] -= amount
copied.append(voucher)
return copied
@@ -415,8 +509,7 @@ def check_matching(
to_reference_date,
):
exact_match = True if "exact_match" in document_types else False
# combine all types of vouchers
subquery = get_queries(
queries = get_queries(
bank_account,
company,
transaction,
@@ -428,6 +521,7 @@ def check_matching(
to_reference_date,
exact_match,
)
filters = {
"amount": transaction.unallocated_amount,
"payment_type": "Receive" if transaction.deposit > 0.0 else "Pay",
@@ -438,20 +532,13 @@ def check_matching(
}
matching_vouchers = []
for query in queries:
matching_vouchers.extend(frappe.db.sql(query, filters, as_dict=True))
matching_vouchers.extend(
get_loan_vouchers(bank_account, transaction, document_types, filters, exact_match)
return (
sorted(matching_vouchers, key=lambda x: x["rank"], reverse=True) if matching_vouchers else []
)
for query in subquery:
matching_vouchers.extend(
frappe.db.sql(
query,
filters,
)
)
return sorted(matching_vouchers, key=lambda x: x[0], reverse=True) if matching_vouchers else []
def get_queries(
bank_account,
@@ -505,6 +592,8 @@ def get_matching_queries(
to_reference_date,
):
queries = []
currency = get_account_currency(bank_account)
if "payment_entry" in document_types:
query = get_pe_matching_query(
exact_match,
@@ -531,12 +620,12 @@ def get_matching_queries(
queries.append(query)
if transaction.deposit > 0.0 and "sales_invoice" in document_types:
query = get_si_matching_query(exact_match)
query = get_si_matching_query(exact_match, currency)
queries.append(query)
if transaction.withdrawal > 0.0:
if "purchase_invoice" in document_types:
query = get_pi_matching_query(exact_match)
query = get_pi_matching_query(exact_match, currency)
queries.append(query)
if "bank_transaction" in document_types:
@@ -546,128 +635,52 @@ def get_matching_queries(
return queries
def get_loan_vouchers(bank_account, transaction, document_types, filters, exact_match):
vouchers = []
if transaction.withdrawal > 0.0 and "loan_disbursement" in document_types:
vouchers.extend(get_ld_matching_query(bank_account, exact_match, filters))
if transaction.deposit > 0.0 and "loan_repayment" in document_types:
vouchers.extend(get_lr_matching_query(bank_account, exact_match, filters))
return vouchers
def get_bt_matching_query(exact_match, transaction):
# get matching bank transaction query
# find bank transactions in the same bank account with opposite sign
# same bank account must have same company and currency
bt = frappe.qb.DocType("Bank Transaction")
field = "deposit" if transaction.withdrawal > 0.0 else "withdrawal"
amount_equality = getattr(bt, field) == transaction.unallocated_amount
amount_rank = frappe.qb.terms.Case().when(amount_equality, 1).else_(0)
amount_condition = amount_equality if exact_match else getattr(bt, field) > 0.0
return f"""
SELECT
(CASE WHEN reference_number = %(reference_no)s THEN 1 ELSE 0 END
+ CASE WHEN {field} = %(amount)s THEN 1 ELSE 0 END
+ CASE WHEN ( party_type = %(party_type)s AND party = %(party)s ) THEN 1 ELSE 0 END
+ CASE WHEN unallocated_amount = %(amount)s THEN 1 ELSE 0 END
+ 1) AS rank,
'Bank Transaction' AS doctype,
name,
unallocated_amount AS paid_amount,
reference_number AS reference_no,
date AS reference_date,
party,
party_type,
date AS posting_date,
currency
FROM
`tabBank Transaction`
WHERE
status != 'Reconciled'
AND name != '{transaction.name}'
AND bank_account = '{transaction.bank_account}'
AND {field} {'= %(amount)s' if exact_match else '> 0.0'}
"""
def get_ld_matching_query(bank_account, exact_match, filters):
loan_disbursement = frappe.qb.DocType("Loan Disbursement")
matching_reference = loan_disbursement.reference_number == filters.get("reference_number")
matching_party = loan_disbursement.applicant_type == filters.get(
"party_type"
) and loan_disbursement.applicant == filters.get("party")
rank = frappe.qb.terms.Case().when(matching_reference, 1).else_(0)
rank1 = frappe.qb.terms.Case().when(matching_party, 1).else_(0)
query = (
frappe.qb.from_(loan_disbursement)
.select(
rank + rank1 + 1,
ConstantColumn("Loan Disbursement").as_("doctype"),
loan_disbursement.name,
loan_disbursement.disbursed_amount,
loan_disbursement.reference_number,
loan_disbursement.reference_date,
loan_disbursement.applicant_type,
loan_disbursement.disbursement_date,
)
.where(loan_disbursement.docstatus == 1)
.where(loan_disbursement.clearance_date.isnull())
.where(loan_disbursement.disbursement_account == bank_account)
ref_rank = (
frappe.qb.terms.Case().when(bt.reference_number == transaction.reference_number, 1).else_(0)
)
unallocated_rank = (
frappe.qb.terms.Case().when(bt.unallocated_amount == transaction.unallocated_amount, 1).else_(0)
)
if exact_match:
query.where(loan_disbursement.disbursed_amount == filters.get("amount"))
else:
query.where(loan_disbursement.disbursed_amount > 0.0)
vouchers = query.run(as_list=True)
return vouchers
def get_lr_matching_query(bank_account, exact_match, filters):
loan_repayment = frappe.qb.DocType("Loan Repayment")
matching_reference = loan_repayment.reference_number == filters.get("reference_number")
matching_party = loan_repayment.applicant_type == filters.get(
"party_type"
) and loan_repayment.applicant == filters.get("party")
rank = frappe.qb.terms.Case().when(matching_reference, 1).else_(0)
rank1 = frappe.qb.terms.Case().when(matching_party, 1).else_(0)
party_condition = (
(bt.party_type == transaction.party_type)
& (bt.party == transaction.party)
& bt.party.isnotnull()
)
party_rank = frappe.qb.terms.Case().when(party_condition, 1).else_(0)
query = (
frappe.qb.from_(loan_repayment)
frappe.qb.from_(bt)
.select(
rank + rank1 + 1,
ConstantColumn("Loan Repayment").as_("doctype"),
loan_repayment.name,
loan_repayment.amount_paid,
loan_repayment.reference_number,
loan_repayment.reference_date,
loan_repayment.applicant_type,
loan_repayment.posting_date,
(ref_rank + amount_rank + party_rank + unallocated_rank + 1).as_("rank"),
ConstantColumn("Bank Transaction").as_("doctype"),
bt.name,
bt.unallocated_amount.as_("paid_amount"),
bt.reference_number.as_("reference_no"),
bt.date.as_("reference_date"),
bt.party,
bt.party_type,
bt.date.as_("posting_date"),
bt.currency,
)
.where(loan_repayment.docstatus == 1)
.where(loan_repayment.clearance_date.isnull())
.where(loan_repayment.payment_account == bank_account)
.where(bt.status != "Reconciled")
.where(bt.name != transaction.name)
.where(bt.bank_account == transaction.bank_account)
.where(amount_condition)
.where(bt.docstatus == 1)
)
if frappe.db.has_column("Loan Repayment", "repay_from_salary"):
query = query.where((loan_repayment.repay_from_salary == 0))
if exact_match:
query.where(loan_repayment.amount_paid == filters.get("amount"))
else:
query.where(loan_repayment.amount_paid > 0.0)
vouchers = query.run()
return vouchers
return str(query)
def get_pe_matching_query(
@@ -681,45 +694,56 @@ def get_pe_matching_query(
to_reference_date,
):
# get matching payment entries query
if transaction.deposit > 0.0:
currency_field = "paid_to_account_currency as currency"
else:
currency_field = "paid_from_account_currency as currency"
filter_by_date = f"AND posting_date between '{from_date}' and '{to_date}'"
order_by = " posting_date"
filter_by_reference_no = ""
to_from = "to" if transaction.deposit > 0.0 else "from"
currency_field = f"paid_{to_from}_account_currency"
payment_type = "Receive" if transaction.deposit > 0.0 else "Pay"
pe = frappe.qb.DocType("Payment Entry")
ref_condition = pe.reference_no == transaction.reference_number
ref_rank = frappe.qb.terms.Case().when(ref_condition, 1).else_(0)
amount_equality = pe.paid_amount == transaction.unallocated_amount
amount_rank = frappe.qb.terms.Case().when(amount_equality, 1).else_(0)
amount_condition = amount_equality if exact_match else pe.paid_amount > 0.0
party_condition = (
(pe.party_type == transaction.party_type)
& (pe.party == transaction.party)
& pe.party.isnotnull()
)
party_rank = frappe.qb.terms.Case().when(party_condition, 1).else_(0)
filter_by_date = pe.posting_date.between(from_date, to_date)
if cint(filter_by_reference_date):
filter_by_date = f"AND reference_date between '{from_reference_date}' and '{to_reference_date}'"
order_by = " reference_date"
filter_by_date = pe.reference_date.between(from_reference_date, to_reference_date)
query = (
frappe.qb.from_(pe)
.select(
(ref_rank + amount_rank + party_rank + 1).as_("rank"),
ConstantColumn("Payment Entry").as_("doctype"),
pe.name,
pe.paid_amount,
pe.reference_no,
pe.reference_date,
pe.party,
pe.party_type,
pe.posting_date,
getattr(pe, currency_field).as_("currency"),
)
.where(pe.docstatus == 1)
.where(pe.payment_type.isin([payment_type, "Internal Transfer"]))
.where(pe.clearance_date.isnull())
.where(getattr(pe, account_from_to) == Parameter("%(bank_account)s"))
.where(amount_condition)
.where(filter_by_date)
.orderby(pe.reference_date if cint(filter_by_reference_date) else pe.posting_date)
)
if frappe.flags.auto_reconcile_vouchers == True:
filter_by_reference_no = f"AND reference_no = '{transaction.reference_number}'"
return f"""
SELECT
(CASE WHEN reference_no=%(reference_no)s THEN 1 ELSE 0 END
+ CASE WHEN (party_type = %(party_type)s AND party = %(party)s ) THEN 1 ELSE 0 END
+ CASE WHEN paid_amount = %(amount)s THEN 1 ELSE 0 END
+ 1 ) AS rank,
'Payment Entry' as doctype,
name,
paid_amount,
reference_no,
reference_date,
party,
party_type,
posting_date,
{currency_field}
FROM
`tabPayment Entry`
WHERE
docstatus = 1
AND payment_type IN (%(payment_type)s, 'Internal Transfer')
AND ifnull(clearance_date, '') = ""
AND {account_from_to} = %(bank_account)s
AND paid_amount {'= %(amount)s' if exact_match else '> 0.0'}
{filter_by_date}
{filter_by_reference_no}
order by{order_by}
"""
query = query.where(ref_condition)
return str(query)
def get_je_matching_query(
@@ -736,100 +760,121 @@ def get_je_matching_query(
# So one bank could have both types of bank accounts like asset and liability
# So cr_or_dr should be judged only on basis of withdrawal and deposit and not account type
cr_or_dr = "credit" if transaction.withdrawal > 0.0 else "debit"
filter_by_date = f"AND je.posting_date between '{from_date}' and '{to_date}'"
order_by = " je.posting_date"
filter_by_reference_no = ""
je = frappe.qb.DocType("Journal Entry")
jea = frappe.qb.DocType("Journal Entry Account")
ref_condition = je.cheque_no == transaction.reference_number
ref_rank = frappe.qb.terms.Case().when(ref_condition, 1).else_(0)
amount_field = f"{cr_or_dr}_in_account_currency"
amount_equality = getattr(jea, amount_field) == transaction.unallocated_amount
amount_rank = frappe.qb.terms.Case().when(amount_equality, 1).else_(0)
filter_by_date = je.posting_date.between(from_date, to_date)
if cint(filter_by_reference_date):
filter_by_date = f"AND je.cheque_date between '{from_reference_date}' and '{to_reference_date}'"
order_by = " je.cheque_date"
if frappe.flags.auto_reconcile_vouchers == True:
filter_by_reference_no = f"AND je.cheque_no = '{transaction.reference_number}'"
return f"""
SELECT
(CASE WHEN je.cheque_no=%(reference_no)s THEN 1 ELSE 0 END
+ CASE WHEN jea.{cr_or_dr}_in_account_currency = %(amount)s THEN 1 ELSE 0 END
+ 1) AS rank ,
'Journal Entry' AS doctype,
filter_by_date = je.cheque_date.between(from_reference_date, to_reference_date)
query = (
frappe.qb.from_(jea)
.join(je)
.on(jea.parent == je.name)
.select(
(ref_rank + amount_rank + 1).as_("rank"),
ConstantColumn("Journal Entry").as_("doctype"),
je.name,
jea.{cr_or_dr}_in_account_currency AS paid_amount,
je.cheque_no AS reference_no,
je.cheque_date AS reference_date,
je.pay_to_recd_from AS party,
getattr(jea, amount_field).as_("paid_amount"),
je.cheque_no.as_("reference_no"),
je.cheque_date.as_("reference_date"),
je.pay_to_recd_from.as_("party"),
jea.party_type,
je.posting_date,
jea.account_currency AS currency
FROM
`tabJournal Entry Account` AS jea
JOIN
`tabJournal Entry` AS je
ON
jea.parent = je.name
WHERE
je.docstatus = 1
AND je.voucher_type NOT IN ('Opening Entry')
AND (je.clearance_date IS NULL OR je.clearance_date='0000-00-00')
AND jea.account = %(bank_account)s
AND jea.{cr_or_dr}_in_account_currency {'= %(amount)s' if exact_match else '> 0.0'}
AND je.docstatus = 1
{filter_by_date}
{filter_by_reference_no}
order by {order_by}
"""
jea.account_currency.as_("currency"),
)
.where(je.docstatus == 1)
.where(je.voucher_type != "Opening Entry")
.where(je.clearance_date.isnull())
.where(jea.account == Parameter("%(bank_account)s"))
.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)
)
if frappe.flags.auto_reconcile_vouchers == True:
query = query.where(ref_condition)
return str(query)
def get_si_matching_query(exact_match):
def get_si_matching_query(exact_match, currency):
# get matching sales invoice query
return f"""
SELECT
( CASE WHEN si.customer = %(party)s THEN 1 ELSE 0 END
+ CASE WHEN sip.amount = %(amount)s THEN 1 ELSE 0 END
+ 1 ) AS rank,
'Sales Invoice' as doctype,
si = frappe.qb.DocType("Sales Invoice")
sip = frappe.qb.DocType("Sales Invoice Payment")
amount_equality = sip.amount == Parameter("%(amount)s")
amount_rank = frappe.qb.terms.Case().when(amount_equality, 1).else_(0)
amount_condition = amount_equality if exact_match else sip.amount > 0.0
party_condition = si.customer == Parameter("%(party)s")
party_rank = frappe.qb.terms.Case().when(party_condition, 1).else_(0)
query = (
frappe.qb.from_(sip)
.join(si)
.on(sip.parent == si.name)
.select(
(party_rank + amount_rank + 1).as_("rank"),
ConstantColumn("Sales Invoice").as_("doctype"),
si.name,
sip.amount as paid_amount,
'' as reference_no,
'' as reference_date,
si.customer as party,
'Customer' as party_type,
sip.amount.as_("paid_amount"),
ConstantColumn("").as_("reference_no"),
ConstantColumn("").as_("reference_date"),
si.customer.as_("party"),
ConstantColumn("Customer").as_("party_type"),
si.posting_date,
si.currency
si.currency,
)
.where(si.docstatus == 1)
.where(sip.clearance_date.isnull())
.where(sip.account == Parameter("%(bank_account)s"))
.where(amount_condition)
.where(si.currency == currency)
)
FROM
`tabSales Invoice Payment` as sip
JOIN
`tabSales Invoice` as si
ON
sip.parent = si.name
WHERE
si.docstatus = 1
AND (sip.clearance_date is null or sip.clearance_date='0000-00-00')
AND sip.account = %(bank_account)s
AND sip.amount {'= %(amount)s' if exact_match else '> 0.0'}
"""
return str(query)
def get_pi_matching_query(exact_match):
def get_pi_matching_query(exact_match, currency):
# get matching purchase invoice query when they are also used as payment entries (is_paid)
return f"""
SELECT
( CASE WHEN supplier = %(party)s THEN 1 ELSE 0 END
+ CASE WHEN paid_amount = %(amount)s THEN 1 ELSE 0 END
+ 1 ) AS rank,
'Purchase Invoice' as doctype,
name,
paid_amount,
'' as reference_no,
'' as reference_date,
supplier as party,
'Supplier' as party_type,
posting_date,
currency
FROM
`tabPurchase Invoice`
WHERE
docstatus = 1
AND is_paid = 1
AND ifnull(clearance_date, '') = ""
AND cash_bank_account = %(bank_account)s
AND paid_amount {'= %(amount)s' if exact_match else '> 0.0'}
"""
purchase_invoice = frappe.qb.DocType("Purchase Invoice")
amount_equality = purchase_invoice.paid_amount == Parameter("%(amount)s")
amount_rank = frappe.qb.terms.Case().when(amount_equality, 1).else_(0)
amount_condition = amount_equality if exact_match else purchase_invoice.paid_amount > 0.0
party_condition = purchase_invoice.supplier == Parameter("%(party)s")
party_rank = frappe.qb.terms.Case().when(party_condition, 1).else_(0)
query = (
frappe.qb.from_(purchase_invoice)
.select(
(party_rank + amount_rank + 1).as_("rank"),
ConstantColumn("Purchase Invoice").as_("doctype"),
purchase_invoice.name,
purchase_invoice.paid_amount,
ConstantColumn("").as_("reference_no"),
ConstantColumn("").as_("reference_date"),
purchase_invoice.supplier.as_("party"),
ConstantColumn("Supplier").as_("party_type"),
purchase_invoice.posting_date,
purchase_invoice.currency,
)
.where(purchase_invoice.docstatus == 1)
.where(purchase_invoice.is_paid == 1)
.where(purchase_invoice.clearance_date.isnull())
.where(purchase_invoice.cash_bank_account == Parameter("%(bank_account)s"))
.where(amount_condition)
.where(purchase_invoice.currency == currency)
)
return str(query)

View File

@@ -1,9 +1,100 @@
# Copyright (c) 2020, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt
# import frappe
import unittest
import frappe
from frappe import qb
from frappe.tests.utils import FrappeTestCase, change_settings
from frappe.utils import add_days, flt, getdate, today
class TestBankReconciliationTool(unittest.TestCase):
pass
from erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool import (
auto_reconcile_vouchers,
get_bank_transactions,
)
from erpnext.accounts.doctype.payment_entry.test_payment_entry import create_payment_entry
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
class TestBankReconciliationTool(AccountsTestMixin, FrappeTestCase):
def setUp(self):
self.create_company()
self.create_customer()
self.clear_old_entries()
bank_dt = qb.DocType("Bank")
q = qb.from_(bank_dt).delete().where(bank_dt.name == "HDFC").run()
self.create_bank_account()
def tearDown(self):
frappe.db.rollback()
def create_bank_account(self):
bank = frappe.get_doc(
{
"doctype": "Bank",
"bank_name": "HDFC",
}
).save()
self.bank_account = (
frappe.get_doc(
{
"doctype": "Bank Account",
"account_name": "HDFC _current_",
"bank": bank,
"is_company_account": True,
"account": self.bank, # account from Chart of Accounts
}
)
.insert()
.name
)
def test_auto_reconcile(self):
# make payment
from_date = add_days(today(), -1)
to_date = today()
payment = create_payment_entry(
company=self.company,
posting_date=from_date,
payment_type="Receive",
party_type="Customer",
party=self.customer,
paid_from=self.debit_to,
paid_to=self.bank,
paid_amount=100,
).save()
payment.reference_no = "123"
payment = payment.save().submit()
# make bank transaction
bank_transaction = (
frappe.get_doc(
{
"doctype": "Bank Transaction",
"date": to_date,
"deposit": 100,
"bank_account": self.bank_account,
"reference_number": "123",
}
)
.save()
.submit()
)
# assert API output pre reconciliation
transactions = get_bank_transactions(self.bank_account, from_date, to_date)
self.assertEqual(len(transactions), 1)
self.assertEqual(transactions[0].name, bank_transaction.name)
# auto reconcile
auto_reconcile_vouchers(
bank_account=self.bank_account,
from_date=from_date,
to_date=to_date,
filter_by_reference_date=False,
)
# assert API output post reconciliation
transactions = get_bank_transactions(self.bank_account, from_date, to_date)
self.assertEqual(len(transactions), 0)

View File

@@ -2,6 +2,16 @@
// For license information, please see license.txt
frappe.ui.form.on("Bank Statement Import", {
onload(frm) {
frm.set_query("bank_account", function (doc) {
return {
filters: {
company: doc.company,
},
};
});
},
setup(frm) {
frappe.realtime.on("data_import_refresh", ({ data_import }) => {
frm.import_in_progress = false;
@@ -352,10 +362,11 @@ frappe.ui.form.on("Bank Statement Import", {
export_errored_rows(frm) {
open_url_post(
"/api/method/frappe.core.doctype.data_import.data_import.download_errored_template",
"/api/method/erpnext.accounts.doctype.bank_statement_import.bank_statement_import.download_errored_template",
{
data_import_name: frm.doc.name,
}
},
true
);
},

View File

@@ -20,6 +20,30 @@ INVALID_VALUES = ("", None)
class BankStatementImport(DataImport):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
bank: DF.Link | None
bank_account: DF.Link
company: DF.Link
google_sheets_url: DF.Data | None
import_file: DF.Attach | None
import_type: DF.Literal["", "Insert New Records", "Update Existing Records"]
mute_emails: DF.Check
reference_doctype: DF.Link
show_failed_logs: DF.Check
statement_import_log: DF.Code | None
status: DF.Literal["Pending", "Success", "Partial Success", "Error"]
submit_after_import: DF.Check
template_options: DF.Code | None
template_warnings: DF.Code | None
# end: auto-generated types
def __init__(self, *args, **kwargs):
super(BankStatementImport, self).__init__(*args, **kwargs)

View File

@@ -0,0 +1,183 @@
from typing import Tuple, Union
import frappe
from frappe.utils import flt
from rapidfuzz import fuzz, process
class AutoMatchParty:
"""
Matches by Account/IBAN and then by Party Name/Description sequentially.
Returns when a result is obtained.
Result (if present) is of the form: (Party Type, Party,)
"""
def __init__(self, **kwargs) -> None:
self.__dict__.update(kwargs)
def get(self, key):
return self.__dict__.get(key, None)
def match(self) -> Union[Tuple, None]:
result = None
result = AutoMatchbyAccountIBAN(
bank_party_account_number=self.bank_party_account_number,
bank_party_iban=self.bank_party_iban,
deposit=self.deposit,
).match()
fuzzy_matching_enabled = frappe.db.get_single_value("Accounts Settings", "enable_fuzzy_matching")
if not result and fuzzy_matching_enabled:
result = AutoMatchbyPartyNameDescription(
bank_party_name=self.bank_party_name, description=self.description, deposit=self.deposit
).match()
return result
class AutoMatchbyAccountIBAN:
def __init__(self, **kwargs) -> None:
self.__dict__.update(kwargs)
def get(self, key):
return self.__dict__.get(key, None)
def match(self):
if not (self.bank_party_account_number or self.bank_party_iban):
return None
result = self.match_account_in_party()
return result
def match_account_in_party(self) -> Union[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()
for party in parties:
party_result = frappe.db.get_all(
"Bank Account", or_filters=or_filters, pluck="party", limit_page_length=1
)
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")
party_result = frappe.db.get_all(
party, or_filters=or_filters, pluck="name", limit_page_length=1
)
if party_result:
result = (
party,
party_result[0],
)
break
return result
def get_or_filters(self) -> dict:
or_filters = {}
if self.bank_party_account_number:
or_filters["bank_account_no"] = self.bank_party_account_number
if self.bank_party_iban:
or_filters["iban"] = self.bank_party_iban
return or_filters
class AutoMatchbyPartyNameDescription:
def __init__(self, **kwargs) -> None:
self.__dict__.update(kwargs)
def get(self, key):
return self.__dict__.get(key, None)
def match(self) -> Union[Tuple, None]:
# fuzzy search by customer/supplier & employee
if not (self.bank_party_name or self.description):
return None
result = self.match_party_name_desc_in_party()
return result
def match_party_name_desc_in_party(self) -> Union[Tuple, None]:
"""Fuzzy search party name and/or description against parties in the system"""
result = None
parties = get_parties_in_order(self.deposit)
for party in parties:
filters = {"status": "Active"} if party == "Employee" else {"disabled": 0}
field = 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):
continue
result, skip = self.fuzzy_search_and_return_result(party, names, field)
if result or skip:
break
if result or skip:
# Skip If: It was hard to distinguish between close matches and so match is None
# OR if the right match was found
break
return result
def fuzzy_search_and_return_result(self, party, names, field) -> Union[Tuple, None]:
skip = False
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
def process_fuzzy_result(self, result: Union[list, None]):
"""
If there are multiple valid close matches return None as result may be faulty.
Return the result only if one accurate match stands out.
Returns: Result, Skip (whether or not to discontinue matching)
"""
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_ID] if first_result[SCORE] > CUTOFF else None), True
second_result = result[1]
if first_result[SCORE] > CUTOFF:
# 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_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

View File

@@ -13,10 +13,11 @@ frappe.ui.form.on("Bank Transaction", {
});
},
refresh(frm) {
frm.add_custom_button(__('Unreconcile Transaction'), () => {
frm.call('remove_payment_entries')
.then( () => frm.refresh() );
});
if (!frm.is_dirty() && frm.doc.payment_entries.length > 0) {
frm.add_custom_button(__("Unreconcile Transaction"), () => {
frm.call("remove_payment_entries").then(() => frm.refresh());
});
}
},
bank_account: function (frm) {
set_bank_statement_filter(frm);

View File

@@ -13,6 +13,7 @@
"status",
"bank_account",
"company",
"amended_from",
"section_break_4",
"deposit",
"withdrawal",
@@ -25,15 +26,19 @@
"transaction_id",
"transaction_type",
"section_break_14",
"column_break_oufv",
"payment_entries",
"section_break_18",
"allocated_amount",
"amended_from",
"column_break_17",
"unallocated_amount",
"party_section",
"party_type",
"party"
"party",
"column_break_3czf",
"bank_party_name",
"bank_party_account_number",
"bank_party_iban"
],
"fields": [
{
@@ -63,7 +68,7 @@
"fieldtype": "Select",
"in_standard_filter": 1,
"label": "Status",
"options": "\nPending\nSettled\nUnreconciled\nReconciled"
"options": "\nPending\nSettled\nUnreconciled\nReconciled\nCancelled"
},
{
"fieldname": "bank_account",
@@ -134,10 +139,12 @@
"fieldtype": "Section Break"
},
{
"allow_on_submit": 1,
"fieldname": "allocated_amount",
"fieldtype": "Currency",
"label": "Allocated Amount",
"options": "currency"
"options": "currency",
"read_only": 1
},
{
"fieldname": "amended_from",
@@ -153,10 +160,12 @@
"fieldtype": "Column Break"
},
{
"allow_on_submit": 1,
"fieldname": "unallocated_amount",
"fieldtype": "Currency",
"label": "Unallocated Amount",
"options": "currency"
"options": "currency",
"read_only": 1
},
{
"fieldname": "party_section",
@@ -202,11 +211,34 @@
"fieldtype": "Data",
"label": "Transaction Type",
"length": 50
},
{
"fieldname": "column_break_3czf",
"fieldtype": "Column Break"
},
{
"fieldname": "bank_party_name",
"fieldtype": "Data",
"label": "Party Name/Account Holder (Bank Statement)"
},
{
"fieldname": "bank_party_iban",
"fieldtype": "Data",
"label": "Party IBAN (Bank Statement)"
},
{
"fieldname": "bank_party_account_number",
"fieldtype": "Data",
"label": "Party Account No. (Bank Statement)"
},
{
"fieldname": "column_break_oufv",
"fieldtype": "Column Break"
}
],
"is_submittable": 1,
"links": [],
"modified": "2022-05-29 18:36:50.475964",
"modified": "2023-11-18 18:32:47.203694",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Bank Transaction",
@@ -260,4 +292,4 @@
"states": [],
"title_field": "bank_account",
"track_changes": 1
}
}

View File

@@ -2,75 +2,117 @@
# For license information, please see license.txt
import frappe
from frappe import _
from frappe.model.document import Document
from frappe.utils import flt
from erpnext.controllers.status_updater import StatusUpdater
class BankTransaction(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
class BankTransaction(StatusUpdater):
def after_insert(self):
self.unallocated_amount = abs(flt(self.withdrawal) - flt(self.deposit))
from typing import TYPE_CHECKING
def on_submit(self):
self.clear_linked_payment_entries()
if TYPE_CHECKING:
from frappe.types import DF
from erpnext.accounts.doctype.bank_transaction_payments.bank_transaction_payments import (
BankTransactionPayments,
)
allocated_amount: DF.Currency
amended_from: DF.Link | None
bank_account: DF.Link | None
bank_party_account_number: DF.Data | None
bank_party_iban: DF.Data | None
bank_party_name: DF.Data | None
company: DF.Link | None
currency: DF.Link | None
date: DF.Date | None
deposit: DF.Currency
description: DF.SmallText | None
naming_series: DF.Literal["ACC-BTN-.YYYY.-"]
party: DF.DynamicLink | None
party_type: DF.Link | None
payment_entries: DF.Table[BankTransactionPayments]
reference_number: DF.Data | None
status: DF.Literal["", "Pending", "Settled", "Unreconciled", "Reconciled", "Cancelled"]
transaction_id: DF.Data | None
transaction_type: DF.Data | None
unallocated_amount: DF.Currency
withdrawal: DF.Currency
# end: auto-generated types
def before_validate(self):
self.update_allocated_amount()
def validate(self):
self.validate_duplicate_references()
def set_status(self):
if self.docstatus == 2:
self.db_set("status", "Cancelled")
elif self.docstatus == 1:
if self.unallocated_amount > 0:
self.db_set("status", "Unreconciled")
elif self.unallocated_amount <= 0:
self.db_set("status", "Reconciled")
def validate_duplicate_references(self):
"""Make sure the same voucher is not allocated twice within the same Bank Transaction"""
if not self.payment_entries:
return
pe = []
for row in self.payment_entries:
reference = (row.payment_document, row.payment_entry)
if reference in pe:
frappe.throw(
_("{0} {1} is allocated twice in this Bank Transaction").format(
row.payment_document, row.payment_entry
)
)
pe.append(reference)
def update_allocated_amount(self):
self.allocated_amount = (
sum(p.allocated_amount for p in self.payment_entries) if self.payment_entries else 0.0
)
self.unallocated_amount = abs(flt(self.withdrawal) - flt(self.deposit)) - self.allocated_amount
def before_submit(self):
self.allocate_payment_entries()
self.set_status()
_saving_flag = False
if frappe.db.get_single_value("Accounts Settings", "enable_party_matching"):
self.auto_set_party()
# nosemgrep: frappe-semgrep-rules.rules.frappe-modifying-but-not-comitting
def on_update_after_submit(self):
"Run on save(). Avoid recursion caused by multiple saves"
if not self._saving_flag:
self._saving_flag = True
self.clear_linked_payment_entries()
self.update_allocations()
self._saving_flag = False
def before_update_after_submit(self):
self.validate_duplicate_references()
self.allocate_payment_entries()
self.update_allocated_amount()
self.set_status()
def on_cancel(self):
self.clear_linked_payment_entries(for_cancel=True)
self.set_status(update=True)
for payment_entry in self.payment_entries:
self.clear_linked_payment_entry(payment_entry, for_cancel=True)
def update_allocations(self):
"The doctype does not allow modifications after submission, so write to the db direct"
if self.payment_entries:
allocated_amount = sum(p.allocated_amount for p in self.payment_entries)
else:
allocated_amount = 0.0
amount = abs(flt(self.withdrawal) - flt(self.deposit))
self.db_set("allocated_amount", flt(allocated_amount))
self.db_set("unallocated_amount", amount - flt(allocated_amount))
self.reload()
self.set_status(update=True)
self.set_status()
def add_payment_entries(self, vouchers):
"Add the vouchers with zero allocation. Save() will perform the allocations and clearance"
if 0.0 >= self.unallocated_amount:
frappe.throw(frappe._("Bank Transaction {0} is already fully reconciled").format(self.name))
frappe.throw(_("Bank Transaction {0} is already fully reconciled").format(self.name))
added = False
for voucher in vouchers:
# Can't add same voucher twice
found = False
for pe in self.payment_entries:
if (
pe.payment_document == voucher["payment_doctype"]
and pe.payment_entry == voucher["payment_name"]
):
found = True
if not found:
pe = {
self.append(
"payment_entries",
{
"payment_document": voucher["payment_doctype"],
"payment_entry": voucher["payment_name"],
"allocated_amount": 0.0, # Temporary
}
child = self.append("payment_entries", pe)
added = True
# runs on_update_after_submit
if added:
self.save()
},
)
def allocate_payment_entries(self):
"""Refactored from bank reconciliation tool.
@@ -86,8 +128,8 @@ class BankTransaction(StatusUpdater):
- 0 > a: Error: already over-allocated
- clear means: set the latest transaction date as clearance date
"""
gl_bank_account = frappe.db.get_value("Bank Account", self.bank_account, "account")
remaining_amount = self.unallocated_amount
to_remove = []
for payment_entry in self.payment_entries:
if payment_entry.allocated_amount == 0.0:
unallocated_amount, should_clear, latest_transaction = get_clearance_details(
@@ -97,55 +139,64 @@ class BankTransaction(StatusUpdater):
if 0.0 == unallocated_amount:
if should_clear:
latest_transaction.clear_linked_payment_entry(payment_entry)
self.db_delete_payment_entry(payment_entry)
to_remove.append(payment_entry)
elif remaining_amount <= 0.0:
self.db_delete_payment_entry(payment_entry)
to_remove.append(payment_entry)
elif 0.0 < unallocated_amount and unallocated_amount <= remaining_amount:
payment_entry.db_set("allocated_amount", unallocated_amount)
elif 0.0 < unallocated_amount <= remaining_amount:
payment_entry.allocated_amount = unallocated_amount
remaining_amount -= unallocated_amount
if should_clear:
latest_transaction.clear_linked_payment_entry(payment_entry)
elif 0.0 < unallocated_amount and unallocated_amount > remaining_amount:
payment_entry.db_set("allocated_amount", remaining_amount)
elif 0.0 < unallocated_amount:
payment_entry.allocated_amount = remaining_amount
remaining_amount = 0.0
elif 0.0 > unallocated_amount:
self.db_delete_payment_entry(payment_entry)
frappe.throw(frappe._("Voucher {0} is over-allocated by {1}").format(unallocated_amount))
frappe.throw(_("Voucher {0} is over-allocated by {1}").format(unallocated_amount))
self.reload()
def db_delete_payment_entry(self, payment_entry):
frappe.db.delete("Bank Transaction Payments", {"name": payment_entry.name})
for payment_entry in to_remove:
self.remove(to_remove)
@frappe.whitelist()
def remove_payment_entries(self):
for payment_entry in self.payment_entries:
self.remove_payment_entry(payment_entry)
# runs on_update_after_submit
self.save()
self.save() # runs before_update_after_submit
def remove_payment_entry(self, payment_entry):
"Clear payment entry and clearance"
self.clear_linked_payment_entry(payment_entry, for_cancel=True)
self.remove(payment_entry)
def clear_linked_payment_entries(self, for_cancel=False):
if for_cancel:
for payment_entry in self.payment_entries:
self.clear_linked_payment_entry(payment_entry, for_cancel)
else:
self.allocate_payment_entries()
def clear_linked_payment_entry(self, payment_entry, for_cancel=False):
clearance_date = None if for_cancel else self.date
set_voucher_clearance(
payment_entry.payment_document, payment_entry.payment_entry, clearance_date, self
)
def auto_set_party(self):
from erpnext.accounts.doctype.bank_transaction.auto_match_party import AutoMatchParty
if self.party_type and self.party:
return
result = AutoMatchParty(
bank_party_account_number=self.bank_party_account_number,
bank_party_iban=self.bank_party_iban,
bank_party_name=self.bank_party_name,
description=self.description,
deposit=self.deposit,
).match()
if not result:
return
self.party_type, self.party = result
@frappe.whitelist()
def get_doctypes_for_bank_reconciliation():
@@ -176,9 +227,7 @@ def get_clearance_details(transaction, payment_entry):
if gle["gl_account"] == gl_bank_account:
if gle["amount"] <= 0.0:
frappe.throw(
frappe._("Voucher {0} value is broken: {1}").format(
payment_entry.payment_entry, gle["amount"]
)
_("Voucher {0} value is broken: {1}").format(payment_entry.payment_entry, gle["amount"])
)
unmatched_gles -= 1
@@ -199,7 +248,7 @@ def get_clearance_details(transaction, payment_entry):
def get_related_bank_gl_entries(doctype, docname):
# nosemgrep: frappe-semgrep-rules.rules.frappe-using-db-sql
result = frappe.db.sql(
return frappe.db.sql(
"""
SELECT
ABS(gle.credit_in_account_currency - gle.debit_in_account_currency) AS amount,
@@ -217,7 +266,6 @@ def get_related_bank_gl_entries(doctype, docname):
dict(doctype=doctype, docname=docname),
as_dict=True,
)
return result
def get_total_allocated_amount(doctype, docname):
@@ -320,29 +368,24 @@ def get_paid_amount(payment_entry, currency, gl_bank_account):
def set_voucher_clearance(doctype, docname, clearance_date, self):
if doctype in [
"Payment Entry",
"Journal Entry",
"Purchase Invoice",
"Expense Claim",
"Loan Repayment",
"Loan Disbursement",
]:
if doctype in get_doctypes_for_bank_reconciliation():
if (
doctype == "Payment Entry"
and frappe.db.get_value("Payment Entry", docname, "payment_type") == "Internal Transfer"
and len(get_reconciled_bank_transactions(doctype, docname)) < 2
):
return
frappe.db.set_value(doctype, docname, "clearance_date", clearance_date)
elif doctype == "Sales Invoice":
frappe.db.set_value(
"Sales Invoice Payment",
dict(parenttype=doctype, parent=docname),
"clearance_date",
clearance_date,
)
if doctype == "Sales Invoice":
frappe.db.set_value(
"Sales Invoice Payment",
dict(parenttype=doctype, parent=docname),
"clearance_date",
clearance_date,
)
return
frappe.db.set_value(doctype, docname, "clearance_date", clearance_date)
elif doctype == "Bank Transaction":
# For when a second bank transaction has fixed another, e.g. refund
@@ -350,6 +393,7 @@ def set_voucher_clearance(doctype, docname, clearance_date, self):
if clearance_date:
vouchers = [{"payment_doctype": "Bank Transaction", "payment_name": self.name}]
bt.add_payment_entries(vouchers)
bt.save()
else:
for pe in bt.payment_entries:
if pe.payment_document == self.doctype and pe.payment_entry == self.name:

View File

@@ -0,0 +1,151 @@
# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and Contributors
# License: GNU General Public License v3. See license.txt
import frappe
from frappe.tests.utils import FrappeTestCase
from frappe.utils import nowdate
from erpnext.accounts.doctype.bank_transaction.test_bank_transaction import create_bank_account
class TestAutoMatchParty(FrappeTestCase):
@classmethod
def setUpClass(cls):
create_bank_account()
frappe.db.set_single_value("Accounts Settings", "enable_party_matching", 1)
frappe.db.set_single_value("Accounts Settings", "enable_fuzzy_matching", 1)
return super().setUpClass()
@classmethod
def tearDownClass(cls):
frappe.db.set_single_value("Accounts Settings", "enable_party_matching", 0)
frappe.db.set_single_value("Accounts Settings", "enable_fuzzy_matching", 0)
def test_match_by_account_number(self):
create_supplier_for_match(account_no="000000003716541159")
doc = create_bank_transaction(
withdrawal=1200,
transaction_id="562213b0ca1bf838dab8f2c6a39bbc3b",
account_no="000000003716541159",
iban="DE02000000003716541159",
)
self.assertEqual(doc.party_type, "Supplier")
self.assertEqual(doc.party, "John Doe & Co.")
def test_match_by_iban(self):
create_supplier_for_match(iban="DE02000000003716541159")
doc = create_bank_transaction(
withdrawal=1200,
transaction_id="c5455a224602afaa51592a9d9250600d",
account_no="000000003716541159",
iban="DE02000000003716541159",
)
self.assertEqual(doc.party_type, "Supplier")
self.assertEqual(doc.party, "John Doe & Co.")
def test_match_by_party_name(self):
create_supplier_for_match(supplier_name="Jackson Ella W.")
doc = create_bank_transaction(
withdrawal=1200,
transaction_id="1f6f661f347ff7b1ea588665f473adb1",
party_name="Ella Jackson",
iban="DE04000000003716545346",
)
self.assertEqual(doc.party_type, "Supplier")
self.assertEqual(doc.party, "Jackson Ella W.")
def test_match_by_description(self):
create_supplier_for_match(supplier_name="Microsoft")
doc = create_bank_transaction(
description="Auftraggeber: microsoft payments Buchungstext: msft ..e3006b5hdy. ref. j375979555927627/5536",
withdrawal=1200,
transaction_id="8df880a2d09c3bed3fea358ca5168c5a",
party_name="",
)
self.assertEqual(doc.party_type, "Supplier")
self.assertEqual(doc.party, "Microsoft")
def test_skip_match_if_multiple_close_results(self):
create_supplier_for_match(supplier_name="Adithya Medical & General Stores")
create_supplier_for_match(supplier_name="Adithya Medical And General Stores")
doc = create_bank_transaction(
description="Paracetamol Consignment, SINV-0009",
withdrawal=24.85,
transaction_id="3a1da4ee2dc5a980138d56ef3460cbd9",
party_name="Adithya Medical & General",
)
# Mapping is skipped as both Supplier names have the same match score
self.assertEqual(doc.party_type, None)
self.assertEqual(doc.party, None)
def create_supplier_for_match(supplier_name="John Doe & Co.", iban=None, account_no=None):
if frappe.db.exists("Supplier", {"supplier_name": supplier_name}):
# Update related Bank Account details
if not (iban or account_no):
return
frappe.db.set_value(
dt="Bank Account",
dn={"party": supplier_name},
field={"iban": iban, "bank_account_no": account_no},
)
return
# Create Supplier and Bank Account for the same
supplier = frappe.new_doc("Supplier")
supplier.supplier_name = supplier_name
supplier.supplier_group = "Services"
supplier.supplier_type = "Company"
supplier.insert()
if not frappe.db.exists("Bank", "TestBank"):
bank = frappe.new_doc("Bank")
bank.bank_name = "TestBank"
bank.insert(ignore_if_duplicate=True)
if not frappe.db.exists("Bank Account", supplier.name + " - " + "TestBank"):
bank_account = frappe.new_doc("Bank Account")
bank_account.account_name = supplier.name
bank_account.bank = "TestBank"
bank_account.iban = iban
bank_account.bank_account_no = account_no
bank_account.party_type = "Supplier"
bank_account.party = supplier.name
bank_account.insert()
def create_bank_transaction(
description=None,
withdrawal=0,
deposit=0,
transaction_id=None,
party_name=None,
account_no=None,
iban=None,
):
doc = frappe.new_doc("Bank Transaction")
doc.update(
{
"doctype": "Bank Transaction",
"description": description or "1512567 BG/000002918 OPSKATTUZWXXX AT776000000098709837 Herr G",
"date": nowdate(),
"withdrawal": withdrawal,
"deposit": deposit,
"currency": "INR",
"bank_account": "Checking Account - Citi Bank",
"transaction_id": transaction_id,
"bank_party_name": party_name,
"bank_party_account_number": account_no,
"bank_party_iban": iban,
}
)
doc.insert()
doc.submit()
doc.reload()
return doc

View File

@@ -16,6 +16,7 @@ from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_paymen
from erpnext.accounts.doctype.pos_profile.test_pos_profile import make_pos_profile
from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
from erpnext.tests.utils import if_lending_app_installed
test_dependencies = ["Item", "Cost Center"]
@@ -23,14 +24,13 @@ test_dependencies = ["Item", "Cost Center"]
class TestBankTransaction(FrappeTestCase):
def setUp(self):
for dt in [
"Loan Repayment",
"Bank Transaction",
"Payment Entry",
"Payment Entry Reference",
"POS Profile",
]:
frappe.db.delete(dt)
clear_loan_transactions()
make_pos_profile()
add_transactions()
add_vouchers()
@@ -47,7 +47,7 @@ class TestBankTransaction(FrappeTestCase):
from_date=bank_transaction.date,
to_date=utils.today(),
)
self.assertTrue(linked_payments[0][6] == "Conrad Electronic")
self.assertTrue(linked_payments[0]["party"] == "Conrad Electronic")
# This test validates a simple reconciliation leading to the clearance of the bank transaction and the payment
def test_reconcile(self):
@@ -93,7 +93,7 @@ class TestBankTransaction(FrappeTestCase):
from_date=bank_transaction.date,
to_date=utils.today(),
)
self.assertTrue(linked_payments[0][3])
self.assertTrue(linked_payments[0]["paid_amount"])
# Check error if already reconciled
def test_already_reconciled(self):
@@ -160,8 +160,9 @@ class TestBankTransaction(FrappeTestCase):
is not None
)
@if_lending_app_installed
def test_matching_loan_repayment(self):
from erpnext.loan_management.doctype.loan.test_loan import create_loan_accounts
from lending.loan_management.doctype.loan.test_loan import create_loan_accounts
create_loan_accounts()
bank_account = frappe.get_doc(
@@ -187,7 +188,12 @@ class TestBankTransaction(FrappeTestCase):
repayment_entry = create_loan_and_repayment()
linked_payments = get_linked_payments(bank_transaction.name, ["loan_repayment", "exact_match"])
self.assertEqual(linked_payments[0][2], repayment_entry.name)
self.assertEqual(linked_payments[0]["name"], repayment_entry.name)
@if_lending_app_installed
def clear_loan_transactions():
frappe.db.delete("Loan Repayment")
def create_bank_account(bank_name="Citi Bank", account_name="_Test Bank - _TC"):
@@ -400,19 +406,22 @@ def add_vouchers():
si.submit()
@if_lending_app_installed
def create_loan_and_repayment():
from erpnext.loan_management.doctype.loan.test_loan import (
from lending.loan_management.doctype.loan.test_loan import (
create_loan,
create_loan_type,
create_loan_product,
create_repayment_entry,
make_loan_disbursement_entry,
)
from erpnext.loan_management.doctype.process_loan_interest_accrual.process_loan_interest_accrual import (
from lending.loan_management.doctype.process_loan_interest_accrual.process_loan_interest_accrual import (
process_loan_interest_accrual_for_term_loans,
)
from erpnext.setup.doctype.employee.test_employee import make_employee
create_loan_type(
create_loan_product(
"Personal Loan",
"Personal Loan",
500000,
8.4,
@@ -433,7 +442,7 @@ def create_loan_and_repayment():
"applicant_type": "Employee",
"company": "_Test Company",
"applicant": applicant,
"loan_type": "Personal Loan",
"loan_product": "Personal Loan",
"loan_amount": 5000,
"repayment_method": "Repay Fixed Amount per Period",
"monthly_repayment_amount": 500,

View File

@@ -6,4 +6,19 @@ from frappe.model.document import Document
class BankTransactionMapping(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
bank_transaction_field: DF.Literal
file_field: DF.Data
parent: DF.Data
parentfield: DF.Data
parenttype: DF.Data
# end: auto-generated types
pass

View File

@@ -6,4 +6,21 @@ from frappe.model.document import Document
class BankTransactionPayments(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
allocated_amount: DF.Currency
clearance_date: DF.Date | None
parent: DF.Data
parentfield: DF.Data
parenttype: DF.Data
payment_document: DF.Link
payment_entry: DF.DynamicLink
# end: auto-generated types
pass

View File

@@ -0,0 +1,100 @@
// Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
frappe.ui.form.on("Bisect Accounting Statements", {
onload(frm) {
frm.trigger("render_heatmap");
},
refresh(frm) {
frm.add_custom_button(__('Bisect Left'), () => {
frm.trigger("bisect_left");
});
frm.add_custom_button(__('Bisect Right'), () => {
frm.trigger("bisect_right");
});
frm.add_custom_button(__('Up'), () => {
frm.trigger("move_up");
});
frm.add_custom_button(__('Build Tree'), () => {
frm.trigger("build_tree");
});
},
render_heatmap(frm) {
let bisect_heatmap = frm.get_field("bisect_heatmap").$wrapper;
bisect_heatmap.addClass("bisect_heatmap_location");
// milliseconds in a day
let msiad=24*60*60*1000;
let datapoints = {};
let fr_dt = new Date(frm.doc.from_date).getTime();
let to_dt = new Date(frm.doc.to_date).getTime();
let bisect_start = new Date(frm.doc.current_from_date).getTime();
let bisect_end = new Date(frm.doc.current_to_date).getTime();
for(let x=fr_dt; x <= to_dt; x+=msiad){
let epoch_in_seconds = x/1000;
if ((bisect_start <= x) && (x <= bisect_end )) {
datapoints[epoch_in_seconds] = 1.0;
} else {
datapoints[epoch_in_seconds] = 0.0;
}
}
new frappe.Chart(".bisect_heatmap_location", {
type: "heatmap",
data: {
dataPoints: datapoints,
start: new Date(frm.doc.from_date),
end: new Date(frm.doc.to_date),
},
countLabel: 'Bisecting',
discreteDomains: 1,
});
},
bisect_left(frm) {
frm.call({
doc: frm.doc,
method: 'bisect_left',
freeze: true,
freeze_message: __("Bisecting Left ..."),
callback: (r) => {
frm.trigger("render_heatmap");
}
});
},
bisect_right(frm) {
frm.call({
doc: frm.doc,
freeze: true,
freeze_message: __("Bisecting Right ..."),
method: 'bisect_right',
callback: (r) => {
frm.trigger("render_heatmap");
}
});
},
move_up(frm) {
frm.call({
doc: frm.doc,
freeze: true,
freeze_message: __("Moving up in tree ..."),
method: 'move_up',
callback: (r) => {
frm.trigger("render_heatmap");
}
});
},
build_tree(frm) {
frm.call({
doc: frm.doc,
freeze: true,
freeze_message: __("Rebuilding BTree for period ..."),
method: 'build_tree',
callback: (r) => {
frm.trigger("render_heatmap");
}
});
},
});

View File

@@ -0,0 +1,194 @@
{
"actions": [],
"allow_rename": 1,
"creation": "2023-09-15 21:28:28.054773",
"default_view": "List",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"section_break_cvfg",
"company",
"column_break_hcam",
"from_date",
"column_break_qxbi",
"to_date",
"column_break_iwny",
"algorithm",
"section_break_8ph9",
"current_node",
"section_break_ngid",
"bisect_heatmap",
"section_break_hmsy",
"bisecting_from",
"current_from_date",
"column_break_uqyd",
"bisecting_to",
"current_to_date",
"section_break_hbyo",
"heading_cppb",
"p_l_summary",
"column_break_aivo",
"balance_sheet_summary",
"b_s_summary",
"column_break_gvwx",
"difference_heading",
"difference"
],
"fields": [
{
"fieldname": "column_break_qxbi",
"fieldtype": "Column Break"
},
{
"fieldname": "from_date",
"fieldtype": "Datetime",
"label": "From Date"
},
{
"fieldname": "to_date",
"fieldtype": "Datetime",
"label": "To Date"
},
{
"default": "BFS",
"fieldname": "algorithm",
"fieldtype": "Select",
"label": "Algorithm",
"options": "BFS\nDFS"
},
{
"fieldname": "column_break_iwny",
"fieldtype": "Column Break"
},
{
"fieldname": "current_node",
"fieldtype": "Link",
"label": "Current Node",
"options": "Bisect Nodes"
},
{
"fieldname": "section_break_hmsy",
"fieldtype": "Section Break"
},
{
"fieldname": "current_from_date",
"fieldtype": "Datetime",
"read_only": 1
},
{
"fieldname": "current_to_date",
"fieldtype": "Datetime",
"read_only": 1
},
{
"fieldname": "column_break_uqyd",
"fieldtype": "Column Break"
},
{
"fieldname": "section_break_hbyo",
"fieldtype": "Section Break"
},
{
"fieldname": "p_l_summary",
"fieldtype": "Float",
"read_only": 1
},
{
"fieldname": "b_s_summary",
"fieldtype": "Float",
"read_only": 1
},
{
"fieldname": "difference",
"fieldtype": "Float",
"read_only": 1
},
{
"fieldname": "column_break_aivo",
"fieldtype": "Column Break"
},
{
"fieldname": "column_break_gvwx",
"fieldtype": "Column Break"
},
{
"fieldname": "company",
"fieldtype": "Link",
"label": "Company",
"options": "Company"
},
{
"fieldname": "column_break_hcam",
"fieldtype": "Column Break"
},
{
"fieldname": "section_break_ngid",
"fieldtype": "Section Break"
},
{
"fieldname": "section_break_8ph9",
"fieldtype": "Section Break",
"hidden": 1
},
{
"fieldname": "bisect_heatmap",
"fieldtype": "HTML",
"label": "Heatmap"
},
{
"fieldname": "heading_cppb",
"fieldtype": "Heading",
"label": "Profit and Loss Summary"
},
{
"fieldname": "balance_sheet_summary",
"fieldtype": "Heading",
"label": "Balance Sheet Summary"
},
{
"fieldname": "difference_heading",
"fieldtype": "Heading",
"label": "Difference"
},
{
"fieldname": "bisecting_from",
"fieldtype": "Heading",
"label": "Bisecting From"
},
{
"fieldname": "bisecting_to",
"fieldtype": "Heading",
"label": "Bisecting To"
},
{
"fieldname": "section_break_cvfg",
"fieldtype": "Section Break"
}
],
"hide_toolbar": 1,
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
"modified": "2023-12-01 16:49:54.073890",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Bisect Accounting Statements",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"print": 1,
"read": 1,
"role": "Administrator",
"share": 1,
"write": 1
}
],
"read_only": 1,
"sort_field": "modified",
"sort_order": "DESC",
"states": []
}

View File

@@ -0,0 +1,226 @@
# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
# For license information, please see license.txt
import datetime
from collections import deque
from math import floor
import frappe
from dateutil.relativedelta import relativedelta
from frappe import _
from frappe.model.document import Document
from frappe.utils import getdate
from frappe.utils.data import guess_date_format
class BisectAccountingStatements(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
algorithm: DF.Literal["BFS", "DFS"]
b_s_summary: DF.Float
company: DF.Link | None
current_from_date: DF.Datetime | None
current_node: DF.Link | None
current_to_date: DF.Datetime | None
difference: DF.Float
from_date: DF.Datetime | None
p_l_summary: DF.Float
to_date: DF.Datetime | None
# end: auto-generated types
def validate(self):
self.validate_dates()
def validate_dates(self):
if getdate(self.from_date) > getdate(self.to_date):
frappe.throw(
_("From Date: {0} cannot be greater than To date: {1}").format(
frappe.bold(self.from_date), frappe.bold(self.to_date)
)
)
def bfs(self, from_date: datetime, to_date: datetime):
# Make Root node
node = frappe.new_doc("Bisect Nodes")
node.root = None
node.period_from_date = from_date
node.period_to_date = to_date
node.insert()
period_queue = deque([node])
while period_queue:
cur_node = period_queue.popleft()
delta = cur_node.period_to_date - cur_node.period_from_date
if delta.days == 0:
continue
else:
cur_floor = floor(delta.days / 2)
next_to_date = cur_node.period_from_date + relativedelta(days=+cur_floor)
left_node = frappe.new_doc("Bisect Nodes")
left_node.period_from_date = cur_node.period_from_date
left_node.period_to_date = next_to_date
left_node.root = cur_node.name
left_node.generated = False
left_node.insert()
cur_node.left_child = left_node.name
period_queue.append(left_node)
next_from_date = cur_node.period_from_date + relativedelta(days=+(cur_floor + 1))
right_node = frappe.new_doc("Bisect Nodes")
right_node.period_from_date = next_from_date
right_node.period_to_date = cur_node.period_to_date
right_node.root = cur_node.name
right_node.generated = False
right_node.insert()
cur_node.right_child = right_node.name
period_queue.append(right_node)
cur_node.save()
def dfs(self, from_date: datetime, to_date: datetime):
# Make Root node
node = frappe.new_doc("Bisect Nodes")
node.root = None
node.period_from_date = from_date
node.period_to_date = to_date
node.insert()
period_stack = [node]
while period_stack:
cur_node = period_stack.pop()
delta = cur_node.period_to_date - cur_node.period_from_date
if delta.days == 0:
continue
else:
cur_floor = floor(delta.days / 2)
next_to_date = cur_node.period_from_date + relativedelta(days=+cur_floor)
left_node = frappe.new_doc("Bisect Nodes")
left_node.period_from_date = cur_node.period_from_date
left_node.period_to_date = next_to_date
left_node.root = cur_node.name
left_node.generated = False
left_node.insert()
cur_node.left_child = left_node.name
period_stack.append(left_node)
next_from_date = cur_node.period_from_date + relativedelta(days=+(cur_floor + 1))
right_node = frappe.new_doc("Bisect Nodes")
right_node.period_from_date = next_from_date
right_node.period_to_date = cur_node.period_to_date
right_node.root = cur_node.name
right_node.generated = False
right_node.insert()
cur_node.right_child = right_node.name
period_stack.append(right_node)
cur_node.save()
@frappe.whitelist()
def build_tree(self):
frappe.db.delete("Bisect Nodes")
# Convert str to datetime format
dt_format = guess_date_format(self.from_date)
from_date = datetime.datetime.strptime(self.from_date, dt_format)
to_date = datetime.datetime.strptime(self.to_date, dt_format)
if self.algorithm == "BFS":
self.bfs(from_date, to_date)
if self.algorithm == "DFS":
self.dfs(from_date, to_date)
# set root as current node
root = frappe.db.get_all("Bisect Nodes", filters={"root": ["is", "not set"]})[0]
self.get_report_summary()
self.current_node = root.name
self.current_from_date = self.from_date
self.current_to_date = self.to_date
self.save()
def get_report_summary(self):
filters = {
"company": self.company,
"filter_based_on": "Date Range",
"period_start_date": self.current_from_date,
"period_end_date": self.current_to_date,
"periodicity": "Yearly",
}
pl_summary = frappe.get_doc("Report", "Profit and Loss Statement")
self.p_l_summary = pl_summary.execute_script_report(filters=filters)[5]
bs_summary = frappe.get_doc("Report", "Balance Sheet")
self.b_s_summary = bs_summary.execute_script_report(filters=filters)[5]
self.difference = abs(self.p_l_summary - self.b_s_summary)
def update_node(self):
current_node = frappe.get_doc("Bisect Nodes", self.current_node)
current_node.balance_sheet_summary = self.b_s_summary
current_node.profit_loss_summary = self.p_l_summary
current_node.difference = self.difference
current_node.generated = True
current_node.save()
def current_node_has_summary_info(self):
"Assertion method"
return frappe.db.get_value("Bisect Nodes", self.current_node, "generated")
def fetch_summary_info_from_current_node(self):
current_node = frappe.get_doc("Bisect Nodes", self.current_node)
self.p_l_summary = current_node.balance_sheet_summary
self.b_s_summary = current_node.profit_loss_summary
self.difference = abs(self.p_l_summary - self.b_s_summary)
def fetch_or_calculate(self):
if self.current_node_has_summary_info():
self.fetch_summary_info_from_current_node()
else:
self.get_report_summary()
self.update_node()
@frappe.whitelist()
def bisect_left(self):
if self.current_node is not None:
cur_node = frappe.get_doc("Bisect Nodes", self.current_node)
if cur_node.left_child is not None:
lft_node = frappe.get_doc("Bisect Nodes", cur_node.left_child)
self.current_node = cur_node.left_child
self.current_from_date = lft_node.period_from_date
self.current_to_date = lft_node.period_to_date
self.fetch_or_calculate()
self.save()
else:
frappe.msgprint(_("No more children on Left"))
@frappe.whitelist()
def bisect_right(self):
if self.current_node is not None:
cur_node = frappe.get_doc("Bisect Nodes", self.current_node)
if cur_node.right_child is not None:
rgt_node = frappe.get_doc("Bisect Nodes", cur_node.right_child)
self.current_node = cur_node.right_child
self.current_from_date = rgt_node.period_from_date
self.current_to_date = rgt_node.period_to_date
self.fetch_or_calculate()
self.save()
else:
frappe.msgprint(_("No more children on Right"))
@frappe.whitelist()
def move_up(self):
if self.current_node is not None:
cur_node = frappe.get_doc("Bisect Nodes", self.current_node)
if cur_node.root is not None:
root = frappe.get_doc("Bisect Nodes", cur_node.root)
self.current_node = cur_node.root
self.current_from_date = root.period_from_date
self.current_to_date = root.period_to_date
self.fetch_or_calculate()
self.save()
else:
frappe.msgprint(_("Reached Root"))

View File

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

View File

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

View File

@@ -0,0 +1,97 @@
{
"actions": [],
"autoname": "autoincrement",
"creation": "2023-09-27 14:56:38.112462",
"default_view": "List",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"root",
"left_child",
"right_child",
"period_from_date",
"period_to_date",
"difference",
"balance_sheet_summary",
"profit_loss_summary",
"generated"
],
"fields": [
{
"fieldname": "root",
"fieldtype": "Link",
"label": "Root",
"options": "Bisect Nodes"
},
{
"fieldname": "left_child",
"fieldtype": "Link",
"label": "Left Child",
"options": "Bisect Nodes"
},
{
"fieldname": "right_child",
"fieldtype": "Link",
"label": "Right Child",
"options": "Bisect Nodes"
},
{
"fieldname": "period_from_date",
"fieldtype": "Datetime",
"label": "Period_from_date"
},
{
"fieldname": "period_to_date",
"fieldtype": "Datetime",
"label": "Period To Date"
},
{
"fieldname": "difference",
"fieldtype": "Float",
"label": "Difference"
},
{
"fieldname": "balance_sheet_summary",
"fieldtype": "Float",
"label": "Balance Sheet Summary"
},
{
"fieldname": "profit_loss_summary",
"fieldtype": "Float",
"label": "Profit and Loss Summary"
},
{
"default": "0",
"fieldname": "generated",
"fieldtype": "Check",
"label": "Generated"
}
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2023-12-01 17:46:12.437996",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Bisect Nodes",
"naming_rule": "Autoincrement",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "Administrator",
"share": 1,
"write": 1
}
],
"read_only": 1,
"sort_field": "modified",
"sort_order": "DESC",
"states": []
}

View File

@@ -0,0 +1,29 @@
# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
# For license information, please see license.txt
# import frappe
from frappe.model.document import Document
class BisectNodes(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
balance_sheet_summary: DF.Float
difference: DF.Float
generated: DF.Check
left_child: DF.Link | None
name: DF.Int | None
period_from_date: DF.Datetime | None
period_to_date: DF.Datetime | None
profit_loss_summary: DF.Float
right_child: DF.Link | None
root: DF.Link | None
# end: auto-generated types
pass

View File

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

View File

@@ -22,6 +22,36 @@ class DuplicateBudgetError(frappe.ValidationError):
class Budget(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
from erpnext.accounts.doctype.budget_account.budget_account import BudgetAccount
accounts: DF.Table[BudgetAccount]
action_if_accumulated_monthly_budget_exceeded: DF.Literal["", "Stop", "Warn", "Ignore"]
action_if_accumulated_monthly_budget_exceeded_on_mr: DF.Literal["", "Stop", "Warn", "Ignore"]
action_if_accumulated_monthly_budget_exceeded_on_po: DF.Literal["", "Stop", "Warn", "Ignore"]
action_if_annual_budget_exceeded: DF.Literal["", "Stop", "Warn", "Ignore"]
action_if_annual_budget_exceeded_on_mr: DF.Literal["", "Stop", "Warn", "Ignore"]
action_if_annual_budget_exceeded_on_po: DF.Literal["", "Stop", "Warn", "Ignore"]
amended_from: DF.Link | None
applicable_on_booking_actual_expenses: DF.Check
applicable_on_material_request: DF.Check
applicable_on_purchase_order: DF.Check
budget_against: DF.Literal["", "Cost Center", "Project"]
company: DF.Link
cost_center: DF.Link | None
fiscal_year: DF.Link
monthly_distribution: DF.Link | None
naming_series: DF.Data | None
project: DF.Link | None
# end: auto-generated types
def validate(self):
if not self.get(frappe.scrub(self.budget_against)):
frappe.throw(_("{0} is mandatory").format(self.budget_against))

View File

@@ -6,4 +6,19 @@ from frappe.model.document import Document
class BudgetAccount(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
account: DF.Link
budget_amount: DF.Currency
parent: DF.Data
parentfield: DF.Data
parenttype: DF.Data
# end: auto-generated types
pass

View File

@@ -6,4 +6,18 @@ from frappe.model.document import Document
class CampaignItem(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
campaign: DF.Link | None
parent: DF.Data
parentfield: DF.Data
parenttype: DF.Data
# end: auto-generated types
pass

View File

@@ -1,457 +1,152 @@
{
"allow_copy": 0,
"allow_events_in_timeline": 0,
"allow_guest_to_view": 0,
"allow_import": 0,
"allow_rename": 0,
"actions": [],
"autoname": "naming_series:",
"beta": 0,
"creation": "2018-06-18 16:51:49.994750",
"custom": 0,
"docstatus": 0,
"doctype": "DocType",
"document_type": "",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"naming_series",
"user",
"date",
"from_time",
"time",
"expense",
"custody",
"returns",
"outstanding_amount",
"payments",
"net_amount",
"amended_from"
],
"fields": [
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"default": "POS-CLO-",
"fieldname": "naming_series",
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 1,
"in_global_search": 1,
"in_list_view": 0,
"in_standard_filter": 1,
"label": "Series",
"length": 0,
"no_copy": 0,
"options": "POS-CLO-",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
"read_only": 1
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "user",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 1,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 1,
"label": "User",
"length": 0,
"no_copy": 0,
"options": "User",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
"reqd": 1
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"default": "Today",
"fieldname": "date",
"fieldtype": "Date",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 1,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 1,
"label": "Date",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
"read_only": 1
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "from_time",
"fieldtype": "Time",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 1,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 1,
"label": "From Time",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
"reqd": 1
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"default": "",
"fieldname": "time",
"fieldtype": "Time",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 1,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 1,
"label": "To Time",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
"reqd": 1
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"default": "0.00",
"fieldname": "expense",
"fieldtype": "Float",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 1,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Expense",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
"label": "Expense"
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"default": "0.00",
"fieldname": "custody",
"fieldtype": "Float",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 1,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Custody",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
"label": "Custody"
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"default": "0.00",
"fieldname": "returns",
"fieldtype": "Float",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 1,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Returns",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "2",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
"precision": "2"
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"default": "0.00",
"fieldname": "outstanding_amount",
"fieldtype": "Float",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Outstanding Amount",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
"read_only": 1
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"default": "0.0",
"fieldname": "payments",
"fieldtype": "Table",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 1,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Payments",
"length": 0,
"no_copy": 0,
"options": "Cashier Closing Payments",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
"options": "Cashier Closing Payments"
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "net_amount",
"fieldtype": "Float",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 1,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Net Amount",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
"read_only": 1
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "amended_from",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Amended From",
"length": 0,
"no_copy": 1,
"options": "Cashier Closing",
"permlevel": 0,
"print_hide": 1,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
"read_only": 1
}
],
"has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 0,
"image_view": 0,
"in_create": 0,
"is_submittable": 1,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2019-02-19 08:35:24.157327",
"links": [],
"modified": "2023-12-28 13:15:46.858427",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Cashier Closing",
"name_case": "",
"naming_rule": "By \"Naming Series\" field",
"owner": "Administrator",
"permissions": [
{
"amend": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"set_user_permissions": 0,
"share": 1,
"submit": 1,
"write": 1
}
],
"quick_entry": 0,
"read_only": 0,
"read_only_onload": 0,
"show_name_in_global_search": 0,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1,
"track_seen": 0,
"track_views": 0
}
"states": [],
"track_changes": 1
}

View File

@@ -9,6 +9,32 @@ from frappe.utils import flt
class CashierClosing(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from frappe.types import DF
from erpnext.accounts.doctype.cashier_closing_payments.cashier_closing_payments import (
CashierClosingPayments,
)
amended_from: DF.Link | None
custody: DF.Float
date: DF.Date | None
expense: DF.Float
from_time: DF.Time
naming_series: DF.Literal["POS-CLO-"]
net_amount: DF.Float
outstanding_amount: DF.Float
payments: DF.Table[CashierClosingPayments]
returns: DF.Float
time: DF.Time
user: DF.Link
# end: auto-generated types
def validate(self):
self.validate_time()

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