account_shared_bank_cash/README.md

48 lines
3.5 KiB
Markdown

# Account Shared Bank Cash
## Overview
This custom Odoo 19 module removes the standard restriction that prevents Chart of Accounts (COA) of type **Bank and Cash** (`asset_cash`) from being shared across multiple companies.
By default, Odoo restricts a Bank and Cash account to a single company. This module patches `_check_company_consistency` on the `account.account` model to allow you to configure multiple companies for a single Bank/Cash account. This is particularly useful for setups where multiple Point of Sale (POS) shops across different companies deposit into the same physical bank account or cash account.
## Features
### 1. Shared COA Support
- Overrides `account.account` company validation to allow `len(company_ids) > 1` on `asset_cash` accounts.
- Ensures POS payments and closing entries seamlessly use the shared account.
### 2. Automated Inter-Company Clearing
When a branch-side POS session is closed, the module automates the inter-company accounting flow:
- **Branch Company (Origin)**:
- Aggregates all bank clearing entries into a **single aggregated journal entry** (usually just 2 lines: Total Receivable vs Total Inter-company Account).
- Automatically reconciles these clearing lines against the main POS session move.
- Visually links the clearing moves to the POS Session's **"Journal Items"** dashboard.
- **Parent Company (Destination)**:
- Automatically creates **separate mirror journal entries** for each payment method (e.g., separate entries for BCA, BTN, BRI).
- Debits the parent bank's **Outstanding Receipt Account**, allowing for seamless reconciliation against incoming bank statement lines in the parent's accounting dashboard.
- Credits the Inter-company Liability account (e.g., `229101 Hubungan RK`).
### 3. Centralized Vendor Payment
Enables branches to pay vendor bills from a bank account managed by a parent company:
- **Branch-Side**: Intercepts the "Register Payment" wizard. Instead of creating a standard payment, it generates a clearing entry that moves the liability from the Vendor (Accounts Payable) to the Parent Company (Inter-company Account).
- **Parent-Side**: Automatically creates an actual `account.payment` record in the parent company, paying out of the parent bank journal and debiting the inter-company clearing account.
- **Workflow**: Vendor bill remains in the branch, but is marked as **Paid** via the clearing mechanism. The actual cash outflow and bank reconciliation happen in the parent.
## Configuration
### 1. POS Inter-Company Clearing
To enable the automated inter-company clearing, navigate to **Point of Sale > Configuration > Payment Methods** and configure the following in the "Inter-Company Clearing" section:
- **Parent Company**: Select the target company (e.g., OT).
- **Parent Bank Journal**: Select the journal in the parent company that receives the funds.
- **Parent Inter-company Account**: The liability account in the parent company (e.g., `229101 Hubungan RK`).
- **Parent Clearing Journal**: The journal in the parent company used to record these mirror entries (e.g., "Inter-Company Clearing").
### 2. Centralized Vendor Payment
Configure a **Bank/Cash Journal** in the branch company to act as a bridge:
1. Open the journal form (**Accounting > Configuration > Journals**).
2. Go to the **Centralized Payment** tab.
3. Enable **Is Centralized**.
4. Set the **Parent Company**, **Parent Journal**, and both **Inter-Company (RK) Accounts**.
5. When registering a payment on a vendor bill, select this journal to trigger the cross-company flow.
## Author
- **Suherdy Yacob**