Features
- feat: Closing balance for period closing and reporting by @deepeshgarg007 in #34257
- feat: Ledger Preview by @deepeshgarg007 in #35650
- feat: Stock Reservation against Sales Order by @s-aga-r in #34805
- feat: Serial and Batch reservation by @s-aga-r in #35946
- feat: Serial No Normalization and Serial Batch Bundle by @rohitwaghchaure in #34564
- feat: Multi-level BOM Creator by @rohitwaghchaure in #36494
- feat(RFQ): optionally send document print by @barredterra in #36363
- feat(pos): multiple item prices by @ssiyad in #33005
- feat: subscription refactor by @hrwX in #30963
- feat: Add a process document for Subscription by @deepeshgarg007 in #37126
- feat: Asset capitalization by @SaiFi0102 in #27466
- feat: Payment Ledger report by @ruthra-kumar in #32651
- feat: Financial Ratio Report by @RitvikSardana in #36130
- feat: Editable Sales Invoice by @deepeshgarg007 in #32625
- feat: editable purchase invoice by @GursheenK in #37194
- feat: Demo setup by @deepeshgarg007 in #35777
- feat: Record Advance Payment as a liability by @GursheenK in #35609
- feat: Item Wise TDS Calculation by @niralisatapara in #32646
- feat: Payments based dunning by @marination in #35689
- feat: add local holidays by @barredterra in #36116
- feat: Support for Alternative Items in Quotation by @marination in #33874
- feat: utility to repost accounting ledgers without cancellation by @ruthra-kumar in #36469
- feat: Incoterms in buying and selling by @barredterra in #33022
- feat: Provision to auto create Exchange Rate Revaluation by @ruthra-kumar in #36051
- feat: separating depreciation schedule from assets into a new doc by @anandbaburajan in #32933
- feat: asset activity by @anandbaburajan in #36391
- feat: Tab Breaks in all Sales and Purchase cycle transactions by @nabinhait in #32408
- feat: daily asset depreciation method [dev] by @anandbaburajan in #36588
- feat(RFQ): make email message fully configurable by @barredterra in #36353
- feat(RFQ): make sending attachments configurable by @barredterra in #36359
- feat(stock): Audible indication of barcode scan status. by @dj12djdjs in #32245
- feat(stock): Support more barcodes in an item by validate the barcode with the barcodenumber module by @developsessions in #33863
- feat: Provision to send Accounts Receivable Reports using Process SOA by @GursheenK in #35789
- feat: Auto allocate advance payments only against orders by @deepeshgarg007 in #34727
- feat: Unreconcile Payments by @ruthra-kumar in #36879
- feat: Service Item and Finished Good Map by @s-aga-r in #36647
- feat: Auto set Party in Bank Transaction by @marination in #34675
- feat: Reconcile Payments in background by @ruthra-kumar in #34596
- feat:
Update Items
for Subcontract Purchase Order by @s-aga-r in #36752
Performance
- perf: Closing balance for period closing and reporting by @deepeshgarg007 in #34257
- perf(invoice): Faster return amount query by @ankush in #36556
- perf: avoid full table scan in sle count check by @ankush in #36428
- perf: improve reconciliation performance for JE with 100s of accounts by @ruthra-kumar in #33661
- perf: Duplicate queries for UOM by @ankush in #35744
- perf: Gross Profit report will fetch SLE's on demand and memoize by @ruthra-kumar in #34022
- perf: Ignore cancelled pick lists while fetching picked items by @ankush in #35737
- perf: Index pick list field in stock entry and DN by @ankush in #35738
- perf: Index sales_order_item in Pick list item by @ankush in #35735
- perf: Journal Entries by @s-aga-r in #34918
- perf: Stock Entry (Material Transfer) by @s-aga-r in #34313
- perf: add indexes on payment entry reference by @ankush in #33288
- perf: asset depreciation entry posting by @anandbaburajan in #36555
- perf: cache and simplify queries for holiday list by @ruchamahabal in #35315
- perf: cache barcode scan result by @dj12djdjs in #32629
- perf: don't use ifnull where it's not required by @ankush in #36336
- perf: duplicate queries while checking prevdoc by @ankush in #35746
- perf: enabled indexing for voucher no in SABB by @rohitwaghchaure in #36688
- perf: improve item wise register reports (backport #35908) by @mergify in #35911
- perf: improve responsiveness of payment reconciliation tool by @ruthra-kumar in #36650
- perf: index
dn_detail
inDelivery Note Item
by @s-aga-r in #37528 - perf: index
purpose
inStock Entry
by @s-aga-r in #35782 - perf: index against_sales_invoice field on DN items by @ankush in #34509
- perf: index in
Item
andItem Variant Attribute
by @s-aga-r in #36133 - perf: pull latest details only for referenced vouchers by @ruthra-kumar in #36649
- perf: use
LEFT JOIN
instead ofNOT EXISTS
by @s-aga-r in #36221 - perf: use
get_cached_value
instead ofdb.get_value
in accounts module by @DaizyModi in #32836 - perf: use
get_cached_value
instead ofdb.get_value
in controllers by @DaizyModi in #32776
Refactors
- refactor!: drop ecommerce in favor of webshop by @ssiyad in #33265
- refactor!: Lower all perm to
Desk User
by @ankush in #36856 - refactor!: Drop custom item quick entry by @ankush in #35462
- refactor!: Move TaxJar integration from ERPNext by @deepeshgarg007 in #33066
- refactor!: Remove Regionalisation of France as now there is an App ERPNext France to manage it by @FHenry in #37229
- refactor!: Remove custom cashflow report mapper by @deepeshgarg007 in #35523
- refactor!: Remove exotel by @surajshetty3416 in #36131
- refactor!: move payment gateways to the payments app by @s-aga-r in #37182
- refactor!: remove
woocommerce
integration by @s-aga-r in #37015 - refactor!: remove hierarchy charts by @ruchamahabal in #35709
- refactor!: remove social media post module by @ankush in #37087
- refactor!: removing loan management module by @anandbaburajan in #35522
- refactor(Gross Profit): simplify group by invoice logic by @ruthra-kumar in #35112
- refactor(UI): clean up portal pages by @sumaiya2908 in #29018
- refactor(bank reconciliation tool): currency symbol fix and concurrent usage by @ruthra-kumar in #34501
- refactor(minor): delete linked payment ledger entries on source doc deletion by @ruthra-kumar in #32137
- refactor: stock balance report by @rohitwaghchaure in #35348
- refactor(patch): remove inner join to improve SQL performance by @ruthra-kumar in #34387
- refactor(region): Splitting of KSA(Saudi Arabia) Region from ERPNext by @sankarsubramaniankvs in #33895
- refactor: 'is system generated' field and better remarks in Journal Entry by @ruthra-kumar in #36573
- refactor: BOM Stock Calculated report, fix required-qty by @s-aga-r in #32150
- refactor: Bank Reconciliation Tool APIs by @marination in #36893
- refactor: Customer and Supplier Ledger summary will have hidden fields for better handling of user permission by @ruthra-kumar in #33402
- refactor: Exchange rate revaluation to handle accounts with zero account balance by @ruthra-kumar in #33165
- refactor: Leave Application should not be in hook.py by @kittiu in #36008
- refactor: Packing Slip by @s-aga-r in #35108
- refactor: Remove usage of deprecated methods by @ankush in #32914
- refactor: Sales Partner column in AR and AR Summary Report by @ruthra-kumar in #33537
- refactor: Use
db.set_single_value
by @ankush in #35668 - refactor: Workspace cleanup by @nabinhait in #35409
- refactor:
Batch Item Expiry Status
report by @s-aga-r in #36106 - refactor: add validation for Advances in SI/PI by @ruthra-kumar in #37459
- refactor: additional filters and columns in Payment Ledger report by @ruthra-kumar in #34577
- refactor: additional filters on Payment Terms status report by @ruthra-kumar in #32744
- refactor: apply terms based validation only on sales/purchase doctypes by @ruthra-kumar in #36261
- refactor: asset depr schedule and remove unnecessary depr method by @anandbaburajan in #34434
- refactor: back calculate total amt for TDS by @ruthra-kumar in #37478
- refactor: better date filters in
Get Outstanding Invoices
dialog by @ruthra-kumar in #37127 - refactor: block Payment Entry as ref in Journals from UI by @ruthra-kumar in #37294
- refactor: booking exchange gain/loss amount through journal by @ruthra-kumar in #35644
- refactor: button in Payment Entry to filter associated Journals by @ruthra-kumar in #37200
- refactor: button to toggle parent doc cost center preference for rounding adjustment amount by @ruthra-kumar in #35091
- refactor: checkbox to toggle exchange rate inheritence in PO->PI by @ruthra-kumar in #37330
- refactor: clear records in batches in 'Transaction Deletion Record' by @ruthra-kumar in #34109
- refactor: convert heatmap queries to QB by @ankush in #33581
- refactor: cr/dr note should be standalone even when created from another invoice by @ruthra-kumar in #35330
- refactor: disable discount accounting on Buying module(PI) by @ruthra-kumar in #31934
- refactor: don't book exchange gain/loss for sales/purchase orders by @ruthra-kumar in #35061
- refactor: filter only immediate upcoming payment term for each SO by @ruthra-kumar in #33923
- refactor: for non-repost fields, don't validate by @ruthra-kumar in #37436
- refactor: gain/loss je should use same posting date as payment by @ruthra-kumar in #36950
- refactor: get default contact or address by @barredterra in #35248
- refactor: ignore PLE's on PCV cancellation by @ruthra-kumar in #37202
- refactor: import 'financial_statements.js' in erpnext bundle by @ruthra-kumar in #37393
- refactor: increase precision for current exc rate in Exchange Rate Revaluation by @ruthra-kumar in #35837
- refactor: install fixtures by @barredterra in #33964
- refactor: make payments app a soft dependency by @ankush in #33245
- refactor: more generic filters in Accounts Receivable report by @ruthra-kumar in #37131
- refactor: move
unreconcile
button into a drop down by @ruthra-kumar in #37105 - refactor: picked qty in sales order item by @rohitwaghchaure in #33680
- refactor: readd remarks field to payment ledger by @ruthra-kumar in #32009
- refactor: refactor set_missing_values and set_missing_ref_details in Payment Entry by @ruthra-kumar in #34922
- refactor: remove
Recalculate Rate
from SCR Item by @s-aga-r in #36929 - refactor: remove
balance
fromWarehouse Tree
by @s-aga-r in #33199 - refactor: remove duplicate entries on remarks migration patch by @ruthra-kumar in #32491
- refactor: remove frappe.dynamic_link by @barredterra in #35096
- refactor: remove hrms app translations by @ruchamahabal in #36343
- refactor: rename loan type to loan product in lending by @anandbaburajan in #37325
- refactor: revamp process loss feature & added tab breaks by @rohitwaghchaure in #33524
- refactor: rewrite SQL queries to QB @s-aga-r in #32161, #32233, #32153, #32295, #32297, #32304, #32347, #32346, #32280, #32324, #34632, #34117, #32937, #33679, #32527, #32520
, #32662 - refactor: search queries by @ankush in #33004
- refactor: separate table added to track scheduling in the job card. by @rohitwaghchaure in #35921
- refactor: simplify exchange logic on cr/dr note reconciliation by @ruthra-kumar in #35882
- refactor: split ple creation function into two by @ruthra-kumar in #32598
- refactor: toggle for negative item rates in Selling Settings by @ruthra-kumar in #36642
- refactor: toggle merging similar ledger entries in JE by @ruthra-kumar in #34838
- refactor: use account in key while grouping voucher in ar/ap report by @ruthra-kumar in #37549
- refactor: use redis-py instead of redisearch by @ankush in #31980
- refactor: use DocStatus by @barredterra in #33594
New Contributors
- @nishibakabeer made their first contribution in #32310
- @shashankshirke made their first contribution in #32262
- @djpalshikar made their first contribution in #32049
- @monolithonadmin made their first contribution in #32456
- @codezart made their first contribution in #32551
- @ihesamyou made their first contribution in #32759
- @niralisatapara made their first contribution in #32646
- @ssiyad made their first contribution in #33009
- @QwQuan made their first contribution in #33248
- @Gokulnath17 made their first contribution in #33329
- @artykbasar made their first contribution in #33286
- @kunhimohamed made their first contribution in #33315
- @SvbZ3r0 made their first contribution in #33430
- @vr-greycube made their first contribution in #33572
- @sonali8848 made their first contribution in #33271
- @rahulporuri made their first contribution in #33603
- @batonac made their first contribution in #33726
- @openrefactory made their first contribution in #33710
- @xeanth8 made their first contribution in #33735
- @developsessions made their first contribution in #33941
- @akshayitzme made their first contribution in #33998
- @unibravo made their first contribution in #33985
- @casesolved-co-uk made their first contribution in #33988
- @tejpochiraju made their first contribution in #34083
- @HUMENTH made their first contribution in #34149
- @sankarsubramaniankvs made their first contribution in #33895
- @PatrickDEissler made their first contribution in #34167
- @prateekkaramchandani made their first contribution in #34116
- @mmdanny89 made their first contribution in #34361
- @Shram007 made their first contribution in #34437
- @kittiu made their first contribution in #34586
- @Lucky-Tsuma made their first contribution in #34712
- @Nandhinidevi123 made their first contribution in #35050
- @kurogeek made their first contribution in #35206
- @Gubbu77 made their first contribution in #35293
- @brunoherrick made their first contribution in #35486
- @dvdl16 made their first contribution in #35539
- @Didiman1998 made their first contribution in #35140
- @cwerner1 made their first contribution in #35607
- @blaggacao made their first contribution in #35549
- @ljain112 made their first contribution in #35626
- @nikkothari22 made their first contribution in #35594
- @kisshang1993 made their first contribution in #35897
- @navinbalaji made their first contribution in #36022
- @aioaccount made their first contribution in #35887
- @cogk made their first contribution in #36319
- @ramonus made their first contribution in #36375
- @101v made their first contribution in #35958
- @abdosaeed95 made their first contribution in #36432
- @husamhammad made their first contribution in #36455
- @bosue made their first contribution in #36412
- @sumitjain236 made their first contribution in #36156
- @naufalafif made their first contribution in #36524
- @aynugek made their first contribution in #36453
- @git-avc made their first contribution in #36720
- @Sendipad made their first contribution in #36777
- @labeneator made their first contribution in #36705
- @kalungia made their first contribution in #37212
- @akhilnarang made their first contribution in #37249
- @iamrishiksahu made their first contribution in #37475
Full Diff: v14.0.0...v15.0.0
Migration Guide: https://github.com/frappe/erpnext/wiki/Migration-Guide-to-ERPNext-version-15