feat: added stock entry type master to select purpose in the stock entry

This commit is contained in:
Rohit Waghchaure 2019-03-13 18:23:18 +05:30
parent 327c194144
commit 1f2f9cf360
16 changed files with 415 additions and 73 deletions

View File

@ -452,6 +452,7 @@ def make_rm_stock_entry(purchase_order, rm_items):
stock_entry.address_display = purchase_order.address_display
stock_entry.company = purchase_order.company
stock_entry.to_warehouse = purchase_order.supplier_warehouse
stock_entry.set_stock_entry_type()
for item_code in fg_items:
for rm_item_data in rm_items_list:

View File

@ -568,6 +568,7 @@ def make_stock_entry(production_order_id, purpose, qty=None):
stock_entry.bom_no = production_order.bom_no
stock_entry.use_multi_level_bom = production_order.use_multi_level_bom
stock_entry.fg_completed_qty = qty or (flt(production_order.qty) - flt(production_order.produced_qty))
stock_entry.set_stock_entry_type()
if purpose=="Material Transfer for Manufacture":
stock_entry.to_warehouse = wip_warehouse

View File

@ -625,6 +625,7 @@ def make_stock_entry(work_order_id, purpose, qty=None):
additional_costs = get_additional_costs(work_order, fg_qty=stock_entry.fg_completed_qty)
stock_entry.set("additional_costs", additional_costs)
stock_entry.set_stock_entry_type()
stock_entry.get_items()
return stock_entry.as_dict()

View File

@ -591,4 +591,5 @@ erpnext.patches.v12_0.add_item_name_in_work_orders
erpnext.patches.v12_0.update_pricing_rule_fields
erpnext.patches.v11_1.make_job_card_time_logs
erpnext.patches.v12_0.rename_pricing_rule_child_doctypes
erpnext.patches.v12_0.move_target_distribution_from_parent_to_child #wmnfb
erpnext.patches.v12_0.move_target_distribution_from_parent_to_child
erpnext.patches.v12_0.stock_entry_enhancements

View File

