---
tags: [vompay, service]
module: VomPay
---

# [Service]SupplierServices

## Connections
[[_VomPay]] · [[[Action]Actions]] · [[[Repo]Repositories]] · [[[Notification]Notifications]] · [[[Enum]Enums]] · [[[Controller]Controllers]] · [[[Cross]CrossModuleDependencies]]

## Source
`Modules/VomPay/Services/Suppliers/`

---

## VomPaySupplierService

The primary supplier onboarding orchestrator.

**Dependencies:** `VomPaySupplierRepository` · `CreatingMyFatoorahSupplierAction` · `SetMyFatoorahCommissionsAction` · `UploadingSupplierDocumentAction`  
**Traits:** `VomPayMailable`

| Method | Purpose |
|---|---|
| createSupplier(RequestEntity) | Calls creation action → sets commissions (package-based) → saves supplier to DB |
| uploadDocument(RequestEntity) | Delegates to `UploadingSupplierDocumentAction` |
| activate() | Sets status = COMPLETED_PROFILE → sends activation emails via `VomPayMailable` |
| getSupplierCode() | Returns MyFatoorah supplier ID or null |
| getSupplierStatus() | Returns current `VomPaySupplierStatusesEnum` value |
| checkSupplierCompleteProfile() | True if status = COMPLETED_PROFILE or APPROVED |
| checkSupplierPackage() | Validates tenant package is in `PACKAGES_SUPPORT_VOM_PAY` |
| updateSupplierAfterSystemPackageChanging($packageId) | On package change: updates commissions; handles DEACTIVATED↔APPROVED transitions |
| supplierType() | Returns `VomPaySupplierTypesEnum` value |
| getSupplier() | Full supplier record |

**Commission logic:** `getVomPayPackage()` returns `VomPayPackagesEnum` or `VomPayPackagesEnumDemo` data based on `APP_ENV`.

---

## VomPaySupplierStatusService

Webhook handler for `SupplierStatusChanged` events from MyFatoorah.

**Dependencies:** `NotifySupplierStatusService` · `VomPaySupplierRepository` · `GeneralSettingsRepository`  
**Traits:** `TenantConnectionOnRuntime` · `VomPayMailable`

| Method | Purpose |
|---|---|
| execute($request) | Routes webhook data to approval or rejection handler |
| handleApprovedCase($data) | Status → APPROVED · sets `is_integrated_with_vompay = true` · sends approval email · notifies users |
| handleRejectedCase($data) | Status → REJECTED · stores KYC feedback in notes · sends rejection email · notifies users |

Connects to tenant DB via subdomain extracted from webhook `SupplierCode`.

---

## VomPayEmailTrackerService

Tracks supplier onboarding step progression for monitoring.

**Dependencies:** `VomPaySupplierRepository`  
**Traits:** `VomPayMailable`

`execute($request)` — gets auth user + company info → calls `sendTrackingEmail()` (step 1–3 progression logging).
