mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-18 22:00:31 +00:00
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import { Inject, Service } from 'typedi';
|
|
import { SalesTaxLiabilitySummaryRepository } from './SalesTaxLiabilitySummaryRepository';
|
|
import { SalesTaxLiabilitySummaryQuery } from '@/interfaces/SalesTaxLiabilitySummary';
|
|
import { SalesTaxLiabilitySummary } from './SalesTaxLiabilitySummary';
|
|
import { SalesTaxLiabilitySummaryMeta } from './SalesTaxLiabilitySummaryMeta';
|
|
|
|
@Service()
|
|
export class SalesTaxLiabilitySummaryService {
|
|
@Inject()
|
|
private repostiory: SalesTaxLiabilitySummaryRepository;
|
|
|
|
@Inject()
|
|
private salesTaxLiabilityMeta: SalesTaxLiabilitySummaryMeta;
|
|
|
|
/**
|
|
* Retrieve sales tax liability summary.
|
|
* @param {number} tenantId
|
|
* @param {SalesTaxLiabilitySummaryQuery} query
|
|
* @returns
|
|
*/
|
|
public async salesTaxLiability(
|
|
tenantId: number,
|
|
query: SalesTaxLiabilitySummaryQuery
|
|
) {
|
|
const payableByRateId =
|
|
await this.repostiory.taxesPayableSumGroupedByRateId(tenantId);
|
|
|
|
const salesByRateId = await this.repostiory.taxesSalesSumGroupedByRateId(
|
|
tenantId
|
|
);
|
|
const taxRates = await this.repostiory.taxRates(tenantId);
|
|
|
|
const taxLiabilitySummary = new SalesTaxLiabilitySummary(
|
|
query,
|
|
taxRates,
|
|
payableByRateId,
|
|
salesByRateId
|
|
);
|
|
const meta = await this.salesTaxLiabilityMeta.meta(tenantId, query);
|
|
|
|
return {
|
|
data: taxLiabilitySummary.reportData(),
|
|
query,
|
|
meta,
|
|
};
|
|
}
|
|
}
|