medusa-plugin-veeqo 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/medusa-config.js +29 -0
- package/.medusa/server/src/admin/index.js +686 -0
- package/.medusa/server/src/admin/index.mjs +685 -0
- package/.medusa/server/src/api/admin/veeqo/customers/[customerId]/sync/route.js +19 -0
- package/.medusa/server/src/api/admin/veeqo/customers/sync/route.js +16 -0
- package/.medusa/server/src/api/admin/veeqo/orders/[orderId]/sync/route.js +19 -0
- package/.medusa/server/src/api/admin/veeqo/orders/shipment-sync/route.js +30 -0
- package/.medusa/server/src/api/admin/veeqo/orders/sync/route.js +16 -0
- package/.medusa/server/src/api/admin/veeqo/products/[productId]/sync/route.js +19 -0
- package/.medusa/server/src/api/admin/veeqo/products/sync/route.js +14 -0
- package/.medusa/server/src/api/admin/veeqo/sales-channels/[salesChannelId]/sync/route.js +19 -0
- package/.medusa/server/src/api/admin/veeqo/sales-channels/sync/route.js +14 -0
- package/.medusa/server/src/api/admin/veeqo/shipments/[id]/tracking-events/route.js +20 -0
- package/.medusa/server/src/api/admin/veeqo/shipping-options/[shippingOptionId]/sync/route.js +19 -0
- package/.medusa/server/src/api/admin/veeqo/shipping-options/sync/route.js +14 -0
- package/.medusa/server/src/api/admin/veeqo/stock-locations/[stockLocationId]/sync/route.js +19 -0
- package/.medusa/server/src/api/admin/veeqo/stock-locations/sync/route.js +14 -0
- package/.medusa/server/src/api/middlewares.js +39 -0
- package/.medusa/server/src/api/validators.js +23 -0
- package/.medusa/server/src/jobs/veeqo-order-sync.js +34 -0
- package/.medusa/server/src/links/customer-veeqo-customer.js +18 -0
- package/.medusa/server/src/links/fulfillment-veeqo-shipment.js +18 -0
- package/.medusa/server/src/links/order-veeqo-order.js +18 -0
- package/.medusa/server/src/links/product-variant-veeqo-sellable.js +18 -0
- package/.medusa/server/src/links/product-veeqo-product.js +18 -0
- package/.medusa/server/src/links/sales-channel-veeqo-channel.js +18 -0
- package/.medusa/server/src/links/shipping-option-veeqo-delivery-method.js +18 -0
- package/.medusa/server/src/links/stock-location-veeqo-warehouse.js +18 -0
- package/.medusa/server/src/links/veeqo-channel-sales-channel.js +15 -0
- package/.medusa/server/src/links/veeqo-customer-customer.js +15 -0
- package/.medusa/server/src/links/veeqo-delivery-method.js +15 -0
- package/.medusa/server/src/links/veeqo-order-order.js +15 -0
- package/.medusa/server/src/links/veeqo-product-product.js +15 -0
- package/.medusa/server/src/links/veeqo-sellable-product-variant.js +15 -0
- package/.medusa/server/src/links/veeqo-shipment-fulfillment.js +15 -0
- package/.medusa/server/src/links/veeqo-warehouse-stock-location.js +15 -0
- package/.medusa/server/src/modules/veeqo/index.js +10 -0
- package/.medusa/server/src/modules/veeqo/migrations/Migration20260411222036.js +76 -0
- package/.medusa/server/src/modules/veeqo/models/veeqo-channel.js +10 -0
- package/.medusa/server/src/modules/veeqo/models/veeqo-customer.js +14 -0
- package/.medusa/server/src/modules/veeqo/models/veeqo-delivery-method.js +10 -0
- package/.medusa/server/src/modules/veeqo/models/veeqo-order.js +26 -0
- package/.medusa/server/src/modules/veeqo/models/veeqo-product.js +10 -0
- package/.medusa/server/src/modules/veeqo/models/veeqo-sellable.js +10 -0
- package/.medusa/server/src/modules/veeqo/models/veeqo-shipment.js +20 -0
- package/.medusa/server/src/modules/veeqo/models/veeqo-warehouse.js +10 -0
- package/.medusa/server/src/modules/veeqo/service.js +566 -0
- package/.medusa/server/src/modules/veeqo/types.js +3 -0
- package/.medusa/server/src/subscribers/veeqo-dispatcher.js +12 -0
- package/.medusa/server/src/workflows/channel.js +137 -0
- package/.medusa/server/src/workflows/customer.js +112 -0
- package/.medusa/server/src/workflows/delivery-method.js +116 -0
- package/.medusa/server/src/workflows/order.js +327 -0
- package/.medusa/server/src/workflows/product.js +163 -0
- package/.medusa/server/src/workflows/shipments.js +155 -0
- package/.medusa/server/src/workflows/warehouse.js +133 -0
- package/README.md +70 -0
- package/package.json +83 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteChannelInVeeqoWorkflow = exports.findAndDeleteChannelInVeeqoStep = exports.syncChannelToVeeqoWorkflow = exports.addOrUpdateChannelInVeeqoStep = exports.updateSalesChannelInVeeqoWorkflow = exports.updateChannelInVeeqoStep = exports.addSalesChannelToVeeqoWorkflow = exports.addChannelToVeeqoStep = exports.getVeeqoChannelWorkflow = exports.fetchChannelFromVeeqoStep = exports.getSalesChannelDetailsStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const mapSalesChannelToVeeqoChannelInput = (sales_channel) => {
|
|
7
|
+
if (sales_channel.name === undefined || sales_channel.name === null) {
|
|
8
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Sales channel ${sales_channel.id} is missing required field for Veeqo channel input: name`);
|
|
9
|
+
}
|
|
10
|
+
return {
|
|
11
|
+
name: sales_channel.name?.replace(/[^a-zA-Z0-9 ]/g, ''), // veeqo api rejects if name has special characters
|
|
12
|
+
type_code: 'direct',
|
|
13
|
+
...(sales_channel.default_warehouse_id && {
|
|
14
|
+
default_warehouse_id: sales_channel.default_warehouse_id
|
|
15
|
+
})
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
exports.getSalesChannelDetailsStep = (0, workflows_sdk_1.createStep)('get-sales-channel-details-step', async (sales_channel_id, { container }) => {
|
|
19
|
+
const query = container.resolve('query');
|
|
20
|
+
const { data: sales_channels } = await query.graph({
|
|
21
|
+
entity: 'sales_channel',
|
|
22
|
+
fields: ['id', 'name', 'type_code', 'veeqo_channel.veeqo_channel_id'],
|
|
23
|
+
filters: { id: sales_channel_id }
|
|
24
|
+
});
|
|
25
|
+
// get linked stock location ids for sales channel
|
|
26
|
+
const { data: links } = await query.graph({
|
|
27
|
+
entity: 'sales_channel_location',
|
|
28
|
+
fields: ['stock_location_id'],
|
|
29
|
+
filters: { sales_channel_id }
|
|
30
|
+
});
|
|
31
|
+
// get veeqo warehouse id for first linked stock location, if exists
|
|
32
|
+
let defaultVeeqoWarehouseId;
|
|
33
|
+
if (links.length > 0) {
|
|
34
|
+
const stock_location_id = links[0].stock_location_id;
|
|
35
|
+
const { data: stockLocations } = await query.graph({
|
|
36
|
+
entity: 'stock_location',
|
|
37
|
+
fields: ['id', 'veeqo_warehouse.veeqo_warehouse_id'],
|
|
38
|
+
filters: { id: stock_location_id }
|
|
39
|
+
});
|
|
40
|
+
defaultVeeqoWarehouseId = stockLocations[0]?.veeqo_warehouse?.veeqo_warehouse_id;
|
|
41
|
+
}
|
|
42
|
+
const sales_channel = {
|
|
43
|
+
...sales_channels[0],
|
|
44
|
+
...(defaultVeeqoWarehouseId !== undefined && {
|
|
45
|
+
default_warehouse_id: defaultVeeqoWarehouseId
|
|
46
|
+
})
|
|
47
|
+
};
|
|
48
|
+
if (!sales_channel) {
|
|
49
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Sales channel with id ${sales_channel_id} not found`);
|
|
50
|
+
}
|
|
51
|
+
return new workflows_sdk_1.StepResponse(sales_channel);
|
|
52
|
+
});
|
|
53
|
+
// GET --------------------------------------------------------------
|
|
54
|
+
exports.fetchChannelFromVeeqoStep = (0, workflows_sdk_1.createStep)('fetch-channel-from-veeqo-step', async (sales_channel_id, { container }) => {
|
|
55
|
+
const query = container.resolve('query');
|
|
56
|
+
const { data: [veeqo_channel] } = await query.graph({
|
|
57
|
+
entity: 'veeqo_channel',
|
|
58
|
+
fields: ['veeqo_channel_id'],
|
|
59
|
+
filters: { sales_channel_id }
|
|
60
|
+
});
|
|
61
|
+
const veeqoChannelId = veeqo_channel?.veeqo_channel_id;
|
|
62
|
+
if (!veeqoChannelId) {
|
|
63
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `No linked Veeqo channel found for sales channel ${sales_channel_id}`);
|
|
64
|
+
}
|
|
65
|
+
const veeqoService = container.resolve('veeqo');
|
|
66
|
+
const veeqoChannel = (await veeqoService.fetchChannel(veeqoChannelId));
|
|
67
|
+
return new workflows_sdk_1.StepResponse(veeqoChannel);
|
|
68
|
+
});
|
|
69
|
+
exports.getVeeqoChannelWorkflow = (0, workflows_sdk_1.createWorkflow)('get-veeqo-channel-workflow', (sales_channel_id) => {
|
|
70
|
+
const veeqoChannel = (0, exports.fetchChannelFromVeeqoStep)(sales_channel_id);
|
|
71
|
+
return new workflows_sdk_1.WorkflowResponse(veeqoChannel);
|
|
72
|
+
});
|
|
73
|
+
// ADD -----------------------------------------------------------
|
|
74
|
+
exports.addChannelToVeeqoStep = (0, workflows_sdk_1.createStep)('add-channel-to-veeqo-step', async (sales_channel, { container }) => {
|
|
75
|
+
if (sales_channel.veeqo_channel?.veeqo_channel_id) {
|
|
76
|
+
return new workflows_sdk_1.StepResponse(void 0);
|
|
77
|
+
}
|
|
78
|
+
const veeqoChannelInput = mapSalesChannelToVeeqoChannelInput(sales_channel);
|
|
79
|
+
const veeqoService = container.resolve('veeqo');
|
|
80
|
+
const veeqoChannel = await veeqoService.addChannel(sales_channel.id, veeqoChannelInput);
|
|
81
|
+
if (!veeqoChannel) {
|
|
82
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Unable to create channel in Veeqo for sales channel ${sales_channel.id}`);
|
|
83
|
+
}
|
|
84
|
+
return new workflows_sdk_1.StepResponse(veeqoChannel);
|
|
85
|
+
});
|
|
86
|
+
exports.addSalesChannelToVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('add-sales-channel-to-veeqo-workflow', (sales_channel) => {
|
|
87
|
+
(0, exports.addChannelToVeeqoStep)(sales_channel);
|
|
88
|
+
return new workflows_sdk_1.WorkflowResponse(void 0);
|
|
89
|
+
});
|
|
90
|
+
// UPDATE -----------------------------------------------------------
|
|
91
|
+
exports.updateChannelInVeeqoStep = (0, workflows_sdk_1.createStep)('update-channel-in-veeqo-step', async (sales_channel, { container }) => {
|
|
92
|
+
if (!sales_channel.veeqo_channel?.veeqo_channel_id) {
|
|
93
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `No linked Veeqo channel found for sales channel ${sales_channel.id}`);
|
|
94
|
+
}
|
|
95
|
+
const veeqoChannelInput = mapSalesChannelToVeeqoChannelInput(sales_channel);
|
|
96
|
+
const veeqoService = container.resolve('veeqo');
|
|
97
|
+
const veeqoChannel = await veeqoService.updateChannel(sales_channel.veeqo_channel.veeqo_channel_id, veeqoChannelInput);
|
|
98
|
+
if (!veeqoChannel) {
|
|
99
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Unable to update channel in Veeqo for sales channel ${sales_channel.id}`);
|
|
100
|
+
}
|
|
101
|
+
return new workflows_sdk_1.StepResponse(veeqoChannel);
|
|
102
|
+
});
|
|
103
|
+
exports.updateSalesChannelInVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('update-sales-channel-in-veeqo-workflow', (sales_channel) => {
|
|
104
|
+
const veeqoChannel = (0, exports.updateChannelInVeeqoStep)(sales_channel);
|
|
105
|
+
return new workflows_sdk_1.WorkflowResponse(veeqoChannel);
|
|
106
|
+
});
|
|
107
|
+
// SYNC -------------------------------------------------------------
|
|
108
|
+
exports.addOrUpdateChannelInVeeqoStep = (0, workflows_sdk_1.createStep)('add-or-update-channel-in-veeqo-step', async (sales_channel, { container }) => {
|
|
109
|
+
const veeqoService = container.resolve('veeqo');
|
|
110
|
+
const veeqoChannelId = sales_channel.veeqo_channel?.veeqo_channel_id;
|
|
111
|
+
if (!veeqoChannelId) {
|
|
112
|
+
const veeqoChannelInput = mapSalesChannelToVeeqoChannelInput(sales_channel);
|
|
113
|
+
const veeqoChannel = await veeqoService.addChannel(sales_channel.id, veeqoChannelInput);
|
|
114
|
+
return new workflows_sdk_1.StepResponse(veeqoChannel);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
const veeqoChannelInput = mapSalesChannelToVeeqoChannelInput(sales_channel);
|
|
118
|
+
const veeqoChannel = await veeqoService.updateChannel(veeqoChannelId, veeqoChannelInput);
|
|
119
|
+
return new workflows_sdk_1.StepResponse(veeqoChannel);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
exports.syncChannelToVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('sync-channel-in-veeqo-workflow', (sales_channel_id) => {
|
|
123
|
+
const salesChannel = (0, exports.getSalesChannelDetailsStep)(sales_channel_id);
|
|
124
|
+
const veeqoChannel = (0, exports.addOrUpdateChannelInVeeqoStep)(salesChannel);
|
|
125
|
+
return new workflows_sdk_1.WorkflowResponse(veeqoChannel);
|
|
126
|
+
});
|
|
127
|
+
// DELETE -----------------------------------------------------------
|
|
128
|
+
exports.findAndDeleteChannelInVeeqoStep = (0, workflows_sdk_1.createStep)('find-and-delete-channel-in-veeqo-step', async (sales_channel_id, { container }) => {
|
|
129
|
+
const veeqoService = container.resolve('veeqo');
|
|
130
|
+
await veeqoService.deleteChannel(sales_channel_id);
|
|
131
|
+
return new workflows_sdk_1.StepResponse(void 0);
|
|
132
|
+
});
|
|
133
|
+
exports.deleteChannelInVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('delete-channel-in-veeqo-workflow', (sales_channel_id) => {
|
|
134
|
+
const result = (0, exports.findAndDeleteChannelInVeeqoStep)(sales_channel_id);
|
|
135
|
+
return new workflows_sdk_1.WorkflowResponse(result);
|
|
136
|
+
});
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvY2hhbm5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFLMEM7QUFDMUMscURBQXVEO0FBUXZELE1BQU0sa0NBQWtDLEdBQUcsQ0FDMUMsYUFBK0MsRUFDM0IsRUFBRTtJQUN0QixJQUFJLGFBQWEsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDckUsTUFBTSxJQUFJLG1CQUFXLENBQ3BCLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsaUJBQWlCLGFBQWEsQ0FBQyxFQUFFLDBEQUEwRCxDQUMzRixDQUFBO0lBQ0YsQ0FBQztJQUNELE9BQU87UUFDTixJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsbURBQW1EO1FBQzVHLFNBQVMsRUFBRSxRQUFRO1FBQ25CLEdBQUcsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLElBQUk7WUFDekMsb0JBQW9CLEVBQUUsYUFBYSxDQUFDLG9CQUFvQjtTQUN4RCxDQUFDO0tBQ0YsQ0FBQTtBQUNGLENBQUMsQ0FBQTtBQUVZLFFBQUEsMEJBQTBCLEdBQUcsSUFBQSwwQkFBVSxFQUNuRCxnQ0FBZ0MsRUFDaEMsS0FBSyxFQUFFLGdCQUF3QixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUNqRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ3hDLE1BQU0sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2xELE1BQU0sRUFBRSxlQUFlO1FBQ3ZCLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLGdDQUFn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
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteCustomerFromVeeqoWorkflow = exports.findAndDeleteCustomerFromVeeqoStep = exports.syncCustomerToVeeqoWorkflow = exports.addOrUpdateCustomerInVeeqoStep = exports.updateCustomerInVeeqoWorkflow = exports.updateCustomerInVeeqoStep = exports.addCustomerToVeeqoWorkflow = exports.addCustomerToVeeqoStep = exports.getVeeqoCustomerWorkflow = exports.fetchCustomerFromVeeqoStep = exports.getCustomerDetailsStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const mapCustomerToVeeqoCustomerInput = (customer) => {
|
|
7
|
+
if (customer.email === undefined || customer.email === null) {
|
|
8
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Customer ${customer.id} is missing required field for Veeqo customer input: email`);
|
|
9
|
+
}
|
|
10
|
+
return {
|
|
11
|
+
email: customer.email,
|
|
12
|
+
notes: customer.id, // store the Medusa customer ID in the notes field to link the records
|
|
13
|
+
...(customer.phone !== undefined && customer.phone !== null ? { phone: customer.phone } : {})
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
exports.getCustomerDetailsStep = (0, workflows_sdk_1.createStep)('get-customer-details-step', async (customer_id, { container }) => {
|
|
17
|
+
const query = container.resolve('query');
|
|
18
|
+
const { data: customers } = await query.graph({
|
|
19
|
+
entity: 'customer',
|
|
20
|
+
fields: ['id', 'email', 'phone', 'veeqo_customer.veeqo_customer_id'],
|
|
21
|
+
filters: { id: customer_id }
|
|
22
|
+
});
|
|
23
|
+
const customer = customers[0];
|
|
24
|
+
if (!customer) {
|
|
25
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Customer with id ${customer_id} not found`);
|
|
26
|
+
}
|
|
27
|
+
return new workflows_sdk_1.StepResponse(customer);
|
|
28
|
+
});
|
|
29
|
+
// GET --------------------------------------------------------------
|
|
30
|
+
exports.fetchCustomerFromVeeqoStep = (0, workflows_sdk_1.createStep)('fetch-customer-from-veeqo-step', async (customer_id, { container }) => {
|
|
31
|
+
const query = container.resolve('query');
|
|
32
|
+
const { data: [veeqo_customer] } = await query.graph({
|
|
33
|
+
entity: 'veeqo_customer',
|
|
34
|
+
fields: ['veeqo_customer_id'],
|
|
35
|
+
filters: { customer_id }
|
|
36
|
+
});
|
|
37
|
+
const veeqoCustomerId = veeqo_customer?.veeqo_customer_id;
|
|
38
|
+
if (!veeqoCustomerId) {
|
|
39
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `No linked Veeqo customer found for customer ${customer_id}`);
|
|
40
|
+
}
|
|
41
|
+
const veeqoService = container.resolve('veeqo');
|
|
42
|
+
const veeqoCustomer = (await veeqoService.fetchCustomer(veeqoCustomerId));
|
|
43
|
+
return new workflows_sdk_1.StepResponse(veeqoCustomer);
|
|
44
|
+
});
|
|
45
|
+
exports.getVeeqoCustomerWorkflow = (0, workflows_sdk_1.createWorkflow)('get-veeqo-customer-workflow', (customer_id) => {
|
|
46
|
+
const veeqoCustomer = (0, exports.fetchCustomerFromVeeqoStep)(customer_id);
|
|
47
|
+
return new workflows_sdk_1.WorkflowResponse(veeqoCustomer);
|
|
48
|
+
});
|
|
49
|
+
// ADD -----------------------------------------------------------
|
|
50
|
+
exports.addCustomerToVeeqoStep = (0, workflows_sdk_1.createStep)('add-customer-to-veeqo-step', async (customer, { container }) => {
|
|
51
|
+
if (customer.veeqo_customer?.veeqo_customer_id) {
|
|
52
|
+
return new workflows_sdk_1.StepResponse(void 0);
|
|
53
|
+
}
|
|
54
|
+
const veeqoCustomerInput = mapCustomerToVeeqoCustomerInput(customer);
|
|
55
|
+
const veeqoService = container.resolve('veeqo');
|
|
56
|
+
const veeqoCustomer = await veeqoService.addCustomer(customer.id, veeqoCustomerInput);
|
|
57
|
+
return new workflows_sdk_1.StepResponse(veeqoCustomer);
|
|
58
|
+
});
|
|
59
|
+
exports.addCustomerToVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('add-customer-to-veeqo-workflow', (customer_id) => {
|
|
60
|
+
const customer = (0, exports.getCustomerDetailsStep)(customer_id);
|
|
61
|
+
const veeqoCustomer = (0, exports.addCustomerToVeeqoStep)(customer);
|
|
62
|
+
return new workflows_sdk_1.WorkflowResponse(veeqoCustomer);
|
|
63
|
+
});
|
|
64
|
+
// UPDATE -----------------------------------------------------------
|
|
65
|
+
exports.updateCustomerInVeeqoStep = (0, workflows_sdk_1.createStep)('update-customer-in-veeqo-step', async (customer, { container }) => {
|
|
66
|
+
const veeqoCustomerId = customer.veeqo_customer?.veeqo_customer_id;
|
|
67
|
+
if (!veeqoCustomerId) {
|
|
68
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `No linked Veeqo customer found for customer ${customer.id}`);
|
|
69
|
+
}
|
|
70
|
+
const veeqoCustomerInput = mapCustomerToVeeqoCustomerInput(customer);
|
|
71
|
+
const veeqoService = container.resolve('veeqo');
|
|
72
|
+
const veeqoCustomer = await veeqoService.updateCustomer(veeqoCustomerId, veeqoCustomerInput);
|
|
73
|
+
return new workflows_sdk_1.StepResponse(veeqoCustomer);
|
|
74
|
+
});
|
|
75
|
+
exports.updateCustomerInVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('update-customer-in-veeqo-workflow', (customer_id) => {
|
|
76
|
+
const customer = (0, exports.getCustomerDetailsStep)(customer_id);
|
|
77
|
+
const veeqoCustomer = (0, exports.updateCustomerInVeeqoStep)(customer);
|
|
78
|
+
return new workflows_sdk_1.WorkflowResponse(veeqoCustomer);
|
|
79
|
+
});
|
|
80
|
+
// SYNC -------------------------------------------------------------
|
|
81
|
+
exports.addOrUpdateCustomerInVeeqoStep = (0, workflows_sdk_1.createStep)('add-or-update-customer-in-veeqo-step', async (customer, { container }) => {
|
|
82
|
+
const veeqoService = container.resolve('veeqo');
|
|
83
|
+
const veeqoCustomerId = customer.veeqo_customer?.veeqo_customer_id;
|
|
84
|
+
if (!veeqoCustomerId) {
|
|
85
|
+
const veeqoCustomerInput = mapCustomerToVeeqoCustomerInput(customer);
|
|
86
|
+
const veeqoService = container.resolve('veeqo');
|
|
87
|
+
const veeqoCustomer = await veeqoService.addCustomer(customer.id, veeqoCustomerInput);
|
|
88
|
+
return new workflows_sdk_1.StepResponse(veeqoCustomer);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
const veeqoCustomerInput = mapCustomerToVeeqoCustomerInput(customer);
|
|
92
|
+
const veeqoService = container.resolve('veeqo');
|
|
93
|
+
const veeqoCustomer = await veeqoService.updateCustomer(veeqoCustomerId, veeqoCustomerInput);
|
|
94
|
+
return new workflows_sdk_1.StepResponse(veeqoCustomer);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
exports.syncCustomerToVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('sync-customer-to-veeqo-workflow', (customer_id) => {
|
|
98
|
+
const customer = (0, exports.getCustomerDetailsStep)(customer_id);
|
|
99
|
+
const veeqoCustomer = (0, exports.addOrUpdateCustomerInVeeqoStep)(customer);
|
|
100
|
+
return new workflows_sdk_1.WorkflowResponse(veeqoCustomer);
|
|
101
|
+
});
|
|
102
|
+
// DELETE -----------------------------------------------------------
|
|
103
|
+
exports.findAndDeleteCustomerFromVeeqoStep = (0, workflows_sdk_1.createStep)('find-and-delete-customer-from-veeqo-step', async (customer_id, { container }) => {
|
|
104
|
+
const veeqoService = container.resolve('veeqo');
|
|
105
|
+
await veeqoService.deleteCustomer(customer_id);
|
|
106
|
+
return new workflows_sdk_1.StepResponse(void 0);
|
|
107
|
+
});
|
|
108
|
+
exports.deleteCustomerFromVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('delete-customer-from-veeqo-workflow', (customer_id) => {
|
|
109
|
+
const result = (0, exports.findAndDeleteCustomerFromVeeqoStep)(customer_id);
|
|
110
|
+
return new workflows_sdk_1.WorkflowResponse(result);
|
|
111
|
+
});
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2N1c3RvbWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUswQztBQUMxQyxxREFBdUQ7QUFRdkQsTUFBTSwrQkFBK0IsR0FBRyxDQUN2QyxRQUF1QyxFQUNsQixFQUFFO0lBQ3ZCLElBQUksUUFBUSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksUUFBUSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUM3RCxNQUFNLElBQUksbUJBQVcsQ0FDcEIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixZQUFZLFFBQVEsQ0FBQyxFQUFFLDREQUE0RCxDQUNuRixDQUFBO0lBQ0YsQ0FBQztJQUNELE9BQU87UUFDTixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7UUFDckIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsc0VBQXNFO1FBQzFGLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxRQUFRLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDN0YsQ0FBQTtBQUNGLENBQUMsQ0FBQTtBQUVZLFFBQUEsc0JBQXNCLEdBQUcsSUFBQSwwQkFBVSxFQUMvQywyQkFBMkIsRUFDM0IsS0FBSyxFQUFFLFdBQW1CLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQzVDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDeEMsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDN0MsTUFBTSxFQUFFLFVBQVU7UUFDbEIsTUFBTSxFQUFFLENBQUMs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
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteDeliveryMethodFromVeeqoWorkflow = exports.findAndDeleteDeliveryMethodFromVeeqoStep = exports.syncDeliveryMethodToVeeqoWorkflow = exports.addOrUpdateDeliveryMethodInVeeqoStep = exports.updateDeliveryMethodInVeeqoWorkflow = exports.updateDeliveryMethodInVeeqoStep = exports.addDeliveryMethodToVeeqoWorkflow = exports.addDeliveryMethodToVeeqoStep = exports.getVeeqoDeliveryMethodWorkflow = exports.fetchDeliveryMethodFromVeeqoStep = exports.getShippingOptionDetailsStep = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const mapShippingOptionToVeeqoDeliveryMethodInput = (shipping_option) => {
|
|
7
|
+
const requiredFields = {
|
|
8
|
+
name: shipping_option.name?.replace(/[^a-zA-Z0-9 ]/g, ''),
|
|
9
|
+
cost: shipping_option.prices?.[0]?.amount
|
|
10
|
+
};
|
|
11
|
+
const missingFields = Object.entries(requiredFields)
|
|
12
|
+
.filter(([, value]) => value === undefined || value === null)
|
|
13
|
+
.map(([field]) => field);
|
|
14
|
+
if (missingFields.length) {
|
|
15
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Shipping option ${shipping_option.id} is missing required fields for Veeqo delivery method input: ${missingFields.join(', ')}`);
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
name: requiredFields.name,
|
|
19
|
+
cost: requiredFields.cost
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.getShippingOptionDetailsStep = (0, workflows_sdk_1.createStep)('get-shipping-option-details-step', async (shipping_option_id, { container }) => {
|
|
23
|
+
const query = container.resolve('query');
|
|
24
|
+
const { data: shipping_options } = await query.graph({
|
|
25
|
+
entity: 'shipping_option',
|
|
26
|
+
fields: ['id', 'name', 'prices.amount', 'veeqo_delivery_method.veeqo_delivery_method_id'],
|
|
27
|
+
filters: { id: shipping_option_id }
|
|
28
|
+
});
|
|
29
|
+
const shipping_option = shipping_options[0];
|
|
30
|
+
if (!shipping_option) {
|
|
31
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Shipping option with id ${shipping_option_id} not found`);
|
|
32
|
+
}
|
|
33
|
+
return new workflows_sdk_1.StepResponse(shipping_option);
|
|
34
|
+
});
|
|
35
|
+
// GET --------------------------------------------------------------
|
|
36
|
+
exports.fetchDeliveryMethodFromVeeqoStep = (0, workflows_sdk_1.createStep)('fetch-delivery-method-from-veeqo-step', async (shipping_option_id, { container }) => {
|
|
37
|
+
const query = container.resolve('query');
|
|
38
|
+
const { data: [veeqo_delivery_method] } = await query.graph({
|
|
39
|
+
entity: 'veeqo_delivery_method',
|
|
40
|
+
fields: ['veeqo_delivery_method_id'],
|
|
41
|
+
filters: { shipping_option_id }
|
|
42
|
+
});
|
|
43
|
+
const veeqoDeliveryMethodId = veeqo_delivery_method?.veeqo_delivery_method_id;
|
|
44
|
+
if (!veeqoDeliveryMethodId) {
|
|
45
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `No linked Veeqo delivery method found for shipping option ${shipping_option_id}`);
|
|
46
|
+
}
|
|
47
|
+
const veeqoService = container.resolve('veeqo');
|
|
48
|
+
const veeqoDeliveryMethod = (await veeqoService.fetchDeliveryMethod(veeqoDeliveryMethodId));
|
|
49
|
+
return new workflows_sdk_1.StepResponse(veeqoDeliveryMethod);
|
|
50
|
+
});
|
|
51
|
+
exports.getVeeqoDeliveryMethodWorkflow = (0, workflows_sdk_1.createWorkflow)('get-veeqo-delivery-method-workflow', (shipping_option_id) => {
|
|
52
|
+
const veeqoDeliveryMethod = (0, exports.fetchDeliveryMethodFromVeeqoStep)(shipping_option_id);
|
|
53
|
+
return new workflows_sdk_1.WorkflowResponse(veeqoDeliveryMethod);
|
|
54
|
+
});
|
|
55
|
+
// ADD --------------------------------------------------------------
|
|
56
|
+
exports.addDeliveryMethodToVeeqoStep = (0, workflows_sdk_1.createStep)('add-delivery-method-to-veeqo-step', async (shipping_option, { container }) => {
|
|
57
|
+
if (shipping_option.veeqo_delivery_method?.veeqo_delivery_method_id) {
|
|
58
|
+
return new workflows_sdk_1.StepResponse(void 0);
|
|
59
|
+
}
|
|
60
|
+
const veeqoDeliveryMethodInput = mapShippingOptionToVeeqoDeliveryMethodInput(shipping_option);
|
|
61
|
+
const veeqoService = container.resolve('veeqo');
|
|
62
|
+
const veeqoDeliveryMethod = await veeqoService.addDeliveryMethod(shipping_option.id, veeqoDeliveryMethodInput);
|
|
63
|
+
return new workflows_sdk_1.StepResponse(veeqoDeliveryMethod);
|
|
64
|
+
});
|
|
65
|
+
exports.addDeliveryMethodToVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('add-delivery-method-to-veeqo-workflow', (shipping_option_id) => {
|
|
66
|
+
const shippingOption = (0, exports.getShippingOptionDetailsStep)(shipping_option_id);
|
|
67
|
+
const veeqoDeliveryMethod = (0, exports.addDeliveryMethodToVeeqoStep)(shippingOption);
|
|
68
|
+
return new workflows_sdk_1.WorkflowResponse(veeqoDeliveryMethod);
|
|
69
|
+
});
|
|
70
|
+
// UPDATE -----------------------------------------------------------
|
|
71
|
+
exports.updateDeliveryMethodInVeeqoStep = (0, workflows_sdk_1.createStep)('update-delivery-method-in-veeqo-step', async (shipping_option, { container }) => {
|
|
72
|
+
const veeqoDeliveryMethodId = shipping_option.veeqo_delivery_method?.veeqo_delivery_method_id;
|
|
73
|
+
if (!veeqoDeliveryMethodId) {
|
|
74
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `No linked Veeqo delivery method found for shipping option ${shipping_option.id}`);
|
|
75
|
+
}
|
|
76
|
+
const veeqoDeliveryMethodInput = mapShippingOptionToVeeqoDeliveryMethodInput(shipping_option);
|
|
77
|
+
const veeqoService = container.resolve('veeqo');
|
|
78
|
+
const veeqoDeliveryMethod = await veeqoService.updateDeliveryMethod(veeqoDeliveryMethodId, veeqoDeliveryMethodInput);
|
|
79
|
+
return new workflows_sdk_1.StepResponse(veeqoDeliveryMethod);
|
|
80
|
+
});
|
|
81
|
+
exports.updateDeliveryMethodInVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('update-delivery-method-in-veeqo-workflow', (shipping_option_id) => {
|
|
82
|
+
const shippingOption = (0, exports.getShippingOptionDetailsStep)(shipping_option_id);
|
|
83
|
+
const veeqoDeliveryMethod = (0, exports.updateDeliveryMethodInVeeqoStep)(shippingOption);
|
|
84
|
+
return new workflows_sdk_1.WorkflowResponse(veeqoDeliveryMethod);
|
|
85
|
+
});
|
|
86
|
+
// SYNC -------------------------------------------------------------
|
|
87
|
+
exports.addOrUpdateDeliveryMethodInVeeqoStep = (0, workflows_sdk_1.createStep)('add-or-update-delivery-method-in-veeqo-step', async (shipping_option, { container }) => {
|
|
88
|
+
const veeqoDeliveryMethodId = shipping_option.veeqo_delivery_method?.veeqo_delivery_method_id;
|
|
89
|
+
const veeqoService = container.resolve('veeqo');
|
|
90
|
+
if (!veeqoDeliveryMethodId) {
|
|
91
|
+
const veeqoDeliveryMethodInput = mapShippingOptionToVeeqoDeliveryMethodInput(shipping_option);
|
|
92
|
+
const veeqoDeliveryMethod = await veeqoService.addDeliveryMethod(shipping_option.id, veeqoDeliveryMethodInput);
|
|
93
|
+
return new workflows_sdk_1.StepResponse(veeqoDeliveryMethod);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
const veeqoDeliveryMethodInput = mapShippingOptionToVeeqoDeliveryMethodInput(shipping_option);
|
|
97
|
+
const veeqoDeliveryMethod = await veeqoService.updateDeliveryMethod(veeqoDeliveryMethodId, veeqoDeliveryMethodInput);
|
|
98
|
+
return new workflows_sdk_1.StepResponse(veeqoDeliveryMethod);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
exports.syncDeliveryMethodToVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('sync-delivery-method-to-veeqo-workflow', (shipping_option_id) => {
|
|
102
|
+
const shippingOption = (0, exports.getShippingOptionDetailsStep)(shipping_option_id);
|
|
103
|
+
const veeqoDeliveryMethod = (0, exports.addOrUpdateDeliveryMethodInVeeqoStep)(shippingOption);
|
|
104
|
+
return new workflows_sdk_1.WorkflowResponse(veeqoDeliveryMethod);
|
|
105
|
+
});
|
|
106
|
+
// DELETE -----------------------------------------------------------
|
|
107
|
+
exports.findAndDeleteDeliveryMethodFromVeeqoStep = (0, workflows_sdk_1.createStep)('find-and-delete-delivery-method-from-veeqo-step', async (shipping_option_id, { container }) => {
|
|
108
|
+
const veeqoService = container.resolve('veeqo');
|
|
109
|
+
await veeqoService.deleteDeliveryMethod(shipping_option_id);
|
|
110
|
+
return new workflows_sdk_1.StepResponse(void 0);
|
|
111
|
+
});
|
|
112
|
+
exports.deleteDeliveryMethodFromVeeqoWorkflow = (0, workflows_sdk_1.createWorkflow)('delete-delivery-method-from-veeqo-workflow', (shipping_option_id) => {
|
|
113
|
+
const result = (0, exports.findAndDeleteDeliveryMethodFromVeeqoStep)(shipping_option_id);
|
|
114
|
+
return new workflows_sdk_1.WorkflowResponse(result);
|
|
115
|
+
});
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsaXZlcnktbWV0aG9kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9kZWxpdmVyeS1tZXRob2QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSzBDO0FBQzFDLHFEQUF1RDtBQVF2RCxNQUFNLDJDQUEyQyxHQUFHLENBQ25ELGVBQTBELEVBQy9CLEVBQUU7SUFDN0IsTUFBTSxjQUFjLEdBQUc7UUFDdEIsSUFBSSxFQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztRQUN6RCxJQUFJLEVBQUUsZUFBZSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU07S0FDekMsQ0FBQTtJQUNELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1NBQ2xELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDO1NBQzVELEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3pCLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBSSxtQkFBVyxDQUNwQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLG1CQUFtQixlQUFlLENBQUMsRUFBRSxnRUFBZ0UsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUMvSCxDQUFBO0lBQ0YsQ0FBQztJQUNELE9BQU87UUFDTixJQUFJLEVBQUUsY0FBYyxDQUFDLElBQUs7UUFDMUIsSUFBSSxFQUFFLGNBQWMsQ0FBQyxJQUFLO0tBQzFCLENBQUE7QUFDRixDQUFDLENBQUE7QUFFWSxRQUFBLDRCQUE0QixHQUFHLElBQUEsMEJBQVUsRUFD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
|