docs: fix Regular Store payment — wallet-only, no IPG/ZarinPal
- Regular Store: Balance deduction only (SubmitShopBuyOrderCommandHandler) NO ZarinPal redirect, NO payment gateway - Discount Store: DiscountBalance + ZarinPal IPG for remainder Added gatewayAmount=0 edge case (discount covers 100%) - VAT: Both stores use 9% (ShopVAT=0.1 is stale/unused constant) - Added ZarinPal usage scope note (only: Discount Store, Wallet Top-up, Package Purchase) - Fixed BUSINESS-02: sections 2, 5.2, 5.3, 7 - Fixed BUSINESS-03: store comparison chart - Fixed OVERVIEW-01: user journey + both store flowcharts - Fixed OVERVIEW-03: timeline entry
This commit is contained in:
@@ -34,6 +34,13 @@ flowchart TD
|
||||
|
||||
## ۲. درگاه ZarinPal (IPG)
|
||||
|
||||
> **⚠️ محل استفاده:** ZarinPal فقط در سه جا استفاده میشود:
|
||||
> 1. **فروشگاه تخفیفی** — باقیمانده بعد از کسر DiscountBalance (اگر > 0)
|
||||
> 2. **شارژ کیفپول** — واریز مستقیم از پروفایل کاربر
|
||||
> 3. **خرید پکیج** — (فعلاً غیرفعال: "درگاه پرداخت متصل نیست")
|
||||
>
|
||||
> ❌ **فروشگاه عادی (Regular Store) از ZarinPal استفاده نمیکند** — فقط کسر از Balance کیفپول
|
||||
|
||||
### ۲.۱ فلوی پرداخت
|
||||
|
||||
```mermaid
|
||||
@@ -125,7 +132,7 @@ flowchart TD
|
||||
MaxDiscountPercent محصول = 40% (هر محصول درصد تخفیف مخصوص خود را دارد)
|
||||
|
||||
سهم تخفیف = MIN(1,000,000 × 40%, DiscountBalanceکاربر) = 400,000
|
||||
پرداخت نقدی (IPG) = 1,000,000 - 400,000 = 600,000
|
||||
باقیمانده → ZarinPal IPG = 1,000,000 - 400,000 = 600,000
|
||||
─────────
|
||||
مجموع = 1,000,000
|
||||
|
||||
@@ -137,10 +144,12 @@ MaxDiscountPercent محصول = 40% (هر محصول درصد تخفیف مخص
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["کاربر عضو باشگاه\nمشاهده محصول"] --> B["قیمت تخفیفخورده نمایش داده میشود"]
|
||||
B --> C["افزودن به سبد\nبررسی DiscountBalance"]
|
||||
C --> D{"موجودی کافی؟"}
|
||||
D -->|کافی| E["سهم تخفیف از DiscountBalance\nباقیمانده → IPG ZarinPal"]
|
||||
D -->|ناکافی| F["فقط به اندازه موجودی\nباقیمانده بیشتر → IPG"]
|
||||
B --> C["افزودن به سبد\nمحاسبه MaxDiscount% هر محصول"]
|
||||
C --> D["سهم تخفیف = MIN(قیمت×MaxDiscount%, DiscountBalance)"]
|
||||
D --> E["باقیمانده = مجموع - سهم تخفیف"]
|
||||
E --> F{"باقیمانده > 0?"}
|
||||
F -->|بله| G["کسر DiscountBalance\n+ Redirect → ZarinPal IPG\nباقیمانده + 9% VAT"]
|
||||
F -->|خیر| H["فقط کسر از DiscountBalance\nبدون درگاه → ثبت مستقیم"]
|
||||
```
|
||||
|
||||
### ۵.۳ دسترسی فروشگاه تخفیفی
|
||||
@@ -150,7 +159,7 @@ flowchart TD
|
||||
| `IsClubMember = true` | دسترسی به Discount Store |
|
||||
| `IsClubMember = false` | فقط Regular Store |
|
||||
| `DiscountBalance > 0` | میتواند از تخفیف استفاده کند |
|
||||
| `DiscountBalance = 0` | پرداخت ۱۰۰% نقدی |
|
||||
| `DiscountBalance = 0` | پرداخت ۱۰۰% از طریق ZarinPal IPG |
|
||||
|
||||
---
|
||||
|
||||
@@ -184,12 +193,14 @@ service PaymentService {
|
||||
## ۷. مالیات و VAT
|
||||
|
||||
```
|
||||
دو نرخ VAT در کد:
|
||||
هر دو فروشگاه از نرخ 9% استفاده میکنند:
|
||||
|
||||
SystemConstants.ShopVAT = 0.1 (10%) — تنظیم سیستمی
|
||||
VAT_RATE = 0.09 (9%) — در فروشگاه تخفیفی (DiscountShop PlaceOrder)
|
||||
Regular Store → const vatRate = 0.09m (hardcoded در SubmitShopBuyOrderCommandHandler)
|
||||
Discount Store → VatCalculator.VAT_RATE = 0.09m
|
||||
|
||||
قیمت نمایشی = قیمت پایه × (1 + VAT)
|
||||
⚠️ SystemConstants.ShopVAT = 0.1 (10%) — تعریفشده ولی استفاده نمیشود (stale constant)
|
||||
|
||||
قیمت نمایشی = قیمت پایه × (1 + 0.09)
|
||||
در صورتحساب: قیمت پایه + مالیات جداگانه نمایش داده میشود
|
||||
```
|
||||
|
||||
|
||||
@@ -11,9 +11,9 @@
|
||||
flowchart LR
|
||||
subgraph RS["Regular Store — /store"]
|
||||
R1["همه کاربران"]
|
||||
R2["پرداخت 100% نقدی"]
|
||||
R2["پرداخت از Balance کیفپول"]
|
||||
R3["قیمت عادی"]
|
||||
R4["VAT = 10%"]
|
||||
R4["VAT = 9%"]
|
||||
end
|
||||
|
||||
subgraph DS["Discount Store — /discount-store"]
|
||||
|
||||
@@ -17,7 +17,7 @@ flowchart TD
|
||||
|
||||
B -->|بله| G["Login + JWT"]
|
||||
G --> H{"عضو باشگاه؟"}
|
||||
H -->|خیر| F["🛒 Regular Store\nخرید عادی — IPG پرداخت"]
|
||||
H -->|خیر| F["🛒 Regular Store\nخرید عادی — پرداخت از کیفپول"]
|
||||
H -->|بله| I["🏆 Club Member Dashboard"]
|
||||
|
||||
I --> J["فروشگاه تخفیفی\nper-product MaxDiscount%"]
|
||||
@@ -126,11 +126,12 @@ flowchart TD
|
||||
A1["مشاهده محصولات"] --> B1["Lazy Load — 12 per page"]
|
||||
B1 --> C1["افزودن به سبد"]
|
||||
C1 --> D1["بررسی موجودی"]
|
||||
D1 --> E1["Checkout"]
|
||||
E1 --> F1["ZarinPal IPG\n100% نقدی"]
|
||||
F1 --> G1["ثبت سفارش"]
|
||||
G1 --> H1["کسر موجودی"]
|
||||
H1 --> I1["SMS تأیید"]
|
||||
D1 --> E1["Checkout Summary\nانتخاب آدرس"]
|
||||
E1 --> F1{"Balance کافی؟"}
|
||||
F1 -->|بله| G1["کسر از Balance کیفپول\n+ VAT"]
|
||||
G1 --> H1["ثبت سفارش"]
|
||||
H1 --> I1["کسر موجودی"]
|
||||
F1 -->|خیر| J1["❌ خطا: موجودی کیفپول کافی نیست"]
|
||||
```
|
||||
|
||||
### ۵.۲ Discount Store
|
||||
@@ -141,12 +142,14 @@ flowchart TD
|
||||
B2 --> C2["افزودن به سبد"]
|
||||
C2 --> D2["بررسی موجودی + DiscountBalance"]
|
||||
D2 --> E2["محاسبه سهم تخفیف\nMaxDiscount% هر محصول"]
|
||||
E2 --> F2["محاسبه سهم نقدی\nباقیمانده"]
|
||||
F2 --> G2["کسر از DiscountBalance"]
|
||||
G2 --> H2["ZarinPal IPG\nبرای باقیمانده نقدی"]
|
||||
H2 --> I2["ثبت سفارش ترکیبی"]
|
||||
I2 --> J2["کسر موجودی"]
|
||||
J2 --> K2["SMS تأیید"]
|
||||
E2 --> F2["محاسبه باقیمانده\ngatewayAmount = total - discountUsed"]
|
||||
F2 --> G2{"gatewayAmount > 0?"}
|
||||
G2 -->|بله| H2["کسر DiscountBalance\n+ ZarinPal IPG برای باقیمانده + 9% VAT"]
|
||||
H2 --> I2["Redirect → ZarinPal\nCallback → ثبت سفارش"]
|
||||
G2 -->|خیر| J2["فقط کسر از DiscountBalance\nبدون درگاه"]
|
||||
J2 --> K2["ثبت سفارش"]
|
||||
I2 --> L2["کسر موجودی + SMS تأیید"]
|
||||
K2 --> L2
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
| مهر ۱۴۰۳ | شروع پروژه، معماری CMS | 10% |
|
||||
| آبان ۱۴۰۳ | CQRS + gRPC + EF Core | 20% |
|
||||
| آذر ۱۴۰۳ | باشگاه + درخت باینری + کمیسیون | 35% |
|
||||
| دی ۱۴۰۳ | فروشگاه عادی + پرداخت ZarinPal | 45% |
|
||||
| دی ۱۴۰۳ | فروشگاه عادی + پرداخت از کیفپول | 45% |
|
||||
| بهمن ۱۴۰۳ | فروشگاه تخفیفی + وام دایا | 55% |
|
||||
| اسفند ۱۴۰۳ (هفته ۱) | UI Modernization Phase 1-3 | 65% |
|
||||
| اسفند ۱۴۰۳ (هفته ۲) | Site Pages + BackOffice audit | 75% |
|
||||
|
||||
Reference in New Issue
Block a user