Skip to content

Báo cáo Bán hàng

1. Tổng quan

Thuộc tínhGiá trị
IDFEAT-SALE-REPORT
Trạng tháiStable
Ownersale-team
Phụ thuộcSaleOrder, SaleOrderItem, PurchaseOrder (đọc liên package cho tổng kết mua hàng)

SalesReportService cung cấp các tổng hợp chỉ đọc trên các sale order đã hoàn tất, phục vụ dashboard và báo cáo cuối ngày. Mọi truy vấn đều được đẩy xuống method SQL của repository (không tổng hợp trong bộ nhớ).

2. Vận hành

SalesReportService (sales-report.service.ts - 75 dòng, lớp bọc mỏng quanh các repository).

Phương thứcRepository SQLTrả về
getDailySummarySaleOrderRepository.getDailySummaryTổng hằng ngày: { date, orderCount, subtotal, tax, discount, total } per ngày
getProductSalesSaleOrderRepository.getProductSalesDoanh số theo sản phẩm: { productVariantId, name, qty, total, ... }
getCategorySalesSaleOrderRepository.getCategorySalesDoanh số theo danh mục: { categoryId, name, qty, total, ... }
getCategorySummarySaleOrderRepository.getCategorySummaryĐào sâu một danh mục
getPurchaseSummaryPurchaseOrderRepository.getDailySummaryGóc nhìn từ phía sale về purchase order để so sánh giá vốn

3. REST Endpoints

VerbPathAuthPermissionHandler
GET/reports/sales/summaryJWT/BASICSalesReport.dailySummarygetDailySummary
GET/reports/sales/by-productJWT/BASICSalesReport.byProductgetProductSales
GET/reports/sales/by-categoryJWT/BASICSalesReport.byCategorygetCategorySales
GET/reports/sales/category/:categoryIdJWT/BASICSalesReport.categorySummarygetCategorySummary
GET/reports/sales/purchase-summaryJWT/BASICSalesReport.purchaseSummarygetPurchaseSummary

Query params chung (per endpoint, validate bằng zod):

ParamKiểuMô tả
fromISO dateBắt đầu khoảng
toISO dateKết thúc khoảng
merchantIdstringBắt buộc với role không phải system (tự lọc)
groupByenumday / week / month (nơi áp dụng)

OpenAPI live: /v1/api/sale/doc/openapi.json.

4. Lưu ý hiệu năng

Mối quan tâmXử lý
Khoảng dài (>90 ngày)SQL repository dùng index (merchantId, status, completedAt) để chỉ quét order COMPLETED
Đọc dashboard đồng thờiHiện chưa cache; mỗi lần gọi đều truy vấn DB. Thêm Redis cache nếu thấy quá tải.
Truy cập PurchaseOrder liên packageĐọc qua PurchaseOrderRepository từ @nx/core - cùng DB, không qua HTTP

5. Sự kiện

Outbound: không có. Báo cáo được lấy chủ động (pull) qua REST.

6. Trang liên quan

  • Mô hình miền - schema SaleOrder / SaleOrderItem
  • API REST - OpenAPI spec live tại /doc/openapi.json

Proprietary and Confidential. Unauthorized copying, distribution, or use of this software is strictly prohibited.