cloudcommerce 0.0.98 → 0.0.99
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/CHANGELOG.md +7 -0
- package/package.json +1 -1
- package/packages/api/package.json +1 -1
- package/packages/apps/correios/package.json +1 -1
- package/packages/apps/custom-shipping/package.json +1 -1
- package/packages/apps/discounts/package.json +1 -1
- package/packages/apps/frenet/package.json +1 -1
- package/packages/apps/tiny-erp/lib/event-to-tiny.js +94 -94
- package/packages/apps/tiny-erp/lib/index.js +1 -1
- package/packages/apps/tiny-erp/lib/integration/after-tiny-queue.js +71 -74
- package/packages/apps/tiny-erp/lib/integration/export-order-to-tiny.js +70 -73
- package/packages/apps/tiny-erp/lib/integration/export-product-to-tiny.js +49 -53
- package/packages/apps/tiny-erp/lib/integration/helpers/format-tiny-date.js +3 -3
- package/packages/apps/tiny-erp/lib/integration/import-order-from-tiny.js +76 -75
- package/packages/apps/tiny-erp/lib/integration/import-product-from-tiny.js +137 -140
- package/packages/apps/tiny-erp/lib/integration/parsers/order-from-tiny.js +40 -39
- package/packages/apps/tiny-erp/lib/integration/parsers/order-to-tiny.js +173 -178
- package/packages/apps/tiny-erp/lib/integration/parsers/product-from-tiny.js +173 -171
- package/packages/apps/tiny-erp/lib/integration/parsers/product-to-tiny.js +123 -127
- package/packages/apps/tiny-erp/lib/integration/parsers/status-from-tiny.js +32 -32
- package/packages/apps/tiny-erp/lib/integration/parsers/status-to-tiny.js +37 -37
- package/packages/apps/tiny-erp/lib/integration/post-tiny-erp.js +42 -43
- package/packages/apps/tiny-erp/lib/tiny-erp.js +8 -6
- package/packages/apps/tiny-erp/lib/tiny-webhook.js +76 -73
- package/packages/apps/tiny-erp/package.json +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/config/package.json +1 -1
- package/packages/events/package.json +1 -1
- package/packages/firebase/package.json +1 -1
- package/packages/modules/lib/firebase/ajv.js +24 -19
- package/packages/modules/lib/firebase/call-app-module.js +110 -116
- package/packages/modules/lib/firebase/checkout.js +152 -151
- package/packages/modules/lib/firebase/functions-checkout/fix-items.js +187 -194
- package/packages/modules/lib/firebase/functions-checkout/get-custumerId.js +26 -25
- package/packages/modules/lib/firebase/functions-checkout/handle-order-transaction.js +109 -110
- package/packages/modules/lib/firebase/functions-checkout/new-order.js +177 -177
- package/packages/modules/lib/firebase/functions-checkout/request-to-module.js +59 -59
- package/packages/modules/lib/firebase/functions-checkout/utils.js +197 -195
- package/packages/modules/lib/firebase/handle-module.js +146 -144
- package/packages/modules/lib/firebase/proxy-apps.js +1 -2
- package/packages/modules/lib/firebase/serve-modules-api.js +53 -52
- package/packages/modules/lib/firebase.js +6 -4
- package/packages/modules/lib/index.js +15 -12
- package/packages/modules/package.json +1 -1
- package/packages/passport/package.json +1 -1
- package/packages/ssr/package.json +1 -1
- package/packages/storefront/astro.config.mjs +1 -1
- package/packages/storefront/dist/client/{LoginOffcanvas.daf3f717.js → LoginOffcanvas.c2faa1dc.js} +1 -1
- package/packages/storefront/dist/client/chunks/{LoginForm.d9251274.js → LoginForm.3bcb85fb.js} +10 -10
- package/packages/storefront/dist/client/chunks/{LoginOffcanvas.07fe6492.js → LoginOffcanvas.e48f274b.js} +1 -1
- package/packages/storefront/dist/client/sw.js +1 -1
- package/packages/storefront/dist/server/entry.mjs +2 -2
- package/packages/storefront/package.json +2 -2
- package/packages/storefront/tsconfig.json +1 -1
- package/packages/types/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [0.0.99](https://github.com/ecomplus/cloud-commerce/compare/v0.0.98...v0.0.99) (2022-09-27)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **storefront:** Bump `@ecomplus/i18n` and fix alias to .mjs ([fa33b44](https://github.com/ecomplus/cloud-commerce/commit/fa33b44ffa63d48f3de075d44cf09d9e4066f9fe))
|
|
11
|
+
|
|
5
12
|
### [0.0.98](https://github.com/ecomplus/cloud-commerce/compare/v0.0.97...v0.0.98) (2022-09-27)
|
|
6
13
|
|
|
7
14
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cloudcommerce",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.99",
|
|
5
5
|
"description": "Open fair-code headless commerce platform: API-first, microservices based, event driven and cloud native",
|
|
6
6
|
"main": "packages/api/lib/index.js",
|
|
7
7
|
"author": "E-Com Club Softwares para E-commerce <ti@e-com.club>",
|
|
@@ -4,112 +4,112 @@ import exportOrder from './integration/export-order-to-tiny.js';
|
|
|
4
4
|
import importProduct from './integration/import-product-from-tiny.js';
|
|
5
5
|
import importOrder from './integration/import-order-from-tiny.js';
|
|
6
6
|
import afterQueue from './integration/after-tiny-queue.js';
|
|
7
|
+
|
|
7
8
|
// Async integration handlers
|
|
8
9
|
const integrationHandlers = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
exportation: {
|
|
11
|
+
product_ids: exportProduct,
|
|
12
|
+
order_ids: exportOrder,
|
|
13
|
+
},
|
|
14
|
+
importation: {
|
|
15
|
+
skus: importProduct,
|
|
16
|
+
order_numbers: importOrder,
|
|
17
|
+
},
|
|
17
18
|
};
|
|
18
|
-
const handleApiEvent = async ({
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
const handleApiEvent = async ({
|
|
20
|
+
evName, apiEvent, apiDoc, app,
|
|
21
|
+
}) => {
|
|
22
|
+
const resourceId = apiEvent.resource_id;
|
|
23
|
+
logger.info('>> ', resourceId, ' - Action: ', apiEvent.action);
|
|
24
|
+
const key = `${evName}_${resourceId}`;
|
|
25
|
+
const appData = { ...app.data, ...app.hidden_data };
|
|
26
|
+
if (Array.isArray(appData.ignore_events)
|
|
24
27
|
&& appData.ignore_events.includes(evName)) {
|
|
25
|
-
|
|
26
|
-
|
|
28
|
+
logger.info('>> ', key, ' - Ignored event');
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
logger.info(`> Webhook ${resourceId} [${evName}]`);
|
|
32
|
+
if (!process.env.TINY_ERP_TOKEN) {
|
|
33
|
+
const tinyToken = appData.tiny_api_token;
|
|
34
|
+
if (typeof tinyToken === 'string' && tinyToken) {
|
|
35
|
+
process.env.TINY_ERP_TOKEN = tinyToken;
|
|
36
|
+
} else {
|
|
37
|
+
logger.warn('Missing Tiny API token');
|
|
27
38
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
39
|
+
}
|
|
40
|
+
if (process.env.TINY_ERP_TOKEN) {
|
|
41
|
+
let integrationConfig;
|
|
42
|
+
let canCreateNew = false;
|
|
43
|
+
if (evName === 'applications-dataSet') {
|
|
44
|
+
integrationConfig = appData;
|
|
45
|
+
canCreateNew = true;
|
|
46
|
+
} else if (evName === 'orders-anyStatusSet') {
|
|
47
|
+
canCreateNew = Boolean(appData.new_orders);
|
|
48
|
+
integrationConfig = {
|
|
49
|
+
_exportation: {
|
|
50
|
+
order_ids: [resourceId],
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
} else {
|
|
54
|
+
if (evName === 'products-new') {
|
|
55
|
+
if (!appData.new_products) {
|
|
56
|
+
return null;
|
|
36
57
|
}
|
|
58
|
+
} else if (!appData.update_price) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
integrationConfig = {
|
|
62
|
+
_exportation: {
|
|
63
|
+
product_ids: [resourceId],
|
|
64
|
+
},
|
|
65
|
+
};
|
|
37
66
|
}
|
|
38
|
-
if (
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
canCreateNew = true;
|
|
44
|
-
}
|
|
45
|
-
else if (evName === 'orders-anyStatusSet') {
|
|
46
|
-
canCreateNew = Boolean(appData.new_orders);
|
|
47
|
-
integrationConfig = {
|
|
48
|
-
_exportation: {
|
|
49
|
-
order_ids: [resourceId],
|
|
50
|
-
},
|
|
51
|
-
};
|
|
67
|
+
if (integrationConfig) {
|
|
68
|
+
const actions = Object.keys(integrationHandlers);
|
|
69
|
+
actions.forEach((action) => {
|
|
70
|
+
for (let i = 1; i <= 3; i++) {
|
|
71
|
+
actions.push(`${('_'.repeat(i))}${action}`);
|
|
52
72
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
if (integrationConfig) {
|
|
69
|
-
const actions = Object.keys(integrationHandlers);
|
|
70
|
-
actions.forEach((action) => {
|
|
71
|
-
for (let i = 1; i <= 3; i++) {
|
|
72
|
-
actions.push(`${('_'.repeat(i))}${action}`);
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
for (let i = 0; i < actions.length; i++) {
|
|
76
|
-
const action = actions[i];
|
|
77
|
-
const actionQueues = integrationConfig[action];
|
|
78
|
-
if (typeof actionQueues === 'object' && actionQueues) {
|
|
79
|
-
// eslint-disable-next-line guard-for-in, no-restricted-syntax
|
|
80
|
-
for (const queue in actionQueues) {
|
|
81
|
-
const ids = actionQueues[queue];
|
|
82
|
-
if (Array.isArray(ids) && ids.length) {
|
|
83
|
-
const isHiddenQueue = action.charAt(0) === '_';
|
|
84
|
-
const handlerName = action.replace(/^_+/, '');
|
|
85
|
-
const handler = integrationHandlers[handlerName][queue.toLowerCase()];
|
|
86
|
-
const nextId = ids[0];
|
|
87
|
-
if (typeof nextId === 'string'
|
|
73
|
+
});
|
|
74
|
+
for (let i = 0; i < actions.length; i++) {
|
|
75
|
+
const action = actions[i];
|
|
76
|
+
const actionQueues = integrationConfig[action];
|
|
77
|
+
if (typeof actionQueues === 'object' && actionQueues) {
|
|
78
|
+
// eslint-disable-next-line guard-for-in, no-restricted-syntax
|
|
79
|
+
for (const queue in actionQueues) {
|
|
80
|
+
const ids = actionQueues[queue];
|
|
81
|
+
if (Array.isArray(ids) && ids.length) {
|
|
82
|
+
const isHiddenQueue = action.charAt(0) === '_';
|
|
83
|
+
const handlerName = action.replace(/^_+/, '');
|
|
84
|
+
const handler = integrationHandlers[handlerName][queue.toLowerCase()];
|
|
85
|
+
const nextId = ids[0];
|
|
86
|
+
if (typeof nextId === 'string'
|
|
88
87
|
&& nextId.length
|
|
89
88
|
&& handler) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
89
|
+
const debugFlag = `#${action}/${queue}/${nextId}`;
|
|
90
|
+
logger.info(`> Starting ${debugFlag}`);
|
|
91
|
+
const queueEntry = {
|
|
92
|
+
action,
|
|
93
|
+
queue,
|
|
94
|
+
nextId,
|
|
95
|
+
key,
|
|
96
|
+
app,
|
|
97
|
+
};
|
|
98
|
+
return handler(apiDoc, queueEntry, appData, canCreateNew, isHiddenQueue).then((payload) => {
|
|
99
|
+
return afterQueue(queueEntry, appData, app, payload);
|
|
100
|
+
}).catch((err) => {
|
|
101
|
+
return afterQueue(queueEntry, appData, app, err);
|
|
102
|
+
});
|
|
103
|
+
}
|
|
108
104
|
}
|
|
105
|
+
}
|
|
109
106
|
}
|
|
107
|
+
}
|
|
110
108
|
}
|
|
111
|
-
|
|
112
|
-
|
|
109
|
+
}
|
|
110
|
+
// Nothing to do
|
|
111
|
+
return null;
|
|
113
112
|
};
|
|
113
|
+
|
|
114
114
|
export default handleApiEvent;
|
|
115
|
-
|
|
115
|
+
// # sourceMappingURL=event-to-tiny.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './tiny-erp.js';
|
|
2
|
-
|
|
2
|
+
// # sourceMappingURL=index.js.map
|
|
@@ -1,82 +1,79 @@
|
|
|
1
1
|
import logger from 'firebase-functions/lib/logger';
|
|
2
2
|
import updateAppData from '@cloudcommerce/firebase/lib/helpers/update-app-data';
|
|
3
|
+
|
|
3
4
|
export default async (queueEntry, appData, application, payload) => {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
5
|
+
const isError = payload instanceof Error;
|
|
6
|
+
const isImportation = queueEntry.action.endsWith('importation');
|
|
7
|
+
const logs = appData.logs || [];
|
|
8
|
+
const logEntry = {
|
|
9
|
+
resource: /order/i.test(queueEntry.queue) ? 'orders' : 'products',
|
|
10
|
+
[(isImportation ? 'tiny_id' : 'resource_id')]: queueEntry.nextId,
|
|
11
|
+
success: !isError,
|
|
12
|
+
imestamp: new Date().toISOString(),
|
|
13
|
+
};
|
|
14
|
+
let notes;
|
|
15
|
+
if (payload) {
|
|
16
|
+
if (!isError) {
|
|
17
|
+
// payload = response
|
|
18
|
+
const { data, status, config } = payload;
|
|
19
|
+
if (data && data._id) {
|
|
20
|
+
logEntry.resource_id = data._id;
|
|
21
|
+
}
|
|
22
|
+
notes = `Status ${status}`;
|
|
23
|
+
if (config) {
|
|
24
|
+
notes += ` [${config.url}]`;
|
|
25
|
+
}
|
|
26
|
+
} else {
|
|
27
|
+
const { config, response } = payload;
|
|
28
|
+
if (response) {
|
|
29
|
+
const { data, status } = response;
|
|
30
|
+
notes = `Error: Status ${status} \n${JSON.stringify(data)}`;
|
|
31
|
+
if (!status || status === 429 || status >= 500) {
|
|
32
|
+
return setTimeout(() => {
|
|
33
|
+
throw payload;
|
|
34
|
+
}, 2000);
|
|
25
35
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const { data, status } = response;
|
|
30
|
-
notes = `Error: Status ${status} \n${JSON.stringify(data)}`;
|
|
31
|
-
if (!status || status === 429 || status >= 500) {
|
|
32
|
-
return setTimeout(() => {
|
|
33
|
-
throw payload;
|
|
34
|
-
}, 2000);
|
|
35
|
-
}
|
|
36
|
-
if (config) {
|
|
37
|
-
const { url, method, data } = config;
|
|
38
|
-
notes += `\n\n-- Request -- \n${method} ${url} \n${JSON.stringify(data)}`;
|
|
39
|
-
}
|
|
40
|
-
// @ts-ignore
|
|
41
|
-
}
|
|
42
|
-
else if (payload.isConfigError === true) {
|
|
43
|
-
notes = payload.message;
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
notes = payload.stack;
|
|
47
|
-
}
|
|
36
|
+
if (config) {
|
|
37
|
+
const { url, method, data } = config;
|
|
38
|
+
notes += `\n\n-- Request -- \n${method} ${url} \n${JSON.stringify(data)}`;
|
|
48
39
|
}
|
|
40
|
+
// @ts-ignore
|
|
41
|
+
} else if (payload.isConfigError === true) {
|
|
42
|
+
notes = payload.message;
|
|
43
|
+
} else {
|
|
44
|
+
notes = payload.stack;
|
|
45
|
+
}
|
|
49
46
|
}
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
}
|
|
48
|
+
if (notes) {
|
|
49
|
+
logEntry.notes = notes.substring(0, 5000);
|
|
50
|
+
}
|
|
51
|
+
if (isError || !isImportation) {
|
|
52
|
+
logs.unshift(logEntry);
|
|
53
|
+
await updateAppData(application, {
|
|
54
|
+
logs: logs.slice(0, 200),
|
|
55
|
+
}, {
|
|
56
|
+
isHiddenData: true,
|
|
57
|
+
canSendPubSub: false,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
const { action, queue, nextId } = queueEntry;
|
|
61
|
+
let queueList = appData[action][queue];
|
|
62
|
+
if (Array.isArray(queueList)) {
|
|
63
|
+
const idIndex = queueList.indexOf(nextId);
|
|
64
|
+
if (idIndex > -1) {
|
|
65
|
+
queueList.splice(idIndex, 1);
|
|
52
66
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (Array.isArray(queueList)) {
|
|
65
|
-
const idIndex = queueList.indexOf(nextId);
|
|
66
|
-
if (idIndex > -1) {
|
|
67
|
-
queueList.splice(idIndex, 1);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
queueList = [];
|
|
72
|
-
}
|
|
73
|
-
const data = {
|
|
74
|
-
[action]: {
|
|
75
|
-
...appData[action],
|
|
76
|
-
[queue]: queueList,
|
|
77
|
-
},
|
|
78
|
-
};
|
|
79
|
-
logger.info(JSON.stringify(data));
|
|
80
|
-
return updateAppData(application, data);
|
|
67
|
+
} else {
|
|
68
|
+
queueList = [];
|
|
69
|
+
}
|
|
70
|
+
const data = {
|
|
71
|
+
[action]: {
|
|
72
|
+
...appData[action],
|
|
73
|
+
[queue]: queueList,
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
logger.info(JSON.stringify(data));
|
|
77
|
+
return updateAppData(application, data);
|
|
81
78
|
};
|
|
82
|
-
|
|
79
|
+
// # sourceMappingURL=after-tiny-queue.js.map
|
|
@@ -3,85 +3,82 @@ import api from '@cloudcommerce/api';
|
|
|
3
3
|
import postTiny from './post-tiny-erp.js';
|
|
4
4
|
import parseStatus from './parsers/status-to-tiny.js';
|
|
5
5
|
import parseOrder from './parsers/order-to-tiny.js';
|
|
6
|
+
|
|
6
7
|
export default async (apiDoc, queueEntry, appData, canCreateNew) => {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
else {
|
|
13
|
-
try {
|
|
14
|
-
order = (await api.get(`orders/${orderId}`)).data;
|
|
15
|
-
}
|
|
16
|
-
catch (err) {
|
|
17
|
-
if (err.statusCode === 404) {
|
|
18
|
-
const msg = `O pedido ${orderId} não existe (:${err.statusCode})`;
|
|
19
|
-
const error = new Error(msg);
|
|
20
|
-
error.isConfigError = true;
|
|
21
|
-
return error;
|
|
22
|
-
}
|
|
23
|
-
throw err;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
if (!order.financial_status) {
|
|
27
|
-
logger.info(`${orderId} skipped with no financial status`);
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
logger.info(`${orderId} searching order ${order.number}`);
|
|
31
|
-
let tinyData;
|
|
8
|
+
const orderId = queueEntry.nextId;
|
|
9
|
+
let order;
|
|
10
|
+
if (orderId === apiDoc._id) {
|
|
11
|
+
order = apiDoc;
|
|
12
|
+
} else {
|
|
32
13
|
try {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
14
|
+
order = (await api.get(`orders/${orderId}`)).data;
|
|
15
|
+
} catch (err) {
|
|
16
|
+
if (err.statusCode === 404) {
|
|
17
|
+
const msg = `O pedido ${orderId} não existe (:${err.statusCode})`;
|
|
18
|
+
const error = new Error(msg);
|
|
19
|
+
error.isConfigError = true;
|
|
20
|
+
return error;
|
|
21
|
+
}
|
|
22
|
+
throw err;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (!order.financial_status) {
|
|
26
|
+
logger.info(`${orderId} skipped with no financial status`);
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
logger.info(`${orderId} searching order ${order.number}`);
|
|
30
|
+
let tinyData;
|
|
31
|
+
try {
|
|
32
|
+
tinyData = await postTiny('/pedidos.pesquisa.php', {
|
|
33
|
+
numeroEcommerce: String(order.number),
|
|
34
|
+
});
|
|
35
|
+
} catch (err) {
|
|
36
|
+
const status = err.response && err.response.status;
|
|
37
|
+
if (status === 404) {
|
|
38
|
+
tinyData = {};
|
|
39
|
+
} else {
|
|
40
|
+
logger.info(`${orderId} search on tiny ends with status ${status}`);
|
|
41
|
+
throw err;
|
|
36
42
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
}
|
|
44
|
+
const { pedidos } = tinyData;
|
|
45
|
+
const tinyStatus = parseStatus(order);
|
|
46
|
+
let originalTinyOrder;
|
|
47
|
+
if (Array.isArray(pedidos)) {
|
|
48
|
+
originalTinyOrder = pedidos.find(({ pedido }) => {
|
|
49
|
+
return order.number === Number(pedido.numero_ecommerce);
|
|
50
|
+
});
|
|
51
|
+
if (originalTinyOrder) {
|
|
52
|
+
originalTinyOrder = originalTinyOrder.pedido;
|
|
46
53
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
originalTinyOrder = pedidos.find(({ pedido }) => {
|
|
52
|
-
return order.number === Number(pedido.numero_ecommerce);
|
|
53
|
-
});
|
|
54
|
-
if (originalTinyOrder) {
|
|
55
|
-
originalTinyOrder = originalTinyOrder.pedido;
|
|
56
|
-
}
|
|
54
|
+
}
|
|
55
|
+
if (!originalTinyOrder) {
|
|
56
|
+
if (!canCreateNew) {
|
|
57
|
+
return null;
|
|
57
58
|
}
|
|
58
|
-
if (
|
|
59
|
-
if (!canCreateNew) {
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
if (appData.approved_orders_only
|
|
59
|
+
if (appData.approved_orders_only
|
|
63
60
|
&& (tinyStatus === 'aberto' || tinyStatus === 'cancelado')) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
const tinyOrder = parseOrder(order, appData);
|
|
68
|
-
logger.info(`${orderId} ${JSON.stringify(tinyOrder)}`);
|
|
69
|
-
return postTiny('/pedido.incluir.php', {
|
|
70
|
-
pedido: {
|
|
71
|
-
pedido: tinyOrder,
|
|
72
|
-
},
|
|
73
|
-
});
|
|
61
|
+
logger.info(`${orderId} skipped with status "${tinyStatus}"`);
|
|
62
|
+
return null;
|
|
74
63
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
64
|
+
const tinyOrder = parseOrder(order, appData);
|
|
65
|
+
logger.info(`${orderId} ${JSON.stringify(tinyOrder)}`);
|
|
66
|
+
return postTiny('/pedido.incluir.php', {
|
|
67
|
+
pedido: {
|
|
68
|
+
pedido: tinyOrder,
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
if (originalTinyOrder) {
|
|
73
|
+
const { id, situacao } = originalTinyOrder;
|
|
74
|
+
logger.info(`${orderId} found with tiny status ${situacao} => ${tinyStatus}`);
|
|
75
|
+
if (tinyStatus && tinyStatus !== situacao) {
|
|
76
|
+
return postTiny('/pedido.alterar.situacao', {
|
|
77
|
+
id,
|
|
78
|
+
situacao: tinyStatus,
|
|
79
|
+
});
|
|
84
80
|
}
|
|
85
|
-
|
|
81
|
+
}
|
|
82
|
+
return null;
|
|
86
83
|
};
|
|
87
|
-
|
|
84
|
+
// # sourceMappingURL=export-order-to-tiny.js.map
|