// import * as R from 'ramda'; // import { // IFilterMeta, // IPaginationMeta, // ISaleReceipt, // ISalesReceiptsFilter, // } from '@/interfaces'; // import HasTenancyService from '@/services/Tenancy/TenancyService'; // import { Inject, Service } from 'typedi'; // import { SaleReceiptTransformer } from './SaleReceiptTransformer'; // import { TransformerInjectable } from '@/lib/Transformer/TransformerInjectable'; // import DynamicListingService from '@/services/DynamicListing/DynamicListService'; // interface GetSaleReceiptsSettings { // fetchEntriesGraph?: boolean; // } // @Service() // export class GetSaleReceipts { // @Inject() // private tenancy: HasTenancyService; // @Inject() // private transformer: TransformerInjectable; // @Inject() // private dynamicListService: DynamicListingService; // /** // * Retrieve sales receipts paginated and filterable list. // * @param {number} tenantId // * @param {ISaleReceiptFilter} salesReceiptsFilter // */ // public async getSaleReceipts( // tenantId: number, // filterDTO: ISalesReceiptsFilter // ): Promise<{ // data: ISaleReceipt[]; // pagination: IPaginationMeta; // filterMeta: IFilterMeta; // }> { // const { SaleReceipt } = this.tenancy.models(tenantId); // // Parses the stringified filter roles. // const filter = this.parseListFilterDTO(filterDTO); // // Dynamic list service. // const dynamicFilter = await this.dynamicListService.dynamicList( // tenantId, // SaleReceipt, // filter // ); // const { results, pagination } = await SaleReceipt.query() // .onBuild((builder) => { // builder.withGraphFetched('depositAccount'); // builder.withGraphFetched('customer'); // builder.withGraphFetched('entries.item'); // dynamicFilter.buildQuery()(builder); // filterDTO?.filterQuery && filterDTO?.filterQuery(builder); // }) // .pagination(filter.page - 1, filter.pageSize); // // Transformes the estimates models to POJO. // const salesEstimates = await this.transformer.transform( // tenantId, // results, // new SaleReceiptTransformer() // ); // return { // data: salesEstimates, // pagination, // filterMeta: dynamicFilter.getResponseMeta(), // }; // } // /** // * Parses the sale invoice list filter DTO. // * @param filterDTO // * @returns // */ // private parseListFilterDTO(filterDTO) { // return R.compose(this.dynamicListService.parseStringifiedFilter)(filterDTO); // } // }