Commit Graph

60837 Commits

Author SHA1 Message Date
rohitwaghchaure
c6d08979d3 feat: capacity aware scheduling for production plan (#58094)
* feat: capacity aware scheduling for production plan

* fix: do not apply incomplete schedule proposals

* fix: lock plan re-scheduling once work orders exist

* test: concurrent jobs across multiple machines with job capacity

* chore: fix linter and semgrep issues

* fix: readable subject for production plan schedule entries

* fix: persist computed start for item rows without explicit dates

* fix: block manual creation of production plan schedule entries

* chore: replace em-dashes with hyphens in design doc

* fix: cleared item-wise dates no longer constrain the schedule

* chore: format test file
2026-08-12 12:40:03 +00:00
Mihir Kandoi
43de54b907 fix(work order): exclude corrective transfers from item-level transferred qty (#58091) 2026-08-12 11:11:12 +00:00
Mihir Kandoi
e5a0b5f61e fix(manufacturing): refine corrective job cards (#58079) 2026-08-12 10:13:29 +00:00
Mihir Kandoi
68a30f1568 fix(work order): don't count corrective job card transfers as transferred qty (#58080) 2026-08-12 15:35:55 +05:30
Mihir Kandoi
994703c2f3 Merge pull request #58073 from mihir-kandoi/codex/mrp-detailed-chart-timescale
fix(manufacturing): show full date range in MRP chart
2026-08-12 14:54:15 +05:30
Khushi Rawat
ca1b03cd46 Merge pull request #57820 from aerele/fix-asset-capitalization-grouped-row-valuation
fix(assets): split fifo/lifo rate across grouped stock item rows
2026-08-12 14:34:12 +05:30
Krishna Pramod Shirsath
18dff27f65 Merge pull request #57995 from krishna-254/fix/available-batch-report-company-filter
fix: filter available batch report by company
2026-08-12 13:19:16 +05:30
Mihir Kandoi
5ad085887d fix(manufacturing): keep MRP chart dates distinct 2026-08-12 12:28:13 +05:30
Krishna Pramod Shirsath
c34e6fba32 Merge branch 'develop' into fix/available-batch-report-company-filter 2026-08-12 12:23:04 +05:30
Krishna Shirsath
484beb9fba fix: filter available batch report by company 2026-08-12 12:18:25 +05:30
Mihir Kandoi
592924cc0d test(manufacturing): cover MRP chart date range 2026-08-12 11:39:53 +05:30
MochaMind
83e33b343c fix: sync translations from crowdin (#58070) 2026-08-11 23:28:18 +00:00
Diptanil Saha
c52552ecfa fix(coa_importer): added server-side validations for importing chart of accounts (#58065) 2026-08-12 03:32:19 +05:30
Vishnu Priya Baskaran
89e2c3c3e5 fix: allow non-admin roles to import chart of accounts (#57454) 2026-08-11 23:26:58 +05:30
Vishnu Priya Baskaran
39403a5ef3 refactor:fix item property updates in POS and transactions, and add styling (#57189)
Co-authored-by: Afsal Syed <afsalsyed12@gmail.com>
2026-08-11 22:50:28 +05:30
soulxone
3c17a604be fix(Material Requirements Planning Report): detailed-view chart timescale
The detailed-view chart collapsed every row into a single "today" column
and was additionally capped at 10 points, so the chart never matched the
report's date filters or the table data.

Two causes in get_detailed_view_chart_data:

1. `row.deliver_date` was a typo for `row.delivery_date` (the name used
   everywhere else in this report). On a frappe._dict the missing
   attribute resolves to None, so `getdate(None)` returned today and the
   past-date filter silently compared every row against today instead of
   its own delivery date.

2. A hard `if i == 10: break` truncated the chart to 10 date buckets.

Use the correct field name and drop the cap. The null check now runs
before the date comparison, since `getdate(None)` returning today meant
the original ordering could never filter a null delivery_date out.

Fixes #52632
2026-08-11 11:55:49 -05:00
Vishnu Priya Baskaran
8802000ba2 fix(consolidated cash flow): correct totals and labels in section foo… (#57336) 2026-08-11 21:58:53 +05:30
Raffael Meyer
e591c7e8b6 fix: mirror rounding adjustment on distributed_discount_amount (#58047) 2026-08-11 18:26:26 +02:00
Mihir Kandoi
a7e5e1209b Merge pull request #58051 from mihir-kandoi/codex/fix-sales-order-item-reset
fix(selling): reset stale item details on item change
2026-08-11 21:05:04 +05:30
Mihir Kandoi
e8c890a844 fix(selling): preserve explicit UOM during item selection 2026-08-11 20:54:04 +05:30
Mihir Kandoi
e6966627b8 Merge pull request #58050 from mihir-kandoi/codex/fix-bom-creator-item-selection
fix(manufacturing): preserve BOM Creator item details
2026-08-11 20:53:31 +05:30
Mihir Kandoi
009961edc7 fix(selling): reset stale item details on item change 2026-08-11 20:41:47 +05:30
Mihir Kandoi
439eb250f5 fix(manufacturing): preserve BOM Creator item details 2026-08-11 20:40:30 +05:30
Mihir Kandoi
7e4e9860ef Merge pull request #58045 from mihir-kandoi/codex/repair-underbilled-pr-status
fix(stock): repair existing underbilled purchase receipts
2026-08-11 19:52:08 +05:30
Mihir Kandoi
620465220b test: cover repair of underbilled receipts from mixed billing 2026-08-11 19:21:38 +05:30
Mihir Kandoi
e99ae3796c fix(stock): repair existing underbilled purchase receipts
The qty-sync fix corrects allocation going forward, but receipts billed
before it can keep understated billed_amt, per_billed, and status. The
earlier repair patch only selects over-billed PO items, so it never picks
these up.

Recompute every candidate PO item (multiple submitted receipts, PO-level
invoicing, no invoice-created receipts). update_billed_amount_based_on_po
only writes rows whose recomputed value differs, so already-correct items
are untouched and the patch stays idempotent. This also converges receipts
left with direct-only billed_amt by last-event-wins overwrites.
2026-08-11 19:21:38 +05:30
Mihir Kandoi
4108be4637 Merge pull request #58036 from mihir-kandoi/codex/fix-disabled-warehouse-account-resolution
fix(stock): validate warehouse accounts when used
2026-08-11 18:54:39 +05:30
Mihir Kandoi
ce847b6c29 Merge pull request #58044 from mihir-kandoi/fix-po-billing-qty-sync-develop
fix: keep PO billed qty in sync when allocating amount to receipts
2026-08-11 18:53:46 +05:30
Mihir Kandoi
031e7c0eb7 test: cover mixed direct and PO-invoice billing across receipts 2026-08-11 18:40:35 +05:30
Mihir Kandoi
7803998fce fix: keep PO billed qty in sync when allocating amount to receipts
The amount-capped allocation branch reduced the remaining PO-invoiced
amount but left the invoiced qty untouched. A later receipt entering the
qty-proportional branch then divided by the stale qty and was under-billed:
PO 10 x 500, PO-level PI for 5 (2500), PR1 qty 3 with 500 billed directly
consumes 1000 (pool 2500 -> 1500, qty stuck at 5), PR2 qty 3 got
1500 * 3/5 = 900 instead of its full 1500. Scale the remaining qty by the
consumed fraction so both stay proportional.

Follow-up to #58021.
2026-08-11 18:39:52 +05:30
Mihir Kandoi
abb23fffdc Merge pull request #58021 from harisansari008/fix-po-invoice-billing-distribution-develop
fix: distribute PO-invoice billed amount across receipts without duplication
2026-08-11 18:36:09 +05:30
Mihir Kandoi
b54a4f6285 test(stock): cover named validation error and same-transaction parent inheritance 2026-08-11 18:26:10 +05:30
Mihir Kandoi
624e97f6c1 chore(stock): drop redundant supplier warehouse comment 2026-08-11 18:26:09 +05:30
Mihir Kandoi
d2b5c6ad40 fix(stock): validate new warehouse inventory account after naming
Move the insert-time check from before_insert to validate. before_insert
runs before set_new_name, so the validation message rendered the
warehouse name as None. validate runs after naming and only applies to
new documents via is_new().

Resolve inheritance through the parent's lft/rgt bounds instead of the
request-cached warehouse account map. The cached map can be stale within
a request (a parent created moments earlier is missing from it), which
made get_warehouse_account trigger a full nested-set rebuild_tree and
could falsely reject a child whose parent carries a valid account.
rebuild_tree enables auto_commit_on_many_writes, which must not run
inside a document insert.
2026-08-11 18:26:08 +05:30
Mihir Kandoi
0171b07023 Merge pull request #58032 from aerele/perf/batch-bin-lookups
perf: batch per-row bin lookups in sales invoice and delivery note
2026-08-11 18:20:50 +05:30
Mihir Kandoi
13883a00b0 fix(stock): validate warehouse accounts when used 2026-08-11 18:16:47 +05:30
Mihir Kandoi
d34519f536 test: cover repair patch exclusion for invoice-created receipts 2026-08-11 18:16:38 +05:30
Mihir Kandoi
ace4230f97 fix: skip PO items with invoice-created receipts in billing repair patch
A Purchase Receipt row created from a Purchase Invoice carries both
purchase_order_item and purchase_invoice_item, and its billed_amt is pinned
to the row amount by update_billing_status. Redistributing the PO-invoiced
pool over such rows zeroes the invoice-created receipt and flips it from
Completed to To Bill, so the repair leaves those PO Items untouched.
2026-08-11 18:16:38 +05:30
Mihir Kandoi
d8d0ea01c4 Merge pull request #58041 from mihir-kandoi/fix-auto-reserve-packed-items
fix: set auto reserve stock flag before packing list generation
2026-08-11 18:07:39 +05:30
Mihir Kandoi
b879c491b0 fix: set auto reserve stock flag before packing list generation
enable_auto_reserve_stock ran at the end of validate, after
make_packing_list. On a new Sales Order saved with auto_reserve_stock
enabled, packed item rows were built while the parent reserve_stock
flag was still unset, so they never inherited it. Since the stamping in
packed_item.py is gated on doc.is_new(), later saves could not repair
the rows either; only the client-side toggle could. Move the
auto-enable before packing list generation so packed rows are stamped
on first save.
2026-08-11 17:53:47 +05:30
pandiyan
6bf00d3c8b perf: batch per-row bin lookups in sales invoice and delivery note
sales invoice's update_current_stock ran one bin query per item row and one
per packed row. delivery note already batched the same work by warehouse, so
lift that into get_bin_qty_map in stock/utils.py and have both call it.

also batch the per-batch expiry_date lookup in get_batches_by_oldest, and drop
three now-unused per-row setters: delivery note's set_actual_qty (already dead
before this change), sales invoice item's set_actual_qty and packed item's
set_actual_and_projected_qty.
2026-08-11 17:52:27 +05:30
Mihir Kandoi
27da94610c Merge pull request #58037 from aerele/feat/multi-select-item-warehouse-filters
feat(stock): multi select item and warehouse filters in warehouse wise item balance
2026-08-11 17:04:41 +05:30
Mihir Kandoi
db78dd1ef3 Merge pull request #58033 from mihir-kandoi/gate-selling-toggle-setters
perf: rewrite selling settings toggle setters only on change
2026-08-11 16:42:36 +05:30
Sudharsanan11
eb4bb2cbce test(stock): cover multi select item and warehouse filters in warehouse wise item balance
three cases: multiple warehouses get a column each plus the total qty
column, a selected group warehouse still expands to its children, and
multiple items report side by side while unselected items stay out.
2026-08-11 16:34:12 +05:30
Sudharsanan11
3c92a9e853 feat(stock): multi select item and warehouse filters in warehouse wise item balance
the item and warehouse filters took one value at a time, so comparing a
few warehouses meant re-running the report for each one.

both are multiselectlist now, matching the stock balance report. the
warehouse column list unions the subtree of every selected warehouse,
and get_items passes a list through instead of wrapping it. plain string
values still work, so saved filters and existing callers are unaffected.
2026-08-11 16:34:12 +05:30
Mihir Kandoi
6c5aca0b37 Merge pull request #57983 from Jatin3128/fix/disabled-party-validation-opportunity-rfq
fix: block disabled/frozen party on Opportunity and Request for Quotation
2026-08-11 16:31:52 +05:30
Mihir Kandoi
f3a8f02c5f Merge pull request #58031 from mihir-kandoi/gate-naming-property-setters
perf: rewrite customer and supplier naming setters only on change
2026-08-11 16:27:39 +05:30
Mihir Kandoi
27f0ffdde5 Merge pull request #58018 from mihir-kandoi/codex/reduce-test-setup-overhead
perf(tests): reduce repeated setup work
2026-08-11 16:27:15 +05:30
Mihir Kandoi
c9f74e21a0 test: cover selling settings toggle setter gating 2026-08-11 16:22:21 +05:30
Mihir Kandoi
136e00d513 perf: rewrite selling settings toggle setters only on change
on_update reran toggle_hide_tax_id, toggle_editable_rate_for_bundle_items
and toggle_discount_accounting_fields on every save, rewriting 11
property setters and clearing the meta cache of five doctypes.

Gate each toggle on has_value_changed. Fresh installs save the settings
with pure defaults (set_single_defaults), so the gated-off state must
match the JSON schema: align sales_invoice.json and
sales_invoice_item.json with the values every saved site already has —
tax_id printed when hide_tax_id is off, discount accounts hidden while
discount accounting is disabled. Packed Item rate already matches.
2026-08-11 16:21:21 +05:30