feat: enhance sp_CalculateWeeklyCommissionPool to include IsDeleted filter and update commission calculations for package-specific pools
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 8m44s
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 8m44s
This commit is contained in:
+74
-15
@@ -28,9 +28,9 @@ BEGIN
|
||||
-- =============================================
|
||||
-- 1. پیدا کردن Pool هفته (فیلتر بر اساس PackageId)
|
||||
-- =============================================
|
||||
SELECT @PoolId = Id, @TotalPoolAmount = TotalPoolAmount
|
||||
SELECT @PoolId = MIN(Id), @TotalPoolAmount = ISNULL(SUM(TotalPoolAmount), 0)
|
||||
FROM CMS.WeeklyCommissionPools
|
||||
WHERE WeekDefinitionId = @WeekDefinitionId AND PackageId = @PackageId;
|
||||
WHERE WeekDefinitionId = @WeekDefinitionId AND PackageId = @PackageId AND IsDeleted = 0;
|
||||
|
||||
-- اگر Pool وجود ندارد (هیچ فعالسازی در این هفته نبوده)، یک رکورد خالی ایجاد میکنیم
|
||||
IF @PoolId IS NULL
|
||||
@@ -50,7 +50,15 @@ BEGIN
|
||||
-- =============================================
|
||||
-- 2. بررسی محاسبات قبلی (بر اساس همین Pool نه کل هفته)
|
||||
-- =============================================
|
||||
IF EXISTS (SELECT 1 FROM CMS.UserCommissionPayouts WHERE WeeklyPoolId = @PoolId)
|
||||
IF EXISTS (
|
||||
SELECT 1
|
||||
FROM CMS.UserCommissionPayouts
|
||||
WHERE WeeklyPoolId IN (
|
||||
SELECT Id
|
||||
FROM CMS.WeeklyCommissionPools
|
||||
WHERE WeekDefinitionId = @WeekDefinitionId AND PackageId = @PackageId AND IsDeleted = 0
|
||||
)
|
||||
)
|
||||
BEGIN
|
||||
IF @ForceRecalculate = 0
|
||||
BEGIN
|
||||
@@ -70,30 +78,67 @@ BEGIN
|
||||
(SELECT SUM(wl.ChangeNerworkValue)
|
||||
FROM CMS.UserWalletHistories wl
|
||||
WHERE wl.WalletId = uw.Id
|
||||
AND wl.RefrenceId IN (SELECT Id FROM CMS.UserCommissionPayouts WHERE WeeklyPoolId = @PoolId)
|
||||
AND wl.RefrenceId IN (
|
||||
SELECT Id
|
||||
FROM CMS.UserCommissionPayouts
|
||||
WHERE WeeklyPoolId IN (
|
||||
SELECT Id
|
||||
FROM CMS.WeeklyCommissionPools
|
||||
WHERE WeekDefinitionId = @WeekDefinitionId AND PackageId = @PackageId AND IsDeleted = 0
|
||||
)
|
||||
)
|
||||
), 0)
|
||||
FROM CMS.UserWallets uw
|
||||
WHERE uw.Id IN (
|
||||
SELECT DISTINCT wl.WalletId
|
||||
FROM CMS.UserWalletHistories wl
|
||||
WHERE wl.RefrenceId IN (SELECT Id FROM CMS.UserCommissionPayouts WHERE WeeklyPoolId = @PoolId)
|
||||
WHERE wl.RefrenceId IN (
|
||||
SELECT Id
|
||||
FROM CMS.UserCommissionPayouts
|
||||
WHERE WeeklyPoolId IN (
|
||||
SELECT Id
|
||||
FROM CMS.WeeklyCommissionPools
|
||||
WHERE WeekDefinitionId = @WeekDefinitionId AND PackageId = @PackageId AND IsDeleted = 0
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
-- حذف لاگهای تغییرات قبلی
|
||||
DELETE FROM CMS.UserWalletHistories
|
||||
WHERE RefrenceId IN (SELECT Id FROM CMS.UserCommissionPayouts WHERE WeeklyPoolId = @PoolId);
|
||||
WHERE RefrenceId IN (
|
||||
SELECT Id
|
||||
FROM CMS.UserCommissionPayouts
|
||||
WHERE WeeklyPoolId IN (
|
||||
SELECT Id
|
||||
FROM CMS.WeeklyCommissionPools
|
||||
WHERE WeekDefinitionId = @WeekDefinitionId AND PackageId = @PackageId AND IsDeleted = 0
|
||||
)
|
||||
);
|
||||
|
||||
-- حذف تاریخچه پرداخت
|
||||
DELETE FROM CMS.CommissionPayoutHistories
|
||||
WHERE UserCommissionPayoutId IN (SELECT Id FROM CMS.UserCommissionPayouts WHERE WeeklyPoolId = @PoolId);
|
||||
WHERE UserCommissionPayoutId IN (
|
||||
SELECT Id
|
||||
FROM CMS.UserCommissionPayouts
|
||||
WHERE WeeklyPoolId IN (
|
||||
SELECT Id
|
||||
FROM CMS.WeeklyCommissionPools
|
||||
WHERE WeekDefinitionId = @WeekDefinitionId AND PackageId = @PackageId AND IsDeleted = 0
|
||||
)
|
||||
);
|
||||
|
||||
-- حذف پرداختهای قبلی این Pool
|
||||
DELETE FROM CMS.UserCommissionPayouts WHERE WeeklyPoolId = @PoolId;
|
||||
DELETE FROM CMS.UserCommissionPayouts
|
||||
WHERE WeeklyPoolId IN (
|
||||
SELECT Id
|
||||
FROM CMS.WeeklyCommissionPools
|
||||
WHERE WeekDefinitionId = @WeekDefinitionId AND PackageId = @PackageId AND IsDeleted = 0
|
||||
);
|
||||
|
||||
-- Reset وضعیت Pool
|
||||
UPDATE CMS.WeeklyCommissionPools
|
||||
SET IsCalculated = 0
|
||||
WHERE Id = @PoolId;
|
||||
WHERE WeekDefinitionId = @WeekDefinitionId AND PackageId = @PackageId AND IsDeleted = 0;
|
||||
END
|
||||
|
||||
-- =============================================
|
||||
@@ -104,7 +149,7 @@ BEGIN
|
||||
-- بالانسی محاسبه نشده — pool را به عنوان "محاسبه شده بدون پرداخت" علامت میزنیم
|
||||
UPDATE CMS.WeeklyCommissionPools
|
||||
SET IsCalculated = 1, CalculatedAt = @CalculatedAt
|
||||
WHERE Id = @PoolId;
|
||||
WHERE WeekDefinitionId = @WeekDefinitionId AND PackageId = @PackageId AND IsDeleted = 0;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
RETURN;
|
||||
@@ -122,7 +167,7 @@ BEGIN
|
||||
-- هیچ تعادلی برای توزیع وجود ندارد — pool محاسبه شده اما پرداختی ندارد
|
||||
UPDATE CMS.WeeklyCommissionPools
|
||||
SET IsCalculated = 1, CalculatedAt = @CalculatedAt
|
||||
WHERE Id = @PoolId;
|
||||
WHERE WeekDefinitionId = @WeekDefinitionId AND PackageId = @PackageId AND IsDeleted = 0;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
RETURN;
|
||||
@@ -140,6 +185,7 @@ BEGIN
|
||||
UserId,
|
||||
WeekDefinitionId,
|
||||
WeeklyPoolId,
|
||||
PackageId,
|
||||
BalancesEarned,
|
||||
ValuePerBalance,
|
||||
TotalAmount,
|
||||
@@ -155,6 +201,7 @@ BEGIN
|
||||
nb.UserId,
|
||||
@WeekDefinitionId,
|
||||
@PoolId,
|
||||
@PackageId,
|
||||
nb.TotalBalances,
|
||||
@ValuePerBalance,
|
||||
nb.TotalBalances * @ValuePerBalance,
|
||||
@@ -205,7 +252,11 @@ BEGIN
|
||||
@CalculatedAt,
|
||||
'SP'
|
||||
FROM CMS.UserCommissionPayouts cp
|
||||
WHERE cp.WeeklyPoolId = @PoolId;
|
||||
WHERE cp.WeeklyPoolId IN (
|
||||
SELECT Id
|
||||
FROM CMS.WeeklyCommissionPools
|
||||
WHERE WeekDefinitionId = @WeekDefinitionId AND PackageId = @PackageId AND IsDeleted = 0
|
||||
);
|
||||
|
||||
-- =============================================
|
||||
-- 9. شارژ کیف پول کاربران
|
||||
@@ -216,7 +267,11 @@ BEGIN
|
||||
SET uw.NetworkBalance = uw.NetworkBalance + cp.TotalAmount
|
||||
FROM CMS.UserWallets uw
|
||||
INNER JOIN CMS.UserCommissionPayouts cp ON cp.UserId = uw.UserId
|
||||
WHERE cp.WeeklyPoolId = @PoolId;
|
||||
WHERE cp.WeeklyPoolId IN (
|
||||
SELECT Id
|
||||
FROM CMS.WeeklyCommissionPools
|
||||
WHERE WeekDefinitionId = @WeekDefinitionId AND PackageId = @PackageId AND IsDeleted = 0
|
||||
);
|
||||
|
||||
-- ثبت لاگ تغییرات کیف پول
|
||||
INSERT INTO CMS.UserWalletHistories (
|
||||
@@ -252,7 +307,11 @@ BEGIN
|
||||
'SP'
|
||||
FROM CMS.UserCommissionPayouts cp
|
||||
INNER JOIN CMS.UserWallets uw ON uw.UserId = cp.UserId
|
||||
WHERE cp.WeeklyPoolId = @PoolId;
|
||||
WHERE cp.WeeklyPoolId IN (
|
||||
SELECT Id
|
||||
FROM CMS.WeeklyCommissionPools
|
||||
WHERE WeekDefinitionId = @WeekDefinitionId AND PackageId = @PackageId AND IsDeleted = 0
|
||||
);
|
||||
|
||||
-- =============================================
|
||||
-- 10. بروزرسانی Pool
|
||||
@@ -265,7 +324,7 @@ BEGIN
|
||||
ValuePerBalance = @ValuePerBalance,
|
||||
LastModified = @CalculatedAt,
|
||||
LastModifiedBy = 'SP'
|
||||
WHERE Id = @PoolId;
|
||||
WHERE WeekDefinitionId = @WeekDefinitionId AND PackageId = @PackageId AND IsDeleted = 0;
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
|
||||
|
||||
+1
@@ -141,6 +141,7 @@ public class StoredProcedureCommissionCalculationStrategy : ICommissionCalculati
|
||||
// حلقه روی پکیجها — هر پکیج Pool مستقل دارد
|
||||
foreach (var package in activePackages)
|
||||
{
|
||||
|
||||
using var command = connection.CreateCommand();
|
||||
command.CommandText = "CMS.sp_CalculateWeeklyCommissionPool";
|
||||
command.CommandType = System.Data.CommandType.StoredProcedure;
|
||||
|
||||
Reference in New Issue
Block a user