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