fix some bugs 3
This commit is contained in:
@@ -59,7 +59,8 @@ class AssetSummaryService
|
||||
$metalsWithProductWallet,
|
||||
$mainWalletProductIds,
|
||||
$userWallets,
|
||||
$customerId
|
||||
$customerId,
|
||||
$ownerType
|
||||
),
|
||||
$this->buildInventoryCards($userWallets, $catalogById, $mainWalletProductIds, $mainWallet),
|
||||
);
|
||||
@@ -71,7 +72,8 @@ class AssetSummaryService
|
||||
$catalogById,
|
||||
$metalsWithProductWallet,
|
||||
$mainWalletProductIds,
|
||||
$customerId
|
||||
$customerId,
|
||||
$ownerType
|
||||
);
|
||||
$cashWallet = $this->walletBalanceService->mainWalletCash($userWallets);
|
||||
$assetsRialValue = $this->sumAssetsRialValue(
|
||||
@@ -218,12 +220,13 @@ class AssetSummaryService
|
||||
array $metalsWithProductWallet = [],
|
||||
array $mainWalletProductIds = [],
|
||||
Collection $userWallets,
|
||||
int $customerId = 0
|
||||
int $customerId = 0,
|
||||
int $ownerType = 0
|
||||
): array {
|
||||
$cards = [];
|
||||
$mainWalletGrams = Controller::weightToGrams(
|
||||
$customerId > 0
|
||||
? $this->walletBalanceService->effectiveMainWalletGold($customerId)
|
||||
? $this->walletBalanceService->effectiveMainWalletGold($customerId, $ownerType)
|
||||
: $this->effectiveMainWalletGold($userWallets, $mainWallet, $mainWalletProductIds)
|
||||
);
|
||||
$assignedMetalIds = [];
|
||||
@@ -237,9 +240,10 @@ class AssetSummaryService
|
||||
}
|
||||
|
||||
$mainWalletWeight = $customerId > 0
|
||||
? $this->walletBalanceService->effectiveMainWalletGold($customerId)
|
||||
? $this->walletBalanceService->effectiveMainWalletGold($customerId, $ownerType)
|
||||
: $this->effectiveMainWalletGold($userWallets, $mainWallet, $mainWalletProductIds);
|
||||
if ($mainWalletWeight <= 0) {
|
||||
// صفر کامل را نشان نده؛ منفی را نشان بده تا اختلاف موجودی دیده شود
|
||||
if (abs($mainWalletWeight) < 0.000001) {
|
||||
return [];
|
||||
}
|
||||
|
||||
@@ -322,7 +326,7 @@ class AssetSummaryService
|
||||
public function productDisplayQuantity(int $customerId, int $ownerType, int $productId): float
|
||||
{
|
||||
if ($this->configService->isMainWalletProduct($productId)) {
|
||||
return $this->walletBalanceService->effectiveMainWalletGold($customerId);
|
||||
return $this->walletBalanceService->effectiveMainWalletGold($customerId, $ownerType);
|
||||
}
|
||||
|
||||
$card = $this->productInventoryCard($customerId, $ownerType, $productId);
|
||||
@@ -609,7 +613,8 @@ class AssetSummaryService
|
||||
Collection $catalogById,
|
||||
array $metalsWithProductWallet = [],
|
||||
array $mainWalletProductIds = [],
|
||||
int $customerId = 0
|
||||
int $customerId = 0,
|
||||
int $ownerType = 0
|
||||
): array {
|
||||
if ($metalIds === []) {
|
||||
return [];
|
||||
@@ -617,7 +622,7 @@ class AssetSummaryService
|
||||
|
||||
$mainWalletGrams = Controller::weightToGrams(
|
||||
$customerId > 0
|
||||
? $this->walletBalanceService->effectiveMainWalletGold($customerId)
|
||||
? $this->walletBalanceService->effectiveMainWalletGold($customerId, $ownerType)
|
||||
: $this->effectiveMainWalletGold($userWallets, $mainWallet, $mainWalletProductIds)
|
||||
);
|
||||
$totals = [];
|
||||
|
||||
@@ -46,26 +46,33 @@ class WalletBalanceService
|
||||
/**
|
||||
* موجودی مؤثر کیف اصلی برای نمایش آبشده =
|
||||
* gold کیف اصلی + gold کیفهای legacy محصولات main_wallet_products.
|
||||
* owner_type در جمع نادیده گرفته میشود تا خریدهای قدیمی از دست نروند.
|
||||
*
|
||||
* @param int|null $ownerType اگر داده شود فقط همان owner_type جمع میشود (همتراز wallet/me).
|
||||
*/
|
||||
public function effectiveMainWalletGold(int $ownerId): float
|
||||
public function effectiveMainWalletGold(int $ownerId, ?int $ownerType = null): float
|
||||
{
|
||||
$mainGold = (float) Wallet::query()
|
||||
$mainQuery = Wallet::query()
|
||||
->where('owner', $ownerId)
|
||||
->whereNull('fund_id')
|
||||
->whereNull('product_id')
|
||||
->sum('gold');
|
||||
->whereNull('product_id');
|
||||
if ($ownerType !== null) {
|
||||
$mainQuery->where('owner_type', $ownerType);
|
||||
}
|
||||
$mainGold = (float) $mainQuery->sum('gold');
|
||||
|
||||
$productIds = $this->mainWalletProductIds();
|
||||
if ($productIds === []) {
|
||||
return round($mainGold, 3);
|
||||
}
|
||||
|
||||
$orphanedGold = (float) Wallet::query()
|
||||
$orphanedQuery = Wallet::query()
|
||||
->where('owner', $ownerId)
|
||||
->whereNull('fund_id')
|
||||
->whereIn('product_id', $productIds)
|
||||
->sum('gold');
|
||||
->whereIn('product_id', $productIds);
|
||||
if ($ownerType !== null) {
|
||||
$orphanedQuery->where('owner_type', $ownerType);
|
||||
}
|
||||
$orphanedGold = (float) $orphanedQuery->sum('gold');
|
||||
|
||||
return round($mainGold + $orphanedGold, 3);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user