cloudcommerce 0.1.3 → 0.1.4
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 +14 -0
- package/ecomplus-stores/monocard/functions/core/package.json +1 -1
- package/ecomplus-stores/monocard/functions/events/package.json +2 -2
- package/ecomplus-stores/monocard/functions/modules/package.json +2 -2
- package/ecomplus-stores/monocard/functions/passport/package.json +2 -2
- package/ecomplus-stores/monocard/functions/ssr/package.json +6 -6
- package/ecomplus-stores/monocard/package.json +1 -1
- package/ecomplus-stores/tia-sonia/functions/core/package.json +1 -1
- package/ecomplus-stores/tia-sonia/functions/events/package.json +2 -2
- package/ecomplus-stores/tia-sonia/functions/modules/package.json +2 -2
- package/ecomplus-stores/tia-sonia/functions/passport/package.json +2 -2
- package/ecomplus-stores/tia-sonia/functions/ssr/content/settings.json +1 -1
- package/ecomplus-stores/tia-sonia/functions/ssr/package.json +9 -7
- package/ecomplus-stores/tia-sonia/functions/ssr/public/img/uploads/fimdeano1920x736.jpg +0 -0
- package/ecomplus-stores/tia-sonia/functions/ssr/src/components/TheHeader.vue +103 -9
- package/ecomplus-stores/tia-sonia/functions/ssr/src/components/header/HeaderBarLink.vue +5 -0
- package/ecomplus-stores/tia-sonia/functions/ssr/src/components/header/HeaderButtonLink.vue +1 -1
- package/ecomplus-stores/tia-sonia/functions/ssr/src/components/header/HeaderNav.vue +7 -6
- package/ecomplus-stores/tia-sonia/functions/ssr/src/layouts/Base.astro +11 -4
- package/ecomplus-stores/tia-sonia/functions/ssr/src/layouts/Pages.astro +2 -2
- package/ecomplus-stores/tia-sonia/functions/ssr/src/main/Home.astro +7 -1
- package/ecomplus-stores/tia-sonia/functions/ssr/tailwind.config.cjs +9 -1
- package/ecomplus-stores/tia-sonia/functions/ssr/uno.config.cjs +3 -1
- package/ecomplus-stores/tia-sonia/package.json +1 -1
- package/package.json +2 -1
- package/packages/api/package.json +1 -1
- package/packages/apps/correios/package.json +1 -1
- package/packages/apps/custom-payment/package.json +1 -1
- package/packages/apps/custom-shipping/package.json +1 -1
- package/packages/apps/discounts/package.json +1 -1
- package/packages/apps/emails/package.json +1 -1
- package/packages/apps/frenet/events.js +1 -0
- package/packages/apps/frenet/lib/frenet-events.d.ts +6 -0
- package/packages/apps/frenet/lib/frenet-events.js +19 -0
- package/packages/apps/frenet/lib/frenet-events.js.map +1 -0
- package/packages/apps/frenet/lib/functions-lib/database.d.ts +18 -0
- package/packages/apps/frenet/lib/functions-lib/database.js +128 -0
- package/packages/apps/frenet/lib/functions-lib/database.js.map +1 -0
- package/packages/apps/frenet/lib/functions-lib/events-to-frenet.d.ts +3 -0
- package/packages/apps/frenet/lib/functions-lib/events-to-frenet.js +48 -0
- package/packages/apps/frenet/lib/functions-lib/events-to-frenet.js.map +1 -0
- package/packages/apps/frenet/lib/functions-lib/fetch-tracking-code.d.ts +2 -0
- package/packages/apps/frenet/lib/functions-lib/fetch-tracking-code.js +19 -0
- package/packages/apps/frenet/lib/functions-lib/fetch-tracking-code.js.map +1 -0
- package/packages/apps/frenet/lib/functions-lib/remove-delivered.d.ts +2 -0
- package/packages/apps/frenet/lib/functions-lib/remove-delivered.js +30 -0
- package/packages/apps/frenet/lib/functions-lib/remove-delivered.js.map +1 -0
- package/packages/apps/frenet/lib/functions-lib/tracking-codes.d.ts +2 -0
- package/packages/apps/frenet/lib/functions-lib/tracking-codes.js +138 -0
- package/packages/apps/frenet/lib/functions-lib/tracking-codes.js.map +1 -0
- package/packages/apps/frenet/lib/functions-lib/update-fulfillments.d.ts +5 -0
- package/packages/apps/frenet/lib/functions-lib/update-fulfillments.js +49 -0
- package/packages/apps/frenet/lib/functions-lib/update-fulfillments.js.map +1 -0
- package/packages/apps/frenet/package.json +11 -3
- package/packages/apps/frenet/src/frenet-events.ts +25 -0
- package/packages/apps/frenet/src/functions-lib/database.ts +159 -0
- package/packages/apps/frenet/src/functions-lib/events-to-frenet.ts +62 -0
- package/packages/apps/frenet/src/functions-lib/fetch-tracking-code.ts +22 -0
- package/packages/apps/frenet/src/functions-lib/remove-delivered.ts +31 -0
- package/packages/apps/frenet/src/functions-lib/tracking-codes.ts +170 -0
- package/packages/apps/frenet/src/functions-lib/update-fulfillments.ts +56 -0
- package/packages/apps/galaxpay/package.json +1 -1
- package/packages/apps/infinitepay/package.json +1 -1
- package/packages/apps/jadlog/package.json +1 -1
- package/packages/apps/loyalty-points/package.json +1 -1
- package/packages/apps/mercadopago/package.json +1 -1
- package/packages/apps/pagarme/package.json +1 -1
- package/packages/apps/pix/package.json +1 -1
- 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/emails/package.json +1 -1
- package/packages/events/lib/firebase.js +2 -0
- package/packages/events/lib/firebase.js.map +1 -1
- package/packages/events/package.json +2 -1
- package/packages/events/src/firebase.ts +2 -0
- package/packages/firebase/lib/config.d.ts +1 -0
- package/packages/firebase/lib/config.js +4 -0
- package/packages/firebase/lib/config.js.map +1 -1
- package/packages/firebase/package.json +1 -1
- package/packages/firebase/src/config.ts +5 -0
- package/packages/i18n/package.json +1 -1
- package/packages/modules/package.json +1 -1
- package/packages/passport/package.json +1 -1
- package/packages/ssr/package.json +1 -2
- package/packages/storefront/dist/client/HeaderButtons.300c19e5.js +1 -0
- package/packages/storefront/dist/client/Prices.d79bd862.js +1 -0
- package/packages/storefront/dist/client/{ProductCard.7b68cc35.js → ProductCard.6b27d9fa.js} +1 -1
- package/packages/storefront/dist/client/assets/_...slug_.4dbd1d47.css +1 -0
- package/packages/storefront/dist/client/assets/server.4d9646d8.css +1 -0
- package/packages/storefront/dist/client/chunks/{HeaderButtons.cbbb059d.js → HeaderButtons.1abd5bf4.js} +1 -1
- package/packages/storefront/dist/client/chunks/{LoginForm.ac2f1b1f.js → LoginForm.7e7d6137.js} +1 -1
- package/packages/storefront/dist/client/chunks/Prices.vue_vue_type_script_setup_true_lang.b29421b3.js +1 -0
- package/packages/storefront/dist/client/chunks/_plugin-vue_export-helper.fc452b02.js +1 -0
- package/packages/storefront/dist/client/chunks/runtime-core.esm-bundler.b4556b35.js +1 -0
- package/packages/storefront/dist/client/client.2a3e5a58.js +1 -0
- package/packages/storefront/dist/client/sw.js +1 -1
- package/packages/storefront/dist/server/entry.mjs +32 -1556
- package/packages/storefront/package.json +4 -5
- package/packages/storefront/src/lib/assets/tooltip.css +43 -0
- package/packages/storefront/src/lib/components/Prices.vue +1 -1
- package/packages/storefront/src/lib/layouts/BaseBody.astro +1 -1
- package/packages/storefront/src/lib/pages/_vue.ts +0 -2
- package/packages/storefront/tailwind.config.cjs +30 -19
- package/packages/storefront/uno.config.cjs +20 -19
- package/packages/types/package.json +1 -1
- package/ecomplus-stores/tia-sonia/functions/ssr/src/components/header/HeaderNavLink.vue +0 -5
- package/packages/storefront/dist/client/HeaderButtons.8acf8a3b.js +0 -1
- package/packages/storefront/dist/client/Prices.9099fe99.js +0 -1
- package/packages/storefront/dist/client/assets/_...slug_.f19a16ca.css +0 -1
- package/packages/storefront/dist/client/assets/server.55b8d73d.css +0 -1
- package/packages/storefront/dist/client/chunks/Prices.vue_vue_type_script_setup_true_lang.c37148c1.js +0 -1
- package/packages/storefront/dist/client/chunks/_plugin-vue_export-helper.5ccc5d75.js +0 -1
- package/packages/storefront/dist/client/chunks/runtime-core.esm-bundler.d5646b29.js +0 -1
- package/packages/storefront/dist/client/client.9783ef49.js +0 -1
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { getFirestore } from 'firebase-admin/firestore';
|
|
2
|
+
import logger from 'firebase-functions/logger';
|
|
3
|
+
|
|
4
|
+
const firestoreColl = 'frenetTrackingCodes';
|
|
5
|
+
const save = (orderId, trackingStatus, trackingCode, serviceCode) => new Promise((resolve) => {
|
|
6
|
+
const documentRef = getFirestore().doc(`${firestoreColl}/${trackingCode}`);
|
|
7
|
+
if (documentRef) {
|
|
8
|
+
documentRef.set({
|
|
9
|
+
orderId,
|
|
10
|
+
trackingStatus,
|
|
11
|
+
trackingCode,
|
|
12
|
+
serviceCode,
|
|
13
|
+
createdAt: new Date(),
|
|
14
|
+
}).then(() => resolve(true))
|
|
15
|
+
.catch(logger.error);
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
const get = async (orderId, trackingCode) => new Promise((resolve, reject) => {
|
|
19
|
+
getFirestore().doc(`${firestoreColl}/${trackingCode}`)
|
|
20
|
+
.get()
|
|
21
|
+
.then((documentSnapshot) => {
|
|
22
|
+
if (documentSnapshot && documentSnapshot.exists) {
|
|
23
|
+
const data = documentSnapshot.data();
|
|
24
|
+
if (data && data.orderId === orderId) {
|
|
25
|
+
resolve({ ...data, createdAt: data.createdAt.toDate() });
|
|
26
|
+
} else {
|
|
27
|
+
resolve(null);
|
|
28
|
+
}
|
|
29
|
+
} else {
|
|
30
|
+
resolve(null);
|
|
31
|
+
}
|
|
32
|
+
})
|
|
33
|
+
.catch((err) => {
|
|
34
|
+
err.name = 'TrackingCodeNotFound';
|
|
35
|
+
reject(err);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
const clear = async () => new Promise((resolve) => {
|
|
39
|
+
const deadline = new Date();
|
|
40
|
+
deadline.setMonth(deadline.getMonth() - 2);
|
|
41
|
+
getFirestore().collection(firestoreColl)
|
|
42
|
+
.where('createdAt', '<=', deadline)
|
|
43
|
+
.get()
|
|
44
|
+
.then((docsRef) => {
|
|
45
|
+
docsRef.docs.forEach((doc) => {
|
|
46
|
+
doc.ref.delete();
|
|
47
|
+
});
|
|
48
|
+
resolve(true);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
const remove = async (trackingCode, serviceCode) => new Promise((resolve) => {
|
|
52
|
+
getFirestore().doc(`${firestoreColl}/${trackingCode}`)
|
|
53
|
+
.get()
|
|
54
|
+
.then(async (documentSnapshot) => {
|
|
55
|
+
if (documentSnapshot && documentSnapshot.exists) {
|
|
56
|
+
const data = documentSnapshot.data();
|
|
57
|
+
if (data && data.serviceCode === serviceCode) {
|
|
58
|
+
await documentSnapshot.ref.delete();
|
|
59
|
+
resolve(true);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
resolve(false);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
const update = async (trackingStatus, trackingCode) => new Promise((resolve) => {
|
|
66
|
+
const documentRef = getFirestore().doc(`${firestoreColl}/${trackingCode}`);
|
|
67
|
+
if (documentRef) {
|
|
68
|
+
documentRef.set({
|
|
69
|
+
trackingStatus,
|
|
70
|
+
updateAt: new Date().toISOString(),
|
|
71
|
+
}, { merge: true })
|
|
72
|
+
.then(() => resolve(true));
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
const getAll = () => new Promise((resolve, reject) => {
|
|
76
|
+
getFirestore().collection(firestoreColl)
|
|
77
|
+
.where('trackingStatus', '!=', '9')
|
|
78
|
+
.get()
|
|
79
|
+
.then((docsRef) => {
|
|
80
|
+
if (docsRef.size > 0) {
|
|
81
|
+
const list = [];
|
|
82
|
+
docsRef.forEach((documentSnapshot) => {
|
|
83
|
+
if (documentSnapshot && documentSnapshot.exists) {
|
|
84
|
+
const data = documentSnapshot.data();
|
|
85
|
+
list.push({ ...data, createAt: data.toDate() });
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
resolve(list);
|
|
89
|
+
} else {
|
|
90
|
+
const err = new Error('Tracking code not found for any store :)');
|
|
91
|
+
err.name = 'NoTrackingCodesForUpdate';
|
|
92
|
+
reject(err);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
const getAllDelivered = () => new Promise((resolve, reject) => {
|
|
97
|
+
getFirestore().collection(firestoreColl)
|
|
98
|
+
.where('trackingStatus', '==', '9')
|
|
99
|
+
.get()
|
|
100
|
+
.then((docsRef) => {
|
|
101
|
+
if (docsRef.size > 0) {
|
|
102
|
+
const list = [];
|
|
103
|
+
docsRef.forEach((documentSnapshot) => {
|
|
104
|
+
if (documentSnapshot && documentSnapshot.exists) {
|
|
105
|
+
const data = documentSnapshot.data();
|
|
106
|
+
list.push({ ...data, createAt: data.toDate() });
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
resolve(list);
|
|
110
|
+
} else {
|
|
111
|
+
const err = new Error('Tracking code not found for any store :)');
|
|
112
|
+
err.name = 'NoTrackingCodesForUpdate';
|
|
113
|
+
reject(err);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
const db = {
|
|
118
|
+
save,
|
|
119
|
+
get,
|
|
120
|
+
clear,
|
|
121
|
+
remove,
|
|
122
|
+
update,
|
|
123
|
+
getAll,
|
|
124
|
+
getAllDelivered,
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
export default db;
|
|
128
|
+
// # sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/functions-lib/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import logger from 'firebase-functions/logger';
|
|
2
|
+
import db from './database.js';
|
|
3
|
+
|
|
4
|
+
const pattern = /rastreador|lang|version|(http|https):\/\/(\w+:{0,1}\w*)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%!\-/]))?/;
|
|
5
|
+
const isUrl = (str) => pattern.test(str);
|
|
6
|
+
const handleApiEvent = async ({
|
|
7
|
+
evName, apiEvent, apiDoc, app,
|
|
8
|
+
}) => {
|
|
9
|
+
const resourceId = apiEvent.resource_id;
|
|
10
|
+
logger.info('>> ', resourceId, ' - Action: ', apiEvent.action);
|
|
11
|
+
const key = `${evName}_${resourceId}`;
|
|
12
|
+
const appData = { ...app.data, ...app.hidden_data };
|
|
13
|
+
const order = apiDoc;
|
|
14
|
+
const orderId = order._id;
|
|
15
|
+
if ((Array.isArray(appData.ignore_events)
|
|
16
|
+
&& appData.ignore_events.includes(evName))
|
|
17
|
+
|| !order.shipping_lines) {
|
|
18
|
+
logger.info('>> ', key, ' - Ignored event');
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
logger.info(`> Webhook ${resourceId} [${evName}]`);
|
|
22
|
+
order.shipping_lines.forEach((shipping) => {
|
|
23
|
+
if (shipping.tracking_codes
|
|
24
|
+
&& shipping.custom_fields
|
|
25
|
+
&& shipping.custom_fields.find(({ field }) => field === 'by_frenet')) {
|
|
26
|
+
shipping.tracking_codes.forEach(async ({ code }) => {
|
|
27
|
+
// algumas integrações enviam um link de rastreamento
|
|
28
|
+
// ao invés do código de rastreamento, como é o caso do bling
|
|
29
|
+
// para evitar gargalos na fila só salva se for código
|
|
30
|
+
if (code && !isUrl(code)) {
|
|
31
|
+
const trackingCode = await db.get(orderId, code);
|
|
32
|
+
if (!trackingCode) {
|
|
33
|
+
const appShipping = shipping.app;
|
|
34
|
+
await db.save(orderId, '0', code, appShipping?.service_code);
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
logger.error(`> (App Frenet) Error => webhook #${orderId}: ${code},
|
|
39
|
+
Não foi possivel salvar código de rastreio pois seu formato é inválido. `, shipping.tracking_codes);
|
|
40
|
+
return null;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
return null;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export default handleApiEvent;
|
|
48
|
+
// # sourceMappingURL=events-to-frenet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-to-frenet.js","sourceRoot":"","sources":["../../src/functions-lib/events-to-frenet.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,OAAO,GAAG,oGAAoG,CAAC;AACrH,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEjD,MAAM,cAAc,GAAoB,KAAK,EAAE,EAC7C,MAAM,EACN,QAAQ,EACR,MAAM,EACN,GAAG,GACJ,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC;IACxC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAEpD,MAAM,KAAK,GAAG,MAAgB,CAAC;IAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;IAC1B,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;WAChC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;WACzC,CAAC,KAAK,CAAC,cAAc,EACxB;QACA,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,kBAAkB,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;KACb;IACD,MAAM,CAAC,IAAI,CAAC,aAAa,UAAU,KAAK,MAAM,GAAG,CAAC,CAAC;IAEnD,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QACxC,IAAI,QAAQ,CAAC,cAAc;eACtB,QAAQ,CAAC,aAAa;eACtB,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,WAAW,CAAC,EACpE;YACA,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;gBACjD,qDAAqD;gBACrD,6DAA6D;gBAC7D,sDAAsD;gBAEtD,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBACxB,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBACjD,IAAI,CAAC,YAAY,EAAE;wBACjB,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC;wBACjC,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;qBAC9D;oBACD,OAAO,IAAI,CAAC;iBACb;gBACD,MAAM,CAAC,KAAK,CACV,oCAAoC,OAAO,KAAK,IAAI;mFACqB,EACzE,QAAQ,CAAC,cAAc,CACxB,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;SACJ;IACH,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
|
|
3
|
+
export default (trackingCode, serviceCode, token) => new Promise((resolve) => {
|
|
4
|
+
axios({
|
|
5
|
+
method: 'post',
|
|
6
|
+
url: 'http://api.frenet.com.br/tracking/trackinginfo',
|
|
7
|
+
headers: {
|
|
8
|
+
'Content-Type': 'application/json',
|
|
9
|
+
Accept: 'application/json',
|
|
10
|
+
token,
|
|
11
|
+
},
|
|
12
|
+
data: {
|
|
13
|
+
ShippingServiceCode: serviceCode,
|
|
14
|
+
TrackingNumber: trackingCode,
|
|
15
|
+
},
|
|
16
|
+
})
|
|
17
|
+
.then(({ data }) => resolve(data));
|
|
18
|
+
});
|
|
19
|
+
// # sourceMappingURL=fetch-tracking-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-tracking-code.js","sourceRoot":"","sources":["../../src/functions-lib/fetch-tracking-code.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAe,CACb,YAAoB,EACpB,WAAmB,EACnB,KAAa,EACb,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IAC3B,KAAK,CAAC;QACJ,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,gDAAgD;QACrD,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;YAC1B,KAAK;SACN;QACD,IAAI,EAAE;YACJ,mBAAmB,EAAE,WAAW;YAChC,cAAc,EAAE,YAAY;SAC7B;KACF,CAAC;SACC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import logger from 'firebase-functions/logger';
|
|
2
|
+
import db from './database.js';
|
|
3
|
+
|
|
4
|
+
const removeDeliveredToFirestore = async () => {
|
|
5
|
+
// eslint-disable-next-line no-async-promise-executor
|
|
6
|
+
const job = new Promise(async (resolve, reject) => {
|
|
7
|
+
try {
|
|
8
|
+
const codes = await db.getAllDelivered();
|
|
9
|
+
if (codes.length > 0) {
|
|
10
|
+
codes.forEach(async (code) => {
|
|
11
|
+
try {
|
|
12
|
+
await db.remove(code.trackingCode, code.serviceCode);
|
|
13
|
+
logger.log('> (App Frenet) Code removed, delivered status', code);
|
|
14
|
+
} catch (err) {
|
|
15
|
+
logger.error('> (App Frenet) => TrackingCodesRemoveErr =>', err);
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
resolve(null);
|
|
19
|
+
}
|
|
20
|
+
} catch (err) {
|
|
21
|
+
reject(err);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
await job.catch((err) => {
|
|
25
|
+
logger.error('> (App Frenet) Error => ', err);
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export default removeDeliveredToFirestore;
|
|
30
|
+
// # sourceMappingURL=remove-delivered.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-delivered.js","sourceRoot":"","sources":["../../src/functions-lib/remove-delivered.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,0BAA0B,GAAG,KAAK,IAAI,EAAE;IAC5C,qDAAqD;IACrD,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAChD,IAAI;YACF,MAAM,KAAK,GAAkB,MAAM,EAAE,CAAC,eAAe,EAAmB,CAAC;YACzE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;oBAC3B,IAAI;wBACF,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;wBACrD,MAAM,CAAC,GAAG,CAAC,+CAA+C,EAAE,IAAI,CAAC,CAAC;qBACnE;oBAAC,OAAO,GAAG,EAAE;wBACZ,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAC;qBAClE;gBACH,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC;aACf;SACF;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,CAAC,GAAG,CAAC,CAAC;SACb;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,eAAe,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import api from '@cloudcommerce/api';
|
|
2
|
+
import logger from 'firebase-functions/logger';
|
|
3
|
+
import db from './database.js';
|
|
4
|
+
import updateOrderfulfilllment from './update-fulfillments.js';
|
|
5
|
+
import fetchTrackingEvents from './fetch-tracking-code.js';
|
|
6
|
+
import removeDeliveredToFirestore from './remove-delivered.js';
|
|
7
|
+
|
|
8
|
+
const getConfig = async () => {
|
|
9
|
+
try {
|
|
10
|
+
const app = (await api.get('applications?app_id=1244&fields=hidden_data')).data.result;
|
|
11
|
+
return app[0].hidden_data;
|
|
12
|
+
} catch (err) {
|
|
13
|
+
logger.error('(App Frenet) Error =>', err);
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const diffInDays = (createdAt) => {
|
|
18
|
+
const today = new Date();
|
|
19
|
+
const created = new Date(createdAt);
|
|
20
|
+
const diff = today.getTime() - created.getTime();
|
|
21
|
+
return Math.ceil(diff / (1000 * 3600 * 24));
|
|
22
|
+
};
|
|
23
|
+
const handleTrackingCodes = async () => {
|
|
24
|
+
const appConfig = await getConfig();
|
|
25
|
+
// eslint-disable-next-line no-async-promise-executor
|
|
26
|
+
const checkTrackingCodes = new Promise(async (resolve, reject) => {
|
|
27
|
+
logger.log('> (App Frenet) Automatic tracking code update started.');
|
|
28
|
+
let codes;
|
|
29
|
+
try {
|
|
30
|
+
codes = await db.getAll();
|
|
31
|
+
} catch (err) {
|
|
32
|
+
if (err.name !== 'NoTrackingCodesForUpdate') {
|
|
33
|
+
reject(err);
|
|
34
|
+
}
|
|
35
|
+
resolve(null);
|
|
36
|
+
}
|
|
37
|
+
if (!appConfig || !appConfig.frenet_access_token || !codes) {
|
|
38
|
+
// no config for store bye
|
|
39
|
+
resolve(null);
|
|
40
|
+
} else {
|
|
41
|
+
// eslint-disable-next-line consistent-return
|
|
42
|
+
codes.forEach(async (code) => {
|
|
43
|
+
const serviceCode = String(code.serviceCode).startsWith('FR')
|
|
44
|
+
? String(code.serviceCode.replace(/^FR/, '')).trim()
|
|
45
|
+
: code.serviceCode;
|
|
46
|
+
let trackingData;
|
|
47
|
+
try {
|
|
48
|
+
trackingData = await fetchTrackingEvents(code.trackingCode, serviceCode, appConfig.frenet_access_token);
|
|
49
|
+
} catch (err) {
|
|
50
|
+
logger.error('> (App Frenet) Error => ', err);
|
|
51
|
+
}
|
|
52
|
+
if (trackingData) {
|
|
53
|
+
const { ErrorMessage, TrackingEvents } = trackingData;
|
|
54
|
+
if (ErrorMessage && (!Array.isArray(TrackingEvents) || !TrackingEvents.length)) {
|
|
55
|
+
const startWithError = [
|
|
56
|
+
'ShippingServiceCode ou CarrierCode informado não foram encontrados',
|
|
57
|
+
'Object reference not set to an instance of an object',
|
|
58
|
+
'Value cannot be null',
|
|
59
|
+
'Cannot deserialize the current JSON array',
|
|
60
|
+
].some((msg) => ErrorMessage.startsWith(msg));
|
|
61
|
+
if (startWithError || ErrorMessage.startsWith('Objeto não encontrado na base de dados dos Correios')) {
|
|
62
|
+
if (startWithError || diffInDays(code.createdAt) >= 15) {
|
|
63
|
+
// remove pra evitar flod com errors
|
|
64
|
+
try {
|
|
65
|
+
await db.remove(code.trackingCode, code.serviceCode);
|
|
66
|
+
logger.log('> (App Frenet) Code removed, error detected in \'trackingData\'', code);
|
|
67
|
+
} catch (err) {
|
|
68
|
+
logger.error('> (App Frenet) => TrackingCodesRemoveErr =>', err);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
} else {
|
|
72
|
+
const err = {
|
|
73
|
+
...code,
|
|
74
|
+
error: true,
|
|
75
|
+
ErrorMessage,
|
|
76
|
+
TrackingEvents,
|
|
77
|
+
};
|
|
78
|
+
logger.error('> (App Frenet) Error => ', err);
|
|
79
|
+
}
|
|
80
|
+
} else if (TrackingEvents && Array.isArray(TrackingEvents)) {
|
|
81
|
+
let trackingEvent;
|
|
82
|
+
TrackingEvents.forEach(({ EventType, EventDateTime, EventDescription }) => {
|
|
83
|
+
const [day, month, yearAndTime] = EventDateTime.split('/');
|
|
84
|
+
const [year, time] = yearAndTime.split(' ');
|
|
85
|
+
const [hour, minute] = time.split(':');
|
|
86
|
+
const date = new Date(Date.UTC(year, parseInt(month, 10) - 1, day, hour, minute));
|
|
87
|
+
date.setHours(date.getHours() - 3);
|
|
88
|
+
if (!trackingEvent || trackingEvent.date.getTime() < date.getTime()) {
|
|
89
|
+
trackingEvent = {
|
|
90
|
+
status: parseInt(EventType, 10),
|
|
91
|
+
date,
|
|
92
|
+
description: EventDescription,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
if (trackingEvent && parseInt(code.trackingStatus, 10) !== trackingEvent.status) {
|
|
97
|
+
try {
|
|
98
|
+
await updateOrderfulfilllment(code.orderId, code.trackingCode, trackingEvent.status, trackingEvent.date);
|
|
99
|
+
await db.update(trackingEvent.status, code.trackingCode);
|
|
100
|
+
logger.log(`> (App Frenet) Novo Evento => orderId #${code.orderId},
|
|
101
|
+
code: ${code.trackingCode} lastStatus: ${code.trackingStatus}
|
|
102
|
+
newStatus: ${trackingEvent.status} description: ${trackingEvent.description}`);
|
|
103
|
+
} catch (err) {
|
|
104
|
+
if (err.response) {
|
|
105
|
+
const payload = {
|
|
106
|
+
message: err.message,
|
|
107
|
+
config: err.response.toJSON(),
|
|
108
|
+
orderId: code.orderId,
|
|
109
|
+
};
|
|
110
|
+
logger.error('> (App Frenet) Error => ', payload);
|
|
111
|
+
} else {
|
|
112
|
+
logger.error('> (App Frenet) Error => ', err);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
resolve(null);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
if (appConfig && appConfig.frenet_access_token) {
|
|
123
|
+
await checkTrackingCodes.catch((err) => {
|
|
124
|
+
logger.error('> (App Frenet) Error => ', err);
|
|
125
|
+
});
|
|
126
|
+
await removeDeliveredToFirestore().catch((err) => {
|
|
127
|
+
logger.error('> (App Frenet) Error removing Delivered to Firestore => ', err);
|
|
128
|
+
});
|
|
129
|
+
if (new Date().getHours() === 23) {
|
|
130
|
+
await db.clear().catch((err) => {
|
|
131
|
+
logger.error('> (App Frenet) Error removing old tracking codes => ', err);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
export default handleTrackingCodes;
|
|
138
|
+
// # sourceMappingURL=tracking-codes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracking-codes.js","sourceRoot":"","sources":["../../src/functions-lib/tracking-codes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import api from '@cloudcommerce/api';
|
|
2
|
+
|
|
3
|
+
const parseStatus = (status) => {
|
|
4
|
+
switch (status) {
|
|
5
|
+
case 0:
|
|
6
|
+
case 1:
|
|
7
|
+
case 2:
|
|
8
|
+
return 'shipped';
|
|
9
|
+
case 3:
|
|
10
|
+
case 4:
|
|
11
|
+
return 'returned';
|
|
12
|
+
case 9:
|
|
13
|
+
return 'delivered';
|
|
14
|
+
default:
|
|
15
|
+
return '';
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
const updateFulfillments = async (orderId, trackingCode, eventType, eventDate) => {
|
|
19
|
+
let notes;
|
|
20
|
+
const status = parseStatus(eventType);
|
|
21
|
+
const bodyFulfillments = {
|
|
22
|
+
date_time: eventDate.toISOString(),
|
|
23
|
+
status,
|
|
24
|
+
notification_code: String(trackingCode),
|
|
25
|
+
flags: [
|
|
26
|
+
'app-frenet',
|
|
27
|
+
],
|
|
28
|
+
}; // TODO: incompatible type=> amount;
|
|
29
|
+
if (eventType === 2) {
|
|
30
|
+
notes = 'Entrega está atrasada.';
|
|
31
|
+
} else if (eventType === 4) {
|
|
32
|
+
notes = 'Pedido extraviado.';
|
|
33
|
+
}
|
|
34
|
+
const order = (await api.get(`orders/${orderId}`)).data;
|
|
35
|
+
if (order.fulfillment_status && order.fulfillment_status.current === status) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
await api.post(`orders/${orderId}/fulfillments`, bodyFulfillments);
|
|
39
|
+
if (notes) {
|
|
40
|
+
if (order.notes) {
|
|
41
|
+
notes = `${order.notes}\n${notes}`;
|
|
42
|
+
}
|
|
43
|
+
return api.patch(`orders/${orderId}`, { notes });
|
|
44
|
+
}
|
|
45
|
+
return true;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export default updateFulfillments;
|
|
49
|
+
// # sourceMappingURL=update-fulfillments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-fulfillments.js","sourceRoot":"","sources":["../../src/functions-lib/update-fulfillments.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,oBAAoB,CAAC;AAErC,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,EAAE;IACrC,QAAQ,MAAM,EAAE;QACd,KAAK,CAAC,CAAC;QACP,KAAK,CAAC,CAAC;QACP,KAAK,CAAC;YACJ,OAAO,SAAS,CAAC;QACnB,KAAK,CAAC,CAAC;QACP,KAAK,CAAC;YACJ,OAAO,UAAU,CAAC;QACpB,KAAK,CAAC;YACJ,OAAO,WAAW,CAAC;QACrB;YACE,OAAO,EAAE,CAAC;KACb;AACH,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,KAAK,EAC9B,OAAe,EACf,YAAoB,EACpB,SAAiB,EACjB,SAAe,EACf,EAAE;IACF,IAAI,KAAK,CAAC;IACV,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,gBAAgB,GAAG;QACvB,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;QAClC,MAAM;QACN,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC;QACvC,KAAK,EAAE;YACL,YAAY;SACb;KACK,CAAC,CAAC,oCAAoC;IAE9C,IAAI,SAAS,KAAK,CAAC,EAAE;QACnB,KAAK,GAAG,wBAAwB,CAAC;KAClC;SAAM,IAAI,SAAS,KAAK,CAAC,EAAE;QAC1B,KAAK,GAAG,oBAAoB,CAAC;KAC9B;IAED,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,IAAI,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,kBAAkB,CAAC,OAAO,KAAK,MAAM,EAAE;QAC3E,OAAO,IAAI,CAAC;KACb;IACD,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,OAAO,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACnE,IAAI,KAAK,EAAE;QACT,IAAI,KAAK,CAAC,KAAK,EAAE;YACf,KAAK,GAAG,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;SACpC;QACD,OAAO,GAAG,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;KAClD;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudcommerce/app-frenet",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.4",
|
|
5
5
|
"description": "E-Com Plus Cloud Commerce app for Frenet shipping calculation",
|
|
6
6
|
"main": "lib/frenet.js",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./lib/frenet.js",
|
|
9
|
+
"./events": "./lib/frenet-events.js"
|
|
10
|
+
},
|
|
7
11
|
"repository": {
|
|
8
12
|
"type": "git",
|
|
9
13
|
"url": "git+https://github.com/ecomplus/cloud-commerce.git",
|
|
@@ -20,9 +24,13 @@
|
|
|
20
24
|
},
|
|
21
25
|
"dependencies": {
|
|
22
26
|
"@cloudcommerce/api": "workspace:*",
|
|
23
|
-
"
|
|
27
|
+
"@cloudcommerce/firebase": "workspace:*",
|
|
28
|
+
"axios": "^1.2.1",
|
|
29
|
+
"firebase-admin": "^11.4.0",
|
|
30
|
+
"firebase-functions": "^4.1.1"
|
|
24
31
|
},
|
|
25
32
|
"devDependencies": {
|
|
26
|
-
"@cloudcommerce/types": "workspace:*"
|
|
33
|
+
"@cloudcommerce/types": "workspace:*",
|
|
34
|
+
"@firebase/app-types": "^0.9.0"
|
|
27
35
|
}
|
|
28
36
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* eslint-disable import/prefer-default-export */
|
|
2
|
+
import '@cloudcommerce/firebase/lib/init';
|
|
3
|
+
import {
|
|
4
|
+
createAppEventsFunction,
|
|
5
|
+
ApiEventHandler,
|
|
6
|
+
} from '@cloudcommerce/firebase/lib/helpers/pubsub';
|
|
7
|
+
import config from '@cloudcommerce/firebase/lib/config';
|
|
8
|
+
import functions from 'firebase-functions/v1';
|
|
9
|
+
import handleTrackingCodes from './functions-lib/tracking-codes';
|
|
10
|
+
import handleApiEvent from './functions-lib/events-to-frenet';
|
|
11
|
+
|
|
12
|
+
const { httpsFunctionOptions: { region } } = config.get();
|
|
13
|
+
|
|
14
|
+
export const frenet = {
|
|
15
|
+
cronTrackingCodes: functions.region(region).pubsub
|
|
16
|
+
.schedule('*/30 * * * *')
|
|
17
|
+
.onRun(() => {
|
|
18
|
+
return handleTrackingCodes;
|
|
19
|
+
}),
|
|
20
|
+
|
|
21
|
+
onStoreEvent: createAppEventsFunction(
|
|
22
|
+
'frenet',
|
|
23
|
+
handleApiEvent as ApiEventHandler,
|
|
24
|
+
),
|
|
25
|
+
};
|