renamed purpose in stock entry
This commit is contained in:
parent
c7b916ac46
commit
ffbeb02428
@ -19,7 +19,7 @@ def create_stock_entry_types():
|
|||||||
|
|
||||||
for purpose in ["Material Issue", "Material Receipt", "Material Transfer",
|
for purpose in ["Material Issue", "Material Receipt", "Material Transfer",
|
||||||
"Material Transfer for Manufacture", "Material Consumption for Manufacture", "Manufacture",
|
"Material Transfer for Manufacture", "Material Consumption for Manufacture", "Manufacture",
|
||||||
"Repack", "Subcontract", "Stock Out", "Stock In"]:
|
"Repack", "Subcontract", "Send to Warehouse", "Receive at Warehouse"]:
|
||||||
|
|
||||||
ste_type = frappe.get_doc({
|
ste_type = frappe.get_doc({
|
||||||
'doctype': 'Stock Entry Type',
|
'doctype': 'Stock Entry Type',
|
||||||
|
@ -92,8 +92,8 @@ def install(country=None):
|
|||||||
{'doctype': 'Stock Entry Type', 'name': 'Subcontract', 'purpose': 'Subcontract'},
|
{'doctype': 'Stock Entry Type', 'name': 'Subcontract', 'purpose': 'Subcontract'},
|
||||||
{'doctype': 'Stock Entry Type', 'name': 'Material Transfer for Manufacture', 'purpose': 'Material Transfer for Manufacture'},
|
{'doctype': 'Stock Entry Type', 'name': 'Material Transfer for Manufacture', 'purpose': 'Material Transfer for Manufacture'},
|
||||||
{'doctype': 'Stock Entry Type', 'name': 'Material Consumption for Manufacture', 'purpose': 'Material Consumption for Manufacture'},
|
{'doctype': 'Stock Entry Type', 'name': 'Material Consumption for Manufacture', 'purpose': 'Material Consumption for Manufacture'},
|
||||||
{'doctype': 'Stock Entry Type', 'name': 'Stock Out', 'purpose': 'Stock Out'},
|
{'doctype': 'Stock Entry Type', 'name': 'Send to Warehouse', 'purpose': 'Send to Warehouse'},
|
||||||
{'doctype': 'Stock Entry Type', 'name': 'Stock In', 'purpose': 'Stock In'},
|
{'doctype': 'Stock Entry Type', 'name': 'Receive at Warehouse', 'purpose': 'Receive at Warehouse'},
|
||||||
|
|
||||||
# Designation
|
# Designation
|
||||||
{'doctype': 'Designation', 'designation_name': _('CEO')},
|
{'doctype': 'Designation', 'designation_name': _('CEO')},
|
||||||
|
@ -14,12 +14,12 @@ frappe.ui.form.on('Stock Entry', {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
frm.set_query('outward_stock_entry', function() {
|
frm.set_query('outgoing_stock_entry', function() {
|
||||||
return {
|
return {
|
||||||
filters: [
|
filters: [
|
||||||
['Stock Entry', 'docstatus', '=', 1],
|
['Stock Entry', 'docstatus', '=', 1],
|
||||||
['Stock Entry', 'per_transferred', '<','100'],
|
['Stock Entry', 'per_transferred', '<','100'],
|
||||||
['Stock Entry', 'purpose', '=', 'Stock Out']
|
['Stock Entry', 'purpose', '=', 'Send to Warehouse']
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -102,7 +102,7 @@ frappe.ui.form.on('Stock Entry', {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
outward_stock_entry: function(frm) {
|
outgoing_stock_entry: function(frm) {
|
||||||
frappe.call({
|
frappe.call({
|
||||||
doc: frm.doc,
|
doc: frm.doc,
|
||||||
method: "set_items_for_stock_in",
|
method: "set_items_for_stock_in",
|
||||||
@ -159,9 +159,9 @@ frappe.ui.form.on('Stock Entry', {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (frm.doc.docstatus === 1
|
if (frm.doc.docstatus === 1 && frm.doc.purpose == 'Send to Warehouse') {
|
||||||
&& frm.doc.purpose == 'Stock Out') {
|
if (frm.doc.per_transferred < 100) {
|
||||||
frm.add_custom_button(__('Make Stock In Entry'), function() {
|
frm.add_custom_button(__('Receive at Warehouse Entry'), function() {
|
||||||
frappe.model.open_mapped_doc({
|
frappe.model.open_mapped_doc({
|
||||||
method: "erpnext.stock.doctype.stock_entry.stock_entry.make_stock_in_entry",
|
method: "erpnext.stock.doctype.stock_entry.stock_entry.make_stock_in_entry",
|
||||||
frm: frm
|
frm: frm
|
||||||
@ -169,6 +169,18 @@ frappe.ui.form.on('Stock Entry', {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (frm.doc.per_transferred > 0) {
|
||||||
|
frm.add_custom_button(__('Received Stock Entries'), function() {
|
||||||
|
frappe.route_options = {
|
||||||
|
'outgoing_stock_entry': frm.doc.name,
|
||||||
|
'docstatus': ['!=', 2]
|
||||||
|
};
|
||||||
|
|
||||||
|
frappe.set_route('List', 'Stock Entry');
|
||||||
|
}, __("View"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (frm.doc.docstatus===0) {
|
if (frm.doc.docstatus===0) {
|
||||||
frm.add_custom_button(__('Purchase Invoice'), function() {
|
frm.add_custom_button(__('Purchase Invoice'), function() {
|
||||||
erpnext.utils.map_current_doc({
|
erpnext.utils.map_current_doc({
|
||||||
@ -770,9 +782,9 @@ erpnext.stock.StockEntry = erpnext.stock.StockController.extend({
|
|||||||
},
|
},
|
||||||
|
|
||||||
source_mandatory: ["Material Issue", "Material Transfer", "Subcontract",
|
source_mandatory: ["Material Issue", "Material Transfer", "Subcontract",
|
||||||
"Material Transfer for Manufacture", "Stock Out", "Stock In"],
|
"Material Transfer for Manufacture", "Send to Warehouse", "Receive at Warehouse"],
|
||||||
target_mandatory: ["Material Receipt", "Material Transfer", "Subcontract",
|
target_mandatory: ["Material Receipt", "Material Transfer", "Subcontract",
|
||||||
"Material Transfer for Manufacture", "Stock Out", "Stock In"],
|
"Material Transfer for Manufacture", "Send to Warehouse", "Receive at Warehouse"],
|
||||||
|
|
||||||
from_warehouse: function(doc) {
|
from_warehouse: function(doc) {
|
||||||
var me = this;
|
var me = this;
|
||||||
@ -837,8 +849,8 @@ erpnext.stock.StockEntry = erpnext.stock.StockController.extend({
|
|||||||
doc.purpose!='Material Issue');
|
doc.purpose!='Material Issue');
|
||||||
|
|
||||||
this.frm.fields_dict["items"].grid.set_column_disp("additional_cost", doc.purpose!='Material Issue');
|
this.frm.fields_dict["items"].grid.set_column_disp("additional_cost", doc.purpose!='Material Issue');
|
||||||
this.frm.toggle_reqd("outward_stock_entry",
|
this.frm.toggle_reqd("outgoing_stock_entry",
|
||||||
doc.purpose == 'Stock In' ? 1: 0);
|
doc.purpose == 'Receive at Warehouse' ? 1: 0);
|
||||||
},
|
},
|
||||||
|
|
||||||
supplier: function(doc) {
|
supplier: function(doc) {
|
||||||
|
@ -158,9 +158,9 @@
|
|||||||
"bold": 0,
|
"bold": 0,
|
||||||
"collapsible": 0,
|
"collapsible": 0,
|
||||||
"columns": 0,
|
"columns": 0,
|
||||||
"depends_on": "eval:doc.purpose == 'Stock In'",
|
"depends_on": "eval:doc.purpose == 'Receive at Warehouse'",
|
||||||
"fetch_if_empty": 0,
|
"fetch_if_empty": 0,
|
||||||
"fieldname": "outward_stock_entry",
|
"fieldname": "outgoing_stock_entry",
|
||||||
"fieldtype": "Link",
|
"fieldtype": "Link",
|
||||||
"hidden": 0,
|
"hidden": 0,
|
||||||
"ignore_user_permissions": 0,
|
"ignore_user_permissions": 0,
|
||||||
@ -210,7 +210,7 @@
|
|||||||
"no_copy": 0,
|
"no_copy": 0,
|
||||||
"oldfieldname": "purpose",
|
"oldfieldname": "purpose",
|
||||||
"oldfieldtype": "Select",
|
"oldfieldtype": "Select",
|
||||||
"options": "Material Issue\nMaterial Receipt\nMaterial Transfer\nMaterial Transfer for Manufacture\nMaterial Consumption for Manufacture\nManufacture\nRepack\nSubcontract\nStock Out\nStock In",
|
"options": "Material Issue\nMaterial Receipt\nMaterial Transfer\nMaterial Transfer for Manufacture\nMaterial Consumption for Manufacture\nManufacture\nRepack\nSubcontract\nSend to Warehouse\nReceive at Warehouse",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"print_hide": 0,
|
"print_hide": 0,
|
||||||
"print_hide_if_no_value": 0,
|
"print_hide_if_no_value": 0,
|
||||||
@ -2238,17 +2238,15 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"has_web_view": 0,
|
"has_web_view": 0,
|
||||||
"hide_heading": 0,
|
|
||||||
"hide_toolbar": 0,
|
"hide_toolbar": 0,
|
||||||
"icon": "fa fa-file-text",
|
"icon": "fa fa-file-text",
|
||||||
"idx": 1,
|
"idx": 1,
|
||||||
"image_view": 0,
|
|
||||||
"in_create": 0,
|
"in_create": 0,
|
||||||
"is_submittable": 1,
|
"is_submittable": 1,
|
||||||
"issingle": 0,
|
"issingle": 0,
|
||||||
"istable": 0,
|
"istable": 0,
|
||||||
"max_attachments": 0,
|
"max_attachments": 0,
|
||||||
"modified": "2019-03-14 16:18:08.665492",
|
"modified": "2019-03-26 12:02:19.319467",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Stock",
|
"module": "Stock",
|
||||||
"name": "Stock Entry",
|
"name": "Stock Entry",
|
||||||
@ -2333,7 +2331,6 @@
|
|||||||
],
|
],
|
||||||
"quick_entry": 0,
|
"quick_entry": 0,
|
||||||
"read_only": 0,
|
"read_only": 0,
|
||||||
"read_only_onload": 0,
|
|
||||||
"search_fields": "posting_date, from_warehouse, to_warehouse, purpose, remarks",
|
"search_fields": "posting_date, from_warehouse, to_warehouse, purpose, remarks",
|
||||||
"show_name_in_global_search": 1,
|
"show_name_in_global_search": 1,
|
||||||
"sort_field": "modified",
|
"sort_field": "modified",
|
||||||
|
@ -124,7 +124,7 @@ class StockEntry(StockController):
|
|||||||
def validate_purpose(self):
|
def validate_purpose(self):
|
||||||
valid_purposes = ["Material Issue", "Material Receipt", "Material Transfer",
|
valid_purposes = ["Material Issue", "Material Receipt", "Material Transfer",
|
||||||
"Material Transfer for Manufacture", "Manufacture", "Repack", "Subcontract",
|
"Material Transfer for Manufacture", "Manufacture", "Repack", "Subcontract",
|
||||||
"Material Consumption for Manufacture", "Stock Out", "Stock In"]
|
"Material Consumption for Manufacture", "Send to Warehouse", "Receive at Warehouse"]
|
||||||
|
|
||||||
if self.purpose not in valid_purposes:
|
if self.purpose not in valid_purposes:
|
||||||
frappe.throw(_("Purpose must be one of {0}").format(comma_or(valid_purposes)))
|
frappe.throw(_("Purpose must be one of {0}").format(comma_or(valid_purposes)))
|
||||||
@ -228,10 +228,10 @@ class StockEntry(StockController):
|
|||||||
"""perform various (sometimes conditional) validations on warehouse"""
|
"""perform various (sometimes conditional) validations on warehouse"""
|
||||||
|
|
||||||
source_mandatory = ["Material Issue", "Material Transfer", "Subcontract", "Material Transfer for Manufacture",
|
source_mandatory = ["Material Issue", "Material Transfer", "Subcontract", "Material Transfer for Manufacture",
|
||||||
"Material Consumption for Manufacture", "Stock Out", "Stock In"]
|
"Material Consumption for Manufacture", "Send to Warehouse", "Receive at Warehouse"]
|
||||||
|
|
||||||
target_mandatory = ["Material Receipt", "Material Transfer", "Subcontract",
|
target_mandatory = ["Material Receipt", "Material Transfer", "Subcontract",
|
||||||
"Material Transfer for Manufacture", "Stock Out", "Stock In"]
|
"Material Transfer for Manufacture", "Send to Warehouse", "Receive at Warehouse"]
|
||||||
|
|
||||||
validate_for_manufacture_repack = any([d.bom_no for d in self.get("items")])
|
validate_for_manufacture_repack = any([d.bom_no for d in self.get("items")])
|
||||||
|
|
||||||
@ -705,8 +705,8 @@ class StockEntry(StockController):
|
|||||||
def set_items_for_stock_in(self):
|
def set_items_for_stock_in(self):
|
||||||
self.items = []
|
self.items = []
|
||||||
|
|
||||||
if self.outward_stock_entry and self.purpose == 'Stock In':
|
if self.outgoing_stock_entry and self.purpose == 'Receive at Warehouse':
|
||||||
doc = frappe.get_doc('Stock Entry', self.outward_stock_entry)
|
doc = frappe.get_doc('Stock Entry', self.outgoing_stock_entry)
|
||||||
|
|
||||||
if doc.per_transferred == 100:
|
if doc.per_transferred == 100:
|
||||||
frappe.throw(_("Goods are already received against the outward entry {0}")
|
frappe.throw(_("Goods are already received against the outward entry {0}")
|
||||||
@ -1173,7 +1173,7 @@ class StockEntry(StockController):
|
|||||||
to fullfill Sales Order {2}.").format(item.item_code, sr, sales_order))
|
to fullfill Sales Order {2}.").format(item.item_code, sr, sales_order))
|
||||||
|
|
||||||
def update_transferred_qty(self):
|
def update_transferred_qty(self):
|
||||||
if self.purpose == 'Stock In':
|
if self.purpose == 'Receive at Warehouse':
|
||||||
stock_entries = {}
|
stock_entries = {}
|
||||||
stock_entries_child_list = []
|
stock_entries_child_list = []
|
||||||
for d in self.items:
|
for d in self.items:
|
||||||
@ -1257,7 +1257,7 @@ def move_sample_to_retention_warehouse(company, items):
|
|||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def make_stock_in_entry(source_name, target_doc=None):
|
def make_stock_in_entry(source_name, target_doc=None):
|
||||||
def set_missing_values(source, target):
|
def set_missing_values(source, target):
|
||||||
target.purpose = 'Stock In'
|
target.purpose = 'Receive at Warehouse'
|
||||||
target.set_stock_entry_type()
|
target.set_stock_entry_type()
|
||||||
|
|
||||||
def update_item(source_doc, target_doc, source_parent):
|
def update_item(source_doc, target_doc, source_parent):
|
||||||
@ -1269,7 +1269,7 @@ def make_stock_in_entry(source_name, target_doc=None):
|
|||||||
"Stock Entry": {
|
"Stock Entry": {
|
||||||
"doctype": "Stock Entry",
|
"doctype": "Stock Entry",
|
||||||
"field_map": {
|
"field_map": {
|
||||||
"name": "outward_stock_entry"
|
"name": "outgoing_stock_entry"
|
||||||
},
|
},
|
||||||
"validation": {
|
"validation": {
|
||||||
"docstatus": ["=", 1]
|
"docstatus": ["=", 1]
|
||||||
|
@ -5,11 +5,11 @@ frappe.listview_settings['Stock Entry'] = {
|
|||||||
if (doc.docstatus === 0) {
|
if (doc.docstatus === 0) {
|
||||||
return [__("Draft"), "red", "docstatus,=,0"];
|
return [__("Draft"), "red", "docstatus,=,0"];
|
||||||
|
|
||||||
} else if (doc.purpose === 'Stock Out' && doc.per_transferred < 100) {
|
} else if (doc.purpose === 'Send to Warehouse' && doc.per_transferred < 100) {
|
||||||
// not delivered & overdue
|
// not delivered & overdue
|
||||||
return [__("Goods In Transit"), "grey", "per_transferred,<,100"];
|
return [__("Goods In Transit"), "grey", "per_transferred,<,100"];
|
||||||
|
|
||||||
} else if (doc.purpose === 'Stock Out' && doc.per_transferred === 100) {
|
} else if (doc.purpose === 'Send to Warehouse' && doc.per_transferred === 100) {
|
||||||
return [__("Goods Transferred"), "green", "per_transferred,=,100"];
|
return [__("Goods Transferred"), "green", "per_transferred,=,100"];
|
||||||
} else if (doc.docstatus === 2) {
|
} else if (doc.docstatus === 2) {
|
||||||
return [__("Canceled"), "red", "docstatus,=,2"];
|
return [__("Canceled"), "red", "docstatus,=,2"];
|
||||||
|
@ -752,7 +752,7 @@ class TestStockEntry(unittest.TestCase):
|
|||||||
create_warehouse("_Test Warehouse FG 1")
|
create_warehouse("_Test Warehouse FG 1")
|
||||||
|
|
||||||
outward_entry = make_stock_entry(item_code="_Test Item",
|
outward_entry = make_stock_entry(item_code="_Test Item",
|
||||||
purpose="Stock Out",
|
purpose="Send to Warehouse",
|
||||||
source="_Test Warehouse - _TC",
|
source="_Test Warehouse - _TC",
|
||||||
target="_Test Warehouse 1 - _TC", qty=50, basic_rate=100)
|
target="_Test Warehouse 1 - _TC", qty=50, basic_rate=100)
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
"label": "Purpose",
|
"label": "Purpose",
|
||||||
"length": 0,
|
"length": 0,
|
||||||
"no_copy": 0,
|
"no_copy": 0,
|
||||||
"options": "\nMaterial Issue\nMaterial Receipt\nMaterial Transfer\nMaterial Transfer for Manufacture\nMaterial Consumption for Manufacture\nManufacture\nRepack\nSubcontract\nStock Out\nStock In",
|
"options": "\nMaterial Issue\nMaterial Receipt\nMaterial Transfer\nMaterial Transfer for Manufacture\nMaterial Consumption for Manufacture\nManufacture\nRepack\nSubcontract\nSend to Warehouse\nReceive at Warehouse",
|
||||||
"permlevel": 0,
|
"permlevel": 0,
|
||||||
"precision": "",
|
"precision": "",
|
||||||
"print_hide": 0,
|
"print_hide": 0,
|
||||||
@ -60,7 +60,7 @@
|
|||||||
"issingle": 0,
|
"issingle": 0,
|
||||||
"istable": 0,
|
"istable": 0,
|
||||||
"max_attachments": 0,
|
"max_attachments": 0,
|
||||||
"modified": "2019-03-13 19:30:42.144377",
|
"modified": "2019-03-25 19:30:42.144377",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Stock",
|
"module": "Stock",
|
||||||
"name": "Stock Entry Type",
|
"name": "Stock Entry Type",
|
||||||
|
Loading…
Reference in New Issue
Block a user