111 lines
3.0 KiB
JavaScript
111 lines
3.0 KiB
JavaScript
import {
|
|
GET_MANIFEST_HEADER as MSSQL_GET_MANIFEST_HEADER,
|
|
GET_MANIFEST_LINES as MSSQL_GET_MANIFEST_LINES,
|
|
} from '../../providers/mssql/queries/manifestDoc.js';
|
|
import {
|
|
GET_MANIFEST_HEADER as SQLITE_GET_MANIFEST_HEADER,
|
|
GET_MANIFEST_LINES as SQLITE_GET_MANIFEST_LINES,
|
|
} from '../../providers/sqlite3/queries/manifestDoc.js';
|
|
import {
|
|
GET_CUSTOMER_BY_ID as MSSQL_GET_CUSTOMER_BY_ID,
|
|
POS_GROUP_NAME as MSSQL_POS_GROUP_NAME,
|
|
SUPPLIER_GROUP_NAME as MSSQL_SUPPLIER_GROUP_NAME,
|
|
} from '../../providers/mssql/queries/entity.js';
|
|
import {
|
|
GET_CUSTOMER_BY_ID as SQLITE_GET_CUSTOMER_BY_ID,
|
|
POS_GROUP_NAME as SQLITE_POS_GROUP_NAME,
|
|
SUPPLIER_GROUP_NAME as SQLITE_SUPPLIER_GROUP_NAME,
|
|
} from '../../providers/sqlite3/queries/entity.js';
|
|
import makeRunner from '../runner.js';
|
|
import { shapeLine } from '../manifestLines.js';
|
|
|
|
export function shapeSummary(type, row) {
|
|
return {
|
|
id: row.id,
|
|
number: row.number,
|
|
type,
|
|
entityId: row.entityId ?? null,
|
|
externalNumber: row.externalNumber ?? null,
|
|
date: row.date,
|
|
createdAt: row.createdAt ?? row.created_at ?? null,
|
|
};
|
|
}
|
|
|
|
export async function assertCustomerEntity(runnerOrPool, txOrCompanyId, maybeCompanyId, maybeEntityId) {
|
|
let runner;
|
|
let companyId;
|
|
let entityId;
|
|
|
|
if (maybeEntityId !== undefined) {
|
|
runner = makeRunner(runnerOrPool, txOrCompanyId);
|
|
companyId = maybeCompanyId;
|
|
entityId = maybeEntityId;
|
|
} else {
|
|
runner = makeRunner(runnerOrPool);
|
|
companyId = txOrCompanyId;
|
|
entityId = maybeCompanyId;
|
|
}
|
|
|
|
if (entityId == null) {
|
|
return null;
|
|
}
|
|
if (!Number.isFinite(entityId)) {
|
|
throw new Error('Entity not found');
|
|
}
|
|
|
|
const isSqlite = runner?.dialect === 'sqlite3';
|
|
const getCustomerSql = isSqlite ? SQLITE_GET_CUSTOMER_BY_ID : MSSQL_GET_CUSTOMER_BY_ID;
|
|
const supplierGroupName = isSqlite ? SQLITE_SUPPLIER_GROUP_NAME : MSSQL_SUPPLIER_GROUP_NAME;
|
|
const posGroupName = isSqlite ? SQLITE_POS_GROUP_NAME : MSSQL_POS_GROUP_NAME;
|
|
|
|
const result = await runner.query(getCustomerSql, {
|
|
id: entityId,
|
|
companyId,
|
|
supplierGroupName,
|
|
posGroupName,
|
|
});
|
|
|
|
if (!result.rows[0]) {
|
|
throw new Error('Entity not found');
|
|
}
|
|
return entityId;
|
|
}
|
|
|
|
export async function loadDoc(runnerOrPool, txOrParams, maybeParams) {
|
|
let runner;
|
|
let params;
|
|
|
|
if (maybeParams !== undefined) {
|
|
runner = makeRunner(runnerOrPool, txOrParams);
|
|
params = maybeParams;
|
|
} else {
|
|
runner = makeRunner(runnerOrPool);
|
|
params = txOrParams;
|
|
}
|
|
|
|
const { type, companyId, id } = params;
|
|
const isSqlite = runner?.dialect === 'sqlite3';
|
|
const getHeaderSql = isSqlite ? SQLITE_GET_MANIFEST_HEADER : MSSQL_GET_MANIFEST_HEADER;
|
|
const getLinesSql = isSqlite ? SQLITE_GET_MANIFEST_LINES : MSSQL_GET_MANIFEST_LINES;
|
|
|
|
const header = await runner.query(getHeaderSql, {
|
|
id,
|
|
companyId,
|
|
type,
|
|
});
|
|
|
|
const row = header.rows[0];
|
|
if (!row) {
|
|
return null;
|
|
}
|
|
|
|
const lines = await runner.query(getLinesSql, {
|
|
manifestId: id,
|
|
});
|
|
|
|
return {
|
|
...shapeSummary(type, row),
|
|
lines: lines.rows.map(shapeLine),
|
|
};
|
|
}
|