Skip to content

Platform primer — Frappe, ERPNext, and this app

Align vocabulary: what Frappe provides, what ERPNext (and HRMS) add, and what leekimerp implements on top.

LayerWhat it isIn this project
FrappePython web framework, Desk UI, DocType ORM, permissions, hooksAll custom app code runs as a Frappe app named leekimerp
ERPNextAccounting, selling, stock, projects, etc.Installed on site; Sales Invoice, Customer, Item, Company, Account used in flows
HRMS / payrollHR and payroll (version depends on bench stack)Employee, Salary Slip, Payroll Entry extended via scripts/ and hooks
leekimerpCustom app in leekimerp/Lee Kim DocTypes (lee_kim_alliance_erp/), api/, override/, integrations

External

Python site

Desk / browser

Frappe Desk + Web forms

Frappe app server

leekimerp hooks + api

erpnext + hrms code

Xero

Stripe

PDF service

This repo may ship a custom Node socket.io server for realtime notifications — see Socket.io realtime. It is not the same process as Frappe’s default Socket.IO; align Procfile with your deployment.

FileRole
leekimerp/hooks.pyDoc events, schedulers, overrides, fixtures
leekimerp/api/*.pyWhitelisted HTTP endpoints
leekimerp/lee_kim_alliance_erp/doctype/Custom DocType definitions

Frappe enforces Role and User Permission rules per DocType. ERPNext adds Company as a dimension on many financial documents.

ConceptPractical effect
Role ProfileBundles DocType permissions for job functions
User PermissionsRestrict rows (e.g. only certain Companies or Territories)
Company on transactionsWrong company on Sales Invoice or Payroll Entry breaks reporting and tax

Integration code often assumes a Company context — verify frappe.defaults and document-level company fields when debugging “works for admin, fails for user” issues.

What ships in leekimerp vs what you install on the site

Section titled “What ships in leekimerp vs what you install on the site”
ArtifactLocation
Custom app codeleekimerp/ Python package
Site databaseMariaDB — not in git
ERPNext / HRMSInstalled apps on the Bench site

bench install-app leekimerp registers the app; data (customers, invoices) lives in the site DB. The handover repo does not contain production data.

  1. Frappe answers: routing, ORM, permissions, Desk, hooks.
  2. ERPNext answers: accounting and standard business documents.
  3. leekimerp answers: Lee Kim workflows, integrations, overrides.

When unsure whether behavior is standard or custom, compare with a vanilla ERPNext site on the same major version, or read upstream source in apps/erpnext on your Bench.