# 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/` - **Models**: `hr.expense`, `hr.expense.sheet`, `hr.expense.realization`, `account.payment` - **JS Framework**: Odoo 17 OWL