File manager - Edit - /home/webapp69.cm.in.th/u69319090028/Shop/app/Services/SellerFinanceService.php
Back
<?php /** * SellerFinanceService * Handles financial reporting, gross sales, platform commission deductions, net revenue, and settlement statements */ require_once __DIR__ . '/../Models/Order.php'; require_once __DIR__ . '/../Models/Store.php'; class SellerFinanceService { private Order $orderModel; private Store $storeModel; public function __construct() { $this->orderModel = new Order(); $this->storeModel = new Store(); } private function getSellerStore(int $userId): ?array { return $this->storeModel->findByUserId($userId); } public function getFinanceSummary(int $userId): array { $store = $this->getSellerStore($userId); if (!$store) { return [ 'store' => null, 'summary' => [ 'total_orders' => 0, 'gross_sales' => 0.00, 'total_shipping_revenue' => 0.00, 'total_collected' => 0.00, 'total_commission' => 0.00, 'net_revenue' => 0.00, 'pending_settlement' => 0.00 ] ]; } $summary = $this->orderModel->getSellerFinanceSummary((int)$store['id']); return [ 'store' => $store, 'summary' => $summary ]; } public function getSettlements(int $userId, int $page = 1, int $perPage = 20): array { $store = $this->getSellerStore($userId); if (!$store) { return ['settlements' => [], 'total' => 0, 'page' => 1, 'pages' => 0]; } $storeId = (int)$store['id']; $page = max(1, $page); $offset = ($page - 1) * $perPage; $sql = "SELECT * FROM `settlements` WHERE store_id = :store_id ORDER BY created_at DESC LIMIT :limit OFFSET :offset"; $db = Database::getInstance(); $stmt = $db->prepare($sql); $stmt->bindValue(':store_id', $storeId, PDO::PARAM_INT); $stmt->bindValue(':limit', $perPage, PDO::PARAM_INT); $stmt->bindValue(':offset', $offset, PDO::PARAM_INT); $stmt->execute(); $settlements = $stmt->fetchAll(); $sqlCount = "SELECT COUNT(*) FROM `settlements` WHERE store_id = :store_id"; $stmtCount = $this->storeModel->query($sqlCount, [':store_id' => $storeId]); $total = (int)$stmtCount->fetchColumn(); return [ 'settlements' => $settlements, 'total' => $total, 'page' => $page, 'pages' => ceil($total / $perPage) ]; } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.24 |
proxy
|
phpinfo
|
Settings