Compare commits
3 Commits
1cef3a8d1d
...
5f59c23fbe
| Author | SHA1 | Date | |
|---|---|---|---|
| 5f59c23fbe | |||
| 6a730294b1 | |||
| 933d76969f |
@ -1,6 +1,11 @@
|
||||
import mongoose from 'mongoose';
|
||||
import { generateId } from '../../utils.js';
|
||||
import { getObject, editObject, aggregateRollups, aggregateRollupsHistory } from '../../database.js';
|
||||
import {
|
||||
getObject,
|
||||
editObject,
|
||||
aggregateRollups,
|
||||
aggregateRollupsHistory,
|
||||
} from '../../database.js';
|
||||
const { Schema } = mongoose;
|
||||
|
||||
const parentStockModelNames = {
|
||||
@ -43,8 +48,6 @@ const buildParentState = (parentType, parentStock, currentAmount, startingAmount
|
||||
|
||||
const progress = currentAmount / startingAmount;
|
||||
|
||||
console.log('progress', progress);
|
||||
|
||||
if (currentAmount === startingAmount) {
|
||||
return { ...parentStock.state, type: fullState, progress: 1 };
|
||||
}
|
||||
|
||||
@ -0,0 +1,81 @@
|
||||
import { afterEach, describe, expect, it, jest } from '@jest/globals';
|
||||
import { getOrder, syncOrders } from '../orders.js';
|
||||
|
||||
const successXml = `<?xml version="1.0" encoding="utf-8"?>
|
||||
<GetOrdersResponse xmlns="urn:ebay:apis:eBLBaseComponents">
|
||||
<Ack>Success</Ack>
|
||||
<HasMoreOrders>false</HasMoreOrders>
|
||||
<OrderArray>
|
||||
<Order>
|
||||
<OrderID>12-34567-89012</OrderID>
|
||||
<OrderStatus>Completed</OrderStatus>
|
||||
<Subtotal currencyID="GBP">10.00</Subtotal>
|
||||
<Total currencyID="GBP">12.50</Total>
|
||||
<BuyerUserID>ebay-buyer</BuyerUserID>
|
||||
</Order>
|
||||
</OrderArray>
|
||||
</GetOrdersResponse>`;
|
||||
|
||||
const marketplace = {
|
||||
name: 'eBay UK',
|
||||
config: { accessToken: 'token', marketplaceId: 'EBAY_GB' },
|
||||
};
|
||||
|
||||
function mockTradingResponse(xml = successXml) {
|
||||
return jest.spyOn(global, 'fetch').mockResolvedValue({
|
||||
ok: true,
|
||||
status: 200,
|
||||
text: async () => xml,
|
||||
});
|
||||
}
|
||||
|
||||
describe('eBay Trading API order fetch', () => {
|
||||
afterEach(() => {
|
||||
jest.restoreAllMocks();
|
||||
});
|
||||
|
||||
it('syncs orders with GetOrders and a default lookback', async () => {
|
||||
const fetchSpy = mockTradingResponse();
|
||||
|
||||
const orders = await syncOrders(marketplace);
|
||||
|
||||
expect(fetchSpy).toHaveBeenCalledWith(
|
||||
'https://api.ebay.com/ws/api.dll',
|
||||
expect.objectContaining({
|
||||
method: 'POST',
|
||||
headers: expect.objectContaining({
|
||||
'X-EBAY-API-CALL-NAME': 'GetOrders',
|
||||
'X-EBAY-API-IAF-TOKEN': 'token',
|
||||
'X-EBAY-API-SITEID': '3',
|
||||
}),
|
||||
})
|
||||
);
|
||||
const body = fetchSpy.mock.calls[0][1].body;
|
||||
expect(body).toContain('<GetOrdersRequest');
|
||||
expect(body).toContain('<NumberOfDays>30</NumberOfDays>');
|
||||
expect(body).toContain('<OrderRole>Seller</OrderRole>');
|
||||
expect(orders).toHaveLength(1);
|
||||
expect(orders[0].orderId).toBe('12-34567-89012');
|
||||
});
|
||||
|
||||
it('uses CreateTimeFrom/To when a sync window is provided', async () => {
|
||||
const fetchSpy = mockTradingResponse();
|
||||
|
||||
await syncOrders(marketplace, { startTime: 1756512000, endTime: 1756598400 });
|
||||
|
||||
const body = fetchSpy.mock.calls[0][1].body;
|
||||
expect(body).toContain('<CreateTimeFrom>2025-08-30T00:00:00.000Z</CreateTimeFrom>');
|
||||
expect(body).toContain('<CreateTimeTo>2025-08-31T00:00:00.000Z</CreateTimeTo>');
|
||||
expect(body).not.toContain('<NumberOfDays>');
|
||||
});
|
||||
|
||||
it('loads a single order by OrderID', async () => {
|
||||
const fetchSpy = mockTradingResponse();
|
||||
|
||||
const order = await getOrder(marketplace, '12-34567-89012');
|
||||
|
||||
const body = fetchSpy.mock.calls[0][1].body;
|
||||
expect(body).toContain('<OrderID>12-34567-89012</OrderID>');
|
||||
expect(order.orderId).toBe('12-34567-89012');
|
||||
});
|
||||
});
|
||||
@ -6,56 +6,106 @@ import {
|
||||
mapOrderLineItems,
|
||||
mapOrderShipments,
|
||||
handleWebhook,
|
||||
parseGetOrdersResponse,
|
||||
} from '../orders.js';
|
||||
|
||||
const ebayOrder = {
|
||||
orderId: '12-34567-89012',
|
||||
orderFulfillmentStatus: 'NOT_STARTED',
|
||||
pricingSummary: {
|
||||
priceSubtotal: { value: '10.00' },
|
||||
deliveryCost: { value: '2.50' },
|
||||
tax: { value: '1.20' },
|
||||
total: { value: '13.70' },
|
||||
},
|
||||
buyer: {
|
||||
username: 'ebay-buyer',
|
||||
buyerRegistrationAddress: { email: 'buyer@example.com' },
|
||||
},
|
||||
fulfillmentStartInstructions: [
|
||||
{
|
||||
shippingStep: {
|
||||
shipTo: {
|
||||
fullName: 'Jane Buyer',
|
||||
primaryPhone: { phoneNumber: '012345' },
|
||||
contactAddress: {
|
||||
addressLine1: '1 High St',
|
||||
city: 'London',
|
||||
postalCode: 'SW1A 1AA',
|
||||
countryCode: 'GB',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
lineItems: [
|
||||
{
|
||||
lineItemId: 'line-1',
|
||||
const sampleGetOrdersXml = `
|
||||
<GetOrdersResponse xmlns="urn:ebay:apis:eBLBaseComponents">
|
||||
<Ack>Success</Ack>
|
||||
<HasMoreOrders>false</HasMoreOrders>
|
||||
<OrderArray>
|
||||
<Order>
|
||||
<OrderID>12-34567-89012</OrderID>
|
||||
<ExtendedOrderID>12-34567-89012</ExtendedOrderID>
|
||||
<OrderStatus>Completed</OrderStatus>
|
||||
<AmountPaid currencyID="GBP">13.70</AmountPaid>
|
||||
<CheckoutStatus>
|
||||
<Status>Complete</Status>
|
||||
</CheckoutStatus>
|
||||
<ShippingDetails>
|
||||
<SalesTax>
|
||||
<SalesTaxAmount currencyID="GBP">1.20</SalesTaxAmount>
|
||||
</SalesTax>
|
||||
<ShipmentTrackingDetails>
|
||||
<ShippingCarrierUsed>Royal Mail</ShippingCarrierUsed>
|
||||
<ShipmentTrackingNumber>TRACK123</ShipmentTrackingNumber>
|
||||
</ShipmentTrackingDetails>
|
||||
</ShippingDetails>
|
||||
<CreatedTime>2026-08-01T09:00:00.000Z</CreatedTime>
|
||||
<ShippingAddress>
|
||||
<Name>Jane Buyer</Name>
|
||||
<Street1>1 High St</Street1>
|
||||
<CityName>London</CityName>
|
||||
<PostalCode>SW1A 1AA</PostalCode>
|
||||
<Country>GB</Country>
|
||||
<Phone>012345</Phone>
|
||||
</ShippingAddress>
|
||||
<ShippingServiceSelected>
|
||||
<ShippingService>UK_RoyalMailFirstClassStandard</ShippingService>
|
||||
<ShippingServiceCost currencyID="GBP">2.50</ShippingServiceCost>
|
||||
</ShippingServiceSelected>
|
||||
<Subtotal currencyID="GBP">10.00</Subtotal>
|
||||
<Total currencyID="GBP">13.70</Total>
|
||||
<TransactionArray>
|
||||
<Transaction>
|
||||
<Buyer>
|
||||
<Email>buyer@example.com</Email>
|
||||
<UserFirstName>Jane</UserFirstName>
|
||||
<UserLastName>Buyer</UserLastName>
|
||||
</Buyer>
|
||||
<Item>
|
||||
<ItemID>111</ItemID>
|
||||
<Title>Red widget</Title>
|
||||
<SKU>SKU-RED</SKU>
|
||||
</Item>
|
||||
<QuantityPurchased>2</QuantityPurchased>
|
||||
<TransactionID>line-1</TransactionID>
|
||||
<TransactionPrice currencyID="GBP">5.00</TransactionPrice>
|
||||
<Taxes>
|
||||
<TotalTaxAmount currencyID="GBP">1.00</TotalTaxAmount>
|
||||
</Taxes>
|
||||
<OrderLineItemID>line-1</OrderLineItemID>
|
||||
</Transaction>
|
||||
</TransactionArray>
|
||||
<BuyerUserID>ebay-buyer</BuyerUserID>
|
||||
<PaidTime>2026-08-01T09:05:00.000Z</PaidTime>
|
||||
<ShippedTime>2026-08-01T10:00:00.000Z</ShippedTime>
|
||||
<CancelStatus>NotApplicable</CancelStatus>
|
||||
</Order>
|
||||
</OrderArray>
|
||||
</GetOrdersResponse>
|
||||
`;
|
||||
|
||||
const ebayOrder = parseGetOrdersResponse(sampleGetOrdersXml).orders[0];
|
||||
|
||||
describe('eBay Trading API GetOrders parsing', () => {
|
||||
it('parses order totals, buyer, lines, and tracking', () => {
|
||||
expect(ebayOrder).toMatchObject({
|
||||
orderId: '12-34567-89012',
|
||||
orderStatus: 'Completed',
|
||||
buyerUserId: 'ebay-buyer',
|
||||
buyerEmail: 'buyer@example.com',
|
||||
subtotal: 10,
|
||||
shippingAmount: 2.5,
|
||||
salesTaxAmount: 1.2,
|
||||
total: 13.7,
|
||||
});
|
||||
expect(ebayOrder.shippingAddress.city).toBe('London');
|
||||
expect(ebayOrder.transactions[0]).toMatchObject({
|
||||
sku: 'SKU-RED',
|
||||
title: 'Red widget',
|
||||
quantity: 2,
|
||||
lineItemCost: { value: '5.00' },
|
||||
taxes: [{ amount: { value: '1.00' } }],
|
||||
},
|
||||
],
|
||||
shippingFulfillments: [
|
||||
{
|
||||
fulfillmentId: 'ful-1',
|
||||
shipmentTrackingNumber: 'TRACK123',
|
||||
shippedDate: '2026-08-01T10:00:00.000Z',
|
||||
lineItems: [{ lineItemId: 'line-1' }],
|
||||
},
|
||||
],
|
||||
};
|
||||
transactionPrice: 5,
|
||||
});
|
||||
expect(ebayOrder.shipments[0].trackingNumber).toBe('TRACK123');
|
||||
});
|
||||
|
||||
it('treats HasMoreOrders as false when missing', () => {
|
||||
expect(parseGetOrdersResponse('<Ack>Success</Ack>')).toEqual({
|
||||
orders: [],
|
||||
hasMoreOrders: false,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('eBay order mappers', () => {
|
||||
it('maps sales order totals and externalReference', () => {
|
||||
@ -64,13 +114,18 @@ describe('eBay order mappers', () => {
|
||||
expect(mapped.totalAmount).toBe(10);
|
||||
expect(mapped.shippingAmount).toBe(2.5);
|
||||
expect(mapped.totalTaxAmount).toBe(1.2);
|
||||
expect(mapped.state.type).toBe('draft');
|
||||
expect(mapped.state.type).toBe('shipped');
|
||||
});
|
||||
|
||||
it('maps cancelled orders', () => {
|
||||
expect(
|
||||
mapOrderStatus({ cancelStatus: { cancelState: 'CANCELED' } })
|
||||
).toBe('cancelled');
|
||||
expect(mapOrderStatus({ cancelStatus: 'CancelClosedWithRefund' })).toBe('cancelled');
|
||||
expect(mapOrderStatus({ orderStatus: 'Cancelled' })).toBe('cancelled');
|
||||
});
|
||||
|
||||
it('maps paid but unshipped orders as confirmed', () => {
|
||||
expect(mapOrderStatus({ orderStatus: 'Completed', checkoutStatus: 'Complete' })).toBe(
|
||||
'confirmed'
|
||||
);
|
||||
});
|
||||
|
||||
it('maps buyer to client with marketplace buyer id', () => {
|
||||
@ -93,10 +148,10 @@ describe('eBay order mappers', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('maps shipments from fulfillments', () => {
|
||||
it('maps shipments from tracking details', () => {
|
||||
const shipments = mapOrderShipments(ebayOrder);
|
||||
expect(shipments[0]).toMatchObject({
|
||||
externalReference: 'ful-1',
|
||||
externalReference: 'TRACK123',
|
||||
trackingNumber: 'TRACK123',
|
||||
});
|
||||
expect(shipments[0].state.type).toBe('shipped');
|
||||
@ -105,7 +160,10 @@ describe('eBay order mappers', () => {
|
||||
it('classifies commerce notification topics', async () => {
|
||||
const sold = await handleWebhook(
|
||||
{ name: 'eBay' },
|
||||
{ metadata: { topic: 'ORDER_CONFIRMATION' }, notification: { data: { orderId: 'o1' }, notificationId: 'n1' } }
|
||||
{
|
||||
metadata: { topic: 'ORDER_CONFIRMATION' },
|
||||
notification: { data: { orderId: 'o1' }, notificationId: 'n1' },
|
||||
}
|
||||
);
|
||||
expect(sold).toMatchObject({ action: 'orderUpdate', orderId: 'o1', notificationId: 'n1' });
|
||||
|
||||
|
||||
@ -1,49 +1,217 @@
|
||||
import { makeRequest, logger } from './shared.js';
|
||||
import { makeTradingRequest, xmlBlocks, xmlEscape, xmlNumber, xmlText } from './trading.js';
|
||||
|
||||
const ENTRIES_PER_PAGE = 100;
|
||||
const DEFAULT_LOOKBACK_DAYS = 30;
|
||||
const MAX_RANGE_MS = 90 * 24 * 60 * 60 * 1000;
|
||||
const INVALID_EMAILS = new Set(['', 'invalid request']);
|
||||
|
||||
const CANCELLED_STATUSES = new Set([
|
||||
'Cancelled',
|
||||
'CancelClosedNoRefund',
|
||||
'CancelClosedWithRefund',
|
||||
'CancelClosedUnknownRefund',
|
||||
'CancelClosedForCommitment',
|
||||
]);
|
||||
|
||||
function headerXml(orderXml) {
|
||||
return String(orderXml || '').replace(/<TransactionArray>[\s\S]*?<\/TransactionArray>/i, '');
|
||||
}
|
||||
|
||||
function parseShippingAddress(xml) {
|
||||
const block = xmlBlocks(xml, 'ShippingAddress')[0] || '';
|
||||
return {
|
||||
name: xmlText(block, 'Name'),
|
||||
street1: xmlText(block, 'Street1'),
|
||||
street2: xmlText(block, 'Street2'),
|
||||
city: xmlText(block, 'CityName'),
|
||||
state: xmlText(block, 'StateOrProvince'),
|
||||
postalCode: xmlText(block, 'PostalCode'),
|
||||
country: xmlText(block, 'Country'),
|
||||
phone: xmlText(block, 'Phone'),
|
||||
};
|
||||
}
|
||||
|
||||
function parseTrackingDetails(xml) {
|
||||
return xmlBlocks(xml, 'ShipmentTrackingDetails')
|
||||
.map((block) => ({
|
||||
trackingNumber: xmlText(block, 'ShipmentTrackingNumber'),
|
||||
carrier: xmlText(block, 'ShippingCarrierUsed'),
|
||||
}))
|
||||
.filter((detail) => detail.trackingNumber);
|
||||
}
|
||||
|
||||
function parseTradingTransaction(xml) {
|
||||
const item = xmlBlocks(xml, 'Item')[0] || '';
|
||||
const buyer = xmlBlocks(xml, 'Buyer')[0] || '';
|
||||
const taxes = xmlBlocks(xml, 'Taxes')[0] || '';
|
||||
return {
|
||||
transactionId: xmlText(xml, 'TransactionID'),
|
||||
orderLineItemId: xmlText(xml, 'OrderLineItemID'),
|
||||
sku: xmlText(item, 'SKU'),
|
||||
title: xmlText(item, 'Title'),
|
||||
quantity: xmlNumber(xml, 'QuantityPurchased') || 1,
|
||||
transactionPrice: xmlNumber(xml, 'TransactionPrice'),
|
||||
totalTaxAmount: xmlNumber(taxes, 'TotalTaxAmount'),
|
||||
email: xmlText(buyer, 'Email'),
|
||||
firstName: xmlText(buyer, 'UserFirstName'),
|
||||
lastName: xmlText(buyer, 'UserLastName'),
|
||||
tracking: parseTrackingDetails(xml),
|
||||
};
|
||||
}
|
||||
|
||||
function firstValidEmail(transactions) {
|
||||
for (const transaction of transactions) {
|
||||
const email = (transaction.email || '').trim();
|
||||
if (email && !INVALID_EMAILS.has(email.toLowerCase())) {
|
||||
return email;
|
||||
}
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
function dedupeTracking(details) {
|
||||
const seen = new Set();
|
||||
const unique = [];
|
||||
for (const detail of details) {
|
||||
if (seen.has(detail.trackingNumber)) continue;
|
||||
seen.add(detail.trackingNumber);
|
||||
unique.push(detail);
|
||||
}
|
||||
return unique;
|
||||
}
|
||||
|
||||
export function parseTradingOrder(orderXml) {
|
||||
const header = headerXml(orderXml);
|
||||
const shippingSelected = xmlBlocks(header, 'ShippingServiceSelected')[0] || '';
|
||||
const salesTaxBlock = xmlBlocks(header, 'SalesTax')[0] || '';
|
||||
const checkout = xmlBlocks(header, 'CheckoutStatus')[0] || '';
|
||||
const transactions = xmlBlocks(orderXml, 'Transaction').map(parseTradingTransaction);
|
||||
const taxFromTransactions = transactions.reduce((sum, line) => sum + line.totalTaxAmount, 0);
|
||||
|
||||
return {
|
||||
orderId: xmlText(header, 'OrderID') || xmlText(header, 'ExtendedOrderID'),
|
||||
extendedOrderId: xmlText(header, 'ExtendedOrderID'),
|
||||
orderStatus: xmlText(header, 'OrderStatus'),
|
||||
cancelStatus: xmlText(header, 'CancelStatus'),
|
||||
checkoutStatus: xmlText(checkout, 'Status'),
|
||||
paidTime: xmlText(header, 'PaidTime'),
|
||||
shippedTime: xmlText(header, 'ShippedTime'),
|
||||
createdTime: xmlText(header, 'CreatedTime'),
|
||||
buyerUserId: xmlText(header, 'BuyerUserID'),
|
||||
buyerEmail: firstValidEmail(transactions),
|
||||
shippingAddress: parseShippingAddress(header),
|
||||
subtotal: xmlNumber(header, 'Subtotal'),
|
||||
total: xmlNumber(header, 'Total'),
|
||||
amountPaid: xmlNumber(header, 'AmountPaid'),
|
||||
shippingAmount: xmlNumber(shippingSelected, 'ShippingServiceCost'),
|
||||
salesTaxAmount: xmlNumber(salesTaxBlock, 'SalesTaxAmount') || taxFromTransactions,
|
||||
transactions,
|
||||
shipments: dedupeTracking([
|
||||
...parseTrackingDetails(header),
|
||||
...transactions.flatMap((line) => line.tracking),
|
||||
]),
|
||||
};
|
||||
}
|
||||
|
||||
export function parseGetOrdersResponse(xml = '') {
|
||||
return {
|
||||
orders: xmlBlocks(xml, 'Order').map(parseTradingOrder),
|
||||
hasMoreOrders: xmlText(xml, 'HasMoreOrders').toLowerCase() === 'true',
|
||||
};
|
||||
}
|
||||
|
||||
function buildGetOrdersRequest({
|
||||
startIso,
|
||||
endIso,
|
||||
numberOfDays,
|
||||
pageNumber = 1,
|
||||
orderIds = [],
|
||||
} = {}) {
|
||||
const filters = [];
|
||||
if (orderIds.length) {
|
||||
filters.push(
|
||||
` <OrderIDArray>\n${orderIds
|
||||
.map((id) => ` <OrderID>${xmlEscape(id)}</OrderID>`)
|
||||
.join('\n')}\n </OrderIDArray>`
|
||||
);
|
||||
} else if (numberOfDays) {
|
||||
filters.push(` <NumberOfDays>${numberOfDays}</NumberOfDays>`);
|
||||
} else {
|
||||
if (startIso) filters.push(` <CreateTimeFrom>${startIso}</CreateTimeFrom>`);
|
||||
if (endIso) filters.push(` <CreateTimeTo>${endIso}</CreateTimeTo>`);
|
||||
}
|
||||
|
||||
return `<?xml version="1.0" encoding="utf-8"?>
|
||||
<GetOrdersRequest xmlns="urn:ebay:apis:eBLBaseComponents">
|
||||
<ErrorLanguage>en_GB</ErrorLanguage>
|
||||
<WarningLevel>High</WarningLevel>
|
||||
<DetailLevel>ReturnAll</DetailLevel>
|
||||
<OrderRole>Seller</OrderRole>
|
||||
<OrderStatus>All</OrderStatus>
|
||||
${filters.join('\n')}
|
||||
<Pagination>
|
||||
<EntriesPerPage>${ENTRIES_PER_PAGE}</EntriesPerPage>
|
||||
<PageNumber>${pageNumber}</PageNumber>
|
||||
</Pagination>
|
||||
</GetOrdersRequest>`;
|
||||
}
|
||||
|
||||
function createTimeWindows(startTime, endTime) {
|
||||
if (!startTime && !endTime) {
|
||||
return [{ numberOfDays: DEFAULT_LOOKBACK_DAYS }];
|
||||
}
|
||||
|
||||
const nowSec = Math.floor(Date.now() / 1000);
|
||||
const startSec = startTime || endTime - DEFAULT_LOOKBACK_DAYS * 86400;
|
||||
const endSec = endTime || nowSec;
|
||||
const windows = [];
|
||||
let cursor = Math.min(startSec, endSec) * 1000;
|
||||
const endMs = Math.max(startSec, endSec) * 1000;
|
||||
|
||||
while (cursor < endMs) {
|
||||
const windowEnd = Math.min(cursor + MAX_RANGE_MS, endMs);
|
||||
windows.push({
|
||||
startIso: new Date(cursor).toISOString(),
|
||||
endIso: new Date(windowEnd).toISOString(),
|
||||
});
|
||||
cursor = windowEnd;
|
||||
}
|
||||
|
||||
return windows.length ? windows : [{ numberOfDays: DEFAULT_LOOKBACK_DAYS }];
|
||||
}
|
||||
|
||||
async function fetchOrdersPage(marketplace, requestOptions) {
|
||||
const xml = await makeTradingRequest({
|
||||
marketplace,
|
||||
callName: 'GetOrders',
|
||||
body: buildGetOrdersRequest(requestOptions),
|
||||
});
|
||||
return parseGetOrdersResponse(xml);
|
||||
}
|
||||
|
||||
async function fetchOrdersInWindow(marketplace, windowOptions) {
|
||||
const orders = [];
|
||||
let pageNumber = 1;
|
||||
let hasMore = true;
|
||||
|
||||
while (hasMore) {
|
||||
const page = await fetchOrdersPage(marketplace, { ...windowOptions, pageNumber });
|
||||
if (page.orders.length) {
|
||||
orders.push(...page.orders);
|
||||
}
|
||||
hasMore = page.hasMoreOrders && page.orders.length > 0;
|
||||
pageNumber += 1;
|
||||
}
|
||||
|
||||
return orders;
|
||||
}
|
||||
|
||||
async function fetchAllOrders(marketplace, { startTime, endTime } = {}) {
|
||||
const orders = [];
|
||||
let offset = 0;
|
||||
const limit = 50;
|
||||
|
||||
const filterParts = [];
|
||||
if (startTime) {
|
||||
const isoStart = new Date(startTime * 1000).toISOString();
|
||||
filterParts.push(`creationdate:[${isoStart}..`);
|
||||
for (const window of createTimeWindows(startTime, endTime)) {
|
||||
orders.push(...(await fetchOrdersInWindow(marketplace, window)));
|
||||
}
|
||||
if (endTime) {
|
||||
const isoEnd = new Date(endTime * 1000).toISOString();
|
||||
if (filterParts.length && filterParts[0].startsWith('creationdate:')) {
|
||||
filterParts[0] = filterParts[0] + `${isoEnd}]`;
|
||||
} else {
|
||||
filterParts.push(`creationdate:[..${isoEnd}]`);
|
||||
}
|
||||
} else if (filterParts.length) {
|
||||
filterParts[0] = filterParts[0] + ']';
|
||||
}
|
||||
|
||||
do {
|
||||
const params = { limit, offset };
|
||||
if (filterParts.length) {
|
||||
params.filter = filterParts.join(',');
|
||||
}
|
||||
|
||||
const data = await makeRequest({
|
||||
marketplace,
|
||||
path: '/sell/fulfillment/v1/order',
|
||||
params,
|
||||
});
|
||||
|
||||
if (data?.orders?.length) {
|
||||
orders.push(...data.orders);
|
||||
}
|
||||
|
||||
if (!data?.orders?.length || orders.length >= (data.total || 0)) {
|
||||
break;
|
||||
}
|
||||
|
||||
offset += limit;
|
||||
} while (true);
|
||||
|
||||
return orders;
|
||||
}
|
||||
|
||||
@ -56,38 +224,32 @@ export async function syncOrders(marketplace, { startTime, endTime } = {}) {
|
||||
return orders;
|
||||
}
|
||||
|
||||
const ORDER_STATUS_MAP = {
|
||||
NOT_STARTED: 'draft',
|
||||
IN_PROGRESS: 'confirmed',
|
||||
FULFILLED: 'shipped',
|
||||
CANCELLED: 'cancelled',
|
||||
};
|
||||
|
||||
const FULFILLMENT_STATUS_MAP = {
|
||||
NOT_STARTED: 'confirmed',
|
||||
IN_PROGRESS: 'shipped',
|
||||
FULFILLED: 'delivered',
|
||||
};
|
||||
|
||||
export function mapOrderStatus(ebayOrder) {
|
||||
if (ebayOrder.cancelStatus?.cancelState === 'CANCELED') {
|
||||
const cancelStatus = ebayOrder.cancelStatus || '';
|
||||
if (CANCELLED_STATUSES.has(ebayOrder.orderStatus) || CANCELLED_STATUSES.has(cancelStatus)) {
|
||||
return 'cancelled';
|
||||
}
|
||||
|
||||
const fulfillmentStatus = ebayOrder.fulfillmentStartInstructions?.[0]?.fulfillmentStatus;
|
||||
if (fulfillmentStatus && FULFILLMENT_STATUS_MAP[fulfillmentStatus]) {
|
||||
return FULFILLMENT_STATUS_MAP[fulfillmentStatus];
|
||||
if (ebayOrder.shippedTime) {
|
||||
return 'shipped';
|
||||
}
|
||||
|
||||
return ORDER_STATUS_MAP[ebayOrder.orderFulfillmentStatus] || 'draft';
|
||||
if (
|
||||
ebayOrder.orderStatus === 'Completed' ||
|
||||
ebayOrder.checkoutStatus === 'Complete' ||
|
||||
ebayOrder.paidTime
|
||||
) {
|
||||
return 'confirmed';
|
||||
}
|
||||
|
||||
return 'draft';
|
||||
}
|
||||
|
||||
export function mapOrderToSalesOrder(ebayOrder) {
|
||||
const pricingSummary = ebayOrder.pricingSummary || {};
|
||||
const totalAmount = parseFloat(pricingSummary.priceSubtotal?.value || 0);
|
||||
const shippingAmount = parseFloat(pricingSummary.deliveryCost?.value || 0);
|
||||
const totalTax = parseFloat(pricingSummary.tax?.value || 0);
|
||||
const grandTotal = parseFloat(pricingSummary.total?.value || 0);
|
||||
const totalAmount = ebayOrder.subtotal || 0;
|
||||
const shippingAmount = ebayOrder.shippingAmount || 0;
|
||||
const totalTax = ebayOrder.salesTaxAmount || 0;
|
||||
const grandTotal = ebayOrder.total || 0;
|
||||
|
||||
return {
|
||||
externalReference: ebayOrder.orderId,
|
||||
@ -103,54 +265,47 @@ export function mapOrderToSalesOrder(ebayOrder) {
|
||||
}
|
||||
|
||||
export function mapBuyerToClient(ebayOrder) {
|
||||
const buyer = ebayOrder.buyer || {};
|
||||
const address = ebayOrder.fulfillmentStartInstructions?.[0]?.shippingStep?.shipTo || {};
|
||||
|
||||
const fullName = address.fullName || buyer.username || 'Unknown';
|
||||
const contactAddress = address.contactAddress || {};
|
||||
const address = ebayOrder.shippingAddress || {};
|
||||
const buyer = ebayOrder.transactions?.[0] || {};
|
||||
const buyerName = [buyer.firstName, buyer.lastName].filter(Boolean).join(' ');
|
||||
const fullName = address.name || buyerName || ebayOrder.buyerUserId || 'Unknown';
|
||||
|
||||
return {
|
||||
name: fullName,
|
||||
email: buyer.buyerRegistrationAddress?.email || '',
|
||||
phone: address.primaryPhone?.phoneNumber || '',
|
||||
externalReference: buyer.username || '',
|
||||
email: ebayOrder.buyerEmail || '',
|
||||
phone: address.phone || '',
|
||||
externalReference: ebayOrder.buyerUserId || '',
|
||||
address: {
|
||||
addressLine1: contactAddress.addressLine1 || '',
|
||||
addressLine2: contactAddress.addressLine2 || '',
|
||||
city: contactAddress.city || '',
|
||||
state: contactAddress.stateOrProvince || '',
|
||||
postcode: contactAddress.postalCode || '',
|
||||
country: contactAddress.countryCode || '',
|
||||
addressLine1: address.street1 || '',
|
||||
addressLine2: address.street2 || '',
|
||||
city: address.city || '',
|
||||
state: address.state || '',
|
||||
postcode: address.postalCode || '',
|
||||
country: address.country || '',
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export async function getOrder(marketplace, orderId) {
|
||||
const order = await makeRequest({
|
||||
const xml = await makeTradingRequest({
|
||||
marketplace,
|
||||
path: `/sell/fulfillment/v1/order/${encodeURIComponent(orderId)}`,
|
||||
callName: 'GetOrders',
|
||||
body: buildGetOrdersRequest({ orderIds: [orderId] }),
|
||||
});
|
||||
const fulfillments = await makeRequest({
|
||||
marketplace,
|
||||
path: `/sell/fulfillment/v1/order/${encodeURIComponent(orderId)}/shipping_fulfillment`,
|
||||
acceptableStatuses: [404],
|
||||
});
|
||||
return {
|
||||
...order,
|
||||
shippingFulfillments: fulfillments?.fulfillments || [],
|
||||
};
|
||||
const { orders } = parseGetOrdersResponse(xml);
|
||||
if (!orders.length) {
|
||||
throw new Error(`eBay order ${orderId} was not found`);
|
||||
}
|
||||
return orders[0];
|
||||
}
|
||||
|
||||
export function mapOrderLineItems(ebayOrder) {
|
||||
return (ebayOrder.lineItems || []).map((line) => {
|
||||
const unit = parseFloat(line.lineItemCost?.value || 0);
|
||||
const tax = (line.taxes || []).reduce(
|
||||
(sum, taxLine) => sum + parseFloat(taxLine.amount?.value || 0),
|
||||
0
|
||||
);
|
||||
return (ebayOrder.transactions || []).map((line) => {
|
||||
const unit = line.transactionPrice || 0;
|
||||
const tax = line.totalTaxAmount || 0;
|
||||
const quantity = line.quantity || 1;
|
||||
return {
|
||||
externalReference: line.lineItemId,
|
||||
externalReference: line.orderLineItemId || line.transactionId,
|
||||
sku: line.sku || '',
|
||||
name: line.title || line.sku || 'Marketplace item',
|
||||
quantity,
|
||||
@ -163,24 +318,26 @@ export function mapOrderLineItems(ebayOrder) {
|
||||
}
|
||||
|
||||
export function mapOrderShipments(ebayOrder) {
|
||||
const shippingAmount = parseFloat(ebayOrder.pricingSummary?.deliveryCost?.value || 0);
|
||||
const fulfillments = ebayOrder.shippingFulfillments || [];
|
||||
if (!fulfillments.length) {
|
||||
const shipments = ebayOrder.shipments || [];
|
||||
if (!shipments.length) {
|
||||
return [];
|
||||
}
|
||||
const splitAmount = shippingAmount / fulfillments.length;
|
||||
return fulfillments.map((fulfillment) => ({
|
||||
externalReference: fulfillment.fulfillmentId,
|
||||
trackingNumber: fulfillment.shipmentTrackingNumber || '',
|
||||
const shippingAmount = ebayOrder.shippingAmount || 0;
|
||||
const splitAmount = shippingAmount / shipments.length;
|
||||
return shipments.map((shipment) => ({
|
||||
externalReference: shipment.trackingNumber,
|
||||
trackingNumber: shipment.trackingNumber || '',
|
||||
amount: splitAmount,
|
||||
amountWithTax: splitAmount,
|
||||
state: { type: fulfillment.shippedDate ? 'shipped' : 'planned' },
|
||||
shippedAt: fulfillment.shippedDate ? new Date(fulfillment.shippedDate) : undefined,
|
||||
lineItemIds: (fulfillment.lineItems || []).map((line) => line.lineItemId).filter(Boolean),
|
||||
state: { type: ebayOrder.shippedTime ? 'shipped' : 'planned' },
|
||||
shippedAt: ebayOrder.shippedTime ? new Date(ebayOrder.shippedTime) : undefined,
|
||||
}));
|
||||
}
|
||||
|
||||
export async function createShippingFulfillment(marketplace, { orderId, lineItems, trackingNumber, shippingCarrierCode }) {
|
||||
export async function createShippingFulfillment(
|
||||
marketplace,
|
||||
{ orderId, lineItems, trackingNumber, shippingCarrierCode }
|
||||
) {
|
||||
if (!orderId) {
|
||||
throw new Error('orderId is required to create an eBay shipping fulfillment');
|
||||
}
|
||||
@ -204,14 +361,9 @@ export async function createShippingFulfillment(marketplace, { orderId, lineItem
|
||||
}
|
||||
|
||||
export async function handleWebhook(marketplace, event) {
|
||||
const topic =
|
||||
event?.metadata?.topic ||
|
||||
event?.topic ||
|
||||
event?.notification?.topic ||
|
||||
'';
|
||||
const topic = event?.metadata?.topic || event?.topic || event?.notification?.topic || '';
|
||||
const data = event?.notification?.data || event?.data || {};
|
||||
const notificationId =
|
||||
event?.notification?.notificationId || event?.notificationId || '';
|
||||
const notificationId = event?.notification?.notificationId || event?.notificationId || '';
|
||||
|
||||
logger.info(`eBay webhook received: ${topic} for marketplace ${marketplace.name}`);
|
||||
|
||||
@ -220,7 +372,10 @@ export async function handleWebhook(marketplace, event) {
|
||||
|
||||
const normalized = String(topic).toUpperCase();
|
||||
|
||||
if (normalized.includes('ACCOUNT_DELETION') || normalized.includes('MARKETPLACE_ACCOUNT_DELETION')) {
|
||||
if (
|
||||
normalized.includes('ACCOUNT_DELETION') ||
|
||||
normalized.includes('MARKETPLACE_ACCOUNT_DELETION')
|
||||
) {
|
||||
return {
|
||||
action: 'accountDeletion',
|
||||
userId: data.userId || data.username,
|
||||
@ -233,7 +388,11 @@ export async function handleWebhook(marketplace, event) {
|
||||
return { action: 'disconnect', notificationId, topic };
|
||||
}
|
||||
|
||||
if (normalized.includes('ORDER') || normalized === 'ITEM.SOLD' || normalized === 'ORDER.FULFILLMENT') {
|
||||
if (
|
||||
normalized.includes('ORDER') ||
|
||||
normalized === 'ITEM.SOLD' ||
|
||||
normalized === 'ORDER.FULFILLMENT'
|
||||
) {
|
||||
return {
|
||||
action: orderId && topic.toLowerCase().includes('cancel') ? 'orderCancel' : 'orderUpdate',
|
||||
orderId,
|
||||
|
||||
@ -1,43 +1,8 @@
|
||||
import { logger, getMarketplaceDebugContext } from './shared.js';
|
||||
import { logger } from './shared.js';
|
||||
import { makeTradingRequest } from './trading.js';
|
||||
import { fetchEbayCategoryReferences } from './categoryTree.js';
|
||||
import { syncAccountPolicies } from './accountPolicySync.js';
|
||||
|
||||
const TRADING_COMPATIBILITY_LEVEL = '1399';
|
||||
const TRADING_SANDBOX_URL = 'https://api.sandbox.ebay.com/ws/api.dll';
|
||||
const TRADING_PRODUCTION_URL = 'https://api.ebay.com/ws/api.dll';
|
||||
|
||||
const MARKETPLACE_SITE_IDS = {
|
||||
EBAY_US: '0',
|
||||
EBAY_ENCA: '2',
|
||||
EBAY_GB: '3',
|
||||
EBAY_AU: '15',
|
||||
EBAY_AT: '16',
|
||||
EBAY_FRBE: '23',
|
||||
EBAY_FR: '71',
|
||||
EBAY_DE: '77',
|
||||
EBAY_IT: '101',
|
||||
EBAY_NLBE: '123',
|
||||
EBAY_NL: '146',
|
||||
EBAY_ES: '186',
|
||||
EBAY_CH: '193',
|
||||
EBAY_HK: '201',
|
||||
EBAY_IN: '203',
|
||||
EBAY_IE: '205',
|
||||
EBAY_MY: '207',
|
||||
EBAY_PH: '211',
|
||||
EBAY_PL: '212',
|
||||
EBAY_SG: '216',
|
||||
};
|
||||
|
||||
function getTradingApiUrl(marketplace) {
|
||||
return marketplace.config?.sandbox ? TRADING_SANDBOX_URL : TRADING_PRODUCTION_URL;
|
||||
}
|
||||
|
||||
function getSiteId(marketplace) {
|
||||
const marketplaceId = marketplace.config?.marketplaceId || 'EBAY_GB';
|
||||
return MARKETPLACE_SITE_IDS[marketplaceId] || MARKETPLACE_SITE_IDS.EBAY_GB;
|
||||
}
|
||||
|
||||
export function parseShippingServiceDetails(xml = '') {
|
||||
const blocks = xml.match(/<ShippingServiceDetails>[\s\S]*?<\/ShippingServiceDetails>/g) || [];
|
||||
const services = [];
|
||||
@ -68,67 +33,13 @@ function buildGeteBayDetailsRequest() {
|
||||
}
|
||||
|
||||
export async function fetchEbayShippingServices(marketplace) {
|
||||
const accessToken = marketplace.config?.accessToken;
|
||||
if (!accessToken) {
|
||||
throw new Error(
|
||||
'eBay marketplace is not authenticated. Complete marketplace authorization first.'
|
||||
);
|
||||
}
|
||||
|
||||
const url = getTradingApiUrl(marketplace);
|
||||
const siteId = getSiteId(marketplace);
|
||||
const startedAt = Date.now();
|
||||
logger.debug('eBay Trading API GeteBayDetails request', {
|
||||
...getMarketplaceDebugContext(marketplace),
|
||||
siteId,
|
||||
url,
|
||||
});
|
||||
|
||||
const response = await fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'text/xml',
|
||||
'X-EBAY-API-CALL-NAME': 'GeteBayDetails',
|
||||
'X-EBAY-API-SITEID': siteId,
|
||||
'X-EBAY-API-COMPATIBILITY-LEVEL': TRADING_COMPATIBILITY_LEVEL,
|
||||
'X-EBAY-API-IAF-TOKEN': accessToken,
|
||||
},
|
||||
const xml = await makeTradingRequest({
|
||||
marketplace,
|
||||
callName: 'GeteBayDetails',
|
||||
body: buildGeteBayDetailsRequest(),
|
||||
});
|
||||
|
||||
const xml = await response.text();
|
||||
const durationMs = Date.now() - startedAt;
|
||||
if (!response.ok) {
|
||||
logger.error(`GeteBayDetails failed (${response.status})`, {
|
||||
durationMs,
|
||||
...getMarketplaceDebugContext(marketplace),
|
||||
siteId,
|
||||
});
|
||||
throw new Error(`eBay GeteBayDetails error (${response.status})`);
|
||||
}
|
||||
|
||||
const ackMatch = xml.match(/<Ack>([^<]+)<\/Ack>/);
|
||||
const ack = ackMatch?.[1];
|
||||
if (ack && ack !== 'Success' && ack !== 'Warning') {
|
||||
const message =
|
||||
xml.match(/<LongMessage>([^<]+)<\/LongMessage>/)?.[1] ||
|
||||
xml.match(/<ShortMessage>([^<]+)<\/ShortMessage>/)?.[1] ||
|
||||
ack;
|
||||
logger.error(`GeteBayDetails failed: ${message}`, {
|
||||
ack,
|
||||
durationMs,
|
||||
...getMarketplaceDebugContext(marketplace),
|
||||
siteId,
|
||||
});
|
||||
throw new Error(`eBay GeteBayDetails failed: ${message}`);
|
||||
}
|
||||
|
||||
const services = parseShippingServiceDetails(xml);
|
||||
logger.debug(`GeteBayDetails succeeded (${durationMs}ms)`, {
|
||||
...getMarketplaceDebugContext(marketplace),
|
||||
siteId,
|
||||
serviceCount: services.length,
|
||||
});
|
||||
logger.info(
|
||||
`Fetched ${services.length} eBay shipping service(s) for marketplace "${marketplace.name}"`
|
||||
);
|
||||
|
||||
141
src/integrations/marketplaces/ebay/trading.js
Normal file
141
src/integrations/marketplaces/ebay/trading.js
Normal file
@ -0,0 +1,141 @@
|
||||
import { logger, getMarketplaceDebugContext, formatDebugPayload } from './shared.js';
|
||||
|
||||
const TRADING_COMPATIBILITY_LEVEL = '1399';
|
||||
const TRADING_SANDBOX_URL = 'https://api.sandbox.ebay.com/ws/api.dll';
|
||||
const TRADING_PRODUCTION_URL = 'https://api.ebay.com/ws/api.dll';
|
||||
|
||||
const MARKETPLACE_SITE_IDS = {
|
||||
EBAY_US: '0',
|
||||
EBAY_ENCA: '2',
|
||||
EBAY_GB: '3',
|
||||
EBAY_AU: '15',
|
||||
EBAY_AT: '16',
|
||||
EBAY_FRBE: '23',
|
||||
EBAY_FR: '71',
|
||||
EBAY_DE: '77',
|
||||
EBAY_IT: '101',
|
||||
EBAY_NLBE: '123',
|
||||
EBAY_NL: '146',
|
||||
EBAY_ES: '186',
|
||||
EBAY_CH: '193',
|
||||
EBAY_HK: '201',
|
||||
EBAY_IN: '203',
|
||||
EBAY_IE: '205',
|
||||
EBAY_MY: '207',
|
||||
EBAY_PH: '211',
|
||||
EBAY_PL: '212',
|
||||
EBAY_SG: '216',
|
||||
};
|
||||
|
||||
export function getTradingApiUrl(marketplace) {
|
||||
return marketplace.config?.sandbox ? TRADING_SANDBOX_URL : TRADING_PRODUCTION_URL;
|
||||
}
|
||||
|
||||
export function getTradingSiteId(marketplace) {
|
||||
const marketplaceId = marketplace.config?.marketplaceId || 'EBAY_GB';
|
||||
return MARKETPLACE_SITE_IDS[marketplaceId] || MARKETPLACE_SITE_IDS.EBAY_GB;
|
||||
}
|
||||
|
||||
export function xmlEscape(value) {
|
||||
return String(value ?? '')
|
||||
.replace(/&/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, ''');
|
||||
}
|
||||
|
||||
export function xmlUnescape(value) {
|
||||
return String(value ?? '')
|
||||
.replace(/'/g, "'")
|
||||
.replace(/"/g, '"')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/</g, '<')
|
||||
.replace(/&/g, '&');
|
||||
}
|
||||
|
||||
export function xmlBlocks(xml, tag) {
|
||||
const re = new RegExp(`<${tag}(?:\\s[^>]*)?>[\\s\\S]*?</${tag}>`, 'gi');
|
||||
return String(xml || '').match(re) || [];
|
||||
}
|
||||
|
||||
export function xmlText(xml, tag) {
|
||||
const re = new RegExp(`<${tag}(?:\\s[^>]*)?>([\\s\\S]*?)</${tag}>`, 'i');
|
||||
const match = String(xml || '').match(re);
|
||||
if (!match) return '';
|
||||
return xmlUnescape(match[1].replace(/<[^>]+>/g, '').trim());
|
||||
}
|
||||
|
||||
export function xmlNumber(xml, tag) {
|
||||
const parsed = parseFloat(xmlText(xml, tag));
|
||||
return Number.isFinite(parsed) ? parsed : 0;
|
||||
}
|
||||
|
||||
export async function makeTradingRequest({
|
||||
marketplace,
|
||||
callName,
|
||||
body,
|
||||
logResponse = false,
|
||||
} = {}) {
|
||||
const accessToken = marketplace.config?.accessToken;
|
||||
if (!accessToken) {
|
||||
throw new Error(
|
||||
'eBay marketplace is not authenticated. Complete marketplace authorization first.'
|
||||
);
|
||||
}
|
||||
|
||||
const url = getTradingApiUrl(marketplace);
|
||||
const siteId = getTradingSiteId(marketplace);
|
||||
const startedAt = Date.now();
|
||||
|
||||
logger.debug(`eBay Trading API ${callName} request`, {
|
||||
...getMarketplaceDebugContext(marketplace),
|
||||
siteId,
|
||||
url,
|
||||
});
|
||||
|
||||
const response = await fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'text/xml',
|
||||
'X-EBAY-API-CALL-NAME': callName,
|
||||
'X-EBAY-API-SITEID': siteId,
|
||||
'X-EBAY-API-COMPATIBILITY-LEVEL': TRADING_COMPATIBILITY_LEVEL,
|
||||
'X-EBAY-API-IAF-TOKEN': accessToken,
|
||||
},
|
||||
body,
|
||||
});
|
||||
|
||||
const xml = await response.text();
|
||||
const durationMs = Date.now() - startedAt;
|
||||
|
||||
if (!response.ok) {
|
||||
logger.error(`${callName} failed (${response.status})`, {
|
||||
durationMs,
|
||||
...getMarketplaceDebugContext(marketplace),
|
||||
siteId,
|
||||
});
|
||||
throw new Error(`eBay ${callName} error (${response.status})`);
|
||||
}
|
||||
|
||||
const ack = xmlText(xml, 'Ack');
|
||||
if (ack && ack !== 'Success' && ack !== 'Warning') {
|
||||
const message = xmlText(xml, 'LongMessage') || xmlText(xml, 'ShortMessage') || ack;
|
||||
logger.error(`${callName} failed: ${message}`, {
|
||||
ack,
|
||||
durationMs,
|
||||
...getMarketplaceDebugContext(marketplace),
|
||||
siteId,
|
||||
response: formatDebugPayload(xml),
|
||||
});
|
||||
throw new Error(`eBay ${callName} failed: ${message}`);
|
||||
}
|
||||
|
||||
logger.debug(`eBay Trading API ${callName} -> ${ack || response.status} (${durationMs}ms)`, {
|
||||
...getMarketplaceDebugContext(marketplace),
|
||||
siteId,
|
||||
response: logResponse ? formatDebugPayload(xml) : undefined,
|
||||
});
|
||||
|
||||
return xml;
|
||||
}
|
||||
@ -84,10 +84,24 @@ router.get('/properties', checkPermissions('invoice', 'list'), isAuthenticated,
|
||||
listInvoicesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('invoice', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getInvoicePropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('invoice', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true, invoiceModel);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true, invoiceModel
|
||||
);
|
||||
}
|
||||
getInvoicePropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('invoice', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchInvoicesRouteHandler(req, res, search);
|
||||
|
||||
@ -65,7 +65,17 @@ router.get(
|
||||
checkPermissions('paymentPolicy', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
getPaymentPolicyPropertyValuesRouteHandler(req, res, req.query.property);
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getPaymentPolicyPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@ -65,10 +65,24 @@ router.get('/properties', checkPermissions('payment', 'list'), isAuthenticated,
|
||||
listPaymentsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('payment', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getPaymentPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('payment', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getPaymentPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('payment', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchPaymentsRouteHandler(req, res, search);
|
||||
|
||||
@ -50,10 +50,24 @@ router.get('/properties', checkPermissions('taxRecord', 'list'), isAuthenticated
|
||||
listTaxRecordsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('taxRecord', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getTaxRecordPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('taxRecord', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getTaxRecordPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('taxRecord', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchTaxRecordsRouteHandler(req, res, search);
|
||||
|
||||
@ -60,10 +60,24 @@ router.get('/properties', checkPermissions('filamentStock', 'list'), isAuthentic
|
||||
listFilamentStocksByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('filamentStock', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getFilamentStockPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('filamentStock', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getFilamentStockPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('filamentStock', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchFilamentStocksRouteHandler(req, res, search);
|
||||
|
||||
@ -74,10 +74,24 @@ router.get('/properties', checkPermissions('orderItem', 'list'), isAuthenticated
|
||||
listOrderItemsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('orderItem', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getOrderItemPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('orderItem', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getOrderItemPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('orderItem', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchOrderItemsRouteHandler(req, res, search);
|
||||
|
||||
@ -52,10 +52,24 @@ router.get('/properties', checkPermissions('partStock', 'list'), isAuthenticated
|
||||
listPartStocksByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('partStock', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getPartStockPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('partStock', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getPartStockPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('partStock', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchPartStocksRouteHandler(req, res, search);
|
||||
|
||||
@ -51,10 +51,24 @@ router.get('/properties', checkPermissions('productStock', 'list'), isAuthentica
|
||||
listProductStocksByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('productStock', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getProductStockPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('productStock', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getProductStockPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('productStock', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchProductStocksRouteHandler(req, res, search);
|
||||
|
||||
@ -78,10 +78,24 @@ router.get('/properties', checkPermissions('purchaseOrder', 'list'), isAuthentic
|
||||
listPurchaseOrdersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('purchaseOrder', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getPurchaseOrderPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('purchaseOrder', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getPurchaseOrderPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('purchaseOrder', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchPurchaseOrdersRouteHandler(req, res, search);
|
||||
|
||||
@ -83,10 +83,24 @@ router.get('/properties', checkPermissions('shipment', 'list'), isAuthenticated,
|
||||
listShipmentsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('shipment', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getShipmentPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('shipment', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getShipmentPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('shipment', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchShipmentsRouteHandler(req, res, search);
|
||||
|
||||
@ -41,10 +41,24 @@ router.get('/properties', checkPermissions('stockEvent', 'list'), isAuthenticate
|
||||
listStockEventsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('stockEvent', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getStockEventPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('stockEvent', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getStockEventPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('stockEvent', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchStockEventsRouteHandler(req, res, search);
|
||||
|
||||
@ -40,10 +40,24 @@ router.get('/properties', checkPermissions('stockLocation', 'list'), isAuthentic
|
||||
listStockLocationsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('stockLocation', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getStockLocationPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('stockLocation', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getStockLocationPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('stockLocation', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchStockLocationsRouteHandler(req, res, search);
|
||||
|
||||
@ -49,10 +49,24 @@ router.get('/properties', checkPermissions('stockTransfer', 'list'), isAuthentic
|
||||
listStockTransfersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('stockTransfer', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getStockTransferPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('stockTransfer', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getStockTransferPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('stockTransfer', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchStockTransfersRouteHandler(req, res, search);
|
||||
|
||||
@ -46,10 +46,24 @@ router.get('/properties', checkPermissions('appPassword', 'list'), isAuthenticat
|
||||
listAppPasswordsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('appPassword', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getAppPasswordPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('appPassword', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getAppPasswordPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('appPassword', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -50,10 +50,24 @@ router.get('/properties', checkPermissions('courier', 'list'), isAuthenticated,
|
||||
listCouriersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('courier', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getCourierPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('courier', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getCourierPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('courier', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -76,10 +76,24 @@ router.get('/properties', checkPermissions('courierService', 'list'), isAuthenti
|
||||
listCourierServicesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('courierService', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getCourierServicePropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('courierService', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getCourierServicePropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('courierService', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -49,10 +49,24 @@ router.get('/properties', checkPermissions('documentJob', 'list'), isAuthenticat
|
||||
listDocumentJobsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('documentJob', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getDocumentJobPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('documentJob', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getDocumentJobPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('documentJob', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -49,10 +49,24 @@ router.get('/properties', checkPermissions('documentPrinter', 'list'), isAuthent
|
||||
listDocumentPrintersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('documentPrinter', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getDocumentPrinterPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('documentPrinter', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getDocumentPrinterPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('documentPrinter', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -64,10 +64,24 @@ router.get('/properties', checkPermissions('documentSize', 'list'), isAuthentica
|
||||
listDocumentSizesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('documentSize', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getDocumentSizePropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('documentSize', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getDocumentSizePropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('documentSize', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -66,10 +66,24 @@ router.get('/properties', checkPermissions('documentTemplate', 'list'), isAuthen
|
||||
listDocumentTemplatesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('documentTemplate', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getDocumentTemplatePropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('documentTemplate', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getDocumentTemplatePropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('documentTemplate', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -70,10 +70,24 @@ router.get('/properties', checkPermissions('filament', 'list'), isAuthenticated,
|
||||
listFilamentsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('filament', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getFilamentPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('filament', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getFilamentPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('filament', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -59,10 +59,24 @@ router.get('/properties', checkPermissions('filamentSku', 'list'), isAuthenticat
|
||||
listFilamentSkusByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('filamentSku', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getFilamentSkuPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('filamentSku', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getFilamentSkuPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('filamentSku', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchFilamentSkusRouteHandler(req, res, search);
|
||||
|
||||
@ -52,10 +52,24 @@ router.get('/properties', checkPermissions('file', 'list'), isAuthenticated, asy
|
||||
listFilesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('file', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getFilePropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('file', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getFilePropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('file', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -48,10 +48,24 @@ router.get('/properties', checkPermissions('host', 'list'), isAuthenticated, asy
|
||||
listHostsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('host', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getHostPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('host', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getHostPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('host', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -48,10 +48,24 @@ router.get('/properties', checkPermissions('material', 'list'), isAuthenticated,
|
||||
listMaterialsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('material', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getMaterialPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('material', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getMaterialPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('material', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -48,10 +48,24 @@ router.get('/properties', checkPermissions('noteType', 'list'), isAuthenticated,
|
||||
listNoteTypesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('noteType', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getNoteTypePropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('noteType', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getNoteTypePropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('noteType', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchNoteTypesRouteHandler(req, res, search);
|
||||
|
||||
@ -59,10 +59,24 @@ router.get('/properties', checkPermissions('part', 'list'), isAuthenticated, asy
|
||||
listPartsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('part', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getPartPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('part', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getPartPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('part', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -60,10 +60,24 @@ router.get('/properties', checkPermissions('partSku', 'list'), isAuthenticated,
|
||||
listPartSkusByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('partSku', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getPartSkuPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('partSku', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getPartSkuPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('partSku', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchPartSkusRouteHandler(req, res, search);
|
||||
|
||||
@ -48,10 +48,24 @@ router.get('/properties', checkPermissions('permissionSetting', 'list'), isAuthe
|
||||
listPermissionSettingsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('permissionSetting', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getPermissionSettingsPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('permissionSetting', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getPermissionSettingsPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('permissionSetting', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -46,10 +46,24 @@ router.get('/properties', checkPermissions('productCategory', 'list'), isAuthent
|
||||
listProductCategoriesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('productCategory', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getProductCategoryPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('productCategory', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getProductCategoryPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('productCategory', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -60,10 +60,24 @@ router.get('/properties', checkPermissions('product', 'list'), isAuthenticated,
|
||||
listProductsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('product', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getProductPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('product', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getProductPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('product', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -60,10 +60,24 @@ router.get('/properties', checkPermissions('productSku', 'list'), isAuthenticate
|
||||
listProductSkusByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('productSku', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getProductSkuPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('productSku', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getProductSkuPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('productSku', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchProductSkusRouteHandler(req, res, search);
|
||||
|
||||
@ -61,10 +61,24 @@ router.get('/properties', checkPermissions('taxRate', 'list'), isAuthenticated,
|
||||
listTaxRatesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('taxRate', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getTaxRatePropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('taxRate', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getTaxRatePropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('taxRate', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -48,10 +48,24 @@ router.get('/properties', checkPermissions('userGroup', 'list'), isAuthenticated
|
||||
listUserGroupsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('userGroup', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getUserGroupPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('userGroup', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getUserGroupPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('userGroup', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -50,10 +50,24 @@ router.get('/properties', checkPermissions('user', 'list'), isAuthenticated, asy
|
||||
listUsersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('user', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getUserPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('user', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getUserPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('user', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchUsersRouteHandler(req, res, search);
|
||||
|
||||
@ -48,10 +48,24 @@ router.get('/properties', checkPermissions('vendor', 'list'), isAuthenticated, a
|
||||
listVendorsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('vendor', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getVendorPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('vendor', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getVendorPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('vendor', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
|
||||
@ -46,10 +46,24 @@ router.get('/properties', checkPermissions('filamentProfile', 'list'), isAuthent
|
||||
listFilamentProfilesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('filamentProfile', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getFilamentProfilePropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('filamentProfile', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getFilamentProfilePropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('filamentProfile', 'list'), isAuthenticated, async (req, res) => {
|
||||
searchFilamentProfilesRouteHandler(req, res, req.query.search);
|
||||
|
||||
@ -49,10 +49,24 @@ router.get('/properties', checkPermissions('gcodeFile', 'list'), isAuthenticated
|
||||
listGCodeFilesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('gcodeFile', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getGCodeFilePropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('gcodeFile', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getGCodeFilePropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('gcodeFile', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchGCodeFilesRouteHandler(req, res, search);
|
||||
|
||||
@ -45,7 +45,17 @@ import { convertPropertiesString, getFilter, getSort } from '../../utils.js';
|
||||
router.get('/', isAuthenticated, checkPermissions('job', 'list'), async (req, res) => {
|
||||
const { page, limit, property, search, sortProperty, sortOrder } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters);
|
||||
listJobsRouteHandler(req, res, page, limit, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder);
|
||||
listJobsRouteHandler(
|
||||
req,
|
||||
res,
|
||||
page,
|
||||
limit,
|
||||
property,
|
||||
filter,
|
||||
search,
|
||||
getSort(sortProperty, listAllowedSorters),
|
||||
sortOrder
|
||||
);
|
||||
});
|
||||
|
||||
router.get('/properties', checkPermissions('job', 'list'), isAuthenticated, async (req, res) => {
|
||||
@ -60,7 +70,12 @@ router.get('/properties', checkPermissions('job', 'list'), isAuthenticated, asyn
|
||||
|
||||
router.get('/values', checkPermissions('job', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getJobPropertyValuesRouteHandler(req, res, property);
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(JSON.parse(req.query.masterFilter), listAllowedFilters, true);
|
||||
}
|
||||
getJobPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
});
|
||||
router.get('/search', checkPermissions('job', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
@ -84,7 +99,16 @@ router.get('/history', isAuthenticated, async (req, res) => {
|
||||
router.get('/neighbors', isAuthenticated, async (req, res) => {
|
||||
const { property, search, sortProperty, sortOrder, id } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters);
|
||||
getJobNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id);
|
||||
getJobNeighborsRouteHandler(
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
search,
|
||||
getSort(sortProperty, listAllowedSorters),
|
||||
sortOrder,
|
||||
id
|
||||
);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, checkPermissions('job', 'info'), async (req, res) => {
|
||||
|
||||
@ -45,10 +45,24 @@ router.get('/properties', checkPermissions('printerProfile', 'list'), isAuthenti
|
||||
listPrinterProfilesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('printerProfile', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getPrinterProfilePropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('printerProfile', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getPrinterProfilePropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/search', checkPermissions('printerProfile', 'list'), isAuthenticated, async (req, res) => {
|
||||
searchPrinterProfilesRouteHandler(req, res, req.query.search);
|
||||
|
||||
@ -49,10 +49,24 @@ router.get('/properties', checkPermissions('printer', 'list'), isAuthenticated,
|
||||
listPrintersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('printer', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getPrinterPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('printer', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getPrinterPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('printer', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchPrintersRouteHandler(req, res, search);
|
||||
|
||||
@ -56,10 +56,24 @@ router.get('/properties', checkPermissions('subJob', 'list'), isAuthenticated, a
|
||||
listSubJobsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('subJob', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getSubJobPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('subJob', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getSubJobPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('subJob', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchSubJobsRouteHandler(req, res, search);
|
||||
|
||||
@ -49,10 +49,24 @@ router.get('/properties', checkPermissions('client', 'list'), isAuthenticated, a
|
||||
listClientsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('client', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getClientPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('client', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getClientPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('client', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchClientsRouteHandler(req, res, search);
|
||||
|
||||
@ -76,7 +76,17 @@ router.get(
|
||||
checkPermissions('fulfillmentPolicy', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
getFulfillmentPolicyPropertyValuesRouteHandler(req, res, req.query.property);
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getFulfillmentPolicyPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@ -84,10 +84,24 @@ router.get('/properties', checkPermissions('listing', 'list'), isAuthenticated,
|
||||
listListingsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('listing', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getListingPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('listing', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getListingPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('listing', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchListingsRouteHandler(req, res, search);
|
||||
|
||||
@ -2,6 +2,7 @@ import express from 'express';
|
||||
import { isAuthenticated } from '../../keycloak.js';
|
||||
import { checkPermissions } from '../../database/permissions.js';
|
||||
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
|
||||
import { listingVarientModel } from '../../database/schemas/sales/listingvarient.schema.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
@ -19,18 +20,26 @@ const listAllowedFilters = [
|
||||
'updatedAt',
|
||||
'_reference',
|
||||
];
|
||||
const listAllowedSorters = ['state', 'stockQuantity', 'price', 'lastSyncedAt', 'createdAt', 'updatedAt', '_id'];
|
||||
const listAllowedSorters = [
|
||||
'state',
|
||||
'stockQuantity',
|
||||
'price',
|
||||
'lastSyncedAt',
|
||||
'createdAt',
|
||||
'updatedAt',
|
||||
'_id',
|
||||
];
|
||||
const propertiesAllowedFilters = [
|
||||
'listing',
|
||||
'listing._id',
|
||||
'product',
|
||||
'productSku',
|
||||
'stockQuantity',
|
||||
'state',
|
||||
'state.type',
|
||||
'createdAt',
|
||||
'updatedAt',
|
||||
];
|
||||
'listing',
|
||||
'listing._id',
|
||||
'product',
|
||||
'productSku',
|
||||
'stockQuantity',
|
||||
'state',
|
||||
'state.type',
|
||||
'createdAt',
|
||||
'updatedAt',
|
||||
];
|
||||
import {
|
||||
listListingVarientsRouteHandler,
|
||||
getListingVarientRouteHandler,
|
||||
@ -44,39 +53,77 @@ import {
|
||||
unpublishListingVarientRouteHandler,
|
||||
searchListingVarientsRouteHandler,
|
||||
getListingVarientPropertyValuesRouteHandler,
|
||||
|
||||
getListingVarientNeighborsRouteHandler
|
||||
getListingVarientNeighborsRouteHandler,
|
||||
} from '../../services/sales/listingvarients.js';
|
||||
|
||||
router.get('/', isAuthenticated, checkPermissions('listingVarient', 'list'), async (req, res) => {
|
||||
const { page, limit, property, search, sortProperty, sortOrder } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters);
|
||||
listListingVarientsRouteHandler(req, res, page, limit, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder);
|
||||
const filter = await getFilter(req.query, listAllowedFilters);
|
||||
listListingVarientsRouteHandler(
|
||||
req,
|
||||
res,
|
||||
page,
|
||||
limit,
|
||||
property,
|
||||
filter,
|
||||
search,
|
||||
getSort(sortProperty, listAllowedSorters),
|
||||
sortOrder
|
||||
);
|
||||
});
|
||||
|
||||
router.get('/properties', checkPermissions('listingVarient', 'list'), isAuthenticated, async (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
router.get(
|
||||
'/properties',
|
||||
checkPermissions('listingVarient', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
}
|
||||
listListingVarientsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
}
|
||||
listListingVarientsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
);
|
||||
|
||||
router.get('/values', checkPermissions('listingVarient', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getListingVarientPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get('/search', checkPermissions('listingVarient', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchListingVarientsRouteHandler(req, res, search);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('listingVarient', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true, listingVarientModel);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true,
|
||||
listingVarientModel
|
||||
);
|
||||
}
|
||||
getListingVarientPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get(
|
||||
'/search',
|
||||
checkPermissions('listingVarient', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchListingVarientsRouteHandler(req, res, search);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
router.post('/', isAuthenticated, checkPermissions('listing', 'newListingVarient'), async (req, res) => {
|
||||
newListingVarientRouteHandler(req, res);
|
||||
});
|
||||
router.post(
|
||||
'/',
|
||||
isAuthenticated,
|
||||
checkPermissions('listing', 'newListingVarient'),
|
||||
async (req, res) => {
|
||||
newListingVarientRouteHandler(req, res);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/stats', isAuthenticated, async (req, res) => {
|
||||
getListingVarientStatsRouteHandler(req, res);
|
||||
@ -86,27 +133,56 @@ router.get('/history', isAuthenticated, async (req, res) => {
|
||||
getListingVarientHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.post('/:id/publish', isAuthenticated, checkPermissions('listingVarient', 'publish'), async (req, res) => {
|
||||
publishListingVarientRouteHandler(req, res);
|
||||
});
|
||||
router.post(
|
||||
'/:id/publish',
|
||||
isAuthenticated,
|
||||
checkPermissions('listingVarient', 'publish'),
|
||||
async (req, res) => {
|
||||
publishListingVarientRouteHandler(req, res);
|
||||
}
|
||||
);
|
||||
|
||||
router.post('/:id/unpublish', isAuthenticated, checkPermissions('listingVarient', 'unpublish'), async (req, res) => {
|
||||
unpublishListingVarientRouteHandler(req, res);
|
||||
});
|
||||
router.post(
|
||||
'/:id/unpublish',
|
||||
isAuthenticated,
|
||||
checkPermissions('listingVarient', 'unpublish'),
|
||||
async (req, res) => {
|
||||
unpublishListingVarientRouteHandler(req, res);
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/neighbors', isAuthenticated, async (req, res) => {
|
||||
const { property, search, sortProperty, sortOrder, id } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters);
|
||||
getListingVarientNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id);
|
||||
getListingVarientNeighborsRouteHandler(
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
search,
|
||||
getSort(sortProperty, listAllowedSorters),
|
||||
sortOrder,
|
||||
id
|
||||
);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, checkPermissions('listingVarient', 'info'), async (req, res) => {
|
||||
getListingVarientRouteHandler(req, res);
|
||||
});
|
||||
router.get(
|
||||
'/:id',
|
||||
isAuthenticated,
|
||||
checkPermissions('listingVarient', 'info'),
|
||||
async (req, res) => {
|
||||
getListingVarientRouteHandler(req, res);
|
||||
}
|
||||
);
|
||||
|
||||
router.put('/:id', isAuthenticated, checkPermissions('listingVarient', 'edit'), async (req, res) => {
|
||||
editListingVarientRouteHandler(req, res);
|
||||
});
|
||||
router.put(
|
||||
'/:id',
|
||||
isAuthenticated,
|
||||
checkPermissions('listingVarient', 'edit'),
|
||||
async (req, res) => {
|
||||
editListingVarientRouteHandler(req, res);
|
||||
}
|
||||
);
|
||||
|
||||
router.delete('/:id', isAuthenticated, async (req, res) => {
|
||||
deleteListingVarientRouteHandler(req, res);
|
||||
|
||||
@ -101,7 +101,16 @@ router.get(
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getMarketplacePropertyValuesRouteHandler(req, res, property);
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getMarketplacePropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get(
|
||||
|
||||
@ -81,7 +81,17 @@ router.get(
|
||||
checkPermissions('returnPolicy', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
getReturnPolicyPropertyValuesRouteHandler(req, res, req.query.property);
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getReturnPolicyPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@ -51,10 +51,24 @@ router.get('/properties', checkPermissions('salesOrder', 'list'), isAuthenticate
|
||||
listSalesOrdersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
|
||||
router.get('/values', checkPermissions('salesOrder', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { property } = req.query;
|
||||
getSalesOrderPropertyValuesRouteHandler(req, res, property);
|
||||
});
|
||||
router.get(
|
||||
'/values',
|
||||
checkPermissions('salesOrder', 'list'),
|
||||
isAuthenticated,
|
||||
async (req, res) => {
|
||||
const { property } = req.query;
|
||||
const filter = await getFilter(req.query, listAllowedFilters, true);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = await getFilter(
|
||||
JSON.parse(req.query.masterFilter),
|
||||
listAllowedFilters,
|
||||
true
|
||||
);
|
||||
}
|
||||
getSalesOrderPropertyValuesRouteHandler(req, res, property, filter, masterFilter);
|
||||
}
|
||||
);
|
||||
router.get('/search', checkPermissions('salesOrder', 'list'), isAuthenticated, async (req, res) => {
|
||||
const { search } = req.query;
|
||||
searchSalesOrdersRouteHandler(req, res, search);
|
||||
|
||||
@ -95,10 +95,17 @@ export const listInvoicesByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getInvoicePropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getInvoicePropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: invoiceModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -89,10 +89,17 @@ export const listPaymentPoliciesByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getPaymentPolicyPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getPaymentPolicyPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: paymentPolicyModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -84,10 +84,17 @@ export const listPaymentsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getPaymentPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getPaymentPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: paymentModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -74,10 +74,17 @@ export const listTaxRecordsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getTaxRecordPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getTaxRecordPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: taxRecordModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -82,10 +82,17 @@ export const listFilamentStocksByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getFilamentStockPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getFilamentStockPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: filamentStockModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -173,10 +173,17 @@ export const listOrderItemsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getOrderItemPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getOrderItemPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: orderItemModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -85,10 +85,17 @@ export const listPartStocksByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getPartStockPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getPartStockPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: partStockModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -144,10 +144,17 @@ export const listProductStocksByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getProductStockPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getProductStockPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: productStockModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -81,10 +81,17 @@ export const listPurchaseOrdersByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getPurchaseOrderPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getPurchaseOrderPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: purchaseOrderModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -82,10 +82,17 @@ export const listShipmentsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getShipmentPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getShipmentPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: shipmentModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -79,10 +79,17 @@ export const listStockEventsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getStockEventPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getStockEventPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: stockEventModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -76,10 +76,17 @@ export const listStockLocationsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getStockLocationPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getStockLocationPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: stockLocationModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -281,10 +281,17 @@ export const listStockTransfersByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getStockTransferPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getStockTransferPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: stockTransferModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -82,10 +82,17 @@ export const listAppPasswordsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getAppPasswordPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getAppPasswordPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: appPasswordModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -74,10 +74,17 @@ export const listCouriersByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getCourierPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getCourierPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: courierModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -78,10 +78,17 @@ export const listCourierServicesByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getCourierServicePropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getCourierServicePropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: courierServiceModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -75,10 +75,17 @@ export const listDocumentJobsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getDocumentJobPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getDocumentJobPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: documentJobModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -78,10 +78,17 @@ export const listDocumentPrintersByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getDocumentPrinterPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getDocumentPrinterPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: documentPrinterModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -74,10 +74,17 @@ export const listDocumentSizesByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getDocumentSizePropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getDocumentSizePropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: documentSizeModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -112,10 +112,17 @@ export const listDocumentTemplatesByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getDocumentTemplatePropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getDocumentTemplatePropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: documentTemplateModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -78,10 +78,17 @@ export const listFilamentsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getFilamentPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getFilamentPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: filamentModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -76,10 +76,17 @@ export const listFilamentSkusByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getFilamentSkuPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getFilamentSkuPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: filamentSkuModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -111,10 +111,17 @@ export const listFilesByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getFilePropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getFilePropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: fileModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -74,10 +74,17 @@ export const listHostsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getHostPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getHostPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: hostModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -76,10 +76,17 @@ export const listMaterialsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getMaterialPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getMaterialPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: materialModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -74,10 +74,17 @@ export const listNoteTypesByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getNoteTypePropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getNoteTypePropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: noteTypeModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -76,10 +76,17 @@ export const listPartsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getPartPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getPartPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: partModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -82,10 +82,17 @@ export const listPartSkusByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getPartSkuPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getPartSkuPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: partSkuModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -77,10 +77,17 @@ export const listPermissionSettingsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getPermissionSettingsPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getPermissionSettingsPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: permissionSettingModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -79,10 +79,17 @@ export const listProductCategoriesByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getProductCategoryPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getProductCategoryPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: productCategoryModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -76,10 +76,17 @@ export const listProductsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getProductPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getProductPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: productModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -85,10 +85,17 @@ export const listProductSkusByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getProductSkuPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getProductSkuPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: productSkuModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -80,10 +80,17 @@ export const listTaxRatesByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getTaxRatePropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getTaxRatePropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: taxRateModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -83,10 +83,17 @@ export const listUserGroupsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getUserGroupPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getUserGroupPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: userGroupModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -78,10 +78,17 @@ export const listUsersByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getUserPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getUserPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: userModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -74,10 +74,17 @@ export const listVendorsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getVendorPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getVendorPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: vendorModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -225,10 +225,17 @@ export const listFilamentProfilesByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getFilamentProfilePropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getFilamentProfilePropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: filamentProfileModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -76,10 +76,17 @@ export const listGCodeFilesByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getGCodeFilePropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getGCodeFilePropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: gcodeFileModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -76,11 +76,17 @@ export const listJobsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getJobPropertyValuesRouteHandler = async (req, res, property, filter = {}) => {
|
||||
export const getJobPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: jobModel,
|
||||
property,
|
||||
filter,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -113,10 +113,17 @@ export const listPrinterProfilesByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getPrinterProfilePropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getPrinterProfilePropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: printerProfileModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -77,10 +77,17 @@ export const listPrintersByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getPrinterPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getPrinterPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: printerModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -71,10 +71,17 @@ export const listSubJobsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getSubJobPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getSubJobPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: subJobModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -74,10 +74,17 @@ export const listClientsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getClientPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getClientPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: clientModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -95,10 +95,17 @@ export const listFulfillmentPoliciesByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getFulfillmentPolicyPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getFulfillmentPolicyPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: fulfillmentPolicyModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -144,10 +144,17 @@ export const listListingsByPropertiesRouteHandler = async (
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getListingPropertyValuesRouteHandler = async (req, res, property) => {
|
||||
export const getListingPropertyValuesRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property,
|
||||
filter,
|
||||
masterFilter
|
||||
) => {
|
||||
const result = await getPropertyValues({
|
||||
model: listingModel,
|
||||
property,
|
||||
filter: { ...filter, ...masterFilter },
|
||||
});
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user