mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-26 00:05:45 +00:00
feat: add server-side Excel export to PurchasesPerSupplierTab
Add exportToExcelSupplierPerSheet and exportToExcelGeneral methods to LogisticApiService, hitting the existing purchase-supplier endpoint with export=excel / export=excel-all query params and downloading the server blob response. Replace the client-side Excel generation in PurchasesPerSupplierTab with calls to these two service methods, and split the single Export to Excel button into Export to Excel - Supplier Per Sheet and Export to Excel - General.
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
import { BaseApiService } from '@/services/api/base';
|
||||
import { httpClient } from '@/services/http/client';
|
||||
import { formatDate } from '@/lib/helper';
|
||||
import { BaseApiResponse } from '@/types/api/api-general';
|
||||
import { LogisticPurchasePerSupplierReport } from '@/types/api/report/logistic-stock';
|
||||
|
||||
@@ -11,6 +13,115 @@ export class LogisticApiService extends BaseApiService<
|
||||
super(basePath);
|
||||
}
|
||||
|
||||
private buildPurchaseSupplierParams(
|
||||
area_id?: string,
|
||||
supplier_id?: string,
|
||||
product_id?: string,
|
||||
product_category_id?: string,
|
||||
start_date?: string,
|
||||
end_date?: string,
|
||||
sort_by?: string,
|
||||
filter_by?: string
|
||||
): URLSearchParams {
|
||||
const params = new URLSearchParams();
|
||||
if (area_id) params.set('area_id', area_id);
|
||||
if (supplier_id) params.set('supplier_id', supplier_id);
|
||||
if (product_id) params.set('product_id', product_id);
|
||||
if (product_category_id)
|
||||
params.set('product_category_id', product_category_id);
|
||||
if (filter_by === 'received_date' && start_date)
|
||||
params.set('received_date', start_date);
|
||||
if (filter_by === 'po_date' && start_date)
|
||||
params.set('po_date', start_date);
|
||||
if (start_date) params.set('start_date', start_date);
|
||||
if (end_date) params.set('end_date', end_date);
|
||||
if (sort_by) params.set('sort_by', sort_by);
|
||||
if (filter_by) params.set('filter_by', filter_by);
|
||||
return params;
|
||||
}
|
||||
|
||||
async exportToExcelSupplierPerSheet(
|
||||
area_id?: string,
|
||||
supplier_id?: string,
|
||||
product_id?: string,
|
||||
product_category_id?: string,
|
||||
start_date?: string,
|
||||
end_date?: string,
|
||||
sort_by?: string,
|
||||
filter_by?: string
|
||||
) {
|
||||
const params = this.buildPurchaseSupplierParams(
|
||||
area_id,
|
||||
supplier_id,
|
||||
product_id,
|
||||
product_category_id,
|
||||
start_date,
|
||||
end_date,
|
||||
sort_by,
|
||||
filter_by
|
||||
);
|
||||
params.set('export', 'excel');
|
||||
params.set('page', '1');
|
||||
params.set('limit', '99999999999');
|
||||
|
||||
const res = await httpClient<Blob>(
|
||||
`${this.basePath.replace(/\/$/, '')}/purchase-supplier?${params.toString()}`,
|
||||
{ method: 'GET', responseType: 'blob' }
|
||||
);
|
||||
|
||||
const url = window.URL.createObjectURL(new Blob([res]));
|
||||
const link = document.createElement('a');
|
||||
link.href = url;
|
||||
link.setAttribute(
|
||||
'download',
|
||||
`laporan-pembelian-per-supplier-per-sheet-${formatDate(Date.now(), 'DD-MM-YYYY')}.xlsx`
|
||||
);
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
link.remove();
|
||||
}
|
||||
|
||||
async exportToExcelGeneral(
|
||||
area_id?: string,
|
||||
supplier_id?: string,
|
||||
product_id?: string,
|
||||
product_category_id?: string,
|
||||
start_date?: string,
|
||||
end_date?: string,
|
||||
sort_by?: string,
|
||||
filter_by?: string
|
||||
) {
|
||||
const params = this.buildPurchaseSupplierParams(
|
||||
area_id,
|
||||
supplier_id,
|
||||
product_id,
|
||||
product_category_id,
|
||||
start_date,
|
||||
end_date,
|
||||
sort_by,
|
||||
filter_by
|
||||
);
|
||||
params.set('export', 'excel-all');
|
||||
params.set('page', '1');
|
||||
params.set('limit', '99999999999');
|
||||
|
||||
const res = await httpClient<Blob>(
|
||||
`${this.basePath.replace(/\/$/, '')}/purchase-supplier?${params.toString()}`,
|
||||
{ method: 'GET', responseType: 'blob' }
|
||||
);
|
||||
|
||||
const url = window.URL.createObjectURL(new Blob([res]));
|
||||
const link = document.createElement('a');
|
||||
link.href = url;
|
||||
link.setAttribute(
|
||||
'download',
|
||||
`laporan-pembelian-per-supplier-general-${formatDate(Date.now(), 'DD-MM-YYYY')}.xlsx`
|
||||
);
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
link.remove();
|
||||
}
|
||||
|
||||
async getLogisticPurchasePerSupplierReport(
|
||||
area_id?: string,
|
||||
supplier_id?: string,
|
||||
|
||||
Reference in New Issue
Block a user