Files
Core_Be/Interfaces/Services/IPlatformBillingService.cs
T
Dhananjaya99 bffc9b1686 first commit
2026-09-28 11:44:26 +05:30

29 lines
2.0 KiB
C#

using Fitness_core_BE.DTOs.PlatformBilling;
using Fitness_core_BE.Models;
namespace Fitness_core_BE.Interfaces.Services
{
// Computes and generates the platform's own bill to a gym ("Client"): a per-active-member
// SaaS fee (with minimum/cap), device rental, and one-time setup fees. Distinct from
// CustomerInvoice/CustomerSubscription, which is the gym billing its own members.
public interface IPlatformBillingService
{
Task<List<PricingPlanDto>> GetPricingPlansAsync(CancellationToken ct = default);
Task<PricingPlanDto> UpsertPricingPlanAsync(UpsertPricingPlanRequest request, CancellationToken ct = default);
Task<DevicePricingDto> GetDevicePricingAsync(CancellationToken ct = default);
Task<DevicePricingDto> UpdateDevicePricingAsync(DevicePricingDto request, CancellationToken ct = default);
Task<Models.ClientInvoice> AssignPricingPlanAsync(Guid clientId, AssignPricingPlanRequest request, CancellationToken ct = default);
Task<PlatformFeeBreakdownDto> ComputeMonthlyFeeAsync(Guid clientId, CancellationToken ct = default);
Task<Models.ClientInvoice> GenerateMonthlyInvoiceAsync(Guid clientId, CancellationToken ct = default);
Task<Models.ClientInvoice> GenerateOnboardingInvoiceAsync(Guid clientId, CancellationToken ct = default);
Task<List<Models.ClientInvoice>> RunMonthlyBillingForAllClientsAsync(CancellationToken ct = default);
Task<SubscriptionChargeRunResult> RunAndChargeSubscriptionBillingAsync(CancellationToken ct = default);
Task<List<PendingPlatformInvoiceDto>> GetPendingInvoicesAsync(CancellationToken ct = default);
Task<List<PendingPlatformInvoiceDto>> GetCompletedInvoicesAsync(CancellationToken ct = default);
Task<PendingPlatformInvoiceDto> RecordClientInvoicePaymentAsync(Guid clientInvoiceId, decimal amount, CancellationToken ct = default);
Task<object> SendClientPaymentLinkAsync(Guid clientInvoiceId, CancellationToken ct = default);
}
}