Go to file
2026-04-30 09:17:04 +07:00
controllers refactor: remove expense sheet limit and adjust kiosk action selection layout styling 2026-04-21 12:15:21 +07:00
data feat: implement split expense sequences and add wait_post state for company-paid expenses with pending realizations 2026-04-02 15:35:22 +07:00
models feat: add payment wizard to route company-paid expenses to Uang Muka account 118101 2026-04-30 09:17:04 +07:00
security feat: implement expense realization module with receipt tracking and automated journal entries 2026-04-01 13:56:03 +07:00
static/src/kiosk refactor: remove expense sheet limit and adjust kiosk action selection layout styling 2026-04-21 12:15:21 +07:00
views feat: add payment wizard to route company-paid expenses to Uang Muka account 118101 2026-04-30 09:17:04 +07:00
__init__.py feat: register controllers module in package initialization 2026-04-07 15:05:10 +07:00
__manifest__.py feat: add payment wizard to route company-paid expenses to Uang Muka account 118101 2026-04-30 09:17:04 +07:00
.gitignore first commit 2026-03-31 17:25:04 +07:00
README.md feat: add payment wizard to route company-paid expenses to Uang Muka account 118101 2026-04-30 09:17:04 +07:00

HR Expense Account Split & Kiosk

This module enhances Odoo's standard Expense workflow by providing account-splitting logic, an Anonymous Expense Kiosk for employees, and automated realization accounting.

🚀 Features

1. Dynamic Sequences

  • Employee Reimbursement (RMBS): Expenses paid by the employee follow the prefix RMBS/YYYY/MM/XXXXX.
  • Company Advance (KSBN): Expenses paid by the company (Kasbon) follow the prefix KSBN/YYYY/MM/XXXXX.
  • This ensures clear separation between standard reimbursements and company-issued advances at a glance.

2. Enhanced Status Workflow

  • Wait Post Status (Yellow): A new intermediate status for company-paid expense reports.
  • Workflow: Approved -> Posted -> Wait Post -> Done.
  • Logic: The report moves to Wait Post after the advance is paid. It stays here until the employee submits all receipts and the accountant posts the final realization journal.
  • Done (Green): Only reached when all realization accounting is completed, ensuring the physical and financial cycles are fully synchronized.

3. Account Splitting

  • Dynamic Selection: Automatically routes expenses to different GL accounts based on the Paid By field.
  • Configuration: Set distinct Expense Account (Employee) and Expense Account (Company) directly on the Expense Category form.

4. Anonymous Expense Kiosk

  • PIN-Protected Access: Secure employee login via a 4-digit PIN on a tablet interface.
  • Real-Time Totaling: Automatically summarizes multiple physical receipts into a single realization.
  • Image Optimization: Client-side JPEG compression (1024px, 70% quality) reduces server storage usage by ~90%.

5. Automated Realization Accounting

  • Balanced Journal Entries: Automatically calculates discrepancies between the advance paid and actual spending.
  • Discrepancy Accounts:
    • Over-spent (Spent > Paid): Balance is moved to 216109 Biaya Lain yang masih harus dibayar (Liability/Payable).
    • Under-spent (Spent < Paid): Balance is moved to 114101 Piutang Karyawan (Receivable).
  • Discrepancy Settlement:
    • Create Vendor Payment: One-click button on the realization form to pay the employee the difference.
    • Create Customer Payment: One-click button on the realization form to record the employee returning the excess funds.

6. Custom Payment Wizard

  • Company Advances: Replaces the standard Odoo "Post Journal Entries" workflow for company-paid expenses with a custom "Register Payment" wizard.
  • Vendor & Date Selection: Allows the finance team to specify the exact vendor and payment date during the advance payment.
  • Automated Uang Muka Routing: The wizard automatically forces the payment debit to 118101 Uang Muka Operasional, ensuring advances are correctly booked as prepaid expenses before receipts are realized.

7. Validation & Security

  • Mandatory Receipts: Prevents submission of employee-paid expenses without attachments.
  • Overdue Tracking: Highlights missing realization receipts in red/alerts for company-paid expenses.

🛠 Configuration

  1. GL Accounts:
    • Expenses > Configuration > Expense Categories.
    • Define the two accounts under the Accounting tab.
  2. Kiosk Token:
    • URL structure: /hr_expense/kiosk/d56db48c463444c88b86f14980d7a185.
  3. Employee PINs:
    • Set 4-digit PINs on employee records for Kiosk access.

📋 Technical Notes

  • Controller: /hr_expense/kiosk/<token>
  • Models: hr.expense, hr.expense.sheet, hr.expense.realization, account.payment
  • JS Framework: Odoo 17 OWL