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

# [Repo]Repositories

## Connections
[[_Purchases]] · [[[Model]Supplier]] · [[[Model]PurchaseBill]] · [[[Model]BillReturn]] · [[[Model]PurchaseOrder]] · [[[Model]Expense]] · [[[Model]SupplierPaymentReceipt]] · [[[Service]PurchaseBillServices]] · [[[Service]BillReturnServices]] · [[[Service]SupplierReceiptServices]] · [[[Service]SupplierServices]]

## Source
`Modules/Purchases/Repositories/`

All repositories extend `BaseRepository`.

---

## Main Entity Repositories

### SuppliersRepository
Model: `Supplier` · Injects: `CacheClientService`

| Method | Purpose |
|---|---|
| selectCached() | Cached dropdown list |
| getSuppliersListWithFilters() | Paginated + filtered list |
| getLastCodeValue() | Next auto-increment code |
| decrementSupplierCurrentBalance() | Balance adjustment on payment |
| incrementSupplierCurrentBalance() | Balance adjustment on return |
| getLocalizationNames() | Supplier names by locale |
| getWithAccounts() | Include linked accounts |
| formatForDropdown() | Shape for select2 |
| keyById() | Indexed by ID |

### PurchaseBillsRepository
Model: `PurchaseBill`

| Method | Purpose |
|---|---|
| getQueryFromFilter() / getPurchaseBillsListWithFilters() | Filtered paginated list |
| getLast() | Most recent bill |
| getAllCurrentYearPurchaseBills() | Fiscal year scope |
| getBillsTotalRecords() | Count for stats |
| getBillsCodesThatDueForDate() | Due bill codes for notifications |
| attachments() / deleteAttachments() | Attachment management |
| deleteRelatedDetails() | Cascade delete details |
| updateAllCurrentYear() | Fiscal year mass update |
| getMinTotal() / getMaxTotal() | Filter range helpers |
| updateForFiscalYearWhereDate() / updateFiscalYearBetweenDates() | FY recalculation |
| getBillByInvoiceReferenceNumber() | Duplicate check |

### BillReturnRepository
Model: `BillReturn`

Key: `getBillReturnListWithFilters()` · `getAllCurrentYearBillReturn()` · `deleteRelatedDetails()` · `getBillReturnByInvoiceReferenceNumber()`

### SupplierPaymentReceiptsRepository
Model: `SupplierPaymentReceipt`

Key: `applyCostCenterPermissionsFilter()` · `getSupplierPaymentReceiptsListWithFilters()` · `getLast()` · `getAllCurrentYearReceipts()` · `getMinPaidAmount()` · `getMaxPaidAmount()` · `getMinNotAllocatedAmount()` · `getMaxNotAllocatedAmount()` · `getSupplierByInvoiceReferenceNumber()`

### PurchaseOrdersRepository
Model: `PurchaseOrder`

Key: `getLastPurchaseOrder()` · `getPurchaseOrderWithProductsAndFormDesignById()` · `deleteProducts()` · `deleteAttachments()` · `getPurchaseOrdersCodesThatDueForDate()` · `getList()` · `getExportList()` · `updateAll()` · `applySortAndFilters()`

### ExpensesRepository
Model: `Expense`

Key: `getAllCurrentYearExpenses()` · `getExpensesListWithFilters()` · `deleteRelatedDetails()` · `updateForFiscalYearWhereDate()`

---

## Details Repositories

| Repository | Model | Notable Methods |
|---|---|---|
| PurchaseBillsDetailsRepository | PurchaseBillDetails | `getBasedOnProductIdAndThatHasNoDraftBills()` · `getBillsByTaxesIdsInFiscalYear()` · `getProductTolalCostAndQuantity()` |
| BillReturnDetailsRepository | BillReturnDetail | `getBillReturnsByTaxesIdsInFiscalYear()` · `getBillReturnsByTaxesIdsInDuration()` |
| ExpensesDetailsRepository | ExpenseDetail | `getExpensesByTaxesIdsInFiscalYear()` · `getExpensesByTaxesIdsInDuration()` |
| PurchaseOrderDetailsRepository | PurchaseOrderDetail | `getLastPurchaseOrder()` |

---

## Payment Receipt Pivot Repositories

| Repository | Model | Notable Methods |
|---|---|---|
| BillsPaymentReceiptsRepository | BillPaymentReceipt | `getBasedOnReceiptAndBill()` |
| BillsReturnsPaymentReceiptsRepository | BillReturnPaymentReceipt | `getBasedOnReceiptAndBillReturn()` |

---

## Attachment Repositories
`BillReturnAttachmentsRepository` · `PurchaseBillAttachmentsRepository` · `ExpensesAttachmentsRepository` · `PurchaseOrdersAttachmentsRepository` · `SupplierPaymentReceiptAttachmentsRepository`

All inherit CRUD from `BaseRepository`.
