pdfs
This commit is contained in:
@@ -8,6 +8,34 @@ import type {
|
||||
|
||||
import { prisma } from "../../lib/prisma.js";
|
||||
|
||||
export interface ShipmentPackingSlipData {
|
||||
shipmentNumber: string;
|
||||
status: ShipmentStatus;
|
||||
shipDate: string | null;
|
||||
carrier: string;
|
||||
serviceLevel: string;
|
||||
trackingNumber: string;
|
||||
packageCount: number;
|
||||
notes: string;
|
||||
salesOrderNumber: string;
|
||||
customer: {
|
||||
name: string;
|
||||
addressLine1: string;
|
||||
addressLine2: string;
|
||||
city: string;
|
||||
state: string;
|
||||
postalCode: string;
|
||||
country: string;
|
||||
};
|
||||
lines: Array<{
|
||||
itemSku: string;
|
||||
itemName: string;
|
||||
description: string;
|
||||
quantity: number;
|
||||
unitOfMeasure: string;
|
||||
}>;
|
||||
}
|
||||
|
||||
type ShipmentRecord = {
|
||||
id: string;
|
||||
shipmentNumber: string;
|
||||
@@ -221,3 +249,61 @@ export async function updateShipmentStatus(shipmentId: string, status: ShipmentS
|
||||
const detail = await getShipmentById(shipmentId);
|
||||
return detail ? { ok: true as const, shipment: detail } : { ok: false as const, reason: "Unable to load updated shipment." };
|
||||
}
|
||||
|
||||
export async function getShipmentPackingSlipData(shipmentId: string): Promise<ShipmentPackingSlipData | null> {
|
||||
const shipment = await prisma.shipment.findUnique({
|
||||
where: { id: shipmentId },
|
||||
include: {
|
||||
salesOrder: {
|
||||
include: {
|
||||
customer: {
|
||||
select: {
|
||||
name: true,
|
||||
addressLine1: true,
|
||||
addressLine2: true,
|
||||
city: true,
|
||||
state: true,
|
||||
postalCode: true,
|
||||
country: true,
|
||||
},
|
||||
},
|
||||
lines: {
|
||||
include: {
|
||||
item: {
|
||||
select: {
|
||||
sku: true,
|
||||
name: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
orderBy: [{ position: "asc" }, { createdAt: "asc" }],
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
if (!shipment) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return {
|
||||
shipmentNumber: shipment.shipmentNumber,
|
||||
status: shipment.status as ShipmentStatus,
|
||||
shipDate: shipment.shipDate ? shipment.shipDate.toISOString() : null,
|
||||
carrier: shipment.carrier,
|
||||
serviceLevel: shipment.serviceLevel,
|
||||
trackingNumber: shipment.trackingNumber,
|
||||
packageCount: shipment.packageCount,
|
||||
notes: shipment.notes,
|
||||
salesOrderNumber: shipment.salesOrder.documentNumber,
|
||||
customer: shipment.salesOrder.customer,
|
||||
lines: shipment.salesOrder.lines.map((line) => ({
|
||||
itemSku: line.item.sku,
|
||||
itemName: line.item.name,
|
||||
description: line.description,
|
||||
quantity: line.quantity,
|
||||
unitOfMeasure: line.unitOfMeasure,
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user