Compare commits

..

1152 Commits

Author SHA1 Message Date
Ankush Menat
28ce2958fa ci: Add fake passing tests when CI is skipped 2024-01-25 14:14:25 +05:30
ruthra kumar
4f215f1b70 Merge pull request #38218 from rtdany10/account-balance-mismatch
fix: honour currency precision while fetching balance
2024-01-25 12:28:36 +05:30
rohitwaghchaure
c0a1188067 Merge pull request #39547 from rohitwaghchaure/fixed-item-tax-template-not-working-for-e-commerce
fix: Item Tax template is not working for e-commerce
2024-01-25 11:36:48 +05:30
Nabin Hait
ca02dfa652 Merge pull request #39498 from nabinhait/asset-cancellation-fix
fix: cancellation of asset/asset capitalization
2024-01-25 11:36:19 +05:30
Rohit Waghchaure
7d3240ae3a fix: Item Tax template is not working for e-commerce 2024-01-25 11:08:33 +05:30
ruthra kumar
93681cfa24 Merge branch 'develop' into pr/38218 2024-01-25 09:58:54 +05:30
ruthra kumar
4f1e729b7c Merge pull request #39331 from FHenry/dev_fix_payment_terms_status_for_sales_order_report
fix: Payment Terms Status for Sales Order report show all payment terms from orders (not only when there is a payment terms template)
2024-01-24 16:11:52 +05:30
ruthra kumar
735576ab27 Merge branch 'develop' into dev_fix_payment_terms_status_for_sales_order_report 2024-01-24 15:45:46 +05:30
rohitwaghchaure
23199a3271 Merge pull request #39389 from rohitwaghchaure/fixed-incorrect-active-serial-nos
fix: incorrect active serial nos
2024-01-24 15:36:31 +05:30
Rohit Waghchaure
64cb1153de fix: incorrect active serial nos 2024-01-24 15:15:50 +05:30
ruthra kumar
4a4c4ba21b Merge pull request #39529 from ruthra-kumar/typeerror_on_company_transaction_deletion
fix: AttributeError in company transaction deletion
2024-01-24 13:09:49 +05:30
rohitwaghchaure
a552df8a9f Merge pull request #39525 from rohitwaghchaure/fixed-auto-mr-email-with-user-permissions-issue
fix: email list for auto reorder material request
2024-01-24 12:35:35 +05:30
ruthra kumar
b127aa308e fix: AttributeError in company transaction deletion 2024-01-24 12:24:02 +05:30
rohitwaghchaure
02028becb3 Merge pull request #39521 from rohitwaghchaure/fixed-not-able-to-edit-adddress
fix: not able to edit address through portal
2024-01-24 11:50:02 +05:30
Rohit Waghchaure
764f3422a0 fix: email list for auto reorder material request 2024-01-24 11:45:15 +05:30
Deepesh Garg
236c7e1e95 Merge pull request #39493 from GursheenK/skip-liability-acc-for-internal-transfers
fix: skip setting liability account for internal transfer
2024-01-24 10:34:19 +05:30
Deepesh Garg
9f1ddeb4e4 Merge pull request #39520 from barredterra/fix-typos
fix: typos
2024-01-24 10:33:27 +05:30
Rohit Waghchaure
b046d980ad fix: not able to edit address through portal 2024-01-24 10:29:55 +05:30
barredterra
806696a003 fix: typos 2024-01-24 02:59:52 +01:00
Raffael Meyer
7a6a789199 Merge pull request #39512 from barredterra/refactor-split-batch 2024-01-23 17:54:28 +01:00
barredterra
7a7a213285 refactor(Batch): use const instead of var 2024-01-23 15:02:42 +01:00
barredterra
34ec2f8a2b fix(Batch): reload doc after splitting
to show updated qty
2024-01-23 14:57:23 +01:00
rohitwaghchaure
4832175341 Merge pull request #39503 from rohitwaghchaure/fixed-serial-no-ledger-permission
fix: Serial No Ledger permission issue
2024-01-23 19:06:40 +05:30
barredterra
3c7e7a76f0 refactor: split batch 2024-01-23 14:23:32 +01:00
ruthra kumar
ebaa5d3add Merge pull request #39054 from ruthra-kumar/provision_to_set_dimension_in_reconciliation_tool
refactor: provision to filter on dimensions in reconciliation tool
2024-01-23 17:28:21 +05:30
ruthra kumar
0d7dd93284 Merge pull request #38560 from blaggacao/feat/so-po-advance-payment-status
feat!: advance payment status on advance payment doctypes
2024-01-23 16:39:22 +05:30
ruthra kumar
9b4e757b0b test: advance payment status for Purchase Order 2024-01-23 15:53:05 +05:30
ruthra kumar
8de03ef836 test: advance payment status for Sales Order 2024-01-23 15:50:52 +05:30
David Arnold
bd6a4ca1d7 fix: move value initialization to ensure it is commited 2024-01-23 10:30:09 +01:00
David Arnold
7d8aa469d7 fix: align with 'Partly/Fully X' nomenclature in so & po 2024-01-23 10:30:08 +01:00
David Arnold
b1aef01a1f fix: always update the advance payment status 2024-01-23 10:30:08 +01:00
David Arnold
c88ce55242 fix: advance payment doctypes to keep input/output distinction 2024-01-23 10:30:07 +01:00
Rohit Waghchaure
1a670ff266 fix: Serial No Ledger permission issue 2024-01-23 13:27:37 +05:30
Nabin Hait
1a686cb66d fix: Use db_set to set a value in on_cancel 2024-01-23 12:46:15 +05:30
Nabin Hait
31592b8f3a fix: cancellation of asset/asset capitalization 2024-01-23 12:42:54 +05:30
rohitwaghchaure
f8675817e2 Merge pull request #39478 from rohitwaghchaure/fixed-ux-improvement-for-SABB
fix: UX improvements for Serial and Batch Bundle
2024-01-23 11:57:03 +05:30
Gursheen Anand
236b73565e fix: skip liability account for internal transfer 2024-01-22 21:13:32 +05:30
ruthra kumar
72614fe9e1 Merge branch 'develop' into pr/38560 2024-01-22 17:26:35 +05:30
rohitwaghchaure
60809ced85 Merge pull request #39488 from rohitwaghchaure/fixed-validate-stock-uom-integer-value
fix: UOM needs to be whole number not being checked in quotations
2024-01-22 17:24:32 +05:30
Rohit Waghchaure
aaf83da3e9 fix: UOM needs to be whole number not being checked in quotations 2024-01-22 16:43:54 +05:30
ruthra kumar
4c20a4710b Merge pull request #39484 from ruthra-kumar/move_project_filter_to_common
refactor: move 'project' set_query to sales_common.js
2024-01-22 15:50:17 +05:30
ruthra kumar
52814724eb refactor: move 'project' set_query to sales_common.js 2024-01-22 15:32:16 +05:30
Rohit Waghchaure
fc0d2aeeff fix: auto create serial no on scan 2024-01-22 13:42:33 +05:30
ruthra kumar
7c2cb70387 refactor: handle dynamic dimension in order query 2024-01-22 12:06:07 +05:30
ruthra kumar
ec0f17ca8b refactor: update dimensions, only if provided 2024-01-22 11:59:20 +05:30
ruthra kumar
f8bbb0619c refactor: dynamic dimension filters in pop up 2024-01-22 10:43:09 +05:30
ruthra kumar
b17e632a85 Merge pull request #39457 from ruthra-kumar/background_job_transaction_deletion
refactor: delete transactions in background
2024-01-22 09:57:25 +05:30
Deepesh Garg
6d8949adea Merge pull request #39462 from GursheenK/pdf-party-ap-ar
fix: party field in PDF for AP / AR reports
2024-01-22 09:31:34 +05:30
rohitwaghchaure
faab225126 Merge pull request #39476 from rohitwaghchaure/fixed-added-button-to-create-serial-batch-from-PI
fix: added button to make serial / batch from Purchase Invoice
2024-01-21 22:22:42 +05:30
Rohit Waghchaure
63ffce58cc test: fixed test 2024-01-21 20:59:38 +05:30
Rohit Waghchaure
5d94f0bde5 fix: UX improvements for Serial and Batch Bundle 2024-01-21 20:46:57 +05:30
Rohit Waghchaure
b4393bc03d fix: added button to make serial / batch from Purchase Invoice 2024-01-21 20:17:15 +05:30
rohitwaghchaure
da0ad3bc00 Merge pull request #39475 from rohitwaghchaure/fixed-key-error-during-reposting
fix: key error during reposting
2024-01-21 19:51:43 +05:30
David Arnold
9fc5c0cc58 Merge remote-tracking branch 'origin/develop' into feat/so-po-advance-payment-status 2024-01-21 15:16:13 +01:00
Rohit Waghchaure
ebc8230d45 fix: key error during reposting 2024-01-21 18:05:20 +05:30
Gursheen Kaur Anand
273bc1b1e3 Merge pull request #39229 from blaggacao/fix/tds-report
fix: use most reliable section reference per report line
2024-01-21 13:39:38 +05:30
Gursheen Kaur Anand
c40719caa5 Merge pull request #39424 from frappe/revert-38556-period-end-date-for-financial-statements
Revert "fix(minor): financial statements period end date"
2024-01-20 17:57:46 +05:30
Gursheen Anand
b2d9380596 fix: party field in pdf html 2024-01-19 17:08:02 +05:30
ruthra kumar
fcf4687c52 test: dimension inheritance on adv allocation 2024-01-19 16:50:54 +05:30
ruthra kumar
cbd443a78a refactor: pass dimensions on advance allocation 2024-01-19 16:44:59 +05:30
ruthra kumar
6148fb024b test: dimension inheritance in PE reconciliation 2024-01-19 15:57:13 +05:30
Gursheen Kaur Anand
9678d050a4 Merge pull request #39426 from GursheenK/insufficient-permissions-for-manager
fix: FY permission for accounts and stock managers
2024-01-19 11:54:20 +05:30
ruthra kumar
a50808a077 refactor: delete transactions in background 2024-01-19 11:43:08 +05:30
Gursheen Anand
125847c69f Merge branch 'develop' into revert-38556-period-end-date-for-financial-statements 2024-01-19 11:40:50 +05:30
Gursheen Kaur Anand
4ca63c07f6 Merge branch 'frappe:develop' into insufficient-permissions-for-manager 2024-01-19 11:19:32 +05:30
Rucha Mahabal
35067282cf refactor(UX): Accounts workspace cleanup (#39232)
* refactor(UX): Accounts workspace cleanup

* chore: move asset workspace outside accounting

* fix: remove redundant links from parent workspace

* chore: change icons for payable & receivable workspaces

* chore: remove redundant links from subworkspaces
2024-01-19 11:13:09 +05:30
ruthra kumar
c44eb432a5 refactor: pass dimension values to Gain/Loss journal 2024-01-18 16:42:22 +05:30
Gursheen Kaur Anand
871a1f4565 Merge pull request #39449 from GursheenK/payment-entry-unallocated-amount-after-taxes
fix: unallocated amount after taxes and charges
2024-01-18 16:13:31 +05:30
Gursheen Anand
99b94af49f fix: linting issue 2024-01-18 15:05:19 +05:30
Gursheen Anand
e9bc63aacf fix: set unallocated amount after base tax 2024-01-18 14:33:10 +05:30
ruthra kumar
ba5a7c8cd8 test: dimension inheritance for cr note reconciliation 2024-01-18 13:29:33 +05:30
Ankush Menat
ef7aefeb45 ci: split pre-commit and semgrep jobs (#39445) 2024-01-18 11:29:53 +05:30
rohitwaghchaure
45aea56198 Merge pull request #39436 from rohitwaghchaure/fixed-duplicate-name-error-for-variant-creation
fix: duplicate name error while making variant
2024-01-18 06:50:50 +05:30
Nabin Hait
daf954057f Merge pull request #39429 from nabinhait/composite-asset-using-asset
fix: composite asset capitalization using asset components
2024-01-17 21:04:49 +05:30
Rohit Waghchaure
d7e6b83e64 fix: duplicate name error while making variant 2024-01-17 20:52:16 +05:30
rohitwaghchaure
80dc5a7b1c Merge pull request #39433 from FHenry/dev_better_display_item_BomCreator
refactor: BOM creator item selector with short description
2024-01-17 20:28:50 +05:30
Florian HENRY
0f881bc90a refactor: BOM creator item selector with short description 2024-01-17 13:37:22 +01:00
mergify[bot]
6efa92de70 Merge branch 'develop' into composite-asset-using-asset 2024-01-17 12:20:05 +00:00
Nabin Hait
2adb710751 Merge pull request #39427 from nabinhait/test-fix333
fix: Asset module tests
2024-01-17 17:21:47 +05:30
Nabin Hait
97f69986ff fix: Asset module tests 2024-01-17 16:39:39 +05:30
Nabin Hait
5df40661d2 fix: composite asset capitalization using asset components 2024-01-17 16:17:53 +05:30
Deepesh Garg
889d67bcee Merge pull request #39367 from deepeshgarg007/revert_dynamic_splitting
Revert dynamic splitting
2024-01-17 15:03:13 +05:30
Gursheen Anand
8b91287034 fix: account and stock manager read perm 2024-01-17 13:09:51 +05:30
Deepesh Garg
1148ed1566 Merge pull request #39423 from deepeshgarg007/fix_subscription_period_update
fix: Update subscription period
2024-01-17 12:57:40 +05:30
ruthra kumar
e3c44231ab chore: test dimension filter output 2024-01-17 12:51:44 +05:30
ruthra kumar
188ff8cde7 refactor: apply dimension filters on cr/dr notes 2024-01-17 12:51:41 +05:30
Deepesh Garg
3aa17fa0d6 chore: freezing date check 2024-01-17 12:47:27 +05:30
Deepesh Garg
4f3aeaefc1 chore: Remove unwanted changes 2024-01-17 12:42:22 +05:30
Deepesh Garg
120bfdf33d Merge branch 'develop' of https://github.com/frappe/erpnext into revert_dynamic_splitting 2024-01-17 12:33:07 +05:30
Gursheen Kaur Anand
73625a2622 Revert "fix(minor): financial statements period end date" 2024-01-17 12:25:03 +05:30
Nabin Hait
9f2b62dd1c Merge pull request #39386 from nabinhait/asset-capitalisation-calcellation
fix: Cancel asset capitalisation record on cancellation of asset and vice-versa
2024-01-17 12:14:15 +05:30
Nabin Hait
60f52adc90 Merge pull request #39385 from nabinhait/wdv-as-per-income-tax-act
fix: WDV as per IT Act: calculate yearly amount first and then split it based on months
2024-01-17 12:13:23 +05:30
Deepesh Garg
7eefedfb11 fix: Update subscription period 2024-01-17 10:57:19 +05:30
HENRY Florian
af80d253db fix: consistency in display reserved_stock checkbox on Sales Order Item according global settings and item.is_stock_item (#38322)
* fix: consistency in display reserved_stock checkbox on Sales Order Item according global settings and item.is_stock_item

* fix: evaluate depends_on for fdata visibility in grid

* fix: evaluate depends_on for fdata visibility in grid

* chore: change after review

* chore: change for review
2024-01-17 10:43:36 +05:30
ruthra kumar
ab939cc6e8 refactor: Credit Note and its Exc gain/loss JE inherits dimensions 2024-01-16 16:48:50 +05:30
ruthra kumar
ca9413bc64 Merge pull request #39402 from ruthra-kumar/fix_project_query
fix: project query controller logic
2024-01-16 16:24:02 +05:30
ruthra kumar
bfe42fdccb refactor: better ordering of query result 2024-01-16 15:58:19 +05:30
rohitwaghchaure
ce2dd28a25 Merge pull request #39406 from rohitwaghchaure/fixed-bin-permission-issue
fix: permission issue for the Bin
2024-01-16 15:50:46 +05:30
Deepesh Garg
96dcfba65a Merge branch 'develop' of https://github.com/frappe/erpnext into revert_dynamic_splitting 2024-01-16 15:42:02 +05:30
Rohit Waghchaure
6e4d4a55cd fix: permission issue for the BIN 2024-01-16 15:12:28 +05:30
ruthra kumar
3349dde5e2 fix(test): test case for project query 2024-01-16 14:28:09 +05:30
ruthra kumar
4eefb445a7 fix: project query controller logic 2024-01-16 13:38:53 +05:30
Ankush Menat
ed927f102e perf: use unbuffered_cursor for stock_ageing report (#39399)
perf: use unbuffered_cursor for stock stock_ageing report

Unbuffered cursor lets us load one row at a time in memory from mysql instead of lowing all at once.

This makes it possible to run the report for large number of SLEs.
2024-01-16 11:43:35 +05:30
ruthra kumar
82026f780d Merge pull request #39400 from ruthra-kumar/fix_broken_subscription_test
fix: broken multi currency test case in subscription
2024-01-16 11:39:42 +05:30
ruthra kumar
e5aeab7e7e fix: broken multi currency test case in subscription 2024-01-16 11:16:39 +05:30
Deepesh Garg
32738637ce Merge pull request #39394 from noec764/Fix_UntranslatedColumnsInGlobalLedger
fix: Untranslated columns in Global Ledger Report
2024-01-16 11:03:47 +05:30
Alexandre Lumertz Damiani
80f5026208 fix: translate (#39395) 2024-01-16 10:46:00 +05:30
Alexandre Lumertz Damiani
00619342e1 fix: translate (#39396) 2024-01-16 10:44:59 +05:30
Alexandre Lumertz Damiani
b719585a2f fix: translate (#39397) 2024-01-16 10:44:17 +05:30
Alexandre Lumertz Damiani
4970b5d5bc fix: translate (#39398) 2024-01-16 10:43:33 +05:30
Noé
bdd382bdfd fix: Untranslated columns in Global Ledger 2024-01-15 16:40:45 +01:00
ruthra kumar
92a5cda61a Merge pull request #39391 from ruthra-kumar/multiple_typeerror_fixes
fix: possible typerror in utils.js
2024-01-15 20:45:27 +05:30
ruthra kumar
60b26ad8b2 fix: possible typerror in utils.js
and remove unwanted debugging statements
2024-01-15 20:37:21 +05:30
Nabin Hait
efe9f6656f fix: Cancel asset capitalisation record on cancellation of asset and vice-versa 2024-01-15 17:54:47 +05:30
Nabin Hait
22bd6a54b2 fix: WDV as per IT Act: calculate yearly amount first and then split it based on months 2024-01-15 16:54:19 +05:30
Deepesh Garg
a36b6cb102 Merge pull request #39384 from deepeshgarg007/income_account_filter
feat: Income account filter in item-wise reports
2024-01-15 16:52:39 +05:30
Deepesh Garg
d91813c277 feat: Income account filter in item-wise reports 2024-01-15 16:50:14 +05:30
ruthra kumar
0ec17590ae fix: typo's and parameter changes 2024-01-15 16:17:33 +05:30
ruthra kumar
2154502955 refactor: partial change on outstanding invoice popup 2024-01-15 16:17:33 +05:30
ruthra kumar
a4ddf93492 Merge pull request #39332 from ruthra-kumar/validate_subscription_billing_currency
refactor: prevent foreign currency subscription for a party
2024-01-15 15:05:31 +05:30
ruthra kumar
9c5a79209e refactor: replace sql with query builder for Jourals query 2024-01-15 14:55:15 +05:30
ruthra kumar
5dc22e1811 refactor: pass dimension details to query 2024-01-15 14:55:15 +05:30
ruthra kumar
ad8475cb8b refactor: set query filters for dimensions 2024-01-15 14:55:15 +05:30
ruthra kumar
ff60ec85b8 refactor: pass dimension filters to query 2024-01-15 14:55:15 +05:30
ruthra kumar
c1fe4bcc64 refactor: handle dimension filters 2024-01-15 14:55:15 +05:30
ruthra kumar
20576e0f47 refactor: column break in dimension section 2024-01-15 14:55:15 +05:30
ruthra kumar
20e0acc20a refactor: dimensions filter section in payment reconciliation 2024-01-15 14:55:15 +05:30
ruthra kumar
cfb3d87267 refactor: update dimension doctypes in hooks 2024-01-15 14:55:15 +05:30
ruthra kumar
1cde804c77 refactor: dimensions section in allocation table in reconciliation 2024-01-15 14:55:15 +05:30
ruthra kumar
1387b0ba7f refactor(test): supply default currency for subscription plans 2024-01-15 14:42:57 +05:30
Ankush Menat
2e03af7ac4 perf: use iterator for stock ageing report (#39346) 2024-01-15 14:35:28 +05:30
s-aga-r
749c735627 Merge pull request #39377 from s-aga-r/BUMP-NODE
ci: bump node in release workflow
2024-01-15 11:58:51 +05:30
s-aga-r
aef87cced7 ci: bump node in release workflow 2024-01-15 11:54:26 +05:30
ruthra kumar
6bb2d9195f Merge pull request #39336 from ruthra-kumar/better_validation_on_bank_transaction
refactor: disallow bank transactions on different currencies
2024-01-15 10:01:50 +05:30
ruthra kumar
28ebc4cfee Merge pull request #39371 from ruthra-kumar/fix_customer_ledger_summary_report
fix: incorrect sql error if account name has '%'
2024-01-15 09:38:50 +05:30
rohitwaghchaure
ad5906916d Merge pull request #39372 from rohitwaghchaure/fixed-get-query-for-batch-no-field
fix: batches not coming correctly in the batch selector
2024-01-14 23:48:48 +05:30
Rohit Waghchaure
114f2b4326 fix: batches not coming correctly in the batch selector 2024-01-14 23:27:29 +05:30
ruthra kumar
a27a4db3de refactor(test): supply default currency to Bank Transaction 2024-01-14 18:09:19 +05:30
ruthra kumar
b4354cbc8d refactor: better error message 2024-01-14 18:04:15 +05:30
Deepesh Garg
02fde73545 fix: Against account variable 2024-01-14 18:01:44 +05:30
ruthra kumar
19975dcb7b refactor: making currency mandatory for subcscription plans 2024-01-14 17:59:43 +05:30
ruthra kumar
641c3de0ca fix: incorrect sql error if account name has '%' 2024-01-14 17:37:34 +05:30
rohitwaghchaure
cf6b52e543 Merge pull request #39224 from mahsem/patch-1
Update purchase_taxes_and_charges.json label Rate to Tax Rate
2024-01-14 11:26:35 +05:30
Deepesh Garg
9500254861 Revert "chore: orderby in gle"
This reverts commit 005c5a587f.
2024-01-14 11:25:58 +05:30
Deepesh Garg
13e5578bc6 Revert "fix: check for unmerged gle in purchase receipt test"
This reverts commit 47c78a5a73.
2024-01-14 11:25:50 +05:30
Deepesh Garg
24137ff54f Revert "fix: subcontracting receipt gle test"
This reverts commit 24ccb3eb78.
2024-01-14 11:25:39 +05:30
Deepesh Garg
9a13842751 Revert "fix: check for split entries in stock entry test"
This reverts commit a56b79cc72.
2024-01-14 11:25:30 +05:30
Deepesh Garg
13b4ddec63 Revert "fix: query for against types"
This reverts commit 262cafc430.
2024-01-14 11:25:09 +05:30
Gursheen Anand
39c8507dc2 fix: query for against types 2024-01-14 11:24:51 +05:30
Deepesh Garg
0b1cc7fad1 Revert "fix: fetch against link value in gl report"
This reverts commit 9aeb3932d0.
2024-01-14 11:24:00 +05:30
Deepesh Garg
8bc1efcf8b Revert "refactor: set against account link for jv"
This reverts commit 450c2470e9.
2024-01-14 11:23:34 +05:30
Deepesh Garg
1a67d7d95f Revert "refactor: use both fields to store against values"
This reverts commit 09439334ca.
2024-01-14 11:22:50 +05:30
Deepesh Garg
4dad4b50fb Revert "refactor: keep old against fields intact"
This reverts commit f9c88ea7bc.
2024-01-14 11:21:19 +05:30
Deepesh Garg
0f9734ae37 Revert "fix: split expected jv entries for scrap asset"
This reverts commit 291a499124.
2024-01-14 11:19:46 +05:30
Deepesh Garg
a43ee34bd5 Revert "fix: purchase receipt test"
This reverts commit 5ce395a60a.
2024-01-14 11:16:29 +05:30
Deepesh Garg
e6f599b32d Revert "fix: single dr cr entries"
This reverts commit e845b63228.
2024-01-14 11:16:17 +05:30
Deepesh Garg
8cf6ff69c0 Revert "fix: remove join for against in purchase receipt"
This reverts commit 758ec720de.
2024-01-14 11:14:14 +05:30
Deepesh Garg
2249b7c793 Revert "fix: auto separate against accounts"
This reverts commit ff0343d2cc.
2024-01-14 11:13:34 +05:30
Deepesh Garg
591de1338b Revert "fix: combine jv entries for rate revaluation"
This reverts commit 3d00d74fed.
2024-01-14 11:12:36 +05:30
Deepesh Garg
2c95cd206b Revert "fix: remove multiple against account values from gle"
This reverts commit 35d92abe73.
2024-01-14 11:12:15 +05:30
Deepesh Garg
8ee6dbc1e2 Revert "fix: make JV account against field a dynamic link"
This reverts commit aab5737ff3.
2024-01-14 11:10:22 +05:30
Deepesh Garg
beb169cf75 Revert "fix: asset capitalization tests"
This reverts commit 952e8cf60c.
2024-01-14 11:09:28 +05:30
Deepesh Garg
b40d3b0a05 Revert "fix: purchase receipt tests"
This reverts commit fcfdb9b566.
2024-01-14 11:09:18 +05:30
Deepesh Garg
93ff84bf56 Revert "fix: remove multiple accounts from against in capitalization"
This reverts commit f705bf2efe.
2024-01-14 11:06:01 +05:30
Deepesh Garg
498c9c7955 Revert "fix: set against type in asset"
This reverts commit 6e1565c32c.
2024-01-14 11:04:51 +05:30
Deepesh Garg
073f2fa302 Revert "fix: set against type in stock controller"
This reverts commit 4ea43ebc5d.
2024-01-14 11:04:40 +05:30
Deepesh Garg
9339a8b57f Revert "fix: set against type in utils"
This reverts commit f292a0cc4c.
2024-01-14 11:04:13 +05:30
Deepesh Garg
fbeaf2b398 Revert "fix: set against type in controllers"
This reverts commit 4c5a83d6cf.
2024-01-14 11:04:00 +05:30
Deepesh Garg
7c0e180fd9 Revert "fix: set against type in deferred revenue"
This reverts commit 82774f89b1.
2024-01-14 11:01:40 +05:30
Deepesh Garg
1710e10b31 Revert "fix: set against type in inv gl dict"
This reverts commit 19b220f39c.
2024-01-14 11:01:27 +05:30
Deepesh Garg
8ae7ca7f14 Revert "fix: use dynamic link for against field"
This reverts commit 725a7f90e9.
2024-01-14 10:56:17 +05:30
Deepesh Garg
5fc29ac913 Merge pull request #39366 from frappe/revert-38914-multi_currency_ledger_jv_pe
Revert "fix: GL values in transaction currency via JV"
2024-01-14 10:52:30 +05:30
Deepesh Garg
41d9225bd1 Revert "fix: GL values in transaction currency via JV" 2024-01-14 10:51:30 +05:30
Deepesh Garg
53f6cfb216 Merge pull request #39363 from frappe/revert-39248-set-against-accounts-for-backend-JVs
Revert "fix: JV GLEs for auto-set against accounts"
2024-01-14 10:51:06 +05:30
rohitwaghchaure
6827edb2c5 fix: modified date 2024-01-14 10:45:43 +05:30
rohitwaghchaure
0b525f9d87 Merge pull request #39359 from rohitwaghchaure/fixed-added-field-item-group-in-stock-reco
fix: added item group in stock reco
2024-01-14 10:27:40 +05:30
Deepesh Garg
c7509d8ebf Revert "fix: JV GLEs for auto-set against accounts" 2024-01-14 10:23:19 +05:30
rohitwaghchaure
566876ae7a fix: modified date was not set 2024-01-14 10:15:50 +05:30
rohitwaghchaure
2820a0ac0a Merge pull request #39225 from mahsem/patch-2
Update sales_taxes_and_charges.json
2024-01-14 10:15:22 +05:30
Rohit Waghchaure
116ff8241c fix: added item group in stock reco 2024-01-14 10:05:26 +05:30
rohitwaghchaure
89623aba57 Merge pull request #39201 from rmehta/remove-homepage
fix!(portal): remove Homepage
2024-01-14 09:56:25 +05:30
rohitwaghchaure
f567af49a6 fix: modified date was not updated 2024-01-14 09:48:05 +05:30
Raffael Meyer
1aecb578e6 chore: update po files (#39340) 2024-01-14 09:46:13 +05:30
Deepesh Garg
a87bb21246 Merge pull request #39084 from deepeshgarg007/pricing_rule_remove
fix: Pricing rule application/removal on qty change
2024-01-13 12:47:19 +05:30
Deepesh Garg
ec5c0deb0e Merge pull request #39166 from barredterra/remove-je-list-indicators
refactor(Journal Entry): remove unused/redundant list indicators
2024-01-13 12:21:39 +05:30
Deepesh Garg
3b14c59133 Merge pull request #39048 from barredterra/fix-pl-balance-sheet
fix: calculation of P/L in balance sheet
2024-01-13 11:09:24 +05:30
Deepesh Garg
98e2b6575d Merge pull request #39235 from GursheenK/validation-for-payment-requests
fix(minor): validate doctype before creating payment request
2024-01-13 09:45:56 +05:30
Deepesh Garg
9947bae60e Merge pull request #38984 from Gubbu77/patch-1
fix(Report): Increased the column width in the Account Balance Report
2024-01-13 09:26:42 +05:30
rohitwaghchaure
402a1b91f9 Merge pull request #39335 from s-aga-r/FIX-8359
fix: SBB Total Qty validation for SE
2024-01-12 20:59:46 +05:30
rohitwaghchaure
3b07700ef6 Merge pull request #39333 from rohitwaghchaure/fixed-added-indexing-to-improve-performance
fix: added indexing to improve performance
2024-01-12 18:39:04 +05:30
rohitwaghchaure
d3aff000d9 Merge pull request #38970 from GursheenK/item-variant-local-attributes
fix: use local attribute range in multiple item variant dialog
2024-01-12 18:37:35 +05:30
s-aga-r
d0687788b5 Merge pull request #39337 from s-aga-r/FIX-1882992786
chore: remove share, print and email permissions from Buying Settings
2024-01-12 16:47:36 +05:30
s-aga-r
3c46abca6c chore: remove share, print and email permissions from Buying Settings 2024-01-12 16:45:39 +05:30
ruthra kumar
cdd0acc672 refactor: disallow bank transactions on different currencies 2024-01-12 16:36:17 +05:30
s-aga-r
c20241fcb5 fix: SBB Total Qty validation for SE 2024-01-12 15:26:35 +05:30
Rohit Waghchaure
ac81323fec fix: added indexing to improve performance 2024-01-12 14:11:37 +05:30
ruthra kumar
6b5fa2c673 refactor: prevent foreign currency subscription for a party 2024-01-12 13:19:03 +05:30
Deepesh Garg
e4755778ae Merge pull request #39248 from GursheenK/set-against-accounts-for-backend-JVs
fix: JV GLEs for auto-set against accounts
2024-01-11 22:45:17 +05:30
Florian HENRY
6c8f52b26f fix: Payment Terms Status for Sales Order report should show all payment terms from order not only this comming from template 2024-01-11 16:00:48 +01:00
Raffael Meyer
0c47396785 Merge pull request #39293 from blaggacao/feat/add-account-preview 2024-01-11 15:12:52 +01:00
Ankush Menat
935622bde8 Update Crowdin configuration file 2024-01-11 19:08:14 +05:30
Raffael Meyer
ea33f902e7 Merge pull request #38974 from barredterra/unreconcile-bank-transaction-on-cancel 2024-01-11 14:36:24 +01:00
Ankush Menat
ea1624fba5 chore: regen po files 2024-01-11 19:03:02 +05:30
Raffael Meyer
f31c6f52e8 Merge pull request #39117 from barredterra/fix-holiday-list 2024-01-11 14:26:38 +01:00
Nabin Hait
3036a6afdc Merge pull request #39305 from GursheenK/naming_series_FY
fix: naming series variable parsing for FY
2024-01-11 18:55:14 +05:30
barredterra
f32a870a58 Merge branch 'develop' into fix-pl-balance-sheet 2024-01-11 14:03:39 +01:00
barredterra
e69f9ddf8b Merge branch 'develop' into remove-je-list-indicators 2024-01-11 14:03:13 +01:00
barredterra
2bcd032a44 Merge branch 'develop' into fix-holiday-list 2024-01-11 13:55:27 +01:00
barredterra
8039dc5194 Merge branch 'develop' into unreconcile-bank-transaction-on-cancel 2024-01-11 13:54:07 +01:00
ruthra kumar
2a195d457e Merge pull request #39320 from ruthra-kumar/possible_typeerror_in_consolidated_report
fix: possible typeerror in consolidated report
2024-01-11 16:54:30 +05:30
ruthra kumar
951e8e3a73 Merge pull request #39317 from ruthra-kumar/fix_broken_dimension_filters_in_sales_purchase_register_report
fix: broken dimension filters in Sales/Purchase register
2024-01-11 16:50:12 +05:30
ruthra kumar
268731aec4 fix: possible typeerror in consolidated report 2024-01-11 16:45:49 +05:30
ruthra kumar
7b3f9386d7 fix: broken dimension filters in Sales/Purchase register 2024-01-11 16:24:43 +05:30
Ankush Menat
d9e2427aa8 chore: migrate translations to gettext (#39313) 2024-01-11 15:46:55 +05:30
rohitwaghchaure
eb0bc5c6ad Merge pull request #39215 from rohitwaghchaure/fixed-incorrect-per-received-in-pi
fix: incorrect percentage received in purchase invoice
2024-01-11 14:50:19 +05:30
rohitwaghchaure
fde6fadf4d Merge pull request #39299 from rohitwaghchaure/fixed-cicular-dependecy-error
fix: circular dependency error on deletion of QC and Stock Entry
2024-01-11 14:49:12 +05:30
Ankush Menat
432a14c84c refactor: remove usage of raise_exception (#39309) 2024-01-11 14:02:28 +05:30
Gursheen Anand
813b7a96fb fix: reset default after test 2024-01-11 12:22:08 +05:30
Gursheen Anand
bbdf98a8f0 test: naming series variable parsing 2024-01-10 22:06:06 +05:30
Gursheen Anand
d96a777edd fix: date in master document for dictionary condition 2024-01-10 22:05:02 +05:30
rohitwaghchaure
c67b0a3a64 fix: performance issue related to stock entry (#39301) 2024-01-10 22:01:40 +05:30
Rohit Waghchaure
7cc324e31e fix: circular dependency error while deleting QC 2024-01-10 20:26:51 +05:30
Deepesh Garg
f057dc6867 Merge pull request #39256 from deepeshgarg007/opening_ignore_tempplate
fix: Ignore default payment terms template for opening invoices
2024-01-10 16:06:03 +05:30
David Arnold
e53931e27a feat(accounts): add preview for accounts 2024-01-10 11:07:39 +01:00
Raffael Meyer
6f9fe6a792 fix: wrong usage of get_single_value (#39268)
* fix: wrong usage of get_single_value

* test: fix wrong fieldname

* chore: typo

---------

Co-authored-by: Ankush Menat <ankush@frappe.io>
2024-01-10 12:32:27 +05:30
Ankush Menat
38c5ecf007 fix: set parent doctype on chart (#39286) 2024-01-10 12:26:03 +05:30
Nabin Hait
c1922ea5de Merge pull request #39052 from anandbaburajan/asset_wdv_india_dev
fix: asset WDV depreciation calc according to IT act [dev]
2024-01-10 12:17:09 +05:30
ruthra kumar
54bcbd0bc6 Merge pull request #39282 from ruthra-kumar/type_error_on_transaction_js
fix: possible typeerror on transaction.js
2024-01-10 11:53:22 +05:30
ruthra kumar
9f27ac142b fix: possible typeerror on transaction.js 2024-01-10 11:34:28 +05:30
Nabin Hait
2ef0596df2 Merge pull request #39275 from nabinhait/fetch-timesheet-in-invoice
fix: Show timesheet table after fetching data from timesheet
2024-01-10 11:33:51 +05:30
Nabin Hait
3ff562cb8a Merge pull request #39191 from nabinhait/asset-lcv-validation-fix
fix: Ignore asset qty and status validation while cancelling LCV
2024-01-10 11:33:17 +05:30
Nabin Hait
8fdf0ca2d3 Merge pull request #39207 from nabinhait/get-fixed-asset-acc
fix: Get fixed_asset_account from asset category
2024-01-10 11:32:06 +05:30
Nabin Hait
01f507ebcb Merge pull request #39238 from nabinhait/asset-purchase-amount
fix: Set asset purchase amount based on qty and valuation_rate
2024-01-10 11:31:30 +05:30
Nabin Hait
e1ba5878a3 fix: Show timesheet table after fetching data from timesheet 2024-01-10 11:26:33 +05:30
hyaray
6dceb25fb2 chore: typo 2024-01-10 10:53:14 +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
5b4c5d59d8 Merge branch 'develop' into unreconcile-bank-transaction-on-cancel 2024-01-09 18:12:30 +01:00
barredterra
58343e5b7c Merge branch 'develop' into fix-holiday-list 2024-01-09 17:46:28 +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
Gursheen Anand
8e1f6c8149 test: split and auto set against in JV 2024-01-09 21:47:59 +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
Deepesh Garg
53bf44d2b8 fix: Ignore default payment terms template for opening invoices 2024-01-09 15:57:38 +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
Gursheen Anand
ce7d05aa1f fix: gl_map for auto-set against accounts 2024-01-09 15:08:30 +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
Nabin Hait
135e19d0aa fix: Set asset purchase amount based on qty and valuation_rate 2024-01-09 12:51:57 +05:30
ruthra kumar
b498094a97 fix: total allocated percentage for sales team issue 2024-01-09 12:40:41 +05:30
Gursheen Anand
bb421c8b07 fix: validate doctype before creating payment request 2024-01-09 11:33:52 +05:30
David Arnold
b5be17c6df fix: use most reliable section reference per report line 2024-01-08 22:12:19 +01:00
mahsem
2b93be1139 Update sales_taxes_and_charges.json
Change Rate label to existing Tax Rate label so it can be correctly translated in other languages
2024-01-08 18:47:44 +01:00
mahsem
bd464197c4 Update purchase_taxes_and_charges.json label Rate to Tax Rate
Change Rate label to existing Tax Rate label so it can be correctly translated in other languages
2024-01-08 18:45:39 +01:00
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
Rohit Waghchaure
8d2c78867e fix: incorrect percentage received in purchase invoice 2024-01-08 18:17:01 +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
Nabin Hait
8548eae368 fix: Get fixed_asset_account from asset category 2024-01-08 16:11:04 +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
Rushabh Mehta
d319caa2ee fix(minor): remove Homepage patch 2024-01-08 15:51:09 +05:30
Gursheen Anand
d0ea598cdf fix: fetch name for fy 2024-01-08 15:50:50 +05:30
Rushabh Mehta
f01f6d50b5 fix!(portal): remove Homepage 2024-01-08 15:49:49 +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
e9d36242ce fix: Ignore asset qty and status validation while cancelling LCV 2024-01-08 12:45:42 +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
David Arnold
b73507abe0 Merge remote-tracking branch 'origin/develop' into feat/so-po-advance-payment-status 2024-01-05 21:36:14 +01:00
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
barredterra
5d33bbaff0 refactor(Journal Entry): remove unused/redundant list indicators 2024-01-05 17:26:54 +01:00
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
barredterra
60329ade9e test: improve test for local holidays 2024-01-04 11:04:25 +01:00
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
barredterra
300aaa39fe fix: consider all years in holiday list 2024-01-03 13:39:28 +01:00
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
barredterra
73ecf51a27 test: balance sheet 2024-01-02 20:39:32 +01:00
barredterra
0d3a77dce9 fix: calculation of P/L in balance sheet 2024-01-02 17:26:29 +01:00
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
Deepesh Garg
f52d7c7665 fix: Pricing rule application/removal on qty change 2024-01-02 13:37:39 +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
anandbaburajan
026824880d fix: asset WDV depreciation calc according to IT act 2024-01-01 00:23:19 +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
Indrajith.vs
37767738b0 fix(Report): Increased the column width in the Account Balance Report 2023-12-28 12:12:52 +05:30
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
barredterra
517bedeb7e test: cancel voucher linked to Bank Transaction 2023-12-28 00:00:04 +01:00
barredterra
0a95b38166 fix: unreconcile Bank Transaction on cancel of payment voucher 2023-12-27 23:05:37 +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
Gursheen Anand
43fed29514 fix: use child table values instead of global min max 2023-12-27 19:32:48 +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
David Arnold
f73685f4f6 Merge remote-tracking branch 'origin/develop' into feat/so-po-advance-payment-status 2023-12-20 12:47:48 +01:00
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
Dany Robert
a8949174c8 chore: avoid explicit escaping for precision
Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com>
2023-12-09 09:30:17 +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
David Arnold
e824cd012b Merge remote-tracking branch 'upstream/develop' into feat/so-po-advance-payment-status 2023-12-04 13:35:32 +01:00
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
Dany Robert
383a4b132e chore: change f-string to sql params 2023-11-21 12:46:56 +00:00
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
Dany Robert
bfaa93b0ca fix: honour currency precision while fetching balance 2023-11-20 09:43:02 +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
c2f0fadb6e Merge remote-tracking branch 'upstream/develop' into feat/so-po-advance-payment-status 2023-11-13 10:06:14 +01:00
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
David Arnold
c78fdaae90 Merge remote-tracking branch 'upstream/develop' into feat/so-po-advance-payment-status 2023-10-30 17:25:08 +01:00
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
s-aga-r
36a996d704 chore: make Reserve Stock checkbox visible in SO 2023-10-18 12:42:25 +05:30
Deepesh Garg
7f1d916f04 chore: rearrange functions 2023-10-18 08:59:28 +05:30
Deepesh Garg
e15546b42f chore: rearrange functions 2023-10-17 21:28:59 +05:30
Deepesh Garg
8c61fe2ca5 fix: rearrange functions 2023-10-17 20:36:09 +05:30
Deepesh Garg
7f865492d0 chore: pass stock value diff 2023-10-17 17:14:37 +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
Deepesh Garg
0b85a525fb fix: GL Entries for receiving non CWIP assets using Purchase Receipt 2023-10-17 13:28:56 +05:30
David Arnold
8b21ca2db9 fixup! feat(payment): add advance payment status to advance payment doctypes to better track advance payments 2023-10-17 00:12:19 +02:00
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
David Arnold
e97af14ff4 fixup! feat(payment): add advance payment status to advance payment doctypes to better track advance payments 2023-10-10 23:50:57 +02:00
David Arnold
c809e61103 feat(payment): add advance payment status to advance payment doctypes to better track advance payments 2023-10-10 22:33:06 +02:00
barredterra
115f024260 fix(translations): suggestions from review 2023-10-03 23:06:48 +02:00
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
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
barredterra
b3486b43c4 fix: german translations of Accounts Settings 2023-09-27 18:51:09 +02: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
501 changed files with 1475104 additions and 576701 deletions

View File

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

60
.github/helper/translation.py vendored Normal file
View File

@@ -0,0 +1,60 @@
import re
import sys
errors_encounter = 0
pattern = re.compile(r"_\(([\"']{,3})(?P<message>((?!\1).)*)\1(\s*,\s*context\s*=\s*([\"'])(?P<py_context>((?!\5).)*)\5)*(\s*,(\s*?.*?\n*?)*(,\s*([\"'])(?P<js_context>((?!\11).)*)\11)*)*\)")
words_pattern = re.compile(r"_{1,2}\([\"'`]{1,3}.*?[a-zA-Z]")
start_pattern = re.compile(r"_{1,2}\([f\"'`]{1,3}")
f_string_pattern = re.compile(r"_\(f[\"']")
starts_with_f_pattern = re.compile(r"_\(f")
# skip first argument
files = sys.argv[1:]
files_to_scan = [_file for _file in files if _file.endswith(('.py', '.js'))]
for _file in files_to_scan:
with open(_file, 'r') as f:
print(f'Checking: {_file}')
file_lines = f.readlines()
for line_number, line in enumerate(file_lines, 1):
if 'frappe-lint: disable-translate' in line:
continue
start_matches = start_pattern.search(line)
if start_matches:
starts_with_f = starts_with_f_pattern.search(line)
if starts_with_f:
has_f_string = f_string_pattern.search(line)
if has_f_string:
errors_encounter += 1
print(f'\nF-strings are not supported for translations at line number {line_number}\n{line.strip()[:100]}')
continue
else:
continue
match = pattern.search(line)
error_found = False
if not match and line.endswith((',\n', '[\n')):
# concat remaining text to validate multiline pattern
line = "".join(file_lines[line_number - 1:])
line = line[start_matches.start() + 1:]
match = pattern.match(line)
if not match:
error_found = True
print(f'\nTranslation syntax error at line number {line_number}\n{line.strip()[:100]}')
if not error_found and not words_pattern.search(line):
error_found = True
print(f'\nTranslation is useless because it has no words at line number {line_number}\n{line.strip()[:100]}')
if error_found:
errors_encounter += 1
if errors_encounter > 0:
print('\nVisit "https://frappeframework.com/docs/user/en/translations" to learn about valid translation strings.')
sys.exit(1)
else:
print('\nGood To Go!')

26
.github/workflows/backport.yml vendored Normal file
View File

@@ -0,0 +1,26 @@
name: Backport
on:
pull_request_target:
types:
- closed
- labeled
jobs:
main:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout Actions
uses: actions/checkout@v2
with:
repository: "frappe/backport"
path: ./actions
ref: develop
- name: Install Actions
run: npm install --production --prefix ./actions
- name: Run backport
uses: ./actions/backport
with:
token: ${{secrets.RELEASE_TOKEN}}
labelsToAdd: "backport"
title: "{{originalTitle}}"

32
.github/workflows/initiate_release.yml vendored Normal file
View File

@@ -0,0 +1,32 @@
# This workflow is agnostic to branches. Only maintain on develop branch.
# To add/remove versions just modify the matrix.
name: Create weekly release pull requests
on:
schedule:
# 9:30 UTC => 3 PM IST Tuesday
- cron: "30 9 * * 2"
workflow_dispatch:
jobs:
stable-release:
name: Release
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
version: ["14", "15"]
steps:
- uses: octokit/request-action@v2.x
with:
route: POST /repos/{owner}/{repo}/pulls
owner: frappe
repo: erpnext
title: |-
"chore: release v${{ matrix.version }}"
body: "Automated weekly release."
base: version-${{ matrix.version }}
head: version-${{ matrix.version }}-hotfix
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}

View File

@@ -20,6 +20,18 @@ jobs:
- name: Install and Run Pre-commit
uses: pre-commit/action@v3.0.0
semgrep:
name: semgrep
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.10
uses: actions/setup-python@v4
with:
python-version: '3.10'
cache: pip
- name: Download Semgrep rules
run: git clone --depth 1 https://github.com/frappe/semgrep-rules.git frappe-semgrep-rules

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

@@ -134,6 +134,7 @@ jobs:
}
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##*/}}"

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

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

View File

@@ -2,23 +2,21 @@ name: Generate Semantic Release
on:
push:
branches:
- version-15
- version-13
jobs:
release:
name: Release
runs-on: ubuntu-latest
steps:
- name: Checkout Entire Repository
uses: actions/checkout@v4
uses: actions/checkout@v2
with:
fetch-depth: 0
persist-credentials: false
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: 18
node-version: 20
- name: Setup dependencies
run: |
npm install @semantic-release/git @semantic-release/exec --no-save

View File

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

View File

@@ -117,7 +117,7 @@ jobs:
FRAPPE_BRANCH: ${{ github.event.inputs.branch }}
- name: Run Tests
run: 'cd ~/frappe-bench/ && bench --site test_site run-parallel-tests --app erpnext --total-builds 4 --build-number ${{ matrix.container }}'
run: 'cd ~/frappe-bench/ && bench --site test_site run-parallel-tests --app erpnext --with-coverage --total-builds 4 --build-number ${{ matrix.container }}'
env:
TYPE: server
CI_BUILD_ID: ${{ github.run_id }}
@@ -126,3 +126,27 @@ jobs:
- name: Show bench output
if: ${{ always() }}
run: cat ~/frappe-bench/bench_start.log || true
- name: Upload coverage data
uses: actions/upload-artifact@v3
with:
name: coverage-${{ matrix.container }}
path: /home/runner/frappe-bench/sites/coverage.xml
coverage:
name: Coverage Wrap Up
needs: test
runs-on: ubuntu-latest
steps:
- name: Clone
uses: actions/checkout@v2
- name: Download artifacts
uses: actions/download-artifact@v3
- name: Upload coverage data
uses: codecov/codecov-action@v2
with:
name: MariaDB
fail_ci_if_error: true
verbose: true

View File

@@ -17,6 +17,7 @@ pull_request_rules:
- base=version-12
- base=version-14
- base=version-15
- base=version-16
actions:
close:
comment:
@@ -24,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"
@@ -54,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 }}"
@@ -74,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

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

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

3
crowdin.yml Normal file
View File

@@ -0,0 +1,3 @@
files:
- source: /erpnext/locale/main.pot
translation: /erpnext/locale/%two_letters_code%.po

View File

@@ -3,7 +3,7 @@ import inspect
import frappe
__version__ = "15.8.0"
__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

@@ -232,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))
)

View File

@@ -108,6 +108,7 @@
"fieldname": "parent_account",
"fieldtype": "Link",
"ignore_user_permissions": 1,
"in_preview": 1,
"label": "Parent Account",
"oldfieldname": "parent_account",
"oldfieldtype": "Link",
@@ -192,7 +193,7 @@
"idx": 1,
"is_tree": 1,
"links": [],
"modified": "2023-07-20 18:18:44.405723",
"modified": "2024-01-10 04:57:33.681676",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Account",
@@ -249,8 +250,9 @@
],
"search_fields": "account_number",
"show_name_in_global_search": 1,
"show_preview_popup": 1,
"sort_field": "modified",
"sort_order": "ASC",
"states": [],
"track_changes": 1
}
}

View File

@@ -91,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)

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

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

@@ -36,16 +36,16 @@
}
},
"Fixed Assets": {
"Capital Equipments": {
"Capital Equipment": {
"account_type": "Fixed Asset"
},
"Electronic Equipments": {
"Electronic Equipment": {
"account_type": "Fixed Asset"
},
"Furnitures and Fixtures": {
"Furniture and Fixtures": {
"account_type": "Fixed Asset"
},
"Office Equipments": {
"Office Equipment": {
"account_type": "Fixed Asset"
},
"Plants and Machineries": {

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

@@ -23,13 +23,13 @@ def get():
_("Tax Assets"): {"is_group": 1},
},
_("Fixed Assets"): {
_("Capital Equipments"): {"account_type": "Fixed Asset"},
_("Electronic Equipments"): {"account_type": "Fixed Asset"},
_("Furnitures and Fixtures"): {"account_type": "Fixed Asset"},
_("Office Equipments"): {"account_type": "Fixed Asset"},
_("Capital Equipment"): {"account_type": "Fixed Asset"},
_("Electronic Equipment"): {"account_type": "Fixed Asset"},
_("Furniture and Fixtures"): {"account_type": "Fixed Asset"},
_("Office Equipment"): {"account_type": "Fixed Asset"},
_("Plants and Machineries"): {"account_type": "Fixed Asset"},
_("Buildings"): {"account_type": "Fixed Asset"},
_("Softwares"): {"account_type": "Fixed Asset"},
_("Software"): {"account_type": "Fixed Asset"},
_("Accumulated Depreciation"): {"account_type": "Accumulated Depreciation"},
_("CWIP Account"): {
"account_type": "Capital Work in Progress",

View File

@@ -36,13 +36,13 @@ def get():
"account_number": "1100-1600",
},
_("Fixed Assets"): {
_("Capital Equipments"): {"account_type": "Fixed Asset", "account_number": "1710"},
_("Electronic Equipments"): {"account_type": "Fixed Asset", "account_number": "1720"},
_("Furnitures and Fixtures"): {"account_type": "Fixed Asset", "account_number": "1730"},
_("Office Equipments"): {"account_type": "Fixed Asset", "account_number": "1740"},
_("Capital Equipment"): {"account_type": "Fixed Asset", "account_number": "1710"},
_("Electronic Equipment"): {"account_type": "Fixed Asset", "account_number": "1720"},
_("Furniture and Fixtures"): {"account_type": "Fixed Asset", "account_number": "1730"},
_("Office Equipment"): {"account_type": "Fixed Asset", "account_number": "1740"},
_("Plants and Machineries"): {"account_type": "Fixed Asset", "account_number": "1750"},
_("Buildings"): {"account_type": "Fixed Asset", "account_number": "1760"},
_("Softwares"): {"account_type": "Fixed Asset", "account_number": "1770"},
_("Software"): {"account_type": "Fixed Asset", "account_number": "1770"},
_("Accumulated Depreciation"): {
"account_type": "Accumulated Depreciation",
"account_number": "1780",

View File

@@ -119,7 +119,7 @@ class TestAccount(unittest.TestCase):
InvalidAccountMergeError,
merge_account,
"Capital Stock - _TC",
"Softwares - _TC",
"Software - _TC",
)
# Raise error as currency doesn't match

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

@@ -55,7 +55,7 @@ class BankAccount(Document):
def validate_company(self):
if self.is_company_account and not self.company:
frappe.throw(_("Company is manadatory for company account"))
frappe.throw(_("Company is mandatory for company account"))
def validate_iban(self):
"""

View File

@@ -48,11 +48,11 @@ class BankGuarantee(Document):
def on_submit(self):
if not self.bank_guarantee_number:
frappe.throw(_("Enter the Bank Guarantee Number before submittting."))
frappe.throw(_("Enter the Bank Guarantee Number before submitting."))
if not self.name_of_beneficiary:
frappe.throw(_("Enter the name of the Beneficiary before submittting."))
frappe.throw(_("Enter the name of the Beneficiary before submitting."))
if not self.bank:
frappe.throw(_("Enter the name of the bank or lending institution before submittting."))
frappe.throw(_("Enter the name of the bank or lending institution before submitting."))
@frappe.whitelist()

View File

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

@@ -444,6 +444,10 @@ 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)
transaction.validate_duplicate_references()
transaction.allocate_payment_entries()
transaction.update_allocated_amount()
transaction.set_status()
transaction.save()
return transaction

View File

@@ -76,6 +76,7 @@ class TestBankReconciliationTool(AccountsTestMixin, FrappeTestCase):
"deposit": 100,
"bank_account": self.bank_account,
"reference_number": "123",
"currency": "INR",
}
)
.save()

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;

View File

@@ -112,7 +112,8 @@ class AutoMatchbyPartyNameDescription:
for party in parties:
filters = {"status": "Active"} if party == "Employee" else {"disabled": 0}
names = frappe.get_all(party, filters=filters, pluck=party.lower() + "_name")
field = 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):
@@ -131,7 +132,11 @@ class AutoMatchbyPartyNameDescription:
def fuzzy_search_and_return_result(self, party, names, field) -> Union[Tuple, None]:
skip = False
result = process.extract(query=self.get(field), choices=names, scorer=fuzz.token_set_ratio)
result = process.extract(
query=self.get(field),
choices={row.get("name"): row.get("party_name") for row in names},
scorer=fuzz.token_set_ratio,
)
party_name, skip = self.process_fuzzy_result(result)
if not party_name:
@@ -149,14 +154,14 @@ class AutoMatchbyPartyNameDescription:
Returns: Result, Skip (whether or not to discontinue matching)
"""
PARTY, SCORE, CUTOFF = 0, 1, 80
SCORE, PARTY_ID, CUTOFF = 1, 2, 80
if not result or not len(result):
return None, False
first_result = result[0]
if len(result) == 1:
return (first_result[PARTY] if first_result[SCORE] > CUTOFF else None), True
return (first_result[PARTY_ID] if first_result[SCORE] > CUTOFF else None), True
second_result = result[1]
if first_result[SCORE] > CUTOFF:
@@ -165,7 +170,7 @@ class AutoMatchbyPartyNameDescription:
if first_result[SCORE] == second_result[SCORE]:
return None, True
return first_result[PARTY], True
return first_result[PARTY_ID], True
else:
return None, False

View File

@@ -3,12 +3,12 @@
import frappe
from frappe import _
from frappe.model.docstatus import DocStatus
from frappe.model.document import Document
from frappe.utils import flt
from erpnext.controllers.status_updater import StatusUpdater
class BankTransaction(StatusUpdater):
class BankTransaction(Document):
# begin: auto-generated types
# This code is auto-generated. Do not modify anything in this block.
@@ -49,6 +49,33 @@ class BankTransaction(StatusUpdater):
def validate(self):
self.validate_duplicate_references()
self.validate_currency()
def validate_currency(self):
"""
Bank Transaction should be on the same currency as the Bank Account.
"""
if self.currency and self.bank_account:
account = frappe.get_cached_value("Bank Account", self.bank_account, "account")
account_currency = frappe.get_cached_value("Account", account, "account_currency")
if self.currency != account_currency:
frappe.throw(
_(
"Transaction currency: {0} cannot be different from Bank Account({1}) currency: {2}"
).format(
frappe.bold(self.currency), frappe.bold(self.bank_account), frappe.bold(account_currency)
)
)
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"""
@@ -83,12 +110,13 @@ class BankTransaction(StatusUpdater):
self.validate_duplicate_references()
self.allocate_payment_entries()
self.update_allocated_amount()
self.set_status()
def on_cancel(self):
for payment_entry in self.payment_entries:
self.clear_linked_payment_entry(payment_entry, for_cancel=True)
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"
@@ -366,15 +394,17 @@ def set_voucher_clearance(doctype, docname, clearance_date, self):
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
@@ -404,3 +434,21 @@ def unclear_reference_payment(doctype, docname, bt_name):
bt = frappe.get_doc("Bank Transaction", bt_name)
set_voucher_clearance(doctype, docname, None, bt)
return docname
def remove_from_bank_transaction(doctype, docname):
"""Remove a (cancelled) voucher from all Bank Transactions."""
for bt_name in get_reconciled_bank_transactions(doctype, docname):
bt = frappe.get_doc("Bank Transaction", bt_name)
if bt.docstatus == DocStatus.cancelled():
continue
modified = False
for pe in bt.payment_entries:
if pe.payment_document == doctype and pe.payment_entry == docname:
bt.remove(pe)
modified = True
if modified:
bt.save()

View File

@@ -2,10 +2,10 @@
# See license.txt
import json
import unittest
import frappe
from frappe import utils
from frappe.model.docstatus import DocStatus
from frappe.tests.utils import FrappeTestCase
from erpnext.accounts.doctype.bank_reconciliation_tool.bank_reconciliation_tool import (
@@ -81,6 +81,29 @@ class TestBankTransaction(FrappeTestCase):
clearance_date = frappe.db.get_value("Payment Entry", payment.name, "clearance_date")
self.assertFalse(clearance_date)
def test_cancel_voucher(self):
bank_transaction = frappe.get_doc(
"Bank Transaction",
dict(description="1512567 BG/000003025 OPSKATTUZWXXX AT776000000098709849 Herr G"),
)
payment = frappe.get_doc("Payment Entry", dict(party="Mr G", paid_amount=1700))
vouchers = json.dumps(
[
{
"payment_doctype": "Payment Entry",
"payment_name": payment.name,
"amount": bank_transaction.unallocated_amount,
}
]
)
reconcile_vouchers(bank_transaction.name, vouchers)
payment.reload()
payment.cancel()
bank_transaction.reload()
self.assertEqual(bank_transaction.docstatus, DocStatus.submitted())
self.assertEqual(bank_transaction.unallocated_amount, 1700)
self.assertEqual(bank_transaction.payment_entries, [])
# Check if ERPNext can correctly filter a linked payments based on the debit/credit amount
def test_debit_credit_output(self):
bank_transaction = frappe.get_doc(

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

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

@@ -80,7 +80,7 @@
{
"fieldname": "valid_upto",
"fieldtype": "Date",
"label": "Valid Upto"
"label": "Valid Up To"
},
{
"depends_on": "eval: doc.coupon_type == \"Promotional\"",
@@ -115,7 +115,7 @@
"read_only": 1
}
],
"modified": "2019-10-19 14:48:14.602481",
"modified": "2024-01-24 02:20:26.145996",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Coupon Code",

View File

@@ -44,7 +44,7 @@ class ExchangeRateRevaluation(Document):
self.set_total_gain_loss()
def validate_rounding_loss_allowance(self):
if not (self.rounding_loss_allowance >= 0 and self.rounding_loss_allowance < 1):
if self.rounding_loss_allowance < 0 or self.rounding_loss_allowance >= 1:
frappe.throw(_("Rounding Loss Allowance should be between 0 and 1"))
def set_total_gain_loss(self):

View File

@@ -82,11 +82,11 @@
"icon": "fa fa-calendar",
"idx": 1,
"links": [],
"modified": "2020-11-05 12:16:53.081573",
"modified": "2024-01-17 13:06:01.608953",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Fiscal Year",
"owner": "Administrator",
"owner": "Administrator",
"permissions": [
{
"create": 1,
@@ -118,6 +118,14 @@
{
"read": 1,
"role": "Employee"
},
{
"read": 1,
"role": "Accounts Manager"
},
{
"read": 1,
"role": "Stock Manager"
}
],
"show_name_in_global_search": 1,

View File

@@ -39,7 +39,7 @@ def test_record_generator():
]
start = 2012
end = now_datetime().year + 5
end = now_datetime().year + 25
for year in range(start, end):
test_records.append(
{

View File

@@ -21,6 +21,7 @@
"against_voucher_type",
"against_voucher",
"voucher_type",
"voucher_subtype",
"voucher_no",
"voucher_detail_no",
"project",
@@ -278,13 +279,18 @@
"fieldtype": "Currency",
"label": "Credit Amount in Transaction Currency",
"options": "transaction_currency"
},
{
"fieldname": "voucher_subtype",
"fieldtype": "Small Text",
"label": "Voucher Subtype"
}
],
"icon": "fa fa-list",
"idx": 1,
"in_create": 1,
"links": [],
"modified": "2023-08-16 21:38:44.072267",
"modified": "2023-09-26 12:03:23.031733",
"modified_by": "Administrator",
"module": "Accounts",
"name": "GL Entry",

View File

@@ -39,6 +39,8 @@ class GLEntry(Document):
account: DF.Link | None
account_currency: DF.Link | None
against: DF.Text | None
against_link: DF.DynamicLink | None
against_type: DF.Link | None
against_voucher: DF.DynamicLink | None
against_voucher_type: DF.Link | None
company: DF.Link | None
@@ -66,6 +68,7 @@ class GLEntry(Document):
transaction_exchange_rate: DF.Float
voucher_detail_no: DF.Data | None
voucher_no: DF.DynamicLink | None
voucher_subtype: DF.SmallText | None
voucher_type: DF.Link | None
# end: auto-generated types
@@ -432,8 +435,8 @@ def update_outstanding_amt(
def validate_frozen_account(account, adv_adj=None):
frozen_account = frappe.get_cached_value("Account", account, "freeze_account")
if frozen_account == "Yes" and not adv_adj:
frozen_accounts_modifier = frappe.db.get_value(
"Accounts Settings", None, "frozen_accounts_modifier"
frozen_accounts_modifier = frappe.db.get_single_value(
"Accounts Settings", "frozen_accounts_modifier"
)
if not frozen_accounts_modifier:

View File

@@ -154,7 +154,7 @@ frappe.ui.form.on('Invoice Discounting', {
}
});
},
primary_action_label: __('Get Invocies')
primary_action_label: __('Get Invoices')
});
d.show();
},

View File

@@ -8,7 +8,7 @@ frappe.provide("erpnext.journal_entry");
frappe.ui.form.on("Journal Entry", {
setup: function(frm) {
frm.add_fetch("bank_account", "account", "account");
frm.ignore_doctypes_on_cancel_all = ['Sales Invoice', 'Purchase Invoice', 'Journal Entry', "Repost Payment Ledger", 'Asset', 'Asset Movement', 'Asset Depreciation Schedule', "Repost Accounting Ledger", "Unreconcile Payment", "Unreconcile Payment Entries"];
frm.ignore_doctypes_on_cancel_all = ['Sales Invoice', 'Purchase Invoice', 'Journal Entry', "Repost Payment Ledger", 'Asset', 'Asset Movement', 'Asset Depreciation Schedule', "Repost Accounting Ledger", "Unreconcile Payment", "Unreconcile Payment Entries", "Bank Transaction"];
},
refresh: function(frm) {

View File

@@ -186,9 +186,12 @@ class JournalEntry(AccountsController):
def update_advance_paid(self):
advance_paid = frappe._dict()
advance_payment_doctypes = frappe.get_hooks(
"advance_payment_customer_doctypes"
) + frappe.get_hooks("advance_payment_supplier_doctypes")
for d in self.get("accounts"):
if d.is_advance:
if d.reference_type in frappe.get_hooks("advance_payment_doctypes"):
if d.reference_type in advance_payment_doctypes:
advance_paid.setdefault(d.reference_type, []).append(d.reference_name)
for voucher_type, order_list in advance_paid.items():
@@ -631,7 +634,7 @@ class JournalEntry(AccountsController):
)
# set totals
if not d.reference_name in self.reference_totals:
if d.reference_name not in self.reference_totals:
self.reference_totals[d.reference_name] = 0.0
if self.voucher_type not in ("Deferred Revenue", "Deferred Expense"):

View File

@@ -1,12 +1,18 @@
frappe.listview_settings['Journal Entry'] = {
add_fields: ["voucher_type", "posting_date", "total_debit", "company", "user_remark"],
get_indicator: function(doc) {
if(doc.docstatus==0) {
return [__("Draft", "red", "docstatus,=,0")]
} else if(doc.docstatus==2) {
return [__("Cancelled", "grey", "docstatus,=,2")]
} else {
return [__(doc.voucher_type), "blue", "voucher_type,=," + doc.voucher_type]
frappe.listview_settings["Journal Entry"] = {
add_fields: [
"voucher_type",
"posting_date",
"total_debit",
"company",
"user_remark",
],
get_indicator: function (doc) {
if (doc.docstatus === 1) {
return [
__(doc.voucher_type),
"blue",
`voucher_type,=,${doc.voucher_type}`,
];
}
}
},
};

View File

@@ -280,14 +280,13 @@
"fieldtype": "Data",
"hidden": 1,
"label": "Reference Detail No",
"no_copy": 1,
"search_index": 1
"no_copy": 1
}
],
"idx": 1,
"istable": 1,
"links": [],
"modified": "2023-11-23 11:44:25.841187",
"modified": "2023-12-03 23:21:22.205409",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Journal Entry Account",

View File

@@ -140,7 +140,7 @@ class TestLoyaltyProgram(unittest.TestCase):
"Loyalty Point Entry",
{"invoice_type": "Sales Invoice", "invoice": si.name, "customer": si.customer},
)
self.assertEqual(True, not (lpe is None))
self.assertEqual(True, lpe is not None)
# cancelling sales invoice
si.cancel()

View File

@@ -270,7 +270,7 @@ def start_import(invoices):
errors, "<a href='/app/List/Error Log' class='variant-click'>Error Log</a>"
),
indicator="red",
title=_("Error Occured"),
title=_("Error Occurred"),
)
return names

View File

@@ -9,7 +9,7 @@ erpnext.accounts.taxes.setup_tax_filters("Advance Taxes and Charges");
frappe.ui.form.on('Payment Entry', {
onload: function(frm) {
frm.ignore_doctypes_on_cancel_all = ['Sales Invoice', 'Purchase Invoice', 'Journal Entry', 'Repost Payment Ledger','Repost Accounting Ledger', 'Unreconcile Payment', 'Unreconcile Payment Entries'];
frm.ignore_doctypes_on_cancel_all = ['Sales Invoice', 'Purchase Invoice', 'Journal Entry', 'Repost Payment Ledger','Repost Accounting Ledger', 'Unreconcile Payment', 'Unreconcile Payment Entries', "Bank Transaction"];
if(frm.doc.__islocal) {
if (!frm.doc.paid_from) frm.set_value("paid_from_account_currency", null);
@@ -640,7 +640,7 @@ frappe.ui.form.on('Payment Entry', {
get_outstanding_invoices_or_orders: function(frm, get_outstanding_invoices, get_orders_to_be_billed) {
const today = frappe.datetime.get_today();
const fields = [
let fields = [
{fieldtype:"Section Break", label: __("Posting Date")},
{fieldtype:"Date", label: __("From Date"),
fieldname:"from_posting_date", default:frappe.datetime.add_days(today, -30)},
@@ -655,18 +655,29 @@ frappe.ui.form.on('Payment Entry', {
fieldname:"outstanding_amt_greater_than", default: 0},
{fieldtype:"Column Break"},
{fieldtype:"Float", label: __("Less Than Amount"), fieldname:"outstanding_amt_less_than"},
{fieldtype:"Section Break"},
{fieldtype:"Link", label:__("Cost Center"), fieldname:"cost_center", options:"Cost Center",
"get_query": function() {
return {
"filters": {"company": frm.doc.company}
}
];
if (frm.dimension_filters) {
let column_break_insertion_point = Math.ceil((frm.dimension_filters.length)/2);
fields.push({fieldtype:"Section Break"});
frm.dimension_filters.map((elem, idx)=>{
fields.push({
fieldtype: "Link",
label: elem.document_type == "Cost Center" ? "Cost Center" : elem.label,
options: elem.document_type,
fieldname: elem.fieldname || elem.document_type
});
if(idx+1 == column_break_insertion_point) {
fields.push({fieldtype:"Column Break"});
}
},
{fieldtype:"Column Break"},
});
}
fields = fields.concat([
{fieldtype:"Section Break"},
{fieldtype:"Check", label: __("Allocate Payment Amount"), fieldname:"allocate_payment_amount", default:1},
];
]);
let btn_text = "";
@@ -747,6 +758,10 @@ frappe.ui.form.on('Payment Entry', {
args["get_orders_to_be_billed"] = true;
}
if (frm.doc.book_advance_payments_in_separate_party_account) {
args["book_advance_payments_in_separate_party_account"] = true;
}
frappe.flags.allocate_payment_amount = filters['allocate_payment_amount'];
return frappe.call({
@@ -929,7 +944,7 @@ frappe.ui.form.on('Payment Entry', {
if(frm.doc.payment_type == "Receive"
&& frm.doc.base_total_allocated_amount < frm.doc.base_received_amount + total_deductions
&& frm.doc.total_allocated_amount < frm.doc.paid_amount + (total_deductions / frm.doc.source_exchange_rate)) {
unallocated_amount = (frm.doc.base_received_amount + total_deductions + flt(frm.doc.base_total_taxes_and_charges)
unallocated_amount = (frm.doc.base_received_amount + total_deductions - flt(frm.doc.base_total_taxes_and_charges)
- frm.doc.base_total_allocated_amount) / frm.doc.source_exchange_rate;
} else if (frm.doc.payment_type == "Pay"
&& frm.doc.base_total_allocated_amount < frm.doc.base_paid_amount - total_deductions

View File

@@ -223,6 +223,7 @@
"fieldname": "party_balance",
"fieldtype": "Currency",
"label": "Party Balance",
"no_copy": 1,
"print_hide": 1,
"read_only": 1
},
@@ -759,7 +760,7 @@
"table_fieldname": "payment_entries"
}
],
"modified": "2023-11-23 12:07:20.887885",
"modified": "2024-01-08 13:17:15.744754",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Entry",

View File

@@ -13,6 +13,7 @@ from pypika import Case
from pypika.functions import Coalesce, Sum
import erpnext
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_dimensions
from erpnext.accounts.doctype.bank_account.bank_account import (
get_bank_account_details,
get_party_bank_account,
@@ -50,6 +51,88 @@ class InvalidPaymentEntry(ValidationError):
class PaymentEntry(AccountsController):
# 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.advance_taxes_and_charges.advance_taxes_and_charges import (
AdvanceTaxesandCharges,
)
from erpnext.accounts.doctype.payment_entry_deduction.payment_entry_deduction import (
PaymentEntryDeduction,
)
from erpnext.accounts.doctype.payment_entry_reference.payment_entry_reference import (
PaymentEntryReference,
)
amended_from: DF.Link | None
apply_tax_withholding_amount: DF.Check
auto_repeat: DF.Link | None
bank: DF.ReadOnly | None
bank_account: DF.Link | None
bank_account_no: DF.ReadOnly | None
base_paid_amount: DF.Currency
base_paid_amount_after_tax: DF.Currency
base_received_amount: DF.Currency
base_received_amount_after_tax: DF.Currency
base_total_allocated_amount: DF.Currency
base_total_taxes_and_charges: DF.Currency
book_advance_payments_in_separate_party_account: DF.Check
clearance_date: DF.Date | None
company: DF.Link
contact_email: DF.Data | None
contact_person: DF.Link | None
cost_center: DF.Link | None
custom_remarks: DF.Check
deductions: DF.Table[PaymentEntryDeduction]
difference_amount: DF.Currency
letter_head: DF.Link | None
mode_of_payment: DF.Link | None
naming_series: DF.Literal["ACC-PAY-.YYYY.-"]
paid_amount: DF.Currency
paid_amount_after_tax: DF.Currency
paid_from: DF.Link
paid_from_account_balance: DF.Currency
paid_from_account_currency: DF.Link
paid_from_account_type: DF.Data | None
paid_to: DF.Link
paid_to_account_balance: DF.Currency
paid_to_account_currency: DF.Link
paid_to_account_type: DF.Data | None
party: DF.DynamicLink | None
party_balance: DF.Currency
party_bank_account: DF.Link | None
party_name: DF.Data | None
party_type: DF.Link | None
payment_order: DF.Link | None
payment_order_status: DF.Literal["Initiated", "Payment Ordered"]
payment_type: DF.Literal["Receive", "Pay", "Internal Transfer"]
posting_date: DF.Date
print_heading: DF.Link | None
project: DF.Link | None
purchase_taxes_and_charges_template: DF.Link | None
received_amount: DF.Currency
received_amount_after_tax: DF.Currency
reference_date: DF.Date | None
reference_no: DF.Data | None
references: DF.Table[PaymentEntryReference]
remarks: DF.SmallText | None
sales_taxes_and_charges_template: DF.Link | None
source_exchange_rate: DF.Float
status: DF.Literal["", "Draft", "Submitted", "Cancelled"]
target_exchange_rate: DF.Float
tax_withholding_category: DF.Link | None
taxes: DF.Table[AdvanceTaxesandCharges]
title: DF.Data | None
total_allocated_amount: DF.Currency
total_taxes_and_charges: DF.Currency
unallocated_amount: DF.Currency
# end: auto-generated types
def __init__(self, *args, **kwargs):
super(PaymentEntry, self).__init__(*args, **kwargs)
if not self.is_new():
@@ -107,7 +190,7 @@ class PaymentEntry(AccountsController):
def set_liability_account(self):
# Auto setting liability account should only be done during 'draft' status
if self.docstatus > 0:
if self.docstatus > 0 or self.payment_type == "Internal Transfer":
return
if not frappe.db.get_value(
@@ -256,6 +339,7 @@ class PaymentEntry(AccountsController):
"get_outstanding_invoices": True,
"get_orders_to_be_billed": True,
"vouchers": vouchers,
"book_advance_payments_in_separate_party_account": self.book_advance_payments_in_separate_party_account,
},
validate=True,
)
@@ -369,12 +453,12 @@ class PaymentEntry(AccountsController):
self.set(self.party_account_field, party_account)
self.party_account = party_account
if self.paid_from and not (self.paid_from_account_currency or self.paid_from_account_balance):
if self.paid_from and not self.paid_from_account_currency and not self.paid_from_account_balance:
acc = get_account_details(self.paid_from, self.posting_date, self.cost_center)
self.paid_from_account_currency = acc.account_currency
self.paid_from_account_balance = acc.account_balance
if self.paid_to and not (self.paid_to_account_currency or self.paid_to_account_balance):
if self.paid_to and not self.paid_to_account_currency and not self.paid_to_account_balance:
acc = get_account_details(self.paid_to, self.posting_date, self.cost_center)
self.paid_to_account_currency = acc.account_currency
self.paid_to_account_balance = acc.account_balance
@@ -390,8 +474,9 @@ class PaymentEntry(AccountsController):
) -> None:
for d in self.get("references"):
if d.allocated_amount:
if update_ref_details_only_for and (
not (d.reference_doctype, d.reference_name) in update_ref_details_only_for
if (
update_ref_details_only_for
and (d.reference_doctype, d.reference_name) not in update_ref_details_only_for
):
continue
@@ -702,7 +787,7 @@ class PaymentEntry(AccountsController):
self.db_set("status", self.status, update_modified=True)
def set_tax_withholding(self):
if not self.party_type == "Supplier":
if self.party_type != "Supplier":
return
if not self.apply_tax_withholding_amount:
@@ -793,7 +878,7 @@ class PaymentEntry(AccountsController):
self.base_received_amount = self.base_paid_amount
if (
self.paid_from_account_currency == self.paid_to_account_currency
and not self.payment_type == "Internal Transfer"
and self.payment_type != "Internal Transfer"
):
self.received_amount = self.paid_amount
@@ -841,7 +926,10 @@ class PaymentEntry(AccountsController):
def calculate_base_allocated_amount_for_reference(self, d) -> float:
base_allocated_amount = 0
if d.reference_doctype in frappe.get_hooks("advance_payment_doctypes"):
advance_payment_doctypes = frappe.get_hooks(
"advance_payment_customer_doctypes"
) + frappe.get_hooks("advance_payment_supplier_doctypes")
if d.reference_doctype in advance_payment_doctypes:
# When referencing Sales/Purchase Order, use the source/target exchange rate depending on payment type.
# This is so there are no Exchange Gain/Loss generated for such doctypes
@@ -1339,8 +1427,11 @@ class PaymentEntry(AccountsController):
def update_advance_paid(self):
if self.payment_type in ("Receive", "Pay") and self.party:
advance_payment_doctypes = frappe.get_hooks(
"advance_payment_customer_doctypes"
) + frappe.get_hooks("advance_payment_supplier_doctypes")
for d in self.get("references"):
if d.allocated_amount and d.reference_doctype in frappe.get_hooks("advance_payment_doctypes"):
if d.allocated_amount and d.reference_doctype in advance_payment_doctypes:
frappe.get_doc(
d.reference_doctype, d.reference_name, for_update=True
).set_total_advance_paid()
@@ -1587,6 +1678,13 @@ def get_outstanding_reference_documents(args, validate=False):
condition += " and cost_center='%s'" % args.get("cost_center")
accounting_dimensions_filter.append(ple.cost_center == args.get("cost_center"))
# dynamic dimension filters
active_dimensions = get_dimensions()[0]
for dim in active_dimensions:
if args.get(dim.fieldname):
condition += " and {0}='{1}'".format(dim.fieldname, args.get(dim.fieldname))
accounting_dimensions_filter.append(ple[dim.fieldname] == args.get(dim.fieldname))
date_fields_dict = {
"posting_date": ["from_posting_date", "to_posting_date"],
"due_date": ["from_due_date", "to_due_date"],
@@ -1614,11 +1712,16 @@ def get_outstanding_reference_documents(args, validate=False):
outstanding_invoices = []
negative_outstanding_invoices = []
if args.get("book_advance_payments_in_separate_party_account"):
party_account = get_party_account(args.get("party_type"), args.get("party"), args.get("company"))
else:
party_account = args.get("party_account")
if args.get("get_outstanding_invoices"):
outstanding_invoices = get_outstanding_invoices(
args.get("party_type"),
args.get("party"),
get_party_account(args.get("party_type"), args.get("party"), args.get("company")),
party_account,
common_filter=common_filter,
posting_date=posting_and_due_date,
min_outstanding=args.get("outstanding_amt_greater_than"),
@@ -1757,7 +1860,7 @@ def get_split_invoice_rows(invoice: dict, payment_term_template: str, exc_rates:
"Payment Schedule", filters={"parent": invoice.voucher_no}, fields=["*"], order_by="due_date"
)
for payment_term in payment_schedule:
if not payment_term.outstanding > 0.1:
if payment_term.outstanding <= 0.1:
continue
doc_details = exc_rates.get(payment_term.parent, None)
@@ -1815,6 +1918,12 @@ def get_orders_to_be_billed(
if doc and hasattr(doc, "cost_center") and doc.cost_center:
condition = " and cost_center='%s'" % cost_center
# dynamic dimension filters
active_dimensions = get_dimensions()[0]
for dim in active_dimensions:
if filters.get(dim.fieldname):
condition += " and {0}='{1}'".format(dim.fieldname, filters.get(dim.fieldname))
if party_account_currency == company_currency:
grand_total_field = "base_grand_total"
rounded_total_field = "base_rounded_total"

View File

@@ -1251,6 +1251,45 @@ class TestPaymentEntry(FrappeTestCase):
so.reload()
self.assertEqual(so.advance_paid, so.rounded_total)
def test_outstanding_invoices_api(self):
"""
Test if `get_outstanding_reference_documents` fetches invoices in the right order.
"""
customer = create_customer("Max Mustermann", "INR")
create_payment_terms_template()
# SI has an earlier due date and SI2 has a later due date
si = create_sales_invoice(
qty=1, rate=100, customer=customer, posting_date=add_days(nowdate(), -4)
)
si2 = create_sales_invoice(do_not_save=1, qty=1, rate=100, customer=customer)
si2.payment_terms_template = "Test Receivable Template"
si2.submit()
args = {
"posting_date": nowdate(),
"company": "_Test Company",
"party_type": "Customer",
"payment_type": "Pay",
"party": customer,
"party_account": "Debtors - _TC",
}
args.update(
{
"get_outstanding_invoices": True,
"from_posting_date": add_days(nowdate(), -4),
"to_posting_date": add_days(nowdate(), 2),
}
)
references = get_outstanding_reference_documents(args)
self.assertEqual(len(references), 3)
self.assertEqual(references[0].voucher_no, si.name)
self.assertEqual(references[1].voucher_no, si2.name)
self.assertEqual(references[2].voucher_no, si2.name)
self.assertEqual(references[1].payment_term, "Basic Amount Receivable")
self.assertEqual(references[2].payment_term, "Tax Receivable")
def test_receive_payment_from_payable_party_type(self):
"""
Checks GL entries generated while receiving payments from a Payable Party Type.
@@ -1472,45 +1511,6 @@ class TestPaymentEntry(FrappeTestCase):
for field in ["account", "debit", "credit"]:
self.assertEqual(self.expected_gle[row][field], gl_entries[row][field])
def test_outstanding_invoices_api(self):
"""
Test if `get_outstanding_reference_documents` fetches invoices in the right order.
"""
customer = create_customer("Max Mustermann", "INR")
create_payment_terms_template()
# SI has an earlier due date and SI2 has a later due date
si = create_sales_invoice(
qty=1, rate=100, customer=customer, posting_date=add_days(nowdate(), -4)
)
si2 = create_sales_invoice(do_not_save=1, qty=1, rate=100, customer=customer)
si2.payment_terms_template = "Test Receivable Template"
si2.submit()
args = {
"posting_date": nowdate(),
"company": "_Test Company",
"party_type": "Customer",
"payment_type": "Pay",
"party": customer,
"party_account": "Debtors - _TC",
}
args.update(
{
"get_outstanding_invoices": True,
"from_posting_date": add_days(nowdate(), -4),
"to_posting_date": add_days(nowdate(), 2),
}
)
references = get_outstanding_reference_documents(args)
self.assertEqual(len(references), 3)
self.assertEqual(references[0].voucher_no, si.name)
self.assertEqual(references[1].voucher_no, si2.name)
self.assertEqual(references[2].voucher_no, si2.name)
self.assertEqual(references[1].payment_term, "Basic Amount Receivable")
self.assertEqual(references[2].payment_term, "Tax Receivable")
def create_payment_entry(**args):
payment_entry = frappe.new_doc("Payment Entry")

View File

@@ -95,6 +95,8 @@ erpnext.accounts.PaymentReconciliationController = class PaymentReconciliationCo
this.frm.change_custom_button_type(__('Allocate'), null, 'default');
}
this.frm.trigger("set_query_for_dimension_filters");
// check for any running reconciliation jobs
if (this.frm.doc.receivable_payable_account) {
this.frm.call({
@@ -125,6 +127,25 @@ erpnext.accounts.PaymentReconciliationController = class PaymentReconciliationCo
}
}
set_query_for_dimension_filters() {
frappe.call({
method: "erpnext.accounts.doctype.payment_reconciliation.payment_reconciliation.get_queries_for_dimension_filters",
args: {
company: this.frm.doc.company,
},
callback: (r) => {
if (!r.exc && r.message) {
r.message.forEach(x => {
this.frm.set_query(x.fieldname, () => {
return {
'filters': x.filters
};
});
});
}
}
});
}
company() {
this.frm.set_value('party', '');
@@ -229,6 +250,7 @@ erpnext.accounts.PaymentReconciliationController = class PaymentReconciliationCo
this.data = [];
const dialog = new frappe.ui.Dialog({
title: __("Select Difference Account"),
size: 'extra-large',
fields: [
{
fieldname: "allocation",
@@ -252,6 +274,13 @@ erpnext.accounts.PaymentReconciliationController = class PaymentReconciliationCo
in_list_view: 1,
read_only: 1
}, {
fieldtype:'Date',
fieldname:"gain_loss_posting_date",
label: __("Posting Date"),
in_list_view: 1,
reqd: 1,
}, {
fieldtype:'Link',
options: 'Account',
in_list_view: 1,
@@ -285,6 +314,9 @@ erpnext.accounts.PaymentReconciliationController = class PaymentReconciliationCo
args.forEach(d => {
frappe.model.set_value("Payment Reconciliation Allocation", d.docname,
"difference_account", d.difference_account);
frappe.model.set_value("Payment Reconciliation Allocation", d.docname,
"gain_loss_posting_date", d.gain_loss_posting_date);
});
this.reconcile_payment_entries();
@@ -300,6 +332,7 @@ erpnext.accounts.PaymentReconciliationController = class PaymentReconciliationCo
'reference_name': d.reference_name,
'difference_amount': d.difference_amount,
'difference_account': d.difference_account,
'gain_loss_posting_date': d.gain_loss_posting_date
});
}
});

View File

@@ -25,7 +25,9 @@
"invoice_limit",
"payment_limit",
"bank_cash_account",
"accounting_dimensions_section",
"cost_center",
"dimension_col_break",
"sec_break1",
"invoice_name",
"invoices",
@@ -208,6 +210,18 @@
"fieldname": "payment_name",
"fieldtype": "Data",
"label": "Filter on Payment"
},
{
"collapsible": 1,
"collapsible_depends_on": "eval: doc.invoices.length == 0",
"depends_on": "eval:doc.receivable_payable_account",
"fieldname": "accounting_dimensions_section",
"fieldtype": "Section Break",
"label": "Accounting Dimensions Filter"
},
{
"fieldname": "dimension_col_break",
"fieldtype": "Column Break"
}
],
"hide_toolbar": 1,
@@ -215,7 +229,7 @@
"is_virtual": 1,
"issingle": 1,
"links": [],
"modified": "2023-11-17 17:33:55.701726",
"modified": "2023-12-14 13:38:16.264013",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Reconciliation",

View File

@@ -10,6 +10,7 @@ from frappe.query_builder.custom import ConstantColumn
from frappe.utils import flt, fmt_money, get_link_to_form, getdate, nowdate, today
import erpnext
from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import get_dimensions
from erpnext.accounts.doctype.process_payment_reconciliation.process_payment_reconciliation import (
is_any_doc_running,
)
@@ -70,6 +71,7 @@ class PaymentReconciliation(Document):
self.common_filter_conditions = []
self.accounting_dimension_filter_conditions = []
self.ple_posting_date_filter = []
self.dimensions = get_dimensions()[0]
def load_from_db(self):
# 'modified' attribute is required for `run_doc_method` to work properly.
@@ -172,6 +174,14 @@ class PaymentReconciliation(Document):
if self.payment_name:
condition.update({"name": self.payment_name})
# pass dynamic dimension filter values to query builder
dimensions = {}
for x in self.dimensions:
dimension = x.fieldname
if self.get(dimension):
dimensions.update({dimension: self.get(dimension)})
condition.update({"accounting_dimensions": dimensions})
payment_entries = get_advance_payment_entries_for_regional(
self.party_type,
self.party,
@@ -185,66 +195,67 @@ class PaymentReconciliation(Document):
return payment_entries
def get_jv_entries(self):
condition = self.get_conditions()
je = qb.DocType("Journal Entry")
jea = qb.DocType("Journal Entry Account")
conditions = self.get_journal_filter_conditions()
# Dimension filters
for x in self.dimensions:
dimension = x.fieldname
if self.get(dimension):
conditions.append(jea[dimension] == self.get(dimension))
if self.payment_name:
condition += f" and t1.name like '%%{self.payment_name}%%'"
conditions.append(je.name.like(f"%%{self.payment_name}%%"))
if self.get("cost_center"):
condition += f" and t2.cost_center = '{self.cost_center}' "
conditions.append(jea.cost_center == self.cost_center)
dr_or_cr = (
"credit_in_account_currency"
if erpnext.get_party_account_type(self.party_type) == "Receivable"
else "debit_in_account_currency"
)
conditions.append(jea[dr_or_cr].gt(0))
bank_account_condition = (
"t2.against_account like %(bank_cash_account)s" if self.bank_cash_account else "1=1"
if self.bank_cash_account:
conditions.append(jea.against_account.like(f"%%{self.bank_cash_account}%%"))
journal_query = (
qb.from_(je)
.inner_join(jea)
.on(jea.parent == je.name)
.select(
ConstantColumn("Journal Entry").as_("reference_type"),
je.name.as_("reference_name"),
je.posting_date,
je.remark.as_("remarks"),
jea.name.as_("reference_row"),
jea[dr_or_cr].as_("amount"),
jea.is_advance,
jea.exchange_rate,
jea.account_currency.as_("currency"),
jea.cost_center.as_("cost_center"),
)
.where(
(je.docstatus == 1)
& (jea.party_type == self.party_type)
& (jea.party == self.party)
& (jea.account == self.receivable_payable_account)
& (
(jea.reference_type == "")
| (jea.reference_type.isnull())
| (jea.reference_type.isin(("Sales Order", "Purchase Order")))
)
)
.where(Criterion.all(conditions))
.orderby(je.posting_date)
)
limit = f"limit {self.payment_limit}" if self.payment_limit else " "
if self.payment_limit:
journal_query = journal_query.limit(self.payment_limit)
# nosemgrep
journal_entries = frappe.db.sql(
"""
select
"Journal Entry" as reference_type, t1.name as reference_name,
t1.posting_date, t1.remark as remarks, t2.name as reference_row,
{dr_or_cr} as amount, t2.is_advance, t2.exchange_rate,
t2.account_currency as currency, t2.cost_center as cost_center
from
`tabJournal Entry` t1, `tabJournal Entry Account` t2
where
t1.name = t2.parent and t1.docstatus = 1 and t2.docstatus = 1
and t2.party_type = %(party_type)s and t2.party = %(party)s
and t2.account = %(account)s and {dr_or_cr} > 0 {condition}
and (t2.reference_type is null or t2.reference_type = '' or
(t2.reference_type in ('Sales Order', 'Purchase Order')
and t2.reference_name is not null and t2.reference_name != ''))
and (CASE
WHEN t1.voucher_type in ('Debit Note', 'Credit Note')
THEN 1=1
ELSE {bank_account_condition}
END)
order by t1.posting_date
{limit}
""".format(
**{
"dr_or_cr": dr_or_cr,
"bank_account_condition": bank_account_condition,
"condition": condition,
"limit": limit,
}
),
{
"party_type": self.party_type,
"party": self.party,
"account": self.receivable_payable_account,
"bank_cash_account": "%%%s%%" % self.bank_cash_account,
},
as_dict=1,
)
journal_entries = journal_query.run(as_dict=True)
return list(journal_entries)
@@ -298,6 +309,7 @@ class PaymentReconciliation(Document):
min_outstanding=-(self.minimum_payment_amount) if self.minimum_payment_amount else None,
max_outstanding=-(self.maximum_payment_amount) if self.maximum_payment_amount else None,
get_payments=True,
accounting_dimensions=self.accounting_dimension_filter_conditions,
)
for inv in return_outstanding:
@@ -429,6 +441,7 @@ class PaymentReconciliation(Document):
res.difference_amount = self.get_difference_amount(pay, inv, res["allocated_amount"])
res.difference_account = default_exchange_gain_loss_account
res.exchange_rate = inv.get("exchange_rate")
res.update({"gain_loss_posting_date": pay.get("posting_date")})
if pay.get("amount") == 0:
entries.append(res)
@@ -446,8 +459,15 @@ class PaymentReconciliation(Document):
row = self.append("allocation", {})
row.update(entry)
def update_dimension_values_in_allocated_entries(self, res):
for x in self.dimensions:
dimension = x.fieldname
if self.get(dimension):
res[dimension] = self.get(dimension)
return res
def get_allocated_entry(self, pay, inv, allocated_amount):
return frappe._dict(
res = frappe._dict(
{
"reference_type": pay.get("reference_type"),
"reference_name": pay.get("reference_name"),
@@ -463,6 +483,9 @@ class PaymentReconciliation(Document):
}
)
res = self.update_dimension_values_in_allocated_entries(res)
return res
def reconcile_allocations(self, skip_ref_details_update_for_pe=False):
adjust_allocations_for_taxes(self)
dr_or_cr = (
@@ -485,10 +508,10 @@ class PaymentReconciliation(Document):
reconciled_entry.append(payment_details)
if entry_list:
reconcile_against_document(entry_list, skip_ref_details_update_for_pe)
reconcile_against_document(entry_list, skip_ref_details_update_for_pe, self.dimensions)
if dr_or_cr_notes:
reconcile_dr_cr_note(dr_or_cr_notes, self.company)
reconcile_dr_cr_note(dr_or_cr_notes, self.company, self.dimensions)
@frappe.whitelist()
def reconcile(self):
@@ -517,7 +540,7 @@ class PaymentReconciliation(Document):
self.get_unreconciled_entries()
def get_payment_details(self, row, dr_or_cr):
return frappe._dict(
payment_details = frappe._dict(
{
"voucher_type": row.get("reference_type"),
"voucher_no": row.get("reference_name"),
@@ -535,10 +558,17 @@ class PaymentReconciliation(Document):
"allocated_amount": flt(row.get("allocated_amount")),
"difference_amount": flt(row.get("difference_amount")),
"difference_account": row.get("difference_account"),
"difference_posting_date": row.get("gain_loss_posting_date"),
"cost_center": row.get("cost_center"),
}
)
for x in self.dimensions:
if row.get(x.fieldname):
payment_details[x.fieldname] = row.get(x.fieldname)
return payment_details
def check_mandatory_to_fetch(self):
for fieldname in ["company", "party_type", "party", "receivable_payable_account"]:
if not self.get(fieldname):
@@ -646,6 +676,13 @@ class PaymentReconciliation(Document):
if not invoices_to_reconcile:
frappe.throw(_("No records found in Allocation table"))
def build_dimensions_filter_conditions(self):
ple = qb.DocType("Payment Ledger Entry")
for x in self.dimensions:
dimension = x.fieldname
if self.get(dimension):
self.accounting_dimension_filter_conditions.append(ple[dimension] == self.get(dimension))
def build_qb_filter_conditions(self, get_invoices=False, get_return_invoices=False):
self.common_filter_conditions.clear()
self.accounting_dimension_filter_conditions.clear()
@@ -669,40 +706,30 @@ class PaymentReconciliation(Document):
if self.to_payment_date:
self.ple_posting_date_filter.append(ple.posting_date.lte(self.to_payment_date))
def get_conditions(self, get_payments=False):
condition = " and company = '{0}' ".format(self.company)
self.build_dimensions_filter_conditions()
if self.get("cost_center") and get_payments:
condition = " and cost_center = '{0}' ".format(self.cost_center)
def get_journal_filter_conditions(self):
conditions = []
je = qb.DocType("Journal Entry")
jea = qb.DocType("Journal Entry Account")
conditions.append(je.company == self.company)
condition += (
" and posting_date >= {0}".format(frappe.db.escape(self.from_payment_date))
if self.from_payment_date
else ""
)
condition += (
" and posting_date <= {0}".format(frappe.db.escape(self.to_payment_date))
if self.to_payment_date
else ""
)
if self.from_payment_date:
conditions.append(je.posting_date.gte(self.from_payment_date))
if self.to_payment_date:
conditions.append(je.posting_date.lte(self.to_payment_date))
if self.minimum_payment_amount:
condition += (
" and unallocated_amount >= {0}".format(flt(self.minimum_payment_amount))
if get_payments
else " and total_debit >= {0}".format(flt(self.minimum_payment_amount))
)
conditions.append(je.total_debit.gte(self.minimum_payment_amount))
if self.maximum_payment_amount:
condition += (
" and unallocated_amount <= {0}".format(flt(self.maximum_payment_amount))
if get_payments
else " and total_debit <= {0}".format(flt(self.maximum_payment_amount))
)
conditions.append(je.total_debit.lte(self.maximum_payment_amount))
return condition
return conditions
def reconcile_dr_cr_note(dr_cr_notes, company):
def reconcile_dr_cr_note(dr_cr_notes, company, active_dimensions=None):
for inv in dr_cr_notes:
voucher_type = "Credit Note" if inv.voucher_type == "Sales Invoice" else "Debit Note"
@@ -752,6 +779,15 @@ def reconcile_dr_cr_note(dr_cr_notes, company):
}
)
# Credit Note(JE) will inherit the same dimension values as payment
dimensions_dict = frappe._dict()
if active_dimensions:
for dim in active_dimensions:
dimensions_dict[dim.fieldname] = inv.get(dim.fieldname)
jv.accounts[0].update(dimensions_dict)
jv.accounts[1].update(dimensions_dict)
jv.flags.ignore_mandatory = True
jv.flags.ignore_exchange_rate = True
jv.remark = None
@@ -785,9 +821,27 @@ def reconcile_dr_cr_note(dr_cr_notes, company):
inv.against_voucher,
None,
inv.cost_center,
dimensions_dict,
)
@erpnext.allow_regional
def adjust_allocations_for_taxes(doc):
pass
@frappe.whitelist()
def get_queries_for_dimension_filters(company: str = None):
dimensions_with_filters = []
for d in get_dimensions()[0]:
filters = {}
meta = frappe.get_meta(d.document_type)
if meta.has_field("company") and company:
filters.update({"company": company})
if meta.is_tree:
filters.update({"is_group": 0})
dimensions_with_filters.append({"fieldname": d.fieldname, "filters": filters})
return dimensions_with_filters

View File

@@ -19,11 +19,14 @@
"is_advance",
"section_break_5",
"difference_amount",
"gain_loss_posting_date",
"column_break_7",
"difference_account",
"exchange_rate",
"currency",
"cost_center"
"accounting_dimensions_section",
"cost_center",
"dimension_col_break"
],
"fields": [
{
@@ -151,12 +154,26 @@
"fieldtype": "Link",
"label": "Cost Center",
"options": "Cost Center"
},
{
"fieldname": "gain_loss_posting_date",
"fieldtype": "Date",
"label": "Difference Posting Date"
},
{
"fieldname": "accounting_dimensions_section",
"fieldtype": "Section Break",
"label": "Accounting Dimensions"
},
{
"fieldname": "dimension_col_break",
"fieldtype": "Column Break"
}
],
"is_virtual": 1,
"istable": 1,
"links": [],
"modified": "2023-11-17 17:33:38.612615",
"modified": "2023-12-14 13:38:26.104150",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Payment Reconciliation Allocation",

View File

@@ -169,6 +169,13 @@ class PaymentRequest(Document):
elif self.payment_channel == "Phone":
self.request_phone_payment()
advance_payment_doctypes = frappe.get_hooks(
"advance_payment_customer_doctypes"
) + frappe.get_hooks("advance_payment_supplier_doctypes")
if self.reference_doctype in advance_payment_doctypes:
# set advance payment status
ref_doc.set_total_advance_paid()
def request_phone_payment(self):
controller = _get_payment_gateway_controller(self.payment_gateway)
request_amount = self.get_request_amount()
@@ -207,6 +214,14 @@ class PaymentRequest(Document):
self.check_if_payment_entry_exists()
self.set_as_cancelled()
ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
advance_payment_doctypes = frappe.get_hooks(
"advance_payment_customer_doctypes"
) + frappe.get_hooks("advance_payment_supplier_doctypes")
if self.reference_doctype in advance_payment_doctypes:
# set advance payment status
ref_doc.set_total_advance_paid()
def make_invoice(self):
ref_doc = frappe.get_doc(self.reference_doctype, self.reference_name)
if hasattr(ref_doc, "order_type") and getattr(ref_doc, "order_type") == "Shopping Cart":
@@ -234,13 +249,6 @@ class PaymentRequest(Document):
if self.payment_url:
self.db_set("payment_url", self.payment_url)
if (
self.payment_url
or not self.payment_gateway_account
or (self.payment_gateway_account and self.payment_channel == "Phone")
):
self.db_set("status", "Initiated")
def get_payment_url(self):
if self.reference_doctype != "Fees":
data = frappe.db.get_value(
@@ -431,6 +439,15 @@ def make_payment_request(**args):
"""Make payment request"""
args = frappe._dict(args)
if args.dt not in [
"Sales Order",
"Purchase Order",
"Sales Invoice",
"Purchase Invoice",
"POS Invoice",
"Fees",
]:
frappe.throw(_("Payment Requests cannot be created against: {0}").format(frappe.bold(args.dt)))
ref_doc = frappe.get_doc(args.dt, args.dn)
gateway_account = get_gateway_details(args) or frappe._dict()

View File

@@ -371,7 +371,7 @@ class POSInvoice(SalesInvoice):
if d.get("qty") > 0:
frappe.throw(
_(
"Row #{}: You cannot add postive quantities in a return invoice. Please remove item {} to complete the return."
"Row #{}: You cannot add positive quantities in a return invoice. Please remove item {} to complete the return."
).format(d.idx, frappe.bold(d.item_code)),
title=_("Invalid Item"),
)
@@ -765,7 +765,7 @@ def get_pos_reserved_qty(item_code, warehouse):
reserved_qty = (
frappe.qb.from_(p_inv)
.from_(p_item)
.select(Sum(p_item.qty).as_("qty"))
.select(Sum(p_item.stock_qty).as_("stock_qty"))
.where(
(p_inv.name == p_item.parent)
& (IfNull(p_inv.consolidated_invoice, "") == "")
@@ -775,7 +775,7 @@ def get_pos_reserved_qty(item_code, warehouse):
)
).run(as_dict=True)
return reserved_qty[0].qty or 0 if reserved_qty else 0
return flt(reserved_qty[0].stock_qty) if reserved_qty else 0
@frappe.whitelist()
@@ -793,7 +793,7 @@ def make_merge_log(invoices):
invoices = json.loads(invoices)
if len(invoices) == 0:
frappe.throw(_("Atleast one invoice has to be selected."))
frappe.throw(_("At least one invoice has to be selected."))
merge_log = frappe.new_doc("POS Invoice Merge Log")
merge_log.posting_date = getdate(nowdate())

View File

@@ -132,7 +132,7 @@ class POSProfile(Document):
if len(customer_groups) != len(set(customer_groups)):
frappe.throw(
_("Duplicate customer group found in the cutomer group table"),
_("Duplicate customer group found in the customer group table"),
title=_("Duplicate Customer Group"),
)

View File

@@ -339,7 +339,7 @@
{
"fieldname": "valid_upto",
"fieldtype": "Date",
"label": "Valid Upto"
"label": "Valid Up To"
},
{
"fieldname": "col_break1",
@@ -608,7 +608,7 @@
"icon": "fa fa-gift",
"idx": 1,
"links": [],
"modified": "2023-02-14 04:53:34.887358",
"modified": "2024-01-24 02:20:26.145996",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Pricing Rule",

View File

@@ -193,7 +193,7 @@ class PricingRule(Document):
def validate_applicable_for_selling_or_buying(self):
if not self.selling and not self.buying:
throw(_("Atleast one of the Selling or Buying must be selected"))
throw(_("At least one of the Selling or Buying must be selected"))
if not self.selling and self.applicable_for in [
"Customer",
@@ -286,7 +286,7 @@ class PricingRule(Document):
def validate_price_list_with_currency(self):
if self.currency and self.for_price_list:
price_list_currency = frappe.db.get_value("Price List", self.for_price_list, "currency", True)
if not self.currency == price_list_currency:
if self.currency != price_list_currency:
throw(_("Currency should be same as Price List Currency: {0}").format(price_list_currency))
def validate_dates(self):
@@ -579,12 +579,17 @@ def apply_price_discount_rule(pricing_rule, item_details, args):
item_details[field] += pricing_rule.get(field, 0) if pricing_rule else args.get(field, 0)
@frappe.whitelist()
def remove_pricing_rule_for_item(pricing_rules, item_details, item_code=None, rate=None):
from erpnext.accounts.doctype.pricing_rule.utils import (
get_applied_pricing_rules,
get_pricing_rule_items,
)
if isinstance(item_details, str):
item_details = json.loads(item_details)
item_details = frappe._dict(item_details)
for d in get_applied_pricing_rules(pricing_rules):
if not d or not frappe.db.exists("Pricing Rule", d):
continue

View File

@@ -527,7 +527,7 @@ def get_qty_amount_data_for_cumulative(pr_doc, doc, items=None):
values.extend(warehouses)
if items:
condition = " and `tab{child_doc}`.{apply_on} in ({items})".format(
condition += " and `tab{child_doc}`.{apply_on} in ({items})".format(
child_doc=child_doctype, apply_on=apply_on, items=",".join(["%s"] * len(items))
)

View File

@@ -440,7 +440,7 @@ def reconcile(doc: None | str = None) -> None:
# Update the parent doc about the exception
frappe.db.rollback()
traceback = frappe.get_traceback()
traceback = frappe.get_traceback(with_context=True)
if traceback:
message = "Traceback: <br>" + traceback
frappe.db.set_value("Process Payment Reconciliation Log", log, "error_log", message)
@@ -475,7 +475,7 @@ def reconcile(doc: None | str = None) -> None:
frappe.db.set_value("Process Payment Reconciliation", doc, "status", "Completed")
else:
if not (frappe.db.get_value("Process Payment Reconciliation", doc, "status") == "Paused"):
if frappe.db.get_value("Process Payment Reconciliation", doc, "status") != "Paused":
# trigger next batch in job
# generate reconcile job name
allocation = get_next_allocation(log)

View File

@@ -232,7 +232,7 @@
{
"fieldname": "valid_upto",
"fieldtype": "Date",
"label": "Valid Upto"
"label": "Valid Up To"
},
{
"fieldname": "column_break_26",
@@ -278,7 +278,7 @@
}
],
"links": [],
"modified": "2021-05-06 16:20:22.039078",
"modified": "2024-01-24 02:20:26.145996",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Promotional Scheme",

View File

@@ -35,7 +35,7 @@ erpnext.accounts.PurchaseInvoice = class PurchaseInvoice extends erpnext.buying.
super.onload();
// Ignore linked advances
this.frm.ignore_doctypes_on_cancel_all = ['Journal Entry', 'Payment Entry', 'Purchase Invoice', "Repost Payment Ledger", "Repost Accounting Ledger", "Unreconcile Payment", "Unreconcile Payment Entries"];
this.frm.ignore_doctypes_on_cancel_all = ['Journal Entry', 'Payment Entry', 'Purchase Invoice', "Repost Payment Ledger", "Repost Accounting Ledger", "Unreconcile Payment", "Unreconcile Payment Entries", "Serial and Batch Bundle", "Bank Transaction"];
if(!this.frm.doc.__islocal) {
// show credit_to in print format
@@ -408,6 +408,8 @@ erpnext.accounts.PurchaseInvoice = class PurchaseInvoice extends erpnext.buying.
}
on_submit() {
super.on_submit();
$.each(this.frm.doc["items"] || [], function(i, row) {
if(row.purchase_receipt) frappe.model.clear_doc("Purchase Receipt", row.purchase_receipt)
})

View File

@@ -296,6 +296,18 @@ class PurchaseInvoice(BuyingController):
self.reset_default_field_value("set_warehouse", "items", "warehouse")
self.reset_default_field_value("rejected_warehouse", "items", "rejected_warehouse")
self.reset_default_field_value("set_from_warehouse", "items", "from_warehouse")
self.set_percentage_received()
def set_percentage_received(self):
total_billed_qty = 0.0
total_received_qty = 0.0
for row in self.items:
if row.purchase_receipt and row.pr_detail and row.received_qty:
total_billed_qty += row.qty
total_received_qty += row.received_qty
if total_billed_qty and total_received_qty:
self.per_received = total_received_qty / total_billed_qty * 100
def validate_release_date(self):
if self.release_date and getdate(nowdate()) >= getdate(self.release_date):
@@ -371,7 +383,7 @@ class PurchaseInvoice(BuyingController):
check_list = []
for d in self.get("items"):
if d.purchase_order and not d.purchase_order in check_list and not d.purchase_receipt:
if d.purchase_order and d.purchase_order not in check_list and not d.purchase_receipt:
check_list.append(d.purchase_order)
check_on_hold_or_closed_status("Purchase Order", d.purchase_order)
@@ -552,7 +564,7 @@ class PurchaseInvoice(BuyingController):
self.against_expense_account = ",".join(against_accounts)
def po_required(self):
if frappe.db.get_value("Buying Settings", None, "po_required") == "Yes":
if frappe.db.get_single_value("Buying Settings", "po_required") == "Yes":
if frappe.get_value(
"Supplier", self.supplier, "allow_purchase_invoice_creation_without_purchase_order"
@@ -572,7 +584,7 @@ class PurchaseInvoice(BuyingController):
def pr_required(self):
stock_items = self.get_stock_items()
if frappe.db.get_value("Buying Settings", None, "pr_required") == "Yes":
if frappe.db.get_single_value("Buying Settings", "pr_required") == "Yes":
if frappe.get_value(
"Supplier", self.supplier, "allow_purchase_invoice_creation_without_purchase_receipt"
@@ -1084,17 +1096,6 @@ class PurchaseInvoice(BuyingController):
item=item,
)
)
# update gross amount of asset bought through this document
assets = frappe.db.get_all(
"Asset", filters={"purchase_invoice": self.name, "item_code": item.item_code}
)
for asset in assets:
frappe.db.set_value("Asset", asset.name, "gross_purchase_amount", flt(item.valuation_rate))
frappe.db.set_value(
"Asset", asset.name, "purchase_receipt_amount", flt(item.valuation_rate)
)
if (
self.auto_accounting_for_stock
and self.is_opening == "No"
@@ -1119,7 +1120,7 @@ class PurchaseInvoice(BuyingController):
gl_entries.append(
self.get_gl_dict(
{
"account": stock_rbnb,
"account": self.stock_received_but_not_billed,
"against": self.supplier,
"debit": flt(item.item_tax_amount, item.precision("item_tax_amount")),
"remarks": self.remarks or _("Accounting Entry for Stock"),
@@ -1134,12 +1135,25 @@ class PurchaseInvoice(BuyingController):
item.item_tax_amount, item.precision("item_tax_amount")
)
if item.is_fixed_asset and item.landed_cost_voucher_amount:
self.update_gross_purchase_amount_for_linked_assets(item)
def update_gross_purchase_amount_for_linked_assets(self, item):
assets = frappe.db.get_all(
"Asset", filters={"purchase_invoice": self.name, "item_code": item.item_code}
"Asset",
filters={"purchase_invoice": self.name, "item_code": item.item_code},
fields=["name", "asset_quantity"],
)
for asset in assets:
frappe.db.set_value("Asset", asset.name, "gross_purchase_amount", flt(item.valuation_rate))
frappe.db.set_value("Asset", asset.name, "purchase_receipt_amount", flt(item.valuation_rate))
purchase_amount = flt(item.valuation_rate) * asset.asset_quantity
frappe.db.set_value(
"Asset",
asset.name,
{
"gross_purchase_amount": purchase_amount,
"purchase_receipt_amount": purchase_amount,
},
)
def make_stock_adjustment_entry(
self, gl_entries, item, voucher_wise_stock_value, account_currency

View File

@@ -14,7 +14,7 @@ from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_ent
from erpnext.buying.doctype.purchase_order.purchase_order import get_mapped_purchase_invoice
from erpnext.buying.doctype.purchase_order.test_purchase_order import create_purchase_order
from erpnext.buying.doctype.supplier.test_supplier import create_supplier
from erpnext.controllers.accounts_controller import get_payment_terms
from erpnext.controllers.accounts_controller import InvalidQtyError, get_payment_terms
from erpnext.controllers.buying_controller import QtyMismatchError
from erpnext.exceptions import InvalidCurrency
from erpnext.projects.doctype.project.test_project import make_project
@@ -51,6 +51,16 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin):
def tearDown(self):
frappe.db.rollback()
def test_purchase_invoice_qty(self):
pi = make_purchase_invoice(qty=0, do_not_save=True)
with self.assertRaises(InvalidQtyError):
pi.save()
# No error with qty=1
pi.items[0].qty = 1
pi.save()
self.assertEqual(pi.items[0].qty, 1)
def test_purchase_invoice_received_qty(self):
"""
1. Test if received qty is validated against accepted + rejected
@@ -1227,11 +1237,11 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin):
@change_settings("Accounts Settings", {"unlink_payment_on_cancellation_of_invoice": 1})
def test_gain_loss_with_advance_entry(self):
unlink_enabled = frappe.db.get_value(
"Accounts Settings", "Accounts Settings", "unlink_payment_on_cancel_of_invoice"
unlink_enabled = frappe.db.get_single_value(
"Accounts Settings", "unlink_payment_on_cancellation_of_invoice"
)
frappe.db.set_single_value("Accounts Settings", "unlink_payment_on_cancel_of_invoice", 1)
frappe.db.set_single_value("Accounts Settings", "unlink_payment_on_cancellation_of_invoice", 1)
original_account = frappe.db.get_value("Company", "_Test Company", "exchange_gain_loss_account")
frappe.db.set_value(
@@ -1422,7 +1432,7 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin):
pay.cancel()
frappe.db.set_single_value(
"Accounts Settings", "unlink_payment_on_cancel_of_invoice", unlink_enabled
"Accounts Settings", "unlink_payment_on_cancellation_of_invoice", unlink_enabled
)
frappe.db.set_value("Company", "_Test Company", "exchange_gain_loss_account", original_account)
@@ -1985,6 +1995,26 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin):
self.assertEqual(pi.items[0].cost_center, "_Test Cost Center Buying - _TC")
def test_debit_note_without_item(self):
pi = make_purchase_invoice(item_name="_Test Item", qty=10, do_not_submit=True)
pi.items[0].item_code = ""
pi.save()
self.assertFalse(pi.items[0].item_code)
pi.submit()
return_pi = make_purchase_invoice(
item_name="_Test Item",
is_return=1,
return_against=pi.name,
qty=-10,
do_not_save=True,
)
return_pi.items[0].item_code = ""
return_pi.save()
return_pi.submit()
self.assertEqual(return_pi.docstatus, 1)
def set_advance_flag(company, flag, default_account):
frappe.db.set_value(
@@ -2094,7 +2124,7 @@ def make_purchase_invoice(**args):
bundle_id = None
if args.get("batch_no") or args.get("serial_no"):
batches = {}
qty = args.qty or 5
qty = args.qty if args.qty is not None else 5
item_code = args.item or args.item_code or "_Test Item"
if args.get("batch_no"):
batches = frappe._dict({args.batch_no: qty})
@@ -2121,8 +2151,9 @@ def make_purchase_invoice(**args):
"items",
{
"item_code": args.item or args.item_code or "_Test Item",
"item_name": args.item_name,
"warehouse": args.warehouse or "_Test Warehouse - _TC",
"qty": args.qty or 5,
"qty": args.qty if args.qty is not None else 5,
"received_qty": args.received_qty or 0,
"rejected_qty": args.rejected_qty or 0,
"rate": args.rate or 50,

View File

@@ -64,6 +64,7 @@
"warehouse",
"from_warehouse",
"quality_inspection",
"add_serial_batch_bundle",
"serial_and_batch_bundle",
"serial_no",
"col_br_wh",
@@ -913,12 +914,18 @@
"fieldtype": "Link",
"label": "WIP Composite Asset",
"options": "Asset"
},
{
"depends_on": "eval:parent.update_stock === 1",
"fieldname": "add_serial_batch_bundle",
"fieldtype": "Button",
"label": "Add Serial / Batch No"
}
],
"idx": 1,
"istable": 1,
"links": [],
"modified": "2023-12-25 22:00:28.043555",
"modified": "2024-01-21 19:46:25.537861",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Purchase Invoice Item",

View File

@@ -126,7 +126,7 @@
"fieldname": "rate",
"fieldtype": "Float",
"in_list_view": 1,
"label": "Rate",
"label": "Tax Rate",
"oldfieldname": "rate",
"oldfieldtype": "Currency"
},
@@ -230,7 +230,7 @@
"idx": 1,
"istable": 1,
"links": [],
"modified": "2021-08-05 20:04:36.618240",
"modified": "2024-01-14 10:04:36.618240",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Purchase Taxes and Charges",
@@ -239,4 +239,4 @@
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}
}

View File

@@ -43,7 +43,7 @@ def start_payment_ledger_repost(docname=None):
except Exception as e:
frappe.db.rollback()
traceback = frappe.get_traceback()
traceback = frappe.get_traceback(with_context=True)
if traceback:
message = "Traceback: <br>" + traceback
frappe.db.set_value(repost_doc.doctype, repost_doc.name, "repost_error_log", message)

View File

@@ -37,7 +37,8 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends e
super.onload();
this.frm.ignore_doctypes_on_cancel_all = ['POS Invoice', 'Timesheet', 'POS Invoice Merge Log',
'POS Closing Entry', 'Journal Entry', 'Payment Entry', "Repost Payment Ledger", "Repost Accounting Ledger", "Unreconcile Payment", "Unreconcile Payment Entries"];
'POS Closing Entry', 'Journal Entry', 'Payment Entry', "Repost Payment Ledger", "Repost Accounting Ledger", "Unreconcile Payment", "Unreconcile Payment Entries", "Serial and Batch Bundle", "Bank Transaction",
];
if(!this.frm.doc.__islocal && !this.frm.doc.customer && this.frm.doc.debit_to) {
// show debit_to in print format
@@ -197,6 +198,7 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends e
on_submit(doc, dt, dn) {
var me = this;
super.on_submit();
if (frappe.get_route()[0] != 'Form') {
return
}
@@ -895,8 +897,8 @@ frappe.ui.form.on('Sales Invoice', {
frm.events.append_time_log(frm, timesheet, 1.0);
}
});
frm.refresh_field("timesheets");
frm.trigger("calculate_timesheet_totals");
frm.refresh();
},
async get_exchange_rate(frm, from_currency, to_currency) {

View File

@@ -138,6 +138,7 @@
"loyalty_amount",
"column_break_77",
"loyalty_program",
"dont_create_loyalty_points",
"loyalty_redemption_account",
"loyalty_redemption_cost_center",
"contact_and_address_tab",
@@ -1041,8 +1042,7 @@
"label": "Loyalty Program",
"no_copy": 1,
"options": "Loyalty Program",
"print_hide": 1,
"read_only": 1
"print_hide": 1
},
{
"allow_on_submit": 1,
@@ -2162,6 +2162,14 @@
"fieldname": "update_billed_amount_in_delivery_note",
"fieldtype": "Check",
"label": "Update Billed Amount in Delivery Note"
},
{
"default": "0",
"depends_on": "loyalty_program",
"fieldname": "dont_create_loyalty_points",
"fieldtype": "Check",
"label": "Don't Create Loyalty Points",
"no_copy": 1
}
],
"icon": "fa fa-file-text",
@@ -2174,7 +2182,7 @@
"link_fieldname": "consolidated_invoice"
}
],
"modified": "2023-11-23 16:56:29.679499",
"modified": "2024-01-02 17:25:46.027523",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Sales Invoice",

View File

@@ -117,6 +117,7 @@ class SalesInvoice(SellingController):
discount_amount: DF.Currency
dispatch_address: DF.SmallText | None
dispatch_address_name: DF.Link | None
dont_create_loyalty_points: DF.Check
due_date: DF.Date | None
from_date: DF.Date | None
grand_total: DF.Currency
@@ -458,7 +459,7 @@ class SalesInvoice(SellingController):
self.update_billing_status_for_zero_amount_refdoc("Sales Order")
self.check_credit_limit()
if not cint(self.is_pos) == 1 and not self.is_return:
if cint(self.is_pos) != 1 and not self.is_return:
self.update_against_document_in_jv()
self.update_time_sheet(self.name)
@@ -471,7 +472,12 @@ class SalesInvoice(SellingController):
update_linked_doc(self.doctype, self.name, self.inter_company_invoice_reference)
# create the loyalty point ledger entry if the customer is enrolled in any loyalty program
if not self.is_return and not self.is_consolidated and self.loyalty_program:
if (
not self.is_return
and not self.is_consolidated
and self.loyalty_program
and not self.dont_create_loyalty_points
):
self.make_loyalty_point_entry()
elif (
self.is_return and self.return_against and not self.is_consolidated and self.loyalty_program
@@ -586,6 +592,8 @@ class SalesInvoice(SellingController):
"Serial and Batch Bundle",
)
self.delete_auto_created_batches()
def update_status_updater_args(self):
if cint(self.update_stock):
self.status_updater.append(
@@ -1960,9 +1968,9 @@ def validate_inter_company_party(doctype, party, company, inter_company_referenc
if inter_company_reference:
doc = frappe.get_doc(ref_doc, inter_company_reference)
ref_party = doc.supplier if doctype in ["Sales Invoice", "Sales Order"] else doc.customer
if not frappe.db.get_value(partytype, {"represents_company": doc.company}, "name") == party:
if frappe.db.get_value(partytype, {"represents_company": doc.company}, "name") != party:
frappe.throw(_("Invalid {0} for Inter Company Transaction.").format(_(partytype)))
if not frappe.get_cached_value(ref_partytype, ref_party, "represents_company") == company:
if frappe.get_cached_value(ref_partytype, ref_party, "represents_company") != company:
frappe.throw(_("Invalid Company for Inter Company Transaction."))
elif frappe.db.get_value(partytype, {"name": party, internal: 1}, "name") == party:
@@ -1972,7 +1980,7 @@ def validate_inter_company_party(doctype, party, company, inter_company_referenc
filters={"parenttype": partytype, "parent": party},
)
companies = [d.company for d in companies]
if not company in companies:
if company not in companies:
frappe.throw(
_("{0} not allowed to transact with {1}. Please change the Company.").format(
_(partytype), company

View File

@@ -23,7 +23,7 @@ from erpnext.assets.doctype.asset.test_asset import create_asset, create_asset_d
from erpnext.assets.doctype.asset_depreciation_schedule.asset_depreciation_schedule import (
get_depr_schedule,
)
from erpnext.controllers.accounts_controller import update_invoice_status
from erpnext.controllers.accounts_controller import InvalidQtyError, update_invoice_status
from erpnext.controllers.taxes_and_totals import get_itemised_tax_breakup_data
from erpnext.exceptions import InvalidAccountCurrency, InvalidCurrency
from erpnext.selling.doctype.customer.test_customer import get_customer_dict
@@ -72,6 +72,16 @@ class TestSalesInvoice(FrappeTestCase):
def tearDownClass(self):
unlink_payment_on_cancel_of_invoice(0)
def test_sales_invoice_qty(self):
si = create_sales_invoice(qty=0, do_not_save=True)
with self.assertRaises(InvalidQtyError):
si.save()
# No error with qty=1
si.items[0].qty = 1
si.save()
self.assertEqual(si.items[0].qty, 1)
def test_timestamp_change(self):
w = frappe.copy_doc(test_records[0])
w.docstatus = 0
@@ -1414,10 +1424,11 @@ class TestSalesInvoice(FrappeTestCase):
def test_serialized_cancel(self):
si = self.test_serialized()
si.cancel()
si.reload()
serial_nos = get_serial_nos_from_bundle(si.get("items")[0].serial_and_batch_bundle)
si.cancel()
self.assertEqual(
frappe.db.get_value("Serial No", serial_nos[0], "warehouse"), "_Test Warehouse - _TC"
)
@@ -2520,12 +2531,6 @@ class TestSalesInvoice(FrappeTestCase):
"stock_received_but_not_billed",
"Stock Received But Not Billed - _TC1",
)
frappe.db.set_value(
"Company",
"_Test Company 1",
"expenses_included_in_valuation",
"Expenses Included In Valuation - _TC1",
)
# begin test
si = create_sales_invoice(
@@ -3641,7 +3646,7 @@ def create_sales_invoice(**args):
bundle_id = None
if si.update_stock and (args.get("batch_no") or args.get("serial_no")):
batches = {}
qty = args.qty or 1
qty = args.qty if args.qty is not None else 1
item_code = args.item or args.item_code or "_Test Item"
if args.get("batch_no"):
batches = frappe._dict({args.batch_no: qty})
@@ -3673,7 +3678,7 @@ def create_sales_invoice(**args):
"description": args.description or "_Test Item",
"warehouse": args.warehouse or "_Test Warehouse - _TC",
"target_warehouse": args.target_warehouse,
"qty": args.qty or 1,
"qty": args.qty if args.qty is not None else 1,
"uom": args.uom or "Nos",
"stock_uom": args.uom or "Nos",
"rate": args.rate if args.get("rate") is not None else 100,

View File

@@ -81,6 +81,7 @@
"warehouse",
"target_warehouse",
"quality_inspection",
"pick_serial_and_batch",
"serial_and_batch_bundle",
"batch_no",
"incoming_rate",
@@ -897,12 +898,18 @@
"options": "Serial and Batch Bundle",
"print_hide": 1,
"search_index": 1
},
{
"depends_on": "eval:parent.update_stock === 1",
"fieldname": "pick_serial_and_batch",
"fieldtype": "Button",
"label": "Pick Serial / Batch No"
}
],
"idx": 1,
"istable": 1,
"links": [],
"modified": "2023-11-14 18:34:10.479329",
"modified": "2023-12-29 13:03:14.121298",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Sales Invoice Item",

View File

@@ -108,7 +108,7 @@
"fieldname": "rate",
"fieldtype": "Float",
"in_list_view": 1,
"label": "Rate",
"label": "Tax Rate",
"oldfieldname": "rate",
"oldfieldtype": "Currency"
},
@@ -218,7 +218,7 @@
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
"modified": "2022-10-17 13:08:17.776528",
"modified": "2022-10-18 13:08:17.776528",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Sales Taxes and Charges",
@@ -227,4 +227,4 @@
"sort_field": "modified",
"sort_order": "ASC",
"states": []
}
}

View File

@@ -142,12 +142,12 @@ class ShippingRule(Document):
}
if self.shipping_rule_type == "Selling":
# check if not applied on purchase
if not doc.meta.get_field("taxes").options == "Sales Taxes and Charges":
if doc.meta.get_field("taxes").options != "Sales Taxes and Charges":
frappe.throw(_("Shipping rule only applicable for Selling"))
shipping_charge["doctype"] = "Sales Taxes and Charges"
else:
# check if not applied on sales
if not doc.meta.get_field("taxes").options == "Purchase Taxes and Charges":
if doc.meta.get_field("taxes").options != "Purchase Taxes and Charges":
frappe.throw(_("Shipping rule only applicable for Buying"))
shipping_charge["doctype"] = "Purchase Taxes and Charges"

View File

@@ -51,7 +51,7 @@
"fieldtype": "Select",
"label": "Status",
"no_copy": 1,
"options": "\nTrialling\nActive\nPast Due Date\nCancelled\nUnpaid\nCompleted",
"options": "\nTrialing\nActive\nPast Due Date\nCancelled\nUnpaid\nCompleted",
"read_only": 1
},
{
@@ -148,13 +148,13 @@
{
"fieldname": "additional_discount_percentage",
"fieldtype": "Percent",
"label": "Additional DIscount Percentage"
"label": "Additional Discount Percentage"
},
{
"collapsible": 1,
"fieldname": "additional_discount_amount",
"fieldtype": "Currency",
"label": "Additional DIscount Amount"
"label": "Additional Discount Amount"
},
{
"collapsible": 1,
@@ -267,7 +267,7 @@
"link_fieldname": "subscription"
}
],
"modified": "2023-09-18 17:48:21.900252",
"modified": "2024-01-24 02:20:26.145996",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Subscription",

View File

@@ -16,6 +16,7 @@ from frappe.utils.data import (
date_diff,
flt,
get_last_day,
get_link_to_form,
getdate,
nowdate,
)
@@ -77,9 +78,7 @@ class Subscription(Document):
purchase_tax_template: DF.Link | None
sales_tax_template: DF.Link | None
start_date: DF.Date | None
status: DF.Literal[
"", "Trialling", "Active", "Past Due Date", "Cancelled", "Unpaid", "Completed"
]
status: DF.Literal["", "Trialing", "Active", "Past Due Date", "Cancelled", "Unpaid", "Completed"]
submit_invoice: DF.Check
trial_period_end: DF.Date | None
trial_period_start: DF.Date | None
@@ -232,7 +231,7 @@ class Subscription(Document):
Sets the status of the `Subscription`
"""
if self.is_trialling():
self.status = "Trialling"
self.status = "Trialing"
elif (
self.status == "Active" and self.end_date and getdate(posting_date) > getdate(self.end_date)
):
@@ -317,6 +316,37 @@ class Subscription(Document):
if self.is_new():
self.set_subscription_status()
self.validate_party_billing_currency()
def validate_party_billing_currency(self):
"""
Subscription should be of the same currency as the Party's default billing currency or company default.
"""
if self.party:
party_billing_currency = frappe.get_cached_value(
self.party_type, self.party, "default_currency"
) or frappe.get_cached_value("Company", self.company, "default_currency")
plans = [x.plan for x in self.plans]
subscription_plan_currencies = frappe.db.get_all(
"Subscription Plan", filters={"name": ("in", plans)}, fields=["name", "currency"]
)
unsupported_plans = []
for x in subscription_plan_currencies:
if x.currency != party_billing_currency:
unsupported_plans.append("{0}".format(get_link_to_form("Subscription Plan", x.name)))
if unsupported_plans:
unsupported_plans = [
_(
"Below Subscription Plans are of different currency to the party default billing currency/Company currency: {0}"
).format(frappe.bold(party_billing_currency))
] + unsupported_plans
frappe.throw(
unsupported_plans, frappe.ValidationError, "Unsupported Subscription Plans", as_list=True
)
def validate_trial_period(self) -> None:
"""
Runs sanity checks on trial period dates for the `Subscription`
@@ -356,18 +386,20 @@ class Subscription(Document):
self,
from_date: Optional[Union[str, datetime.date]] = None,
to_date: Optional[Union[str, datetime.date]] = None,
posting_date: Optional[Union[str, datetime.date]] = None,
) -> Document:
"""
Creates a `Invoice` for the `Subscription`, updates `self.invoices` and
saves the `Subscription`.
Backwards compatibility
"""
return self.create_invoice(from_date=from_date, to_date=to_date)
return self.create_invoice(from_date=from_date, to_date=to_date, posting_date=posting_date)
def create_invoice(
self,
from_date: Optional[Union[str, datetime.date]] = None,
to_date: Optional[Union[str, datetime.date]] = None,
posting_date: Optional[Union[str, datetime.date]] = None,
) -> Document:
"""
Creates a `Invoice`, submits it and returns it
@@ -385,11 +417,13 @@ class Subscription(Document):
invoice = frappe.new_doc(self.invoice_document_type)
invoice.company = company
invoice.set_posting_time = 1
invoice.posting_date = (
self.current_invoice_start
if self.generate_invoice_at == "Beginning of the current subscription period"
else self.current_invoice_end
)
if self.generate_invoice_at == "Beginning of the current subscription period":
invoice.posting_date = self.current_invoice_start
elif self.generate_invoice_at == "Days before the current subscription period":
invoice.posting_date = posting_date or self.current_invoice_start
else:
invoice.posting_date = self.current_invoice_end
invoice.cost_center = self.cost_center
@@ -413,6 +447,7 @@ class Subscription(Document):
# Subscription is better suited for service items. I won't update `update_stock`
# for that reason
items_list = self.get_items_from_plans(self.plans, is_prorate())
for item in items_list:
item["cost_center"] = self.cost_center
invoice.append("items", item)
@@ -556,8 +591,10 @@ class Subscription(Document):
if not self.is_current_invoice_generated(
self.current_invoice_start, self.current_invoice_end
) and self.can_generate_new_invoice(posting_date):
self.generate_invoice()
self.generate_invoice(posting_date=posting_date)
self.update_subscription_period(add_days(self.current_invoice_end, 1))
elif posting_date and getdate(posting_date) > getdate(self.current_invoice_end):
self.update_subscription_period()
if self.cancel_at_period_end and (
getdate(posting_date) >= getdate(self.current_invoice_end)
@@ -676,7 +713,7 @@ class Subscription(Document):
to_generate_invoice = (
True
if self.status == "Active"
and not self.generate_invoice_at == "Beginning of the current subscription period"
and self.generate_invoice_at != "Beginning of the current subscription period"
else False
)
self.status = "Cancelled"
@@ -694,7 +731,7 @@ class Subscription(Document):
subscription and the `Subscription` will lose all the history of generated invoices
it has.
"""
if not self.status == "Cancelled":
if self.status != "Cancelled":
frappe.throw(_("You cannot restart a Subscription that is not cancelled."), InvoiceNotCancelled)
self.status = "Active"

View File

@@ -1,7 +1,7 @@
frappe.listview_settings['Subscription'] = {
get_indicator: function(doc) {
if(doc.status === 'Trialling') {
return [__("Trialling"), "green"];
if(doc.status === 'Trialing') {
return [__("Trialing"), "green"];
} else if(doc.status === 'Active') {
return [__("Active"), "green"];
} else if(doc.status === 'Completed') {

View File

@@ -46,7 +46,7 @@ class TestSubscription(FrappeTestCase):
get_date_str(subscription.current_invoice_end),
)
self.assertEqual(subscription.invoices, [])
self.assertEqual(subscription.status, "Trialling")
self.assertEqual(subscription.status, "Trialing")
def test_create_subscription_without_trial_with_correct_period(self):
subscription = create_subscription()
@@ -460,11 +460,13 @@ class TestSubscription(FrappeTestCase):
self.assertEqual(len(subscription.invoices), 1)
def test_multi_currency_subscription(self):
party = "_Test Subscription Customer"
frappe.db.set_value("Customer", party, "default_currency", "USD")
subscription = create_subscription(
start_date="2018-01-01",
generate_invoice_at="Beginning of the current subscription period",
plans=[{"plan": "_Test Plan Multicurrency", "qty": 1}],
party="_Test Subscription Customer",
plans=[{"plan": "_Test Plan Multicurrency", "qty": 1, "currency": "USD"}],
party=party,
)
subscription.process()
@@ -528,13 +530,21 @@ class TestSubscription(FrappeTestCase):
def make_plans():
create_plan(plan_name="_Test Plan Name", cost=900)
create_plan(plan_name="_Test Plan Name 2", cost=1999)
create_plan(plan_name="_Test Plan Name", cost=900, currency="INR")
create_plan(plan_name="_Test Plan Name 2", cost=1999, currency="INR")
create_plan(
plan_name="_Test Plan Name 3", cost=1999, billing_interval="Day", billing_interval_count=14
plan_name="_Test Plan Name 3",
cost=1999,
billing_interval="Day",
billing_interval_count=14,
currency="INR",
)
create_plan(
plan_name="_Test Plan Name 4", cost=20000, billing_interval="Month", billing_interval_count=3
plan_name="_Test Plan Name 4",
cost=20000,
billing_interval="Month",
billing_interval_count=3,
currency="INR",
)
create_plan(
plan_name="_Test Plan Multicurrency", cost=50, billing_interval="Month", currency="USD"

View File

@@ -41,7 +41,8 @@
"fieldname": "currency",
"fieldtype": "Link",
"label": "Currency",
"options": "Currency"
"options": "Currency",
"reqd": 1
},
{
"fieldname": "column_break_3",
@@ -148,10 +149,11 @@
}
],
"links": [],
"modified": "2021-12-10 15:24:15.794477",
"modified": "2024-01-14 17:59:34.687977",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Subscription Plan",
"naming_rule": "By fieldname",
"owner": "Administrator",
"permissions": [
{
@@ -193,5 +195,6 @@
],
"sort_field": "modified",
"sort_order": "DESC",
"states": [],
"track_changes": 1
}

View File

@@ -24,7 +24,7 @@ class SubscriptionPlan(Document):
billing_interval_count: DF.Int
cost: DF.Currency
cost_center: DF.Link | None
currency: DF.Link | None
currency: DF.Link
item: DF.Link
payment_gateway: DF.Link | None
plan_name: DF.Data

View File

@@ -37,7 +37,7 @@ class UnreconcilePayment(Document):
def validate(self):
self.supported_types = ["Payment Entry", "Journal Entry"]
if not self.voucher_type in self.supported_types:
if self.voucher_type not in self.supported_types:
frappe.throw(_("Only {0} are supported").format(comma_and(self.supported_types)))
@frappe.whitelist()

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