mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-15 19:19:17 +00:00
Merge branch 'master' of github.com:webnotes/erpnext
This commit is contained in:
@@ -51,10 +51,9 @@ class DocType(BuyingController):
|
||||
msgprint("You can raise indent of maximum qty: %s for item: %s against sales order: %s\n Anyway, you can add more qty in new row for the same item." % (actual_so_qty - already_indented, item, so_no), raise_exception=1)
|
||||
|
||||
def validate_schedule_date(self):
|
||||
#:::::::: validate schedule date v/s indent date ::::::::::::
|
||||
for d in getlist(self.doclist, 'indent_details'):
|
||||
if d.schedule_date < self.doc.transaction_date:
|
||||
msgprint("Expected Schedule Date cannot be before Material Request Date")
|
||||
msgprint("Expected Date cannot be before Material Request Date")
|
||||
raise Exception
|
||||
|
||||
# Validate
|
||||
|
||||
@@ -20,6 +20,7 @@ sql = webnotes.conn.sql
|
||||
class NotUpdateStockError(webnotes.ValidationError): pass
|
||||
class StockOverReturnError(webnotes.ValidationError): pass
|
||||
class IncorrectValuationRateError(webnotes.ValidationError): pass
|
||||
class DuplicateEntryForProductionOrderError(webnotes.ValidationError): pass
|
||||
|
||||
from controllers.stock_controller import StockController
|
||||
|
||||
@@ -146,21 +147,32 @@ class DocType(StockController):
|
||||
return
|
||||
|
||||
if self.doc.purpose == "Manufacture/Repack":
|
||||
if not flt(self.doc.fg_completed_qty):
|
||||
msgprint(_("Manufacturing Quantity") + _(" is mandatory"), raise_exception=1)
|
||||
|
||||
if flt(pro_obj.doc.qty) < (flt(pro_obj.doc.produced_qty)
|
||||
+ flt(self.doc.fg_completed_qty)):
|
||||
# do not allow manufacture of qty > production order qty
|
||||
msgprint(_("For Item ") + pro_obj.doc.production_item
|
||||
+ _("Quantity already manufactured")
|
||||
+ " = %s." % flt(pro_obj.doc.produced_qty)
|
||||
+ _("Hence, maximum allowed Manufacturing Quantity")
|
||||
+ " = %s." % (flt(pro_obj.doc.qty) - flt(pro_obj.doc.produced_qty)),
|
||||
raise_exception=1)
|
||||
# check for double entry
|
||||
self.check_duplicate_entry_for_production_order()
|
||||
elif self.doc.purpose != "Material Transfer":
|
||||
self.doc.production_order = None
|
||||
|
||||
def check_duplicate_entry_for_production_order(self):
|
||||
other_ste = [t[0] for t in webnotes.conn.get_values("Stock Entry", {
|
||||
"production_order": self.doc.production_order,
|
||||
"purpose": self.doc.purpose,
|
||||
"docstatus": ["!=", 2]
|
||||
}, "name")]
|
||||
|
||||
if other_ste:
|
||||
production_item, qty = webnotes.conn.get_value("Production Order",
|
||||
self.doc.production_order, ["production_item", "qty"])
|
||||
args = other_ste + [production_item]
|
||||
fg_qty_already_entered = webnotes.conn.sql("""select sum(actual_qty)
|
||||
from `tabStock Entry Detail`
|
||||
where parent in (%s)
|
||||
and item_code = %s
|
||||
and ifnull(s_warehouse,'')='' """ % (", ".join(["%s" * len(other_ste)]), "%s"), args)[0][0]
|
||||
|
||||
if fg_qty_already_entered >= qty:
|
||||
webnotes.throw(_("Stock Entries already created for Production Order ")
|
||||
+ self.doc.production_order + ":" + ", ".join(other_ste), DuplicateEntryForProductionOrderError)
|
||||
|
||||
def set_total_amount(self):
|
||||
self.doc.total_amount = sum([flt(item.amount) for item in self.doclist.get({"parentfield": "mtn_details"})])
|
||||
|
||||
|
||||
@@ -180,6 +180,11 @@ wn.module_page["Stock"] = [
|
||||
route: "query-report/Purchase Order Items To Be Received",
|
||||
doctype: "Purchase Receipt"
|
||||
},
|
||||
{
|
||||
"label":wn._("Item Shortage Report"),
|
||||
route: "Report/Bin/Item Shortage Report",
|
||||
doctype: "Purchase Receipt"
|
||||
},
|
||||
{
|
||||
"label":wn._("Serial No Service Contract Expiry"),
|
||||
route: "Report/Serial No/Serial No Service Contract Expiry",
|
||||
|
||||
0
stock/report/item_shortage_report/__init__.py
Normal file
0
stock/report/item_shortage_report/__init__.py
Normal file
22
stock/report/item_shortage_report/item_shortage_report.txt
Normal file
22
stock/report/item_shortage_report/item_shortage_report.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
[
|
||||
{
|
||||
"creation": "2013-08-20 13:43:30",
|
||||
"docstatus": 0,
|
||||
"modified": "2013-08-20 13:46:15",
|
||||
"modified_by": "Administrator",
|
||||
"owner": "Administrator"
|
||||
},
|
||||
{
|
||||
"doctype": "Report",
|
||||
"is_standard": "Yes",
|
||||
"json": "{\"filters\":[[\"Bin\",\"projected_qty\",\"<\",\"0\"]],\"columns\":[[\"warehouse\",\"Bin\"],[\"item_code\",\"Bin\"],[\"actual_qty\",\"Bin\"],[\"ordered_qty\",\"Bin\"],[\"planned_qty\",\"Bin\"],[\"reserved_qty\",\"Bin\"],[\"projected_qty\",\"Bin\"]],\"sort_by\":\"Bin.projected_qty\",\"sort_order\":\"asc\",\"sort_by_next\":\"\",\"sort_order_next\":\"desc\"}",
|
||||
"name": "__common__",
|
||||
"ref_doctype": "Bin",
|
||||
"report_name": "Item Shortage Report",
|
||||
"report_type": "Report Builder"
|
||||
},
|
||||
{
|
||||
"doctype": "Report",
|
||||
"name": "Item Shortage Report"
|
||||
}
|
||||
]
|
||||
0
stock/report/items_to_be_requested/__init__.py
Normal file
0
stock/report/items_to_be_requested/__init__.py
Normal file
22
stock/report/items_to_be_requested/items_to_be_requested.txt
Normal file
22
stock/report/items_to_be_requested/items_to_be_requested.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
[
|
||||
{
|
||||
"creation": "2013-08-20 15:08:10",
|
||||
"docstatus": 0,
|
||||
"modified": "2013-08-20 15:10:43",
|
||||
"modified_by": "Administrator",
|
||||
"owner": "Administrator"
|
||||
},
|
||||
{
|
||||
"doctype": "Report",
|
||||
"is_standard": "Yes",
|
||||
"name": "__common__",
|
||||
"query": "SELECT\n tabBin.item_code as \"Item:Link/Item:120\",\n tabBin.warehouse as \"Item:Link/Warehouse:120\",\n tabBin.actual_qty as \"Actual:Float:90\",\n tabBin.indented_qty as \"Requested:Float:90\",\n tabBin.reserved_qty as \"Reserved:Float:90\",\n tabBin.ordered_qty as \"Ordered:Float:90\",\n tabBin.projected_qty as \"Projected:Float:90\"\nFROM\n tabBin, tabItem\nWHERE\n tabBin.item_code = tabItem.name\n AND tabItem.is_purchase_item = \"Yes\"\n AND tabBin.projected_qty < 0\nORDER BY\n tabBin.projected_qty ASC",
|
||||
"ref_doctype": "Item",
|
||||
"report_name": "Items To Be Requested",
|
||||
"report_type": "Query Report"
|
||||
},
|
||||
{
|
||||
"doctype": "Report",
|
||||
"name": "Items To Be Requested"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user