feat(FE-357): Add marketing sales report API and types

This commit is contained in:
rstubryan
2025-12-17 09:50:36 +07:00
parent 224f7ddeea
commit 0f7f4e891c
3 changed files with 102 additions and 0 deletions
+11
View File
@@ -45,6 +45,17 @@ export const MAIN_DRAWER_LINKS: SidebarMenuItem[] = [
link: '/closing',
icon: 'heroicons-outline:presentation-chart-bar',
},
{
text: 'Laporan',
link: '/report',
icon: 'mdi:chart-box-outline',
submenu: [
{
text: 'Penjualan',
link: '/report/marketing',
},
],
},
{
text: 'Persediaan',
link: '/inventory',
+50
View File
@@ -0,0 +1,50 @@
import { BaseApiService } from '@/services/api/base';
import { BaseApiResponse } from '@/types/api/api-general';
import { HppPerkandang } from '@/types/api/report/hpp-per-kandang';
export class MarketingSaleReportService extends BaseApiService<
HppPerkandang,
unknown,
unknown
> {
constructor(basePath: string) {
super(basePath);
}
async getHppPerKandangReport(
area_id?: number,
location_id?: number,
kandang_id?: number,
weight_min?: number,
weight_max?: number,
period?: string,
sort_by?: string,
show_unrecorded?: boolean,
page?: number,
limit?: number
): Promise<BaseApiResponse<HppPerkandang> | undefined> {
return await this.customRequest<BaseApiResponse<HppPerkandang>>(
`hpp-per-kandang`,
{
method: 'GET',
params: {
area_id: area_id,
location_id: location_id,
kandang_id: kandang_id,
weight_min: weight_min,
weight_max: weight_max,
period: period,
sort_by: sort_by,
show_unrecorded: show_unrecorded,
page: page,
limit: limit,
},
}
);
}
}
// TODO: REPLACE WITH PRODUCTION URL
export const SaleReportApi = new MarketingSaleReportService(
'http://localhost:4010/api/reports/marketings/hpp-per-kandang'
);
+41
View File
@@ -0,0 +1,41 @@
import { BaseMetadata } from '@/types/api/api-general';
import { Supplier } from '@/types/api/supplier/supplier';
import { Kandang } from '@/types/api/master-data/kandang';
export type BaseHppPerKandangSummary = {
total_remaining_chicken_birds: number;
total_remaining_chicken_weight_kg: number;
average_weight_kg: number;
total_remaining_value_rp: number;
total_egg_production_pieces: number;
total_egg_production_kg: number;
average_egg_hpp_rp_per_kg: number;
total_egg_value_rp: number;
};
export type BaseHppPerkandang = {
id: number;
kandang: Kandang;
weight_range: {
weight_min: number;
weight_max: number;
};
remaining_chicken_birds: number;
remaining_chicken_weight_kg: number;
avg_weight_kg: number;
egg_production_pieces: number;
egg_production_kg: number;
egg_hpp_rp_per_kg: number;
egg_value_rp: number;
feed_suppliers: Supplier;
doc_suppliers: Supplier;
average_doc_price_rp: number;
hpp_rp: number;
remaining_value_rp: number;
};
export type HppPerkandang = BaseMetadata & {
periods: string;
rows: SalesReport[];
summary: BaseSalesReportSummary;
};