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)
|
||||
در صورتحساب: قیمت پایه + مالیات جداگانه نمایش داده میشود
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user