Commit Graph

60330 Commits

Author SHA1 Message Date
Mihir Kandoi
e4561b1431 Merge pull request #57412 from aerele/customer-pick-list
fix: map pick list customer to delivery note when no sales order
2026-07-23 18:24:19 +05:30
Mihir Kandoi
bf309f65d4 Merge pull request #57413 from aerele/fix-batch-oldest-expiry-typeerror
fix: typeerror in get_batches_by_oldest for mixed batch expiry
2026-07-23 18:23:10 +05:30
pandiyan
62c9f8ee3e fix: typeerror in get_batches_by_oldest for mixed batch expiry
sort on (expiry is none, expiry) so a null expiry_date is never
order-compared against a datetime.date, which raised typeerror in
python 3 when a warehouse held both dated and never-expiring batches.
2026-07-23 17:48:22 +05:30
R-Jayaraman
aff10d3a37 fix: map pick list customer to delivery note when no sales order 2026-07-23 17:41:03 +05:30
Mihir Kandoi
ab16fd0a98 Merge pull request #57409 from mihir-kandoi/chore/drop-warehouse-name-translation-marking
refactor: drop translation marking from default warehouse names
2026-07-23 16:56:50 +05:30
Mihir Kandoi
2ea63ce709 refactor: drop translation marking from default warehouse names
warehouse_name is a Data field shown as stored, and everywhere else
users see the docname, which carries the company abbr ("Stores - F")
and is never translated - a translated bare "Stores" has no display
use, so the identity _ marking from #57392 serves nothing. The
exists-guard keeps the runtime session-translation match that protects
legacy sites from duplicate English warehouses.
2026-07-23 16:45:57 +05:30
Mihir Kandoi
5fa242ec93 Merge pull request #57392 from mihir-kandoi/fix/canonical-default-warehouse-names
fix: create default warehouses with untranslated names
2026-07-23 16:17:04 +05:30
Mihir Kandoi
a81524ea14 Merge pull request #57400 from aerele/fix-address-missing-company-address-field
fix: guard against missing is_your_company_address custom field on ad…
2026-07-23 16:10:24 +05:30
Mihir Kandoi
2f008ea846 Merge pull request #57403 from mihir-kandoi/fix-stock-ageing-batch-pool-rebalance
fix: rebalance batch slot values at the pooled rate when driven negative
2026-07-23 16:09:19 +05:30
Mihir Kandoi
194e1df5cc fix: rebalance batch slot values at the pooled rate when driven negative
A batch is one valuation pool, so consumption is valued at the pooled
rate while slots may carry stale intra-batch detail (e.g. units
reconciled at zero and later merged). Consuming such a slot leaves a
negative value on positive qty. Spread the pool value across the
batch's slots when that happens; non-batchwise slots pool per
warehouse.
2026-07-23 15:56:42 +05:30
Mihir Kandoi
4911484349 Merge pull request #57399 from mihir-kandoi/production-plan-reserve-bom-qty
fix: Production Plan raw material qty calculation and bin reservation
2026-07-23 15:27:21 +05:30
Mihir Kandoi
a370c9a348 fix: AttributeError in sufficient sub assembly warning 2026-07-23 15:16:13 +05:30
Mihir Kandoi
276f69498a fix: safety stock and MOQ over-ordering in Production Plan raw materials 2026-07-23 15:16:11 +05:30
Mihir Kandoi
c0cb783603 fix: reserve full BOM consumption for Production Plan raw materials 2026-07-23 15:16:11 +05:30
Mihir Kandoi
9ec2262d09 Merge pull request #57398 from mihir-kandoi/item-group-get-root-of
refactor: use get_root_of for Item Group root resolution
2026-07-23 15:01:16 +05:30
Mihir Kandoi
3b3e7b5ea4 refactor: use get_root_of for Item Group root resolution
Replaces the hand-rolled parentless-group query from #57390 with the
framework helper, matching sibling tree doctypes like Customer Group.
2026-07-23 14:48:37 +05:30
Mihir Kandoi
da8bf368da Merge pull request #57387 from mihir-kandoi/drop-job-card-operation-row-number
refactor: drop unused operation_row_number field from Job Card
2026-07-23 14:42:07 +05:30
rohitwaghchaure
8c0ec3c179 fix: Incorrect creation time at the time cancelling an entry causing an issue especially same posting datetime (#57380)
* fix: shift same-timestamp sibling SLEs when cancelling an entry

update_qty_in_future_sle compared against the reversal SLE's own
creation and skipped same-posting_datetime siblings on cancel, leaving
their qty_after_transaction stale and causing false negative stock
errors.

* fix: revert update_qty_in_future_sle cancel tie-break, it double-counted
2026-07-23 09:07:33 +00:00
Mihir Kandoi
53ae349b5a Merge pull request #57390 from mihir-kandoi/fix-item-group-root-lookup
fix: do not translate root Item Group lookup key
2026-07-23 14:22:31 +05:30
Mihir Kandoi
002ca6d5c1 Merge pull request #57388 from mihir-kandoi/mapper-dict-target-doc
fix: accept dict target_doc in mapper endpoints
2026-07-23 14:22:06 +05:30
pandiyan
ea3ed8b836 fix: guard against missing is_your_company_address custom field on address 2026-07-23 14:06:23 +05:30
Mihir Kandoi
861c6b16be fix: create default warehouses with untranslated names
Company.create_default_warehouses stored warehouse_name through the
session _(), so a site set up in a non-English language keeps its
default warehouses under translated names. The opening-stock fallback
in item.py then looks up {"warehouse_name": _("Stores")} from an
arbitrary session and misses the warehouse whenever the lookup
session's language differs from the creation session's.

Create the default warehouses with canonical English names, matching
the identity-_ convention install_fixtures uses for other default
records. The exists-guard also matches the session translation so a
re-run on a legacy site does not insert English duplicates next to
translated warehouses.

The "Stores" fallback lookup moves to get_stores_warehouse, which
tries the canonical name first and falls back to the session
translation so legacy sites keep resolving their translated warehouse.
The setup-wizard and test-bootstrap lookups drop _() since they now
run after English creation (install_fixtures already used identity _,
so its lookup silently missed translated warehouses before this
change).

Same bug class as #57345.
2026-07-23 14:05:22 +05:30
Mihir Kandoi
d197d5685e fix: resolve Item Group tree root structurally
A name lookup misses roots created under a translated name (pre-#49875
setups) or renamed roots. Resolve the first parentless group by lft and
guard against self-parenting when the root itself is saved.
2026-07-23 14:03:54 +05:30
Shllokkk
f2496d2e2c fix: respect selected BOM when creating work order for variant item (#57358) 2026-07-23 13:49:34 +05:30
Mihir Kandoi
9c8d9ac42b fix: validate supplied operation_id belongs to work order operation 2026-07-23 13:23:15 +05:30
Mihir Kandoi
2551543703 fix: accept dict target_doc in mapper endpoints
Native JSON request bodies deliver target_doc as a parsed dict, which the
str | Document type hints rejected, breaking every Get Items From button.
Unify all whitelisted mapper endpoint hints to str | dict | Document | None.
Needs frappe#41190 so get_mapped_doc converts the dict target.
2026-07-23 13:20:40 +05:30
Mihir Kandoi
553336fa6f fix: resolve or require operation_id server-side 2026-07-23 13:17:49 +05:30
Mihir Kandoi
7239e6ed8c fix: do not translate root Item Group lookup key
_("All Item Groups") resolves in the session language, so for
non-English users the db.exists lookup missed the root (stored in
English) and new groups were saved parentless, becoming uneditable
second roots.

Closes #57345
2026-07-23 13:17:48 +05:30
Mihir Kandoi
cff05687d9 Merge pull request #57389 from mihir-kandoi/fix/translated-default-record-lookups
fix: do not translate default record lookup keys
2026-07-23 13:06:35 +05:30
Mihir Kandoi
50de87c9ea fix: clear stale operation_id and guard async row selection 2026-07-23 13:00:10 +05:30
Mihir Kandoi
8cd36f60ab fix: prompt for operation row when operation repeats in work order 2026-07-23 12:52:27 +05:30
Mihir Kandoi
9b7c36f3d9 fix: do not translate default record lookup keys
Company.create_default_departments named and looked up the root
Department via _("All Departments"), which resolves in the session
language. A site set up in a non-English language stores the root
translated, and a company created later from a session in another
language misses it and inserts a second root, corrupting the tree.
Resolve the root once with get_root_of (falling back to the canonical
English name on fresh installs) and reuse it for the root record, the
exists-guard and the child departments' parent.

Also stop translating lookups of records install_fixtures stores under
English names: Price List "Standard Selling" and Print Headings
"Credit Note" / "Debit Note".

Same class as the root Item Group fix (#57386, issue #57345).
2026-07-23 12:51:30 +05:30
Mihir Kandoi
c93b63d757 Merge pull request #57383 from mihir-kandoi/company-restriction-permlevel
fix: gate company restriction fields behind permlevel 1
2026-07-23 12:40:16 +05:30
Mihir Kandoi
d71681a99e refactor: drop unused operation_row_number field from Job Card 2026-07-23 12:37:29 +05:30
Mihir Kandoi
92b62402be Merge pull request #57384 from pratheep-bit/fix/fr-corr-001-reorder-item
fix: log exception instead of swallowing in notify_errors
2026-07-23 12:34:24 +05:30
Jatin3128
a47f25896b feat: make Shipping Rule Cost Center optional with company default fallback (#57355)
feat(shipping-rule): make cost center optional with company default fallback

Cost Center on Shipping Rule is no longer mandatory. When left blank, the
applied shipping tax row falls back to the company default cost center,
avoiding the 'Cost Center is required for Profit and Loss account' error on
submit. The rule's project is also applied to the tax row.
2026-07-23 07:00:23 +00:00
Mihir Kandoi
4bb63cca10 test: probe permlevel visibility via a value field only
get_permitted_fieldnames never lists Table fields, so allowed_companies
cannot be asserted through it; the write-reset assertions already cover
that field.
2026-07-23 12:26:59 +05:30
Mihir Kandoi
41fc23b9b2 fix: drop Customer's unused level-1 Sales User read grant
Makes visibility uniform across the three masters: only the
master-manager role can see or edit company restriction fields.
2026-07-23 12:12:49 +05:30
Mihir Kandoi
565220ebe5 fix: gate company restriction fields behind permlevel 1
Only the master-manager role of each doctype (Item Manager, Sales Master
Manager, Purchase Master Manager) can view and edit restrict_to_companies
and allowed_companies. Customer reuses its existing level-1 permission
rows; Item and Supplier get a new level-1 row.
2026-07-23 12:07:16 +05:30
Nabin Hait
7b93252621 Merge pull request #57299 from nabinhait/feat/warn-existing-draft-links
feat: warn when a draft linked document already exists
2026-07-23 10:38:45 +05:30
Nabin Hait
7e0c81391b test: use a role-less user for the permission check
test@example.com carries System Manager in the frappe fixtures, so on a
fresh CI site it can read Delivery Note and the lookup legitimately
returns the draft. test1@example.com has no roles, making the
no-permission assertion environment-independent.
2026-07-23 10:27:41 +05:30
Pratheep Selvam
4830bc51c1 fix: log exception instead of swallowing in notify_errors 2026-07-23 09:23:39 +05:30
Mihir Kandoi
5dab7b9928 Merge pull request #57361 from mihir-kandoi/batch-prefill-stock-controller
refactor: move new-doc route options to StockController
2026-07-22 18:01:56 +05:30
Mihir Kandoi
551559e804 refactor: move new-doc route options to StockController
set_route_options_for_new_doc lived in TransactionController, so doctypes
extending StockController directly (Stock Reconciliation, Stock Entry) missed
the Batch/SABB prefill or duplicated it locally. Move it to StockController
and call it from onload_post_render so all descendants inherit it.

- Batch quick entry from Stock Reconciliation items now prefills Item
- SABB route options unified: warehouse || s_warehouse || t_warehouse,
  so transaction doctypes now also prefill warehouse
- Stock Entry's duplicate handler removed; its onload_post_render now
  calls super
2026-07-22 17:58:38 +05:30
Mihir Kandoi
3d46f7eba2 Merge pull request #57357 from mihir-kandoi/posting-datetime-desc
chore: better description for posting datetime for naming series field
2026-07-22 15:40:24 +05:30
Mihir Kandoi
dcfe1706db Merge pull request #57356 from mihir-kandoi/company-restriction-link-scan-perf
perf: scan link fields once per table in company restriction check
2026-07-22 15:34:49 +05:30
Mihir Kandoi
deafe79dc9 chore: better description for posting datetime for naming series field 2026-07-22 15:28:56 +05:30
Mihir Kandoi
a22b10e5eb perf: scan link fields once per table instead of per row
Meta.get_link_fields rescans the field list on every call; hoisting it
out of the row loop cuts the reference walk on a 100-row invoice from
2.8ms to 0.1ms.
2026-07-22 15:21:51 +05:30
Nabin Hait
01f7e45058 Merge branch 'develop' into feat/warn-existing-draft-links 2026-07-22 15:18:39 +05:30
Mihir Kandoi
ae9bb27436 Merge pull request #57353 from mihir-kandoi/fix/reserved-batch-precision
fix: get reserved batch qty precision from settings
2026-07-22 15:11:11 +05:30