25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

69 lines
1.6 KiB

  1. # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
  2. # MIT License. See license.txt
  3. from __future__ import unicode_literals
  4. import frappe, json
  5. from frappe.desk.form.load import run_onload
  6. @frappe.whitelist()
  7. def savedocs(doc, action):
  8. """save / submit / update doclist"""
  9. try:
  10. doc = frappe.get_doc(json.loads(doc))
  11. set_local_name(doc)
  12. # action
  13. doc.docstatus = {"Save":0, "Submit": 1, "Update": 1, "Cancel": 2}[action]
  14. if doc.docstatus==1:
  15. doc.submit()
  16. else:
  17. doc.save()
  18. # update recent documents
  19. run_onload(doc)
  20. send_updated_docs(doc)
  21. frappe.msgprint(frappe._("Saved"), indicator='green', alert=True)
  22. except Exception:
  23. frappe.errprint(frappe.utils.get_traceback())
  24. raise
  25. @frappe.whitelist()
  26. def cancel(doctype=None, name=None, workflow_state_fieldname=None, workflow_state=None):
  27. """cancel a doclist"""
  28. try:
  29. doc = frappe.get_doc(doctype, name)
  30. if workflow_state_fieldname and workflow_state:
  31. doc.set(workflow_state_fieldname, workflow_state)
  32. doc.cancel()
  33. send_updated_docs(doc)
  34. frappe.msgprint(frappe._("Cancelled"), indicator='red', alert=True)
  35. except Exception:
  36. frappe.errprint(frappe.utils.get_traceback())
  37. raise
  38. def send_updated_docs(doc):
  39. from .load import get_docinfo
  40. get_docinfo(doc)
  41. d = doc.as_dict()
  42. if hasattr(doc, 'localname'):
  43. d["localname"] = doc.localname
  44. frappe.response.docs.append(d)
  45. def set_local_name(doc):
  46. def _set_local_name(d):
  47. if doc.get('__islocal') or d.get('__islocal'):
  48. d.localname = d.name
  49. d.name = None
  50. _set_local_name(doc)
  51. for child in doc.get_all_children():
  52. _set_local_name(child)
  53. if doc.get("__newname"):
  54. doc.name = doc.get("__newname")