feat(tahesab): net sales by factor, group, and commission

Report weight after returns for the selected period, with parent customer groups and separate silver and investment commission.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-26 11:05:34 +03:30
co-authored by Cursor
parent 15f89aec04
commit 2ff35e55fc
12 changed files with 1408 additions and 18 deletions
+91
View File
@@ -1046,6 +1046,9 @@ export interface CustomerGroupDto {
fromTahesab: boolean;
personCount: number;
companyCount: number;
/** گروه اصلی؛ خالی یعنی خودش اصلی است */
parentId?: string | null;
parentName?: string | null;
}
export interface CreateCustomerGroupRequest {
@@ -1056,6 +1059,8 @@ export interface CreateCustomerGroupRequest {
export interface UpdateCustomerGroupRequest {
name?: string;
color?: CustomerGroupColor;
/** null = برداشتن گروه اصلی */
parentId?: string | null;
}
export interface CompanySummaryDto {
@@ -4165,6 +4170,92 @@ export interface TahesabAsnadSummaryDto {
lastSyncedAt: string | null;
}
export interface SalesPercentStatsDto {
first: number | null;
last: number | null;
min: number | null;
max: number | null;
avg: number | null;
}
export interface SalesMovementStatsDto {
grossWeight: number;
returnWeight: number;
netWeight: number;
grossMali: number;
returnMali: number;
netMali: number;
grossCount: number;
returnCount: number;
netCount: number;
percent: SalesPercentStatsDto | null;
}
export interface SalesFactorOverviewDto {
key: string;
label: string;
sale: SalesMovementStatsDto;
purchase: SalesMovementStatsDto;
}
export interface SalesNamedMovementDto {
name: string;
sale: SalesMovementStatsDto;
purchase: SalesMovementStatsDto;
}
export interface SalesGroupChildDto {
id: string;
label: string;
netSaleWeight: number;
netSaleMali: number;
saleReturnWeight: number;
}
export interface SalesGroupOverviewDto {
id: string;
label: string;
netSaleWeight: number;
netSaleMali: number;
saleReturnWeight: number;
children: SalesGroupChildDto[];
}
export interface SalesExpertOverviewDto {
userId: string;
name: string;
percent: number;
silverWeight: number;
silverMali: number;
silverCommission: number;
investWeight: number;
investMali: number;
investCommission: number;
}
export interface SalesInternetOverviewDto {
orderCount: number;
returnCount: number;
netGold: number;
netSilver: number;
returnGold: number;
returnSilver: number;
netMali: number;
returnMali: number;
linkedSkipped: number;
}
export interface TahesabSalesOverviewDto {
factors: SalesFactorOverviewDto[];
karsakhte: SalesNamedMovementDto[];
groups: SalesGroupOverviewDto[];
experts: SalesExpertOverviewDto[];
internet: SalesInternetOverviewDto;
distinctNos: string[];
otherNos: string[];
percentReady: boolean;
}
/** تنظیمات ظاهر فاکتور PDF اسناد ته‌حساب (جدا از فاکتور CRM) */
export interface TahesabInvoiceSettingsDto {
id: string;