Commit Graph

58862 Commits

Author SHA1 Message Date
Mihir Kandoi
4229161f4f Merge pull request #58007 from frappe/codex/backport-57963-version-16
fix(manufacturing): correct nested BOM Explorer quantities
2026-08-11 13:25:00 +05:30
Mihir Kandoi
fb877515ca fix(manufacturing): avoid child BOM cache lookups 2026-08-11 13:13:03 +05:30
Mihir Kandoi
b4929e2737 fix(manufacturing): correct nested BOM quantities 2026-08-11 13:00:13 +05:30
Mihir Kandoi
b75146445b Merge pull request #58002 from frappe/mergify/bp/version-16-hotfix/pr-57997
fix: keep item code searchable when a barcode matches the same text (backport #57997)
2026-08-11 12:42:51 +05:30
Kaushal Shriwas
60eab30bab chore: resolve backport conflict in bom.py 2026-08-11 12:23:00 +05:30
Mihir Kandoi
d315c15cee Merge pull request #57999 from frappe/mergify/bp/version-16-hotfix/pr-57972
refactor: drop redundant time_in_mins assignment in workstation complete_job (backport #57972)
2026-08-11 12:21:38 +05:30
Kaushal Shriwas
062976123a test(manufacturing): cover BOM item search when item code collides with a barcode
(cherry picked from commit 23024d1ea9)
2026-08-11 06:43:20 +00:00
Kaushal Shriwas
87c4009572 fix(manufacturing): keep item code searchable when a barcode matches the same text
(cherry picked from commit bf5d506637)

# Conflicts:
#	erpnext/manufacturing/doctype/bom/mapper.py
2026-08-11 06:43:20 +00:00
Mihir Kandoi
631cc2c218 refactor: drop redundant time_in_mins assignment in complete_job
(cherry picked from commit 3cffeb68e3)
2026-08-11 06:39:43 +00:00
pandiyan
822e6d8924 fix: convert hours to minutes in workstation complete_job
`time_diff_in_hours` returns hours, so `time_in_mins` needs `* 60`, not
`/ 60`. Matches `Job Card.validate_time_log_row`.

No behaviour change: the `doc.save()` on the next line runs Job Card's
`validate`, which recomputes `time_in_mins` correctly before the row is
written. This only stops the expression from reading as a bug.

(cherry picked from commit 422a9161dd)
2026-08-11 06:39:43 +00:00
Jatin3128
ee5316ecd0 fix: keep source rate on re-fetch when maintain same rate is enabled (backport #57479) (#57792)
* fix: keep source rate on re-fetch when maintain same rate is enabled (#57479)

* fix: type-annotate get_item_details arguments

---------

Co-authored-by: test <test@test.com>
2026-08-11 11:00:00 +05:30
mergify[bot]
fea1ec867e refactor(queries): using frappe.get_query in get_filtered_child_rows (backport #57991) (#57993)
Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2026-08-10 19:45:16 +00:00
mergify[bot]
4a2163ebf8 fix: preserve custom title on new JV (backport #57987) (#57989)
Co-authored-by: Diptanil Saha <diptanil@frappe.io>
Co-authored-by: rehanrehman389 <rehanrehman389@gmail.com>
2026-08-10 22:03:49 +05:30
mergify[bot]
0a9b632925 fix: field validation and perm checks on get_stock_reservation_entries_for_voucher (backport #57968) (#57970)
Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2026-08-10 09:36:20 +00:00
ruthra kumar
737404c9aa Merge pull request #57831 from aerele/backport-57140-v16
fix: clear deferred revenue/expense fields on uncheck (backport #57140)
2026-08-10 15:04:26 +05:30
Pandiyan P
2b020c2fcf fix: re-check future sle before queuing repost on submit (#57664) (#57961)
* test: cover both repost branches and the no-repost case

* fix: queue repost for entries backdated by a concurrent submit

---------


(cherry picked from commit 399ff463cc)

Co-authored-by: nareshkannasln <nareshkannashanmugam@gmail.com>
2026-08-10 14:03:16 +05:30
mergify[bot]
a4d9411345 fix: skip incoming rate calc when serial no qty is zero (backport #57427) (#57957)
fix: skip incoming rate calc when serial no qty is zero (#57427)

(cherry picked from commit a25decfa50)

Co-authored-by: Shllokkk <140623894+Shllokkk@users.noreply.github.com>
2026-08-10 12:11:58 +05:30
Khushi Rawat
2287e345da Merge pull request #57953 from frappe/mergify/bp/version-16-hotfix/pr-57822
fix: keep asset repair downtime in sync with entered dates (backport #57822)
2026-08-10 12:02:36 +05:30
Shllokkk
4f3eef92f0 test: assert asset repair downtime recalculates on date change
(cherry picked from commit 8269f8a362)
2026-08-10 06:21:07 +00:00
Shllokkk
ca5418e2c9 fix: keep asset repair downtime in sync with entered dates
(cherry picked from commit 4406bb9068)
2026-08-10 06:21:07 +00:00
mergify[bot]
dff4ec6a74 fix: escape customer_details on lead creation from appointment (backport #57947) (#57949)
Co-authored-by: Diptanil Saha <diptanil@frappe.io>
2026-08-09 19:25:49 +00:00
Shllokkk
02f8328d1a Merge pull request #57946 from frappe/mergify/bp/version-16-hotfix/pr-57927
fix: reflect in-invoice receivable credits in Sales Register ledger view (backport #57927)
2026-08-09 23:58:24 +05:30
Shllokkk
09c0110352 test: cover POS-paid invoice in Sales Register ledger view
(cherry picked from commit 45a9294476)
2026-08-09 18:09:41 +00:00
Shllokkk
a90907fda6 fix: reflect in-invoice receivable settlements in Sales Register ledger view
(cherry picked from commit 40c356d166)
2026-08-09 18:09:41 +00:00
Mihir Kandoi
d2678902ec Merge pull request #57937 from frappe/mergify/bp/version-16-hotfix/pr-57689
feat(job_card): print quantities with their stock uom (backport #57689)
2026-08-09 23:14:13 +05:30
Mihir Kandoi
94c81965a7 test(manufacturing): cover job card UOM backfill 2026-08-09 23:02:58 +05:30
Mihir Kandoi
8310b56f32 chore: resolve conflict 2026-08-09 22:56:02 +05:30
Mihir Kandoi
6e4a7fba7e Merge pull request #57930 from frappe/mergify/bp/version-16-hotfix/pr-57895
fix: track semi finished goods production flow (backport #57895)
2026-08-09 22:47:52 +05:30
Mihir Kandoi
5c38e43758 chore: update backport after dependent merges 2026-08-09 22:36:10 +05:30
Mihir Kandoi
b4fbbe51e8 Merge pull request #57934 from frappe/mergify/bp/version-16-hotfix/pr-57688
refactor(job_card): make the completion dialog say what it asks for (backport #57688)
2026-08-09 22:32:25 +05:30
Mihir Kandoi
e42a59c5d4 Merge pull request #57933 from frappe/mergify/bp/version-16-hotfix/pr-57687
fix(job_card): reject a completion split that cannot add up (backport #57687)
2026-08-09 22:31:48 +05:30
Mihir Kandoi
cc07918f06 Merge pull request #57936 from frappe/mergify/bp/version-16-hotfix/pr-57686
fix(job_card): leave the pending qty out of the job card's own output (backport #57686)
2026-08-09 22:12:24 +05:30
Mihir Kandoi
66aa97f7fe chore: update backport after dependent merges 2026-08-09 22:02:11 +05:30
Mihir Kandoi
4e8c2c7d37 Merge pull request #57935 from frappe/mergify/bp/version-16-hotfix/pr-57685
fix(job_card): apply the completion dialog's qty to manufacture (backport #57685)
2026-08-09 21:59:06 +05:30
Mihir Kandoi
816e21cf60 Merge pull request #57931 from frappe/mergify/bp/version-16-hotfix/pr-57684
fix(job_card): require the previous operation to be manufactured (backport #57684)
2026-08-09 21:58:48 +05:30
Mihir Kandoi
317dd18ce5 fix(manufacturing): align quantity split rounding 2026-08-09 21:43:00 +05:30
Mihir Kandoi
eb90186d3f feat(job_card): print quantities with their stock uom (#57689)
* feat(job_card): carry the stock uom on the job card

Every quantity the job card reports belongs to the item it produces, but the
document had no unit of its own, so messages could only print bare numbers.

Add the Stock UOM field, set from the finished good or the final product, and
backfill the job cards that already exist.

* fix(job_card): print quantities with their unit

A bare 5 in an error says nothing about what was counted. Every message that
reports a quantity now names its unit, taking it from the job card's stock uom,
from the previous operation's finished good when the message compares two
operations, and from the item itself for a raw material transfer.

The completion dialogs read the same unit off the job card.

* refactor(job_card): move the stock uom next to the qty it measures

* fix(job_card): keep the stock uom backfill atomic

Drop the auto commit toggle so the backfill is a single transaction with no
connection flag left behind when it raises, and select the job cards to fill
with an explicit unset filter instead of a value list.

(cherry picked from commit 07ac4d83ef)

# Conflicts:
#	erpnext/manufacturing/doctype/job_card/job_card.js
#	erpnext/manufacturing/doctype/job_card/job_card.json
#	erpnext/manufacturing/doctype/job_card/job_card.py
#	erpnext/manufacturing/doctype/job_card/test_job_card.py
#	erpnext/manufacturing/page/shop_floor/shop_floor.py
#	erpnext/patches.txt
#	erpnext/public/js/shop_floor/shop_floor.js
2026-08-09 16:04:55 +00:00
Mihir Kandoi
a8060d5e99 fix(manufacturing): adapt version 16 compatibility 2026-08-09 21:22:17 +05:30
Mihir Kandoi
87b456faa2 fix(manufacturing): type whitelisted BOM arguments 2026-08-09 21:10:08 +05:30
Mihir Kandoi
beed05ac18 test(manufacturing): isolate quantity split validation 2026-08-09 21:08:57 +05:30
Mihir Kandoi
a5e4bbd436 chore: resolve conflict 2026-08-09 21:07:17 +05:30
Mihir Kandoi
1ededb70f4 chore: resolve conflict 2026-08-09 20:53:27 +05:30
Mihir Kandoi
c955f80675 chore: resolve conflict 2026-08-09 20:50:50 +05:30
Mihir Kandoi
fab480af98 chore: resolve conflict 2026-08-09 20:48:19 +05:30
Mihir Kandoi
f176a46722 chore: resolve conflict 2026-08-09 20:43:30 +05:30
Mihir Kandoi
7fcfea6db2 chore: resolve conflict 2026-08-09 20:42:02 +05:30
Mihir Kandoi
0c7919429e fix(job_card): leave the pending qty out of the job card's own output (#57686)
* fix(job_card): leave the pending qty out of the job card's own output

Pending qty is the part of a job card handed over to another job card, but the
status and the manufacturing entry still measured the card against its full
for_quantity. A card submitted with 3 completed and 2 pending was stuck at Work
In Progress with no way to change it, and its manufacturing entry was built for
the full 5.

Measure both against for_quantity minus pending qty, so the card reaches To
Manufacture on submission, its manufacturing entry covers the completed qty, and
it is Completed once that qty is manufactured.

* test(job_card): cover a job card completed with a pending qty

(cherry picked from commit 970039d8ec)

# Conflicts:
#	erpnext/manufacturing/doctype/job_card/job_card.py
#	erpnext/manufacturing/doctype/job_card/test_job_card.py
2026-08-09 15:03:18 +00:00
Mihir Kandoi
d97cf131a1 fix(job_card): apply the completion dialog's qty to manufacture (#57685)
* fix(job_card): apply the completion dialog's qty to manufacture

Both the desk dialog and the shop floor session dialog send for_quantity when
completing a job card, but complete_job_card dropped it. Reducing Qty to
Manufacture to 3 on a job card of 5 left for_quantity at 5, so set_process_loss
turned the untouched 2 into process loss on the next save.

The dialog qty covers the current cycle, so add it to the qty already completed
by the earlier cycles of the job card instead of overwriting for_quantity, and
validate the pending qty against the result.

* test(job_card): cover qty to manufacture from the completion dialog

Reducing the dialog qty resizes the job card without inventing process loss, and
a pending qty split across two cycles leaves for_quantity untouched.

(cherry picked from commit 0e1bc58b2e)

# Conflicts:
#	erpnext/manufacturing/doctype/job_card/job_card.py
2026-08-09 15:02:47 +00:00
Mihir Kandoi
3f2e0c177b refactor(job_card): make the completion dialog say what it asks for (#57688)
* refactor(job_card): drop the unused make_finished_good handler

Nothing triggered it and Job Card has no make_finished_good method to call.

* refactor(job_card): make the completion dialog say what it asks for

The dialog qty shares the Qty to Manufacture label with the field on the form
while it means the current cycle only, its title fell back to the generic Enter
Value because frappe.prompt takes four arguments and it was passed five, and
nothing on it stated that the three quantities have to add up.

Name the cycle in the label, title the dialog after the button that opens it,
and describe the split on the fields. Same wording in the shop floor dialog.

(cherry picked from commit 0ddf72dae9)

# Conflicts:
#	erpnext/public/js/shop_floor/shop_floor.js
2026-08-09 15:02:15 +00:00
Mihir Kandoi
3907d93f9f fix(job_card): reject a completion split that cannot add up (#57687)
* fix(job_card): reject a completion split that cannot add up

The completion dialogs silently dropped a recalculation whose result went
negative, so entering a pending qty larger than what is left of the qty to
manufacture kept the contradiction (3 to manufacture, 3 completed, 2 pending)
and the job card only failed much later, on submission.

Keep the split consistent while it is entered: reset the pending qty when the
qty to manufacture changes, and refuse a completed, pending or process loss qty
that leaves the others negative. complete_job_card validates the same rule, so
the shop floor and the API cannot store a split that will never submit.

Also name the three parts in the submission error instead of calling their sum
the Total Completed Qty, which read as a contradiction of the field itself.

* test(job_card): cover the completion qty split guard

(cherry picked from commit 7bffd84482)

# Conflicts:
#	erpnext/manufacturing/doctype/job_card/job_card.py
#	erpnext/manufacturing/doctype/job_card/test_job_card.py
#	erpnext/public/js/shop_floor/shop_floor.js
2026-08-09 15:01:38 +00:00