Initial import of AbelBirdNest Stock

This commit is contained in:
2026-05-16 18:25:51 +07:00
commit 14bb9bf744
472 changed files with 70671 additions and 0 deletions

View File

@ -0,0 +1,98 @@
import { NextResponse } from "next/server";
import { requireApiAccess } from "@/lib/authorization";
import { prisma } from "@/lib/prisma";
import { serializePurchaseAnalysisListItem } from "@/features/purchase-analysis/lib/serialize-purchase-analysis";
const analysisInclude = {
agent: {
select: {
id: true,
name: true
}
},
profitShareScheme: {
select: {
shareAgent: true
}
},
lines: {
select: {
subtotal: true,
qtyOrdered: true,
qtyReceived: true,
qtyAccepted: true,
unitPrice: true,
malUnitPrice: true,
moistureReceivedPercent: true,
purchaseMoisturePercent: true,
marketReferencePrice: true,
unit: {
select: {
code: true
}
}
}
},
lots: {
select: {
originalQty: true,
finalMoisturePercent: true,
aboveAverageRatioPercent: true,
unit: {
select: {
code: true
}
}
}
},
analysis: {
include: {
costEntries: true
}
}
} as const;
export async function GET(request: Request) {
const auth = requireApiAccess(request);
if (!auth.ok) return auth.response;
try {
const purchases = await prisma.purchase.findMany({
where: {
status: "SUBMITTED",
purchaseType: "REGULAR"
},
select: {
id: true,
purchaseNo: true,
purchaseDate: true,
status: true,
moistureBuyPercent: true,
moistureReceivedPercent: true,
aboveAverageRatioPercent: true,
mkSharePercent: true,
nonMkSharePercent: true,
shippingCost: true,
incomingOperationalCost: true,
afterArrivalOperationalCost: true,
agent: analysisInclude.agent,
profitShareScheme: analysisInclude.profitShareScheme,
lines: analysisInclude.lines,
lots: analysisInclude.lots,
analysis: analysisInclude.analysis
},
orderBy: [{ createdAt: "desc" }]
});
return NextResponse.json({
data: purchases.map(serializePurchaseAnalysisListItem)
});
} catch (error) {
console.error("Failed to load purchase analyses:", error);
return NextResponse.json(
{ message: "Gagal memuat analisis pembelian" },
{ status: 500 }
);
}
}