* feat: add `Has Serial No` and `Has Batch No` fields in SRE
* chore: set `Has Serial No` and `Has Batch No` while creating SRE
* feat: add field `Reserved Serial and Batch` in SRE
* fix(ux): hide `Amend` button on cancelled SRE
* fix: add validation for SRE amended doc
* fix(ux): hide `Reserved Serial and Batch` Table for non-serial/batch item
* fix(ux): set `Display Depends On` for `Has Serial No` and `Has Batch No` in SRE
* fix(ux): make `serial_no` and `batch_no` fields read-only based on `has_serial_no` and `has_batch_no`
* chore: remove table `Serial and Batch Entry` fieldlabel
* fix(ux): set warehouse for new row
* fix(ux): make qty field read-only for serial item
* fix(ux): set rows qty to `1` before making the field read-only
* chore: add filters for serial no
* chore: add filters for batch no
* chore: don't show Serial NO if already selected
* chore: hide rate related fields
* feat: add field `Reservation Based On` in SRE
* chore: make `Reserved Qty` field editable in SCR
* chore: add method to get total reserved qty against a voucher
* fix: add validation for `Reserved Qty`
* fix: update SRE status and Voucher's Reserved Qty
* chore: enable `Track Changes` in SRE
* fix: add validation to prevent delivered SRE to get updated
* fix(ux): make fields `Reserved Qty` and `Reservation Based On` read-only for delivered SRE
* fix: consider voucher's delivered qty while calculating max reserved qty
* fix: add UOM validation for SRE Reserved Qty
* fix: SRE warehouse mismatch error in DN
* fix: auto cancel SRE on update if item is fully delivered for the SO
* fix: skip SRE creation for group warehouse
* feat: add `Set Warehouse` field in SO stock reservation dialog
* fix(ux): hide `Add Row` button in SO stock reservation dialog
* fix: group warehouse validation in SO
* fix(ux): don't show Batch No if already selected
* feat: add field `Auto Reserve Serial and Batch Nos` in `Stock Settings`
* refactor: SRE reserved qty validation
* feat: auto serial and batch reservation
* chore: add section for `Serial and Batch Reservation` in `Stock Settings`
* fix: make SRE sb_entries warehouse mandatory
* fix(ux): unreserved qty calculation
* fix: add validation for `Reserved Qty` against `Batch`
* refactor: combine `get_available_qty_to_reserve()` and `get_available_qty_to_reserve_batch()`
* fix: validate disabled batch
* fix: add validation to validate serial nos availability
* fix: update row qty if `Partial Reservation` is enabled
* fix: ignore reserved serial nos while getting available serial nos
* fix: add validation to prevent repeat batches
* fix(ux): add validation for duplicate Serial No
* fix: don't allow to update SRE with delivered stock
* fix: ignore reserved serial and batch if reservation based on is not Serial and Batch
* fix(ux): stock un-reservation confirmation before `Update Items`
* chore: return list instead os set
* feat: add field `Delivered Qty` in `Serial and Batch Entry`
* feat: option to get SO reserved stock in Delivery Note
* fix: ignore reserved batches while getting available batches
* chore: `conflicts`
* fix: incorrect available qty
* fix: 'str' object has no attribute 'nodes_'
* fix: `linter`
* fix(ux): hide `Get Items From > Stock Reservation` if Stock Reservation is disabled
* fix(ux): add `depends_on` for `Auto Reserve Serial and Batch Nos`
* fix(ux): hide Stock Reservation field description in submitted SO
* fix(ux): confirm before unreserve stock
* feat: option to create DN for reserved stock from SO
* fix: update delivered qty in SRE sb_entries
* fix: Delivery Note (Reserved Stock) based on Delivery Date
* fix(ux): SO `Update Items` confirmation on `Update` button click
* feat: add dialog box to select SRE to unreserve
* fix: `ZeroDivisionError` while saving the DN (Reserved Stock)
* fix: don't allow to create Pick List if stock is reserved against SO
* fix(ux): hide Create > Pick List button for SO with reserved stock
* refactor: map reserved stock by default in DN
* refactor: code cleanup and comments
* fix: don't allow Stock Reservation against SO having Pick List
* refactor: `create_stock_reservation_entries()`
* feat: add fields to hold Pick List ref in SRE
* feat: add field `Stock Reserved Qty` in Pick List Item
* feat: provision to reserve stock from Pick List against Sales Order
* fix: don't allow to update SRE if created against a Pick List
* fix(ux): confirm before unreserve stock in Pick List
* fix: don't allow to update Pick List having reserved stock
* fix: circular dependency while cancelling the DN created from Pick List with Reserved Stock
* chore: update `Max Reserve Qty` err msg to be more descriptive
* refactor: rename field `Reserve Stock on Sales Order Submission`
* fix: msg on partial reservation if disabled in stock settings
* chore: add field description for `Enable Stock Reservation`
* fix(test): `test_stock_reservation_against_sales_order`
* fix(test): `test_stock_reservation_against_sales_order`
* test: add test cases for serial and batch reservation
* fix: batch stock levels qty
* refactor: method `get_sre_reserved_qty_for_item_and_warehouse`
* feat: show `Reserved Stock` in item master stock levels
* feat: Reserved Stock Report
* fix(ux): SO stock reservation dialogs width
* refactor: get previous values from `_doc_before_save` instead of db
* fix(ux): make `Reservation Based On` read-only if created against Pick List
* feat: option to open `Reserved Stock` report from Sales Order
* fix(ux): Sales Order - Reserve and Unreserve dialog box
* fix: decrease SRE Delivered Qty on DN cancel
* fix(ux): hide `Unreserve` button once reserved stock is delivered
* chore: `linter`
* fix(test): `test_reserved_stock_report`
* test: add test case for DN cancellation
* chore: rename field `Auto Reserve Stock on Sales Order Submission`
* fix: `Insufficient Stock` error msg
fix: not able to make stock entry (#36759)
(cherry picked from commit 873ee384a1f0832faf84015167f7bdc697f1dc46)
Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
Stock Entry Type=Manufacture
request.js:457 Traceback (most recent call last):
File "apps/frappe/frappe/app.py", line 94, in application
response = frappe.api.handle()
File "apps/frappe/frappe/api.py", line 54, in handle
return frappe.handler.handle()
File "apps/frappe/frappe/handler.py", line 47, in handle
data = execute_cmd(cmd)
File "apps/frappe/frappe/handler.py", line 85, in execute_cmd
return frappe.call(method, **frappe.form_dict)
File "apps/frappe/frappe/__init__.py", line 1610, in call
return fn(*args, **newargs)
File "apps/frappe/frappe/desk/form/save.py", line 28, in savedocs
doc.save()
File "apps/frappe/frappe/model/document.py", line 305, in save
return self._save(*args, **kwargs)
File "apps/frappe/frappe/model/document.py", line 327, in _save
return self.insert()
File "apps/frappe/frappe/model/document.py", line 259, in insert
self.run_before_save_methods()
File "apps/frappe/frappe/model/document.py", line 1045, in run_before_save_methods
self.run_method("validate")
File "apps/frappe/frappe/model/document.py", line 914, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
File "apps/frappe/frappe/model/document.py", line 1264, in composer
return composed(self, method, *args, **kwargs)
File "apps/frappe/frappe/model/document.py", line 1246, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
File "apps/frappe/frappe/model/document.py", line 911, in fn
return method_object(*args, **kwargs)
File "apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py", line 122, in validate
self.validate_qty()
File "apps/erpnext/erpnext/stock/doctype/stock_entry/stock_entry.py", line 433, in validate_qty
transferred_materials = frappe.db.sql(
File "apps/frappe/frappe/database/database.py", line 220, in sql
self._cursor.execute(query, values)
File "env/lib/python3.10/site-packages/pymysql/cursors.py", line 158, in execute
result = self._query(query)
File "env/lib/python3.10/site-packages/pymysql/cursors.py", line 325, in _query
conn.query(q)
File "env/lib/python3.10/site-packages/pymysql/connections.py", line 549, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
File "env/lib/python3.10/site-packages/pymysql/connections.py", line 779, in _read_query_result
result.read()
File "env/lib/python3.10/site-packages/pymysql/connections.py", line 1157, in read
first_packet = self.connection._read_packet()
File "env/lib/python3.10/site-packages/pymysql/connections.py", line 729, in _read_packet
packet.raise_for_error()
File "env/lib/python3.10/site-packages/pymysql/protocol.py", line 221, in raise_for_error
err.raise_mysql_exception(self._data)
File "env/lib/python3.10/site-packages/pymysql/err.py", line 143, in raise_mysql_exception
raise errorclass(errno, errval)
pymysql.err.OperationalError: (1052, "Column 'qty' in field list is ambiguous")