67 lines
2.4 KiB
JavaScript
67 lines
2.4 KiB
JavaScript
import * as mssqlShipmentQueries from '../../providers/mssql/queries/shipment.js';
|
|
import * as sqliteShipmentQueries from '../../providers/sqlite3/queries/shipment.js';
|
|
import * as mssqlDocQueries from '../../providers/mssql/queries/manifestDoc.js';
|
|
import * as sqliteDocQueries from '../../providers/sqlite3/queries/manifestDoc.js';
|
|
import * as mssqlLogisticsQueries from '../../providers/mssql/queries/logistics.js';
|
|
import * as sqliteLogisticsQueries from '../../providers/sqlite3/queries/logistics.js';
|
|
import { shapeLine } from '../manifestLines.js';
|
|
|
|
export function queriesFor(provider) {
|
|
const isSqlite = provider?.dialect === 'sqlite3';
|
|
return {
|
|
...(isSqlite ? sqliteShipmentQueries : mssqlShipmentQueries),
|
|
CREATE_MANIFEST: isSqlite
|
|
? sqliteDocQueries.CREATE_MANIFEST
|
|
: mssqlDocQueries.CREATE_MANIFEST,
|
|
GET_MANIFEST_LINES: isSqlite
|
|
? sqliteDocQueries.GET_MANIFEST_LINES
|
|
: mssqlDocQueries.GET_MANIFEST_LINES,
|
|
SHIPPING_LIST_BY_MANIFEST: isSqlite
|
|
? sqliteLogisticsQueries.SHIPPING_LIST_BY_MANIFEST
|
|
: mssqlLogisticsQueries.SHIPPING_LIST_BY_MANIFEST,
|
|
};
|
|
}
|
|
|
|
export function shapeShipping(row) {
|
|
return {
|
|
id: row.id,
|
|
manifestId: row.manifest_id ?? row.manifestId,
|
|
number: row.number,
|
|
trackingCode: row.tracking_code ?? row.trackingCode ?? null,
|
|
carrierId: row.carrier_id ?? row.carrierId,
|
|
carrier: row.carrier ?? null,
|
|
type: row.type,
|
|
state: row.state,
|
|
};
|
|
}
|
|
|
|
export async function loadShipment(runner, q, companyId, id) {
|
|
const headerRes = await runner.query(q.GET_SHIPMENT_HEADER, { id, companyId });
|
|
const row = headerRes.rows[0];
|
|
if (!row) return null;
|
|
|
|
const [linesRes, shippingsRes, summaryRes] = await Promise.all([
|
|
runner.query(q.GET_MANIFEST_LINES, { manifestId: id }),
|
|
runner.query(q.SHIPPING_LIST_BY_MANIFEST, { manifestId: id }),
|
|
runner.query('SELECT state FROM shipmentsummary WHERE manifest_id = @manifestId', { manifestId: id }).catch(() => ({ rows: [] })),
|
|
]);
|
|
|
|
const lines = linesRes.rows.map(shapeLine);
|
|
const shippings = shippingsRes.rows.map(shapeShipping);
|
|
|
|
return {
|
|
id: row.id,
|
|
number: row.number,
|
|
type: 'shipment',
|
|
entityId: row.entityId ?? null,
|
|
externalNumber: row.externalNumber ?? null,
|
|
date: row.date,
|
|
createdAt: row.createdAt ?? null,
|
|
lineCount: lines.length,
|
|
packageCount: shippings.length,
|
|
state: summaryRes.rows[0]?.state || 'new',
|
|
lines,
|
|
shippings,
|
|
};
|
|
}
|