feat: foundation for CRM and tax accounting specialized features
TaxBaik CI/CD / build-and-deploy (push) Successful in 50s
TaxBaik CI/CD / build-and-deploy (push) Successful in 50s
Domain Layer (SOLID Foundation): - 5 New Entities: TaxProfile, TaxFilingSchedule, ConsultingActivity, Contract, RevenueTracking - Client entity extended with tax-specific fields - Multi-tenant support (company_id) Database Migration (V015): - Create tax_profiles table for detailed tax info - Create tax_filing_schedules for deadline tracking - Create consulting_activities for CRM (activity history) - Create contracts for contract management - Create revenue_tracking for invoice and payment tracking - Add indexes for performance optimization Repository Interfaces: - ITaxProfileRepository (tax profile CRUD + risk analysis) - ITaxFilingScheduleRepository (schedule management + deadline tracking) - IConsultingActivityRepository (CRM activity tracking) - IContractRepository (contract lifecycle + MRR calculation) - IRevenueTrackingRepository (invoice + payment tracking + revenue analysis) Architecture: - Follows Repository Pattern with clear separation of concerns - SOLID principles: each repo = one responsibility - Extensible design for multi-tenant support - Supports specialized tax accounting and CRM workflows
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
namespace TaxBaik.Domain.Interfaces;
|
||||
|
||||
using TaxBaik.Domain.Entities;
|
||||
|
||||
public interface IRevenueTrackingRepository
|
||||
{
|
||||
Task<int> CreateAsync(RevenueTracking revenue, CancellationToken cancellationToken = default);
|
||||
Task<IEnumerable<RevenueTracking>> GetByClientIdAsync(int clientId, CancellationToken cancellationToken = default);
|
||||
Task<IEnumerable<RevenueTracking>> GetPendingPaymentsAsync(CancellationToken cancellationToken = default);
|
||||
Task<IEnumerable<RevenueTracking>> GetByDateRangeAsync(DateTime startDate, DateTime endDate, CancellationToken cancellationToken = default);
|
||||
Task UpdateAsync(RevenueTracking revenue, CancellationToken cancellationToken = default);
|
||||
Task MarkPaidAsync(int id, DateTime paymentDate, CancellationToken cancellationToken = default);
|
||||
Task<decimal> GetTotalRevenueAsync(DateTime startDate, DateTime endDate, CancellationToken cancellationToken = default);
|
||||
}
|
||||
Reference in New Issue
Block a user