---
tags: [purchases, hub]
module: Purchases
---

# Purchases Module — Hub

> Supplier management, purchase orders, purchase bills, bill returns, expenses, and supplier payment receipts. Deeply integrated with Accounting (journal entries), Inventory (stock movement), and Settings (fiscal year, taxes, form designs).

## Models
[[[Model]Supplier]] · [[[Model]PurchaseBill]] · [[[Model]BillReturn]] · [[[Model]PurchaseOrder]] · [[[Model]Expense]] · [[[Model]SupplierPaymentReceipt]]

## Controllers
[[[Controller]Controllers]] · [[[Controller]ApiControllers]]

## Services
[[[Service]SupplierServices]] · [[[Service]PurchaseBillServices]] · [[[Service]BillReturnServices]] · [[[Service]SupplierReceiptServices]] · [[[Service]PurchaseOrderServices]] · [[[Service]ExpenseServices]]

## Infrastructure
[[[Repo]Repositories]] · [[[Enum]Enums]] · [[[Observer]Observers]] · [[[Command]Commands]] · [[[Routes]Routes]] · [[[DB]DatabaseTables]] · [[[Cross]CrossModuleDependencies]]

---

## Entity Map

```
Supplier ──────────────────────────────────────────────────┐
    │                                                       │
    ├── PurchaseOrder (PLANNED→ACTIVE→INVOICED→EXPIRED)    │
    │       ↓ convert                                       │
    ├── PurchaseBill (DRAFTED→NOT_PAID→PAID→DUE→OVERDUE)  │
    │       ↓ reverse                                       │
    ├── BillReturn                                          │
    │                                                       ↓
    └── SupplierPaymentReceipt ←──── assigned ────→ PurchaseBill
                                                  └────────→ BillReturn

Expense ──── standalone (links to Supplier or Customer) ───┘
```

## Key Flows

```
1. PurchaseOrder → [convert] → PurchaseBill (MappingPurchaseOrderDataToPurchaseBillService)
2. PurchaseBill  → [return]  → BillReturn  (CreatingBillReturnFromBillService)
3. PurchaseBill  → [pay]     → SupplierPaymentReceipt (AssigningBillToReceiptService)
4. Requisition   → [INBOUND] → PurchaseBill (MappingRequisitionDataToPurchaseBillService — from Inventory)
5. PurchaseBill  → [create]  → JournalEntry (CreatingNewJournalEntryService — Accounting)
6. PurchaseBill  → [stock]   → WarehouseProductLog (inventory system enabled)
```

## Permissions
Routes protected via `company.auth` middleware + `permission:purchases.*` checks.
Cost-center-level filtering applied in SupplierPaymentReceiptsRepository.

---

## Related Modules
[[START_HERE]] · [[_Accounting]] · [[_Inventory]] · [[_Products]] · [[_CompanyUser]] · [[_Settings]]
