Skip to content

How to read this handover

  • Paths are relative to the repository root unless stated otherwise. The Frappe app lives in leekimerp/leekimerp/.
  • DocType names match Frappe (e.g. Sales Invoice, Employee).
  • Whitelisted methods are exposed as Frappe API methods (typically POST /api/method/leekimerp.api.<module>.<function>).

Module and integration pages follow a consistent structure:

  1. Purpose — Business problem.
  2. Scope in codebase — File paths.
  3. Key DocTypes — Data touched.
  4. Flow — Steps and often a Mermaid diagram.
  5. Entry points — Desk, Page, API, hooks.
  6. Function / method list — Inputs, outputs, side effects (where applicable).
  7. Dependencies — Other modules and services.
  8. Configuration — Settings DocTypes / site config.
  9. Operational notes — Schedulers, logs.
  10. Known gaps — Tech debt and TODOs in code.
  1. User-visible change → Desk customization: doctype_js, public/js/.
  2. On save / submithooks.pydoc_events.
  3. HTTP APIleekimerp/api/*.py@frappe.whitelist.
  4. Cronhooks.pyscheduler_events and scheduler_events/.
  5. Core DocType customizedoverride/ and override_doctype_class in hooks.py.

Architecture and sequence diagrams use Mermaid and render in this site. Source lives in Markdown alongside the narrative so you can update flows when code changes.