I am trying to get items from(Button) production order(select multiple production order) based on supplier name (supplier name in purchase order doc),but I am facing an error “TypeError: expected string or buffer”
in my .py file.
error -----
Traceback (most recent call last):
File "/home/frappe/frappe-bench/apps/frappe/frappe/app.py", line 62, in application
response = frappe.handler.handle()
File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 22, in handle
data = execute_cmd(cmd)
File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 53, in execute_cmd
return frappe.call(method, **frappe.form_dict)
File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 939, in call
return fn(*args, **newargs)
File "/home/frappe/frappe-bench/apps/frappe/frappe/model/mapper.py", line 38, in map_docs
target_doc = method(src, target_doc)
File "/home/frappe/frappe-bench/apps/footwear_erpnext/footwear_erpnext/hooks_call/production_order.py", line 62, in make_material_request
target_doc = frappe.get_doc(json.loads(target_doc))
File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
return _default_decoder.decode(s)
File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
TypeError: expected string or buffer
my py code
@frappe.whitelist()
def make_material_request(source_name, target_doc):
import json
target_doc = frappe.get_doc(json.loads(target_doc))
default_supplier_temp = target_doc.supplier
target_doc.items = []
def postprocess(source, doc):
doc.project_type = "External"
doc.project_name = source.name
def update_item(source, target, source_parent):
target.project = source_parent.project
doc = get_mapped_doc("Production Order", source_name, {
"Production Order": {
"doctype": "Purchase Order",
"validation": {
"docstatus": ["=", 1],
}
},
"Production Order Item": {
"doctype": "Purchase Order Item",
"field_map": [
["name", "production_order_item"],
["parent", "productio_order"],
["required_qty", "qty"],
["rate","price_list_rate"],
["amount","amount"],
["uom","stock_uom"],
["makwiz_plan_number","makwiz_plan_number"],
["makwiz_sales_order","makwiz_sales_order"],
["makwiz_production_order_number","makwiz_production_order_number"],
["item_code","item_code"],
["production_order", "production_order"],
["production_order_item", "production_order_item"],
["makwiz_hidden_field","description"],
["from_for_grade_a","from_for_grad_a"],
["from_for_grade_b","from_for_grad_b"],
["from_for_grade_c","from_for_grad_c"],
["from_for_grade_d","from_for_grad_d"],
["to_for_grade_a","to_for_grad_a"],
["to_for_grade_b","to_for_grad_b"],
["to_for_grade_c","to_for_grad_c"],
["to_for_grade_d","to_for_grad_d"],
["makwiz_qty_grade_a","qty_for_grade_a"],
["makwiz_qty_grade_b","qty_for_grade_b"],
["makwiz_qty_grade_c","qty_for_grade_c"],
["makwiz_qty_grade_d","qty_for_grade_d"],
["source_warehouse","warehouse"],
],
"postprocess": update_item,
"condition": lambda doc: doc.default_supplier == default_supplier_temp
}
}, target_doc, postprocess)
return doc