@ -7,10 +7,31 @@ import frappe
from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
def execute():
company = frappe.get_cached_value("Company", {'country': 'India'}, 'name')
if not company:
return
create_stock_entry_types()
company = frappe.get_cached_value("Company", {'country': 'India'}, 'name')
if company:
pass
# add_gst_hsn_code_field()
def create_stock_entry_types():
frappe.reload_doc('stock', 'doctype', 'stock_entry_type')
for purpose in ["Material Issue", "Material Receipt", "Material Transfer",
"Material Transfer for Manufacture", "Material Consumption for Manufacture", "Manufacture",
"Repack", "Subcontract"]:
ste_type = frappe.get_doc({
'doctype': 'Stock Entry Type',
'name': purpose,
'purpose': purpose
})
try:
ste_type.insert()
except frappe.DuplicateEntryError:
pass
def add_gst_hsn_code_field():
custom_fields = {
'Stock Entry Detail': [dict(fieldname='gst_hsn_code', label='HSN/SAC',
fieldtype='Data', fetch_from='item_code.gst_hsn_code',

View File

@ -82,6 +82,17 @@ def install(country=None):
{'doctype': 'Employment Type', 'employee_type_name': _('Intern')},
{'doctype': 'Employment Type', 'employee_type_name': _('Apprentice')},
# Stock Entry Type
{'doctype': 'Stock Entry Type', 'name': 'Material Issue', 'purpose': 'Material Issue'},
{'doctype': 'Stock Entry Type', 'name': 'Material Receipt', 'purpose': 'Material Receipt'},
{'doctype': 'Stock Entry Type', 'name': 'Material Transfer', 'purpose': 'Material Transfer'},
{'doctype': 'Stock Entry Type', 'name': 'Manufacture', 'purpose': 'Manufacture'},
{'doctype': 'Stock Entry Type', 'name': 'Repack', 'purpose': 'Repack'},
{'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 Consumption for Manufacture', 'purpose': 'Material Consumption for Manufacture'},
# Designation
{'doctype': 'Designation', 'designation_name': _('CEO')},
{'doctype': 'Designation', 'designation_name': _('Manager')},

View File

@ -426,6 +426,7 @@ def make_stock_entry(source_name, target_doc=None):
target.purpose = "Material Receipt"
target.run_method("calculate_rate_and_amount")
target.set_stock_entry_type()
target.set_job_card_data()
doclist = get_mapped_doc("Material Request", source_name, {

View File

@ -21,6 +21,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "items_section",
"fieldtype": "Section Break",
"hidden": 0,
@ -54,6 +55,7 @@
"collapsible": 0,
"columns": 0,
"default": "{purpose}",
"fetch_if_empty": 0,
"fieldname": "title",
"fieldtype": "Data",
"hidden": 1,
@ -87,6 +89,7 @@
"collapsible": 0,
"columns": 0,
"default": "",
"fetch_if_empty": 0,
"fieldname": "naming_series",
"fieldtype": "Select",
"hidden": 0,
@ -114,6 +117,40 @@
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "stock_entry_type",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Stock Entry Type",
"length": 0,
"no_copy": 0,
"options": "Stock Entry Type",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
@ -121,7 +158,9 @@
"bold": 1,
"collapsible": 0,
"columns": 0,
"default": "Material Issue",
"default": "",
"fetch_from": "stock_entry_type.purpose",
"fetch_if_empty": 0,
"fieldname": "purpose",
"fieldtype": "Select",
"hidden": 0,
@ -140,7 +179,7 @@
"permlevel": 0,
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
@ -156,6 +195,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "company",
"fieldtype": "Link",
"hidden": 0,
@ -191,6 +231,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "eval:in_list([\"Material Transfer for Manufacture\", \"Manufacture\", \"Material Consumption for Manufacture\"], doc.purpose)",
"fetch_if_empty": 0,
"fieldname": "work_order",
"fieldtype": "Link",
"hidden": 0,
@ -226,6 +267,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "eval:doc.purpose==\"Subcontract\"",
"fetch_if_empty": 0,
"fieldname": "purchase_order",
"fieldtype": "Link",
"hidden": 0,
@ -260,6 +302,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "eval:doc.purpose==\"Sales Return\"",
"fetch_if_empty": 0,
"fieldname": "delivery_note_no",
"fieldtype": "Link",
"hidden": 0,
@ -295,6 +338,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "eval:doc.purpose==\"Sales Return\"",
"fetch_if_empty": 0,
"fieldname": "sales_invoice_no",
"fieldtype": "Link",
"hidden": 0,
@ -328,6 +372,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "eval:doc.purpose==\"Purchase Return\"",
"fetch_if_empty": 0,
"fieldname": "purchase_receipt_no",
"fieldtype": "Link",
"hidden": 0,
@ -362,72 +407,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"depends_on": "eval:in_list([\"Material Issue\", \"Material Transfer\", \"Manufacture\", \"Repack\", \t\t\t\t\t\"Subcontract\", \"Material Transfer for Manufacture\", \"Material Consumption for Manufacture\"], doc.purpose)",
"fieldname": "from_bom",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "From BOM",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 1,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "inspection_required",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Inspection Required",
"length": 0,
"no_copy": 0,
"options": "",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "col2",
"fieldtype": "Column Break",
"hidden": 0,
@ -463,6 +443,7 @@
"columns": 0,
"default": "Today",
"depends_on": "",
"fetch_if_empty": 0,
"fieldname": "posting_date",
"fieldtype": "Date",
"hidden": 0,
@ -497,6 +478,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "",
"fetch_if_empty": 0,
"fieldname": "posting_time",
"fieldtype": "Time",
"hidden": 0,
@ -531,6 +513,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "eval:doc.docstatus==0",
"fetch_if_empty": 0,
"fieldname": "set_posting_time",
"fieldtype": "Check",
"hidden": 0,
@ -556,6 +539,74 @@
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "inspection_required",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Inspection Required",
"length": 0,
"no_copy": 0,
"options": "",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"depends_on": "eval:in_list([\"Material Issue\", \"Material Transfer\", \"Manufacture\", \"Repack\", \t\t\t\t\t\"Subcontract\", \"Material Transfer for Manufacture\", \"Material Consumption for Manufacture\"], doc.purpose)",
"fetch_if_empty": 0,
"fieldname": "from_bom",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "From BOM",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 1,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
@ -564,6 +615,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "eval: doc.from_bom && (doc.purpose!==\"Sales Return\" && doc.purpose!==\"Purchase Return\")",
"fetch_if_empty": 0,
"fieldname": "sb1",
"fieldtype": "Section Break",
"hidden": 0,
@ -596,6 +648,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "from_bom",
"fetch_if_empty": 0,
"fieldname": "bom_no",
"fieldtype": "Link",
"hidden": 0,
@ -630,6 +683,7 @@
"columns": 0,
"depends_on": "from_bom",
"description": "As per Stock UOM",
"fetch_if_empty": 0,
"fieldname": "fg_completed_qty",
"fieldtype": "Float",
"hidden": 0,
@ -663,6 +717,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "cb1",
"fieldtype": "Column Break",
"hidden": 0,
@ -696,6 +751,7 @@
"default": "1",
"depends_on": "from_bom",
"description": "Including items for sub assemblies",
"fetch_if_empty": 0,
"fieldname": "use_multi_level_bom",
"fieldtype": "Check",
"hidden": 0,
@ -728,6 +784,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "from_bom",
"fetch_if_empty": 0,
"fieldname": "get_items",
"fieldtype": "Button",
"hidden": 0,
@ -760,6 +817,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "section_break_12",
"fieldtype": "Section Break",
"hidden": 0,
@ -791,6 +849,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "from_warehouse",
"fieldtype": "Link",
"hidden": 0,
@ -826,6 +885,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "from_warehouse",
"fetch_if_empty": 0,
"fieldname": "source_warehouse_address",
"fieldtype": "Link",
"hidden": 0,
@ -859,6 +919,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "source_address_display",
"fieldtype": "Small Text",
"hidden": 0,
@ -891,6 +952,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "cb0",
"fieldtype": "Column Break",
"hidden": 0,
@ -921,6 +983,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "to_warehouse",
"fieldtype": "Link",
"hidden": 0,
@ -956,6 +1019,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "to_warehouse",
"fetch_if_empty": 0,
"fieldname": "target_warehouse_address",
"fieldtype": "Link",
"hidden": 0,
@ -989,6 +1053,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "target_address_display",
"fieldtype": "Small Text",
"hidden": 0,
@ -1021,6 +1086,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "sb0",
"fieldtype": "Section Break",
"hidden": 0,
@ -1052,6 +1118,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "scan_barcode",
"fieldtype": "Data",
"hidden": 0,
@ -1084,6 +1151,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "items",
"fieldtype": "Table",
"hidden": 0,
@ -1119,6 +1187,7 @@
"collapsible": 0,
"columns": 0,
"description": "",
"fetch_if_empty": 0,
"fieldname": "get_stock_and_rate",
"fieldtype": "Button",
"hidden": 0,
@ -1152,6 +1221,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "section_break_19",
"fieldtype": "Section Break",
"hidden": 0,
@ -1183,6 +1253,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "total_incoming_value",
"fieldtype": "Currency",
"hidden": 0,
@ -1216,6 +1287,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "column_break_22",
"fieldtype": "Column Break",
"hidden": 0,
@ -1247,6 +1319,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "total_outgoing_value",
"fieldtype": "Currency",
"hidden": 0,
@ -1280,6 +1353,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "value_difference",
"fieldtype": "Currency",
"hidden": 0,
@ -1314,6 +1388,7 @@
"collapsible": 1,
"collapsible_depends_on": "total_additional_costs",
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "additional_costs_section",
"fieldtype": "Section Break",
"hidden": 0,
@ -1346,6 +1421,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "additional_costs",
"fieldtype": "Table",
"hidden": 0,
@ -1379,6 +1455,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "total_additional_costs",
"fieldtype": "Currency",
"hidden": 0,
@ -1413,6 +1490,7 @@
"collapsible": 1,
"columns": 0,
"depends_on": "eval: in_list([\"Sales Return\", \"Purchase Return\", \"Subcontract\"], doc.purpose)",
"fetch_if_empty": 0,
"fieldname": "contact_section",
"fieldtype": "Section Break",
"hidden": 0,
@ -1445,6 +1523,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "eval:doc.purpose==\"Purchase Return\" || doc.purpose==\"Subcontract\"",
"fetch_if_empty": 0,
"fieldname": "supplier",
"fieldtype": "Link",
"hidden": 0,
@ -1480,6 +1559,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "eval:doc.purpose==\"Purchase Return\" || doc.purpose==\"Subcontract\"",
"fetch_if_empty": 0,
"fieldname": "supplier_name",
"fieldtype": "Data",
"hidden": 0,
@ -1514,6 +1594,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "eval:doc.purpose==\"Purchase Return\" || doc.purpose==\"Subcontract\"",
"fetch_if_empty": 0,
"fieldname": "supplier_address",
"fieldtype": "Link",
"hidden": 0,
@ -1548,6 +1629,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "address_display",
"fieldtype": "Small Text",
"hidden": 0,
@ -1580,6 +1662,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "column_break_39",
"fieldtype": "Column Break",
"hidden": 0,
@ -1612,6 +1695,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "eval:doc.purpose==\"Sales Return\"",
"fetch_if_empty": 0,
"fieldname": "customer",
"fieldtype": "Link",
"hidden": 0,
@ -1647,6 +1731,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "eval:doc.purpose==\"Sales Return\"",
"fetch_if_empty": 0,
"fieldname": "customer_name",
"fieldtype": "Data",
"hidden": 0,
@ -1681,6 +1766,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "eval:doc.purpose==\"Sales Return\"",
"fetch_if_empty": 0,
"fieldname": "customer_address",
"fieldtype": "Small Text",
"hidden": 0,
@ -1714,6 +1800,7 @@
"bold": 0,
"collapsible": 1,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "printing_settings",
"fieldtype": "Section Break",
"hidden": 0,
@ -1746,6 +1833,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "select_print_heading",
"fieldtype": "Link",
"hidden": 0,
@ -1780,6 +1868,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "letter_head",
"fieldtype": "Link",
"hidden": 0,
@ -1813,6 +1902,7 @@
"bold": 0,
"collapsible": 1,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "more_info",
"fieldtype": "Section Break",
"hidden": 0,
@ -1845,6 +1935,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "project",
"fieldtype": "Link",
"hidden": 0,
@ -1878,6 +1969,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "remarks",
"fieldtype": "Text",
"hidden": 0,
@ -1911,6 +2003,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "col5",
"fieldtype": "Column Break",
"hidden": 0,
@ -1944,6 +2037,7 @@
"collapsible": 0,
"columns": 0,
"depends_on": "total_amount",
"fetch_if_empty": 0,
"fieldname": "total_amount",
"fieldtype": "Currency",
"hidden": 0,
@ -1976,6 +2070,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "job_card",
"fieldtype": "Link",
"hidden": 0,
@ -2009,6 +2104,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "amended_from",
"fieldtype": "Link",
"hidden": 0,
@ -2043,6 +2139,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_if_empty": 0,
"fieldname": "credit_note",
"fieldtype": "Link",
"hidden": 1,
@ -2081,7 +2178,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2018-10-18 04:42:41.452572",
"modified": "2019-03-13 16:36:37.491243",
"modified_by": "Administrator",
"module": "Stock",
"name": "Stock Entry",

View File

@ -478,6 +478,11 @@ class StockEntry(StockController):
if self.purpose not in ['Manufacture', 'Repack']:
self.total_amount = sum([flt(item.amount) for item in self.get("items")])
def set_stock_entry_type(self):
if not self.stock_entry_type and self.purpose:
self.stock_entry_type = frappe.get_cached_value('Stock Entry Type',
{'purpose': self.purpose}, 'name')
def validate_purchase_order(self):
"""Throw exception if more raw material is transferred against Purchase Order than in
the raw materials supplied table"""
@ -1138,6 +1143,7 @@ def move_sample_to_retention_warehouse(company, items):
stock_entry = frappe.new_doc("Stock Entry")
stock_entry.company = company
stock_entry.purpose = "Material Transfer"
stock_entry.set_stock_entry_type()
for item in items:
if item.get('sample_quantity') and item.get('batch_no'):
sample_quantity = validate_sample_quantity(item.get('item_code'), item.get('sample_quantity'),

View File

@ -124,6 +124,7 @@ def make_stock_entry(**args):
'expense_account': args.expense_account
})
s.set_stock_entry_type()
if not args.do_not_save:
s.insert()
if not args.do_not_submit:

View File

@ -239,6 +239,7 @@ class TestStockEntry(unittest.TestCase):
repack = frappe.copy_doc(test_records[3])
repack.posting_date = nowdate()
repack.posting_time = nowtime()
repack.set_stock_entry_type()
repack.insert()
repack.submit()
@ -272,6 +273,8 @@ class TestStockEntry(unittest.TestCase):
"amount": 200
},
])
repack.set_stock_entry_type()
repack.insert()
repack.submit()
@ -327,6 +330,7 @@ class TestStockEntry(unittest.TestCase):
def test_serial_no_not_reqd(self):
se = frappe.copy_doc(test_records[0])
se.get("items")[0].serial_no = "ABCD"
se.set_stock_entry_type()
se.insert()
self.assertRaises(SerialNoNotRequiredError, se.submit)
@ -335,6 +339,7 @@ class TestStockEntry(unittest.TestCase):
se.get("items")[0].item_code = "_Test Serialized Item"
se.get("items")[0].qty = 2
se.get("items")[0].transfer_qty = 2
se.set_stock_entry_type()
se.insert()
self.assertRaises(SerialNoRequiredError, se.submit)
@ -344,6 +349,7 @@ class TestStockEntry(unittest.TestCase):
se.get("items")[0].qty = 2
se.get("items")[0].serial_no = "ABCD\nEFGH\nXYZ"
se.get("items")[0].transfer_qty = 2
se.set_stock_entry_type()
se.insert()
self.assertRaises(SerialNoQtyError, se.submit)
@ -353,6 +359,7 @@ class TestStockEntry(unittest.TestCase):
se.get("items")[0].qty = 2
se.get("items")[0].serial_no = "ABCD"
se.get("items")[0].transfer_qty = 2
se.set_stock_entry_type()
se.insert()
self.assertRaises(SerialNoQtyError, se.submit)
@ -362,6 +369,7 @@ class TestStockEntry(unittest.TestCase):
se.get("items")[0].qty = 2
se.get("items")[0].serial_no = "ABCD\nEFGH"
se.get("items")[0].transfer_qty = 2
se.set_stock_entry_type()
se.insert()
se.submit()
@ -382,6 +390,7 @@ class TestStockEntry(unittest.TestCase):
se.get("items")[0].t_warehouse = None
se.get("items")[0].serial_no = "ABCD\nEFGH"
se.get("items")[0].transfer_qty = 2
se.set_stock_entry_type()
se.insert()
self.assertRaises(SerialNoNotExistsError, se.submit)
@ -394,6 +403,7 @@ class TestStockEntry(unittest.TestCase):
se.get("items")[0].qty = 1
se.get("items")[0].serial_no = serial_nos[0]
se.get("items")[0].transfer_qty = 1
se.set_stock_entry_type()
se.insert()
self.assertRaises(SerialNoDuplicateError, se.submit)
@ -420,6 +430,7 @@ class TestStockEntry(unittest.TestCase):
se.get("items")[0].serial_no = serial_nos[0]
se.get("items")[0].s_warehouse = "_Test Warehouse - _TC"
se.get("items")[0].t_warehouse = "_Test Warehouse 1 - _TC"
se.set_stock_entry_type()
se.insert()
self.assertRaises(SerialNoItemError, se.submit)
@ -435,6 +446,7 @@ class TestStockEntry(unittest.TestCase):
se.get("items")[0].serial_no = serial_no
se.get("items")[0].s_warehouse = "_Test Warehouse - _TC"
se.get("items")[0].t_warehouse = "_Test Warehouse 1 - _TC"
se.set_stock_entry_type()
se.insert()
se.submit()
self.assertTrue(frappe.db.get_value("Serial No", serial_no, "warehouse"), "_Test Warehouse 1 - _TC")
@ -456,6 +468,7 @@ class TestStockEntry(unittest.TestCase):
se.get("items")[0].serial_no = serial_nos[0]
se.get("items")[0].s_warehouse = "_Test Warehouse 1 - _TC"
se.get("items")[0].t_warehouse = "_Test Warehouse - _TC"
se.set_stock_entry_type()
se.insert()
self.assertRaises(SerialNoWarehouseError, se.submit)
@ -476,6 +489,7 @@ class TestStockEntry(unittest.TestCase):
from erpnext.stock.utils import InvalidWarehouseCompany
st1 = frappe.copy_doc(test_records[0])
st1.get("items")[0].t_warehouse="_Test Warehouse 2 - _TC1"
st1.set_stock_entry_type()
st1.insert()
self.assertRaises(InvalidWarehouseCompany, st1.submit)
@ -506,6 +520,7 @@ class TestStockEntry(unittest.TestCase):
st1.get("items")[0].t_warehouse="_Test Warehouse 2 - _TC1"
st1.get("items")[0].expense_account = "Stock Adjustment - _TC1"
st1.get("items")[0].cost_center = "Main - _TC1"
st1.set_stock_entry_type()
st1.insert()
st1.submit()
@ -529,6 +544,7 @@ class TestStockEntry(unittest.TestCase):
se = frappe.copy_doc(test_records[0])
se.set_posting_time = 1
se.posting_date = add_days(nowdate(), -15)
se.set_stock_entry_type()
se.insert()
self.assertRaises(StockFreezeError, se.submit)
frappe.db.set_value("Stock Settings", None, "stock_frozen_upto_days", 0)
@ -737,6 +753,7 @@ def make_serialized_item(item_code=None, serial_no=None, target_warehouse=None):
if target_warehouse:
se.get("items")[0].t_warehouse = target_warehouse
se.set_stock_entry_type()
se.insert()
se.submit()
return se

View File

@ -0,0 +1,8 @@
// Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
frappe.ui.form.on('Stock Entry Type', {
// refresh: function(frm) {
// }
});

View File

@ -0,0 +1,156 @@
{
"allow_copy": 0,
"allow_events_in_timeline": 0,
"allow_guest_to_view": 0,
"allow_import": 0,
"allow_rename": 0,
"autoname": "Prompt",
"beta": 0,
"creation": "2019-03-13 16:23:46.636769",
"custom": 0,
"docstatus": 0,
"doctype": "DocType",
"document_type": "",
"editable_grid": 1,
"engine": "InnoDB",
"fields": [
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"default": "Material Issue",
"fetch_if_empty": 0,
"fieldname": "purpose",
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Purpose",
"length": 0,
"no_copy": 0,
"options": "\nMaterial Issue\nMaterial Receipt\nMaterial Transfer\nMaterial Transfer for Manufacture\nMaterial Consumption for Manufacture\nManufacture\nRepack\nSubcontract",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 1,
"translatable": 0,
"unique": 0
}
],
"has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 0,
"image_view": 0,
"in_create": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2019-03-13 16:28:02.326991",
"modified_by": "Administrator",
"module": "Stock",
"name": "Stock Entry Type",
"name_case": "",
"owner": "Administrator",
"permissions": [
{
"amend": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"set_user_permissions": 0,
"share": 1,
"submit": 0,
"write": 1
},
{
"amend": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "Manufacturing Manager",
"set_user_permissions": 0,
"share": 1,
"submit": 0,
"write": 1
},
{
"amend": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "Stock Manager",
"set_user_permissions": 0,
"share": 1,
"submit": 0,
"write": 1
},
{
"amend": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "Stock User",
"set_user_permissions": 0,
"share": 1,
"submit": 0,
"write": 1
}
],
"quick_entry": 1,
"read_only": 0,
"read_only_onload": 0,
"show_name_in_global_search": 0,
"sort_field": "modified",
"sort_order": "ASC",
"track_changes": 1,
"track_seen": 0,
"track_views": 0
}

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class StockEntryType(Document):
pass

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt
from __future__ import unicode_literals
import frappe
import unittest
class TestStockEntryType(unittest.TestCase):
pass