@cloudcommerce/app-melhor-envio 2.48.18 → 2.48.19
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/lib/functions-lib/events-to-melhor-envio.js +10 -9
- package/lib/functions-lib/events-to-melhor-envio.js.map +1 -1
- package/lib/functions-lib/new-label.d.ts +1 -36
- package/lib/functions-lib/new-label.js +88 -35
- package/lib/functions-lib/new-label.js.map +1 -1
- package/lib/functions-lib/order-is-valid.d.ts +1 -3
- package/lib/functions-lib/order-is-valid.js +18 -7
- package/lib/functions-lib/order-is-valid.js.map +1 -1
- package/lib/functions-lib/tracking-codes.js +14 -6
- package/lib/functions-lib/tracking-codes.js.map +1 -1
- package/lib-mjs/calculate-melhor-envio.mjs +157 -66
- package/lib-mjs/functions/error-handling.mjs +2 -2
- package/lib-mjs/functions/new-shipment.mjs +84 -23
- package/lib-mjs/util/melhor-envio-api.mjs +17 -0
- package/package.json +5 -5
- package/lib-mjs/functions/client-melhor-envio.mjs +0 -14
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import logger from 'firebase-functions/logger';
|
|
2
2
|
import api from '@cloudcommerce/api';
|
|
3
|
-
import
|
|
3
|
+
import { getMEAxios } from '../../lib-mjs/util/melhor-envio-api.mjs';
|
|
4
4
|
import errorHandling from '../../lib-mjs/functions/error-handling.mjs';
|
|
5
5
|
import db from './database.js';
|
|
6
6
|
import orderIsValid from './order-is-valid.js';
|
|
@@ -24,29 +24,30 @@ const handleApiEvent = async ({
|
|
|
24
24
|
try {
|
|
25
25
|
const trackingCode = await db.searchLabel(resourceId);
|
|
26
26
|
if (!trackingCode) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
process.env.MELHORENVIO_TOKEN = melhorEnvioToken;
|
|
27
|
+
if (appData.access_token) {
|
|
28
|
+
process.env.MELHORENVIO_TOKEN = appData.access_token;
|
|
30
29
|
}
|
|
30
|
+
process.env.MELHORENVIO_ENV = appData.sandbox
|
|
31
|
+
? 'sandbox'
|
|
32
|
+
: process.env.MELHORENVIO_ENV || 'live';
|
|
31
33
|
if (!process.env.MELHORENVIO_TOKEN) {
|
|
32
34
|
logger.warn('Missing Melhor Envio token');
|
|
33
35
|
return null;
|
|
34
36
|
}
|
|
35
|
-
const { sandbox } = appData;
|
|
36
37
|
const order = apiDoc;
|
|
37
38
|
if (!appData.enabled_label_purchase || !orderIsValid(order, appData)) {
|
|
38
39
|
ECHO_SKIP();
|
|
39
40
|
return null;
|
|
40
41
|
}
|
|
41
|
-
const
|
|
42
|
-
|
|
42
|
+
const meAxios = await getMEAxios();
|
|
43
|
+
const { data: merchantData } = await meAxios.get('/');
|
|
43
44
|
const label = newLabel(order, appData, merchantData);
|
|
44
45
|
// logger.log(`>> Comprando etiquetas #${storeId} ${order._id}`);
|
|
45
|
-
const { data } = await
|
|
46
|
+
const { data } = await meAxios.post('/cart', label);
|
|
46
47
|
if (data) {
|
|
47
48
|
logger.log(`>> Etiqueta inserida no carrinho com sucesso #${data.id}`);
|
|
48
49
|
if (appData.enabled_label_checkout) {
|
|
49
|
-
await
|
|
50
|
+
await meAxios.post('/shipment/checkout', { orders: [data.id] });
|
|
50
51
|
}
|
|
51
52
|
// logger.log(`>> Carrinho finalizado com sucesso #${data.id}`);
|
|
52
53
|
await db.saveLabel(data.id, data.status, resourceId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-to-melhor-envio.js","sourceRoot":"","sources":["../../src/functions-lib/events-to-melhor-envio.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,GAAG,MAAM,oBAAoB,CAAC;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"events-to-melhor-envio.js","sourceRoot":"","sources":["../../src/functions-lib/events-to-melhor-envio.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,40 +3,5 @@ declare const _default: (order: Orders, appConfig: {
|
|
|
3
3
|
[x: string]: any;
|
|
4
4
|
}, merchantData: {
|
|
5
5
|
[x: string]: any;
|
|
6
|
-
}) =>
|
|
7
|
-
from: {
|
|
8
|
-
[x: string]: any;
|
|
9
|
-
};
|
|
10
|
-
to: {
|
|
11
|
-
email: string;
|
|
12
|
-
};
|
|
13
|
-
package: {
|
|
14
|
-
weight: number;
|
|
15
|
-
width: number;
|
|
16
|
-
height: number;
|
|
17
|
-
length: number;
|
|
18
|
-
};
|
|
19
|
-
products: {
|
|
20
|
-
name: string;
|
|
21
|
-
quantity: number;
|
|
22
|
-
unitary_value: number;
|
|
23
|
-
}[];
|
|
24
|
-
options: {
|
|
25
|
-
insurance_value: number;
|
|
26
|
-
receipt: any;
|
|
27
|
-
own_hand: any;
|
|
28
|
-
collect: boolean;
|
|
29
|
-
reverse: boolean;
|
|
30
|
-
platform: string;
|
|
31
|
-
tags: ({
|
|
32
|
-
tag: string;
|
|
33
|
-
url?: undefined;
|
|
34
|
-
} | {
|
|
35
|
-
tag: string;
|
|
36
|
-
url: string & {
|
|
37
|
-
length: 24;
|
|
38
|
-
};
|
|
39
|
-
})[];
|
|
40
|
-
};
|
|
41
|
-
};
|
|
6
|
+
}) => Record<string, any>;
|
|
42
7
|
export default _default;
|
|
@@ -7,14 +7,41 @@ export default (order, appConfig, merchantData) => {
|
|
|
7
7
|
phone: (phone && phone.phone) || '',
|
|
8
8
|
email,
|
|
9
9
|
};
|
|
10
|
-
if (
|
|
11
|
-
|
|
10
|
+
if (appConfig.sender_info) {
|
|
11
|
+
if (appConfig.sender_info.doc_number) {
|
|
12
|
+
const docNumber = appConfig.sender_info.doc_number.replace(/\D/g, '');
|
|
13
|
+
from[docNumber > 11 ? 'company_document' : 'document'] = docNumber;
|
|
14
|
+
}
|
|
15
|
+
if (appConfig.sender_info.doc_number_type) {
|
|
16
|
+
from.economic_activity_code = appConfig.sender_info.doc_number_type
|
|
17
|
+
.replace('.', '').replace('-', '');
|
|
18
|
+
}
|
|
19
|
+
['name', 'phone', 'email'].forEach((field) => {
|
|
20
|
+
if (appConfig.sender_info[field]) {
|
|
21
|
+
from[field] = appConfig.sender_info[field];
|
|
22
|
+
}
|
|
23
|
+
});
|
|
12
24
|
}
|
|
13
|
-
if (
|
|
14
|
-
|
|
15
|
-
|
|
25
|
+
if (!from.company_document && !from.document) {
|
|
26
|
+
if (merchantData.company_document) {
|
|
27
|
+
from.company_document = merchantData.company_document;
|
|
28
|
+
}
|
|
29
|
+
if (merchantData.document) {
|
|
30
|
+
const docNumber = merchantData.document.replace(/\D/g, '');
|
|
31
|
+
from[docNumber.length > 11 ? 'company_document' : 'document'] = docNumber;
|
|
32
|
+
}
|
|
16
33
|
}
|
|
17
|
-
|
|
34
|
+
const shippingLine = order.shipping_lines?.[0];
|
|
35
|
+
if (shippingLine?.from?.street && shippingLine.from.city) {
|
|
36
|
+
from.address = shippingLine.from.street;
|
|
37
|
+
from.complement = shippingLine.from.complement || '';
|
|
38
|
+
from.number = shippingLine.from.number || 'SN';
|
|
39
|
+
from.district = shippingLine.from.borough;
|
|
40
|
+
from.postal_code = shippingLine.from.zip.replace(/\D/g, '');
|
|
41
|
+
from.city = shippingLine.from.city;
|
|
42
|
+
from.state_abbr = shippingLine.from.province_code;
|
|
43
|
+
from.country_id = 'BR';
|
|
44
|
+
} else if (address) {
|
|
18
45
|
if (typeof address === 'string') {
|
|
19
46
|
from.address = address;
|
|
20
47
|
} else {
|
|
@@ -39,8 +66,6 @@ export default (order, appConfig, merchantData) => {
|
|
|
39
66
|
}
|
|
40
67
|
}
|
|
41
68
|
}
|
|
42
|
-
const shippingLine = (order.shipping_lines && order.shipping_lines[0]);
|
|
43
|
-
// || {};
|
|
44
69
|
const buyer = order.buyers && order.buyers[0];
|
|
45
70
|
const to = {
|
|
46
71
|
email: '',
|
|
@@ -48,12 +73,12 @@ export default (order, appConfig, merchantData) => {
|
|
|
48
73
|
if (buyer && buyer.main_email) {
|
|
49
74
|
to.email = buyer.main_email;
|
|
50
75
|
if (buyer.registry_type === 'j') {
|
|
51
|
-
|
|
76
|
+
to.company_document = buyer.doc_number || '';
|
|
52
77
|
} else {
|
|
53
|
-
|
|
78
|
+
to.document = buyer.doc_number || '';
|
|
54
79
|
}
|
|
55
80
|
if (buyer.phones && buyer.phones[0]) {
|
|
56
|
-
|
|
81
|
+
to.phone = buyer.phones[0].number;
|
|
57
82
|
}
|
|
58
83
|
}
|
|
59
84
|
if (shippingLine?.to) {
|
|
@@ -93,11 +118,11 @@ export default (order, appConfig, merchantData) => {
|
|
|
93
118
|
}
|
|
94
119
|
}
|
|
95
120
|
const getDimensions = (side) => {
|
|
96
|
-
const dimensions = shippingLine?.package
|
|
121
|
+
const dimensions = shippingLine?.package?.dimensions;
|
|
97
122
|
if (dimensions && dimensions[side]) {
|
|
98
123
|
const dimension = dimensions[side];
|
|
99
124
|
if (dimension && dimension.unit) {
|
|
100
|
-
let dimensionValue
|
|
125
|
+
let dimensionValue;
|
|
101
126
|
switch (dimension.unit) {
|
|
102
127
|
case 'cm':
|
|
103
128
|
dimensionValue = dimension.value;
|
|
@@ -109,7 +134,6 @@ export default (order, appConfig, merchantData) => {
|
|
|
109
134
|
dimensionValue = dimension.value / 10;
|
|
110
135
|
break;
|
|
111
136
|
default:
|
|
112
|
-
break;
|
|
113
137
|
}
|
|
114
138
|
return dimensionValue;
|
|
115
139
|
}
|
|
@@ -121,13 +145,17 @@ export default (order, appConfig, merchantData) => {
|
|
|
121
145
|
if (order.items) {
|
|
122
146
|
order.items.forEach((item) => {
|
|
123
147
|
products.push({
|
|
124
|
-
name: item.name
|
|
148
|
+
name: item.name,
|
|
125
149
|
quantity: item.quantity,
|
|
126
|
-
unitary_value: item.price,
|
|
150
|
+
unitary_value: item.final_price || item.price,
|
|
127
151
|
});
|
|
128
152
|
insuranceValue += item.final_price || item.price;
|
|
129
153
|
});
|
|
130
154
|
}
|
|
155
|
+
let obs = `Etiqueta referente ao pedido: #${order.number}`;
|
|
156
|
+
if (shippingLine?.warehouse_code) {
|
|
157
|
+
obs += ` [${shippingLine.warehouse_code}]`;
|
|
158
|
+
}
|
|
131
159
|
const options = {
|
|
132
160
|
insurance_value: insuranceValue,
|
|
133
161
|
receipt: (appConfig.receipt),
|
|
@@ -137,7 +165,7 @@ export default (order, appConfig, merchantData) => {
|
|
|
137
165
|
platform: 'E-Com Plus',
|
|
138
166
|
tags: [
|
|
139
167
|
{
|
|
140
|
-
tag:
|
|
168
|
+
tag: obs,
|
|
141
169
|
},
|
|
142
170
|
{
|
|
143
171
|
tag: 'order_id',
|
|
@@ -147,16 +175,14 @@ export default (order, appConfig, merchantData) => {
|
|
|
147
175
|
};
|
|
148
176
|
// https://docs.menv.io/?version=latest#9a8f308b-4872-4268-b402-e1b0d64d1f1c
|
|
149
177
|
if (appConfig.enabled_non_commercial) {
|
|
150
|
-
|
|
178
|
+
options.non_commercial = true;
|
|
151
179
|
}
|
|
152
|
-
const
|
|
153
|
-
if (
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
},
|
|
159
|
-
});
|
|
180
|
+
const invoice = shippingLine?.invoices?.[0];
|
|
181
|
+
if (invoice?.number) {
|
|
182
|
+
options.invoice = {
|
|
183
|
+
number: invoice.number,
|
|
184
|
+
key: invoice.access_key,
|
|
185
|
+
};
|
|
160
186
|
}
|
|
161
187
|
const label = {
|
|
162
188
|
from,
|
|
@@ -170,15 +196,42 @@ export default (order, appConfig, merchantData) => {
|
|
|
170
196
|
products,
|
|
171
197
|
options,
|
|
172
198
|
};
|
|
173
|
-
if (shippingLine?.app
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
199
|
+
if (shippingLine?.app?.service_code) {
|
|
200
|
+
const serviceCode = shippingLine.app.service_code;
|
|
201
|
+
label.service = parseInt(serviceCode.replace('ME ', ''), 10);
|
|
202
|
+
let propAgency;
|
|
203
|
+
switch (serviceCode) {
|
|
204
|
+
case 'ME 31':
|
|
205
|
+
propAgency = 'loggi_agency';
|
|
206
|
+
break;
|
|
207
|
+
case 'ME 12':
|
|
208
|
+
propAgency = 'latam_agency';
|
|
209
|
+
break;
|
|
210
|
+
case 'ME 3':
|
|
211
|
+
case 'ME 4':
|
|
212
|
+
propAgency = 'jadlog_agency';
|
|
213
|
+
break;
|
|
214
|
+
case 'ME 15':
|
|
215
|
+
case 'ME 16':
|
|
216
|
+
propAgency = 'azul_agency';
|
|
217
|
+
break;
|
|
218
|
+
default:
|
|
219
|
+
propAgency = 'melhor_agency';
|
|
220
|
+
}
|
|
221
|
+
let warehouseConfig = {};
|
|
222
|
+
if (shippingLine.warehouse_code && Array.isArray(appConfig.warehouses)) {
|
|
223
|
+
for (let i = 0; i < appConfig.warehouses.length; i++) {
|
|
224
|
+
const warehouse = appConfig.warehouses[i];
|
|
225
|
+
if (warehouse && warehouse.code === shippingLine.warehouse_code) {
|
|
226
|
+
warehouseConfig = warehouse;
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
const agencyCode = warehouseConfig[propAgency] || appConfig[propAgency];
|
|
232
|
+
if (agencyCode) {
|
|
233
|
+
label.agency = agencyCode;
|
|
234
|
+
}
|
|
182
235
|
}
|
|
183
236
|
return label;
|
|
184
237
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"new-label.js","sourceRoot":"","sources":["../../src/functions-lib/new-label.ts"],"names":[],"mappings":"AAEA,eAAe,CACb,KAAa,EACb,SAA+B,EAC/B,YAAkC,EAClC,EAAE;IACF,MAAM,EACJ,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAC3C,GAAG,YAAY,CAAC;IACjB,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"new-label.js","sourceRoot":"","sources":["../../src/functions-lib/new-label.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,21 +2,32 @@ export default (order, appConfig) => {
|
|
|
2
2
|
if (!order.fulfillment_status || !order.shipping_lines) {
|
|
3
3
|
return false;
|
|
4
4
|
}
|
|
5
|
-
// check if the shipping calculation was done with the app-melhor-envio
|
|
6
5
|
const isByMelhorEnvio = Boolean(order.shipping_lines.find((shippingLine) => {
|
|
7
6
|
return shippingLine.custom_fields && shippingLine.custom_fields.find(({ field }) => {
|
|
8
7
|
return field === 'by_melhor_envio';
|
|
9
8
|
});
|
|
10
9
|
}));
|
|
11
|
-
// checks if the non-commercial shipping option is enabled
|
|
12
10
|
const isNonCommercial = () => (appConfig.enabled_non_commercial);
|
|
13
|
-
// checks if order is ready to ship by last
|
|
14
|
-
// entry in fulfillments instead of checking fulfillment_status
|
|
15
11
|
const isReadyForShipping = () => {
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
let statusToCheck = 'ready_for_shipping';
|
|
13
|
+
switch (appConfig.new_label_status) {
|
|
14
|
+
case 'Em produção':
|
|
15
|
+
statusToCheck = 'in_production';
|
|
16
|
+
break;
|
|
17
|
+
case 'Em separação':
|
|
18
|
+
statusToCheck = 'in_separation';
|
|
19
|
+
break;
|
|
20
|
+
case 'Pronto para envio':
|
|
21
|
+
statusToCheck = 'ready_for_shipping';
|
|
22
|
+
break;
|
|
23
|
+
case 'NF emitida':
|
|
24
|
+
statusToCheck = 'invoice_issued';
|
|
25
|
+
break;
|
|
26
|
+
default:
|
|
27
|
+
}
|
|
28
|
+
const { current } = order.fulfillment_status || {};
|
|
29
|
+
return (current && current === statusToCheck);
|
|
18
30
|
};
|
|
19
|
-
// check if nf was issued for the order
|
|
20
31
|
const hasInvoice = () => {
|
|
21
32
|
return Boolean(order.shipping_lines?.find(({ invoices }) => {
|
|
22
33
|
return invoices && invoices[0] && invoices[0].number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-is-valid.js","sourceRoot":"","sources":["../../src/functions-lib/order-is-valid.ts"],"names":[],"mappings":"AAEA,eAAe,CAAC,KAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"order-is-valid.js","sourceRoot":"","sources":["../../src/functions-lib/order-is-valid.ts"],"names":[],"mappings":"AAEA,eAAe,CAAC,KAAa,EAAE,SAA8B,EAAE,EAAE;IAC/D,IAAI,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;QACzE,OAAO,YAAY,CAAC,aAAa,IAAI,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;YACjF,OAAO,KAAK,KAAK,iBAAiB,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC,CAAC;IAEJ,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAEjE,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,IAAI,aAAa,GAAG,oBAAoB,CAAC;QACzC,QAAQ,SAAS,CAAC,gBAAgB,EAAE,CAAC;YACnC,KAAK,aAAa;gBAChB,aAAa,GAAG,eAAe,CAAC;gBAChC,MAAM;YACR,KAAK,cAAc;gBACjB,aAAa,GAAG,eAAe,CAAC;gBAChC,MAAM;YACR,KAAK,mBAAmB;gBACtB,aAAa,GAAG,oBAAoB,CAAC;gBACrC,MAAM;YACR,KAAK,YAAY;gBACf,aAAa,GAAG,gBAAgB,CAAC;gBACjC,MAAM;YACR,QAAQ;QACV,CAAC;QACD,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,kBAAkB,IAAI,EAAE,CAAC;QACnD,OAAO,CAAC,OAAO,IAAI,OAAO,KAAK,aAAa,CAAC,CAAC;IAChD,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,OAAO,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;YACzD,OAAO,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACvD,CAAC,CAAC,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC,iBAAiB;iBAC3B,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,uBAAuB,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,IAAI,CAAC,eAAe,IAAI,CAAC,kBAAkB,EAAE,IAAI,aAAa,EAAE,EAAE,CAAC;QACjE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,eAAe,EAAE,IAAI,UAAU,EAAE,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import logger from 'firebase-functions/logger';
|
|
2
2
|
import api from '@cloudcommerce/api';
|
|
3
3
|
import config from '@cloudcommerce/firebase/lib/config';
|
|
4
|
-
import
|
|
4
|
+
import { getMEAxios } from '../../lib-mjs/util/melhor-envio-api.mjs';
|
|
5
5
|
import errorHandling from '../../lib-mjs/functions/error-handling.mjs';
|
|
6
6
|
import db from './database.js';
|
|
7
7
|
|
|
@@ -15,9 +15,17 @@ const getConfig = async () => {
|
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
17
|
const handleTrackingCodes = async () => {
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
const appData = await getConfig();
|
|
19
|
+
if (appData?.access_token) {
|
|
20
|
+
process.env.MELHORENVIO_TOKEN = appData.access_token;
|
|
21
|
+
}
|
|
22
|
+
process.env.MELHORENVIO_ENV = appData?.sandbox
|
|
23
|
+
? 'sandbox'
|
|
24
|
+
: process.env.MELHORENVIO_ENV || 'live';
|
|
25
|
+
if (!process.env.MELHORENVIO_TOKEN) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const meAxios = await getMEAxios();
|
|
21
29
|
// eslint-disable-next-line no-async-promise-executor
|
|
22
30
|
const trackingCodes = new Promise(async (resolve, reject) => {
|
|
23
31
|
logger.log('>> Inciando rastreio de etiquetas');
|
|
@@ -45,7 +53,7 @@ const handleTrackingCodes = async () => {
|
|
|
45
53
|
return next();
|
|
46
54
|
}
|
|
47
55
|
try {
|
|
48
|
-
const { data } = await
|
|
56
|
+
const { data } = await meAxios
|
|
49
57
|
.post('/shipment/tracking', { orders: [label.labelId] });
|
|
50
58
|
const orderLabel = order.hidden_metafields?.find((metafield) => {
|
|
51
59
|
return metafield.field === 'melhor_envio_label_id' && data[metafield.value];
|
|
@@ -148,7 +156,7 @@ const handleTrackingCodes = async () => {
|
|
|
148
156
|
reject(err);
|
|
149
157
|
}
|
|
150
158
|
});
|
|
151
|
-
if (
|
|
159
|
+
if (appData?.disable_tracking) {
|
|
152
160
|
await trackingCodes.catch((err) => {
|
|
153
161
|
logger.error(err);
|
|
154
162
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracking-codes.js","sourceRoot":"","sources":["../../src/functions-lib/tracking-codes.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,GAAG,MAAM,oBAAoB,CAAC;AACrC,OAAO,MAAM,MAAM,oCAAoC,CAAC;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"tracking-codes.js","sourceRoot":"","sources":["../../src/functions-lib/tracking-codes.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,GAAG,MAAM,oBAAoB,CAAC;AACrC,OAAO,MAAM,MAAM,oCAAoC,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AACrE,OAAO,aAAa,MAAM,4CAA4C,CAAC;AACvE,OAAO,EAAa,MAAM,YAAY,CAAC;AAEvC,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CACxB,uBAAuB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,qBAAqB,CAChF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAEf,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAC5B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,IAAI,EAAE;IACrC,MAAM,OAAO,GAAG,MAAM,SAAS,EAAE,CAAC;IAClC,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IACvD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,OAAO,EAAE,OAAO;QAC5C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,MAAM,CAAC;IAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACnC,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IAEnC,qDAAqD;IACrD,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1D,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAEhD,IAAI,CAAC;YACH,MAAM,MAAM,GAAY,MAAM,EAAE,CAAC,YAAY,EAAE,CAAC;YAChD,oBAAoB;YACpB,MAAM,WAAW,GAAG,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE;gBACtC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC;gBACD,MAAM,IAAI,GAAG,GAAG,EAAE;oBAChB,KAAK,IAAI,CAAC,CAAC;oBACX,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC,CAAC;gBAEF,wDAAwD;gBACxD,IAAI,KAAa,CAAC;gBAClB,IAAI,CAAC;oBACH,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC7D,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,aAAa,CAAC,GAAG,CAAC,CAAC;oBACnB,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;wBAChD,MAAM,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACrD,CAAC;oBACD,OAAO,IAAI,EAAE,CAAC;gBAChB,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO;yBAC3B,IAAI,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAE3D,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;wBAC7D,OAAO,SAAS,CAAC,KAAK,KAAK,uBAAuB,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBAC9E,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;wBACrC,OAAO,IAAI,CAAC;oBACd,CAAC;oBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAA0B,CAAC,CAAC;oBAC7D,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc;yBAC9D,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;oBAEnF,IAAI,CAAC,YAAY,EAAE,CAAC;wBAClB,OAAO,IAAI,CAAC;oBACd,CAAC;oBAED,IAAI,yBAAyB,GAAG,EAAE,CAAC;oBACnC,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;wBACxB,yBAAyB,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;oBAC1D,CAAC;yBAAM,CAAC;wBACN,yBAAyB,GAAG,KAAK,CAAC,kBAAkB;4BAClD,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5C,CAAC;oBAED,IAAI,QAA4B,CAAC;oBAEjC,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;wBACxB,KAAK,QAAQ;4BACX,IAAI,yBAAyB,KAAK,SAAS,IAAI,yBAAyB,KAAK,WAAW,EAAE,CAAC;gCACzF,QAAQ,GAAG,SAAS,CAAC;4BACvB,CAAC;4BACD,MAAM;wBACR,KAAK,WAAW;4BACd,IAAI,yBAAyB,KAAK,WAAW,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gCACnE,QAAQ,GAAG,WAAW,CAAC;4BACzB,CAAC;4BACD,MAAM;wBACR,KAAK,aAAa;4BAChB,IAAI,yBAAyB,KAAK,UAAU,EAAE,CAAC;gCAC7C,QAAQ,GAAG,UAAU,CAAC;4BACxB,CAAC;4BACD,MAAM;wBACR;4BACE,MAAM;oBACV,CAAC;oBAED,IAAI,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC,YAAY,CAAC,cAAc;2BACjD,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC1C,IAAI,CAAC;4BACH,MAAM,GAAG,CAAC,KAAK,CACb,UAAU,KAAK,CAAC,UAAU,mBAAmB,YAAY,CAAC,GAAG,EAAE,EAC/D;gCACE,cAAc,EAAE,CAAC;wCACf,IAAI,EAAE,QAAQ,CAAC,QAAQ;wCACvB,IAAI,EAAE,8CAA8C,QAAQ,CAAC,QAAQ,EAAE;qCACxE,CAAC;6BACH,CACF,CAAC;4BACF,MAAM,CAAC,GAAG,CAAC,sBAAsB,KAAK,CAAC,GAAG,YAAY,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAC7E,CAAC;wBAAC,OAAO,GAAQ,EAAE,CAAC;4BAClB,MAAM,CAAC,KAAK,CACV,6CAA6C,KAAK,CAAC,UAAU,MAAM,EACnE,GAAG,CACJ,CAAC;4BACF,IAAI,EAAE,CAAC;wBACT,CAAC;oBACH,CAAC;oBAED,IAAI,QAAQ,EAAE,CAAC;wBACb,MAAM,IAAI,GAAG;4BACX,gBAAgB,EAAE,YAAY,CAAC,GAAG;4BAClC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BACnC,MAAM,EAAE,QAAQ;4BAChB,iBAAiB,EAAE,QAAQ,CAAC,EAAE;yBACxB,CAAC;wBAET,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,UAAU,eAAe,EAAE,IAAI,CAAC,CAAC;wBAChE,MAAM,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,GAAG,8BAA8B,QAAQ,EAAE,CAAC,CAAC;oBACpF,CAAC;oBAED,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;wBACpB,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;4BACxB,KAAK,WAAW,CAAC;4BACjB,KAAK,aAAa,CAAC;4BACnB,KAAK,UAAU;gCACb,MAAM,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gCAC/B,MAAM;4BACR;gCACE,MAAM;wBACV,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;wBACrB,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;wBACzB,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;4BACtC,MAAM,OAAO,GAAG;gCACd,OAAO,EAAE,KAAK,CAAC,OAAO;gCACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;gCACvB,IAAI,EAAE,QAAQ,CAAC,IAAI;gCACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;6BACxB,CAAC;4BACF,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;wBAC5E,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,OAAO,GAAG,oBAAoB,CAAC;wBACnC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACpB,CAAC;gBACH,CAAC;gBACD,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC,CAAC;YAEF,MAAM,WAAW,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC9B,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAChC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;YACjC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACnC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import logger from 'firebase-functions/logger';
|
|
2
2
|
import api from '@cloudcommerce/api';
|
|
3
3
|
import { newShipment, matchService, sortServicesBy } from './functions/new-shipment.mjs';
|
|
4
|
-
import
|
|
4
|
+
import { getMEAxios } from './util/melhor-envio-api.mjs';
|
|
5
5
|
import errorHandling from './functions/error-handling.mjs';
|
|
6
6
|
|
|
7
7
|
export default async ({ params, application }) => {
|
|
@@ -10,16 +10,18 @@ export default async ({ params, application }) => {
|
|
|
10
10
|
...application.hidden_data,
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
process.env.MELHORENVIO_TOKEN = melhorEnvioToken;
|
|
13
|
+
if (appData.access_token) {
|
|
14
|
+
process.env.MELHORENVIO_TOKEN = appData.access_token;
|
|
16
15
|
}
|
|
16
|
+
process.env.MELHORENVIO_ENV = appData.sandbox
|
|
17
|
+
? 'sandbox'
|
|
18
|
+
: process.env.MELHORENVIO_ENV || 'live';
|
|
17
19
|
if (!process.env.MELHORENVIO_TOKEN) {
|
|
18
20
|
logger.warn('Missing Melhor Envio token');
|
|
19
21
|
return {
|
|
20
22
|
status: 409,
|
|
21
23
|
error: 'CALCULATE_SHIPPING_DISABLED',
|
|
22
|
-
message: 'Melhor Envio Token is
|
|
24
|
+
message: 'Melhor Envio Token is not set',
|
|
23
25
|
};
|
|
24
26
|
}
|
|
25
27
|
|
|
@@ -79,34 +81,92 @@ export default async ({ params, application }) => {
|
|
|
79
81
|
return response;
|
|
80
82
|
}
|
|
81
83
|
|
|
84
|
+
const meAxios = await getMEAxios();
|
|
85
|
+
|
|
82
86
|
if (params.items) {
|
|
83
87
|
const intZipCode = parseInt(params.to.zip.replace(/\D/g, ''), 10);
|
|
84
|
-
const { sandbox } = appData;
|
|
85
|
-
|
|
86
88
|
if (!appData.merchant_address) {
|
|
87
89
|
// get merchant_address
|
|
88
|
-
const { data } = await
|
|
90
|
+
const { data } = await meAxios.get('/');
|
|
89
91
|
const merchantAddress = data.address;
|
|
90
92
|
|
|
91
93
|
// update config.merchant_address
|
|
92
94
|
appData.merchant_address = merchantAddress;
|
|
93
95
|
// save merchant_address in hidden_data
|
|
94
96
|
|
|
95
|
-
const bodyUpdate = {
|
|
96
|
-
merchant_address: merchantAddress,
|
|
97
|
-
};
|
|
98
97
|
try {
|
|
99
|
-
await api.patch(`applications/${application._id}/hidden_data`,
|
|
98
|
+
await api.patch(`applications/${application._id}/hidden_data`, {
|
|
99
|
+
merchant_address: merchantAddress,
|
|
100
|
+
});
|
|
100
101
|
} catch (err) {
|
|
101
|
-
logger.
|
|
102
|
+
logger.warn('Update merchant_address failed');
|
|
103
|
+
logger.error(err);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
let originZip;
|
|
108
|
+
let warehouseCode;
|
|
109
|
+
let postingDeadline;
|
|
110
|
+
let warehouseConfig = {};
|
|
111
|
+
let from = {
|
|
112
|
+
zip: appData.merchant_address.postal_code,
|
|
113
|
+
street: appData.merchant_address.address,
|
|
114
|
+
number: parseInt(appData.merchant_address.number, 10),
|
|
115
|
+
};
|
|
116
|
+
if (params.from) {
|
|
117
|
+
from = params.from;
|
|
118
|
+
originZip = params.from.zip;
|
|
119
|
+
} else if (Array.isArray(appData.warehouses) && appData.warehouses.length) {
|
|
120
|
+
for (let i = 0; i < appData.warehouses.length; i++) {
|
|
121
|
+
const warehouse = appData.warehouses[i];
|
|
122
|
+
if (warehouse && warehouse.zip && checkZipCode(warehouse)) {
|
|
123
|
+
const { code } = warehouse;
|
|
124
|
+
if (!code) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
if (
|
|
128
|
+
params.items
|
|
129
|
+
&& params.items.find(({ quantity, inventory }) => {
|
|
130
|
+
return inventory && Object.keys(inventory).length
|
|
131
|
+
&& !(inventory[code] >= quantity);
|
|
132
|
+
})
|
|
133
|
+
) {
|
|
134
|
+
// item not available on current warehouse
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
originZip = warehouse.zip;
|
|
138
|
+
if (warehouse.posting_deadline) {
|
|
139
|
+
postingDeadline = warehouse.posting_deadline;
|
|
140
|
+
}
|
|
141
|
+
if (warehouse && warehouse.street) {
|
|
142
|
+
['zip', 'street', 'number', 'complement', 'borough', 'city', 'province_code']
|
|
143
|
+
.forEach((prop) => {
|
|
144
|
+
if (warehouse[prop]) {
|
|
145
|
+
from[prop] = warehouse[prop];
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/*
|
|
150
|
+
if (warehouse.doc) {
|
|
151
|
+
docNumber = warehouse.doc
|
|
152
|
+
}
|
|
153
|
+
*/
|
|
154
|
+
warehouseCode = code;
|
|
155
|
+
warehouseConfig = warehouse;
|
|
156
|
+
}
|
|
102
157
|
}
|
|
103
158
|
}
|
|
159
|
+
if (!originZip) {
|
|
160
|
+
originZip = appData.merchant_address.postal_code;
|
|
161
|
+
}
|
|
162
|
+
originZip = typeof originZip === 'string' ? originZip.replace(/\D/g, '') : '';
|
|
104
163
|
|
|
105
164
|
let schema;
|
|
106
165
|
try {
|
|
107
|
-
schema = newShipment(appData, params);
|
|
166
|
+
schema = newShipment(appData, { originZip, ...params });
|
|
108
167
|
} catch (err) {
|
|
109
|
-
logger.
|
|
168
|
+
logger.warn('Failed parsing shipment');
|
|
169
|
+
logger.error(err);
|
|
110
170
|
return {
|
|
111
171
|
status: 400,
|
|
112
172
|
error: 'CALCULATE_ERR',
|
|
@@ -114,10 +174,15 @@ export default async ({ params, application }) => {
|
|
|
114
174
|
};
|
|
115
175
|
}
|
|
116
176
|
|
|
117
|
-
// calculate the shipment
|
|
118
177
|
try {
|
|
119
|
-
const data = await
|
|
120
|
-
|
|
178
|
+
const { data } = await meAxios.post('/shipment/calculate', schema);
|
|
179
|
+
|
|
180
|
+
if (!data.length) {
|
|
181
|
+
logger.warn('Empty ME calculate result', {
|
|
182
|
+
data,
|
|
183
|
+
schema,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
121
186
|
|
|
122
187
|
let errorMsg;
|
|
123
188
|
data.forEach((service) => {
|
|
@@ -125,11 +190,13 @@ export default async ({ params, application }) => {
|
|
|
125
190
|
// check if service is not disabled
|
|
126
191
|
if (Array.isArray(appData.unavailable_for)) {
|
|
127
192
|
for (let i = 0; i < appData.unavailable_for.length; i++) {
|
|
128
|
-
if (
|
|
193
|
+
if (
|
|
194
|
+
appData.unavailable_for[i] && appData.unavailable_for[i].zip_range
|
|
129
195
|
&& appData.unavailable_for[i].service_name
|
|
130
196
|
) {
|
|
131
197
|
const unavailable = appData.unavailable_for[i];
|
|
132
|
-
if (
|
|
198
|
+
if (
|
|
199
|
+
intZipCode >= unavailable.zip_range.min
|
|
133
200
|
&& intZipCode <= unavailable.zip_range.max
|
|
134
201
|
&& matchService(unavailable, service.name)
|
|
135
202
|
) {
|
|
@@ -141,16 +208,14 @@ export default async ({ params, application }) => {
|
|
|
141
208
|
|
|
142
209
|
if (!service.error && isAvailable) {
|
|
143
210
|
// mounte response body
|
|
144
|
-
const { to } = params;
|
|
145
|
-
const from = {
|
|
146
|
-
zip: appData.merchant_address.postal_code,
|
|
147
|
-
street: appData.merchant_address.address,
|
|
148
|
-
number: parseInt(appData.merchant_address.number, 10),
|
|
149
|
-
};
|
|
150
|
-
|
|
151
211
|
const shippingLine = {
|
|
152
|
-
|
|
153
|
-
|
|
212
|
+
from: {
|
|
213
|
+
...params.from,
|
|
214
|
+
...appData.from,
|
|
215
|
+
...from,
|
|
216
|
+
zip: originZip,
|
|
217
|
+
},
|
|
218
|
+
to: params.to,
|
|
154
219
|
own_hand: service.additional_services.own_hand,
|
|
155
220
|
receipt: service.additional_services.receipt,
|
|
156
221
|
discount: 0,
|
|
@@ -162,7 +227,9 @@ export default async ({ params, application }) => {
|
|
|
162
227
|
posting_deadline: {
|
|
163
228
|
days: 3,
|
|
164
229
|
...appData.posting_deadline,
|
|
230
|
+
...postingDeadline,
|
|
165
231
|
},
|
|
232
|
+
warehouse_code: warehouseCode,
|
|
166
233
|
custom_fields: [
|
|
167
234
|
{
|
|
168
235
|
field: 'by_melhor_envio',
|
|
@@ -173,7 +240,6 @@ export default async ({ params, application }) => {
|
|
|
173
240
|
|
|
174
241
|
const servicePkg = (service.packages && service.packages[0])
|
|
175
242
|
|| (service.volumes && service.volumes[0]);
|
|
176
|
-
|
|
177
243
|
if (servicePkg) {
|
|
178
244
|
shippingLine.package = {};
|
|
179
245
|
if (servicePkg.dimensions) {
|
|
@@ -197,10 +263,11 @@ export default async ({ params, application }) => {
|
|
|
197
263
|
}
|
|
198
264
|
}
|
|
199
265
|
|
|
200
|
-
|
|
266
|
+
const jadlogAgency = warehouseConfig.jadlog_agency || appData.jadlog_agency;
|
|
267
|
+
if (jadlogAgency) {
|
|
201
268
|
shippingLine.custom_fields.push({
|
|
202
269
|
field: 'jadlog_agency',
|
|
203
|
-
value: String(
|
|
270
|
+
value: String(jadlogAgency),
|
|
204
271
|
});
|
|
205
272
|
}
|
|
206
273
|
|
|
@@ -218,14 +285,20 @@ export default async ({ params, application }) => {
|
|
|
218
285
|
}
|
|
219
286
|
// update total price
|
|
220
287
|
shippingLine.total_price += appData.additional_price;
|
|
288
|
+
if (shippingLine.total_price < 0) {
|
|
289
|
+
shippingLine.total_price = 0;
|
|
290
|
+
}
|
|
221
291
|
}
|
|
222
292
|
|
|
223
|
-
// search for discount by shipping rule
|
|
293
|
+
// search for discount or fixed value by shipping rule
|
|
224
294
|
if (Array.isArray(shippingRules)) {
|
|
225
295
|
for (let i = 0; i < shippingRules.length; i++) {
|
|
226
296
|
const rule = shippingRules[i];
|
|
227
|
-
if (
|
|
228
|
-
|
|
297
|
+
if (
|
|
298
|
+
rule
|
|
299
|
+
&& matchService(rule, service.name)
|
|
300
|
+
&& checkZipCode(rule)
|
|
301
|
+
&& !(rule.min_amount > params.subtotal)
|
|
229
302
|
) {
|
|
230
303
|
// valid shipping rule
|
|
231
304
|
if (rule.free_shipping) {
|
|
@@ -237,24 +310,30 @@ export default async ({ params, application }) => {
|
|
|
237
310
|
if (rule.discount.percentage) {
|
|
238
311
|
discountValue *= (shippingLine.total_price / 100);
|
|
239
312
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
shippingLine.total_price
|
|
313
|
+
if (discountValue) {
|
|
314
|
+
shippingLine.discount += discountValue;
|
|
315
|
+
shippingLine.total_price -= discountValue;
|
|
316
|
+
if (shippingLine.total_price < 0) {
|
|
317
|
+
shippingLine.total_price = 0;
|
|
318
|
+
}
|
|
244
319
|
}
|
|
245
320
|
break;
|
|
321
|
+
} else if (rule.fixed) {
|
|
322
|
+
shippingLine.total_price = rule.fixed;
|
|
246
323
|
}
|
|
247
324
|
}
|
|
248
325
|
}
|
|
249
326
|
}
|
|
250
327
|
|
|
251
|
-
let label =
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
328
|
+
let label = appData.prefix_labels === true
|
|
329
|
+
? `ME ${service.name}`
|
|
330
|
+
: service.name;
|
|
331
|
+
if (Array.isArray(appData.services) && appData.services.length) {
|
|
332
|
+
const matchedService = appData.services.find((_service) => {
|
|
333
|
+
return _service && matchService(_service, label);
|
|
255
334
|
});
|
|
256
|
-
if (
|
|
257
|
-
label =
|
|
335
|
+
if (matchedService?.label) {
|
|
336
|
+
label = matchedService.label;
|
|
258
337
|
}
|
|
259
338
|
}
|
|
260
339
|
|
|
@@ -271,21 +350,31 @@ export default async ({ params, application }) => {
|
|
|
271
350
|
}
|
|
272
351
|
});
|
|
273
352
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
&& response.shipping_services
|
|
353
|
+
if (
|
|
354
|
+
appData.sort_services
|
|
355
|
+
&& Array.isArray(response.shipping_services)
|
|
356
|
+
&& response.shipping_services.length
|
|
357
|
+
) {
|
|
277
358
|
response.shipping_services.sort(sortServicesBy(appData.sort_services));
|
|
278
359
|
}
|
|
360
|
+
if (appData.max_services > 0) {
|
|
361
|
+
response.shipping_services = response.shipping_services
|
|
362
|
+
.slice(0, appData.max_services);
|
|
363
|
+
}
|
|
279
364
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
365
|
+
if (
|
|
366
|
+
!Array.isArray(response.shipping_services)
|
|
367
|
+
|| !response.shipping_services.length
|
|
368
|
+
) {
|
|
369
|
+
if (errorMsg) {
|
|
370
|
+
return {
|
|
371
|
+
status: 400,
|
|
372
|
+
error: 'CALCULATE_ERR_MSG',
|
|
373
|
+
message: errorMsg,
|
|
374
|
+
};
|
|
286
375
|
}
|
|
287
|
-
|
|
288
|
-
|
|
376
|
+
}
|
|
377
|
+
return response;
|
|
289
378
|
} catch (err) {
|
|
290
379
|
let message = 'Unexpected Error Try Later';
|
|
291
380
|
if (err.response && err.isAxiosError) {
|
|
@@ -295,7 +384,11 @@ export default async ({ params, application }) => {
|
|
|
295
384
|
message = 'Melhor Envio offline no momento';
|
|
296
385
|
isAppError = false;
|
|
297
386
|
} else if (data) {
|
|
298
|
-
if (
|
|
387
|
+
if (
|
|
388
|
+
data.errors
|
|
389
|
+
&& typeof data.errors === 'object'
|
|
390
|
+
&& Object.keys(data.errors).length
|
|
391
|
+
) {
|
|
299
392
|
const errorKeys = Object.keys(data.errors);
|
|
300
393
|
for (let i = 0; i < errorKeys.length; i++) {
|
|
301
394
|
const meError = data.errors[errorKeys[i]];
|
|
@@ -320,27 +413,25 @@ export default async ({ params, application }) => {
|
|
|
320
413
|
|
|
321
414
|
if (isAppError) {
|
|
322
415
|
// debug unexpected error
|
|
323
|
-
logger.error('
|
|
416
|
+
logger.error('CalculateShippingErr:', {
|
|
324
417
|
status,
|
|
325
418
|
data,
|
|
326
419
|
config,
|
|
327
|
-
}
|
|
420
|
+
});
|
|
328
421
|
}
|
|
329
422
|
} else {
|
|
330
423
|
errorHandling(err);
|
|
331
424
|
}
|
|
332
|
-
|
|
333
425
|
return {
|
|
334
426
|
status: 409,
|
|
335
427
|
error: 'CALCULATE_ERR',
|
|
336
428
|
message,
|
|
337
429
|
};
|
|
338
430
|
}
|
|
339
|
-
} else {
|
|
340
|
-
return {
|
|
341
|
-
status: 400,
|
|
342
|
-
error: 'CALCULATE_EMPTY_CART',
|
|
343
|
-
message: 'Cannot calculate shipping without cart items',
|
|
344
|
-
};
|
|
345
431
|
}
|
|
432
|
+
return {
|
|
433
|
+
status: 400,
|
|
434
|
+
error: 'CALCULATE_EMPTY_CART',
|
|
435
|
+
message: 'Cannot calculate shipping without cart items',
|
|
436
|
+
};
|
|
346
437
|
};
|
|
@@ -39,7 +39,7 @@ export default (err) => {
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
// debug unexpected response
|
|
42
|
-
logger.error(
|
|
42
|
+
logger.error(err);
|
|
43
43
|
} else if (err.appErrorLog && !err.appErrorLogged) {
|
|
44
44
|
// cannot log to app hidden data
|
|
45
45
|
// debug app log error
|
|
@@ -56,7 +56,7 @@ export default (err) => {
|
|
|
56
56
|
originalRequest: JSON.stringify(err.config),
|
|
57
57
|
logRequest: JSON.stringify(config),
|
|
58
58
|
};
|
|
59
|
-
logger.error(
|
|
59
|
+
logger.error(error);
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
/* eslint-disable no-restricted-syntax, guard-for-in */
|
|
2
|
+
|
|
3
|
+
export const convertDimensions = (dimension) => {
|
|
2
4
|
let dimensionValue = 0;
|
|
3
5
|
if (dimension && dimension.unit) {
|
|
4
6
|
switch (dimension.unit) {
|
|
@@ -12,19 +14,24 @@ const convertDimensions = (dimension) => {
|
|
|
12
14
|
dimensionValue = dimension.value / 10;
|
|
13
15
|
break;
|
|
14
16
|
default:
|
|
15
|
-
break;
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
19
|
return dimensionValue;
|
|
19
20
|
};
|
|
20
21
|
|
|
21
|
-
const newShipment = (appConfig, params) => {
|
|
22
|
+
export const newShipment = (appConfig, params) => {
|
|
22
23
|
const calculate = {};
|
|
23
|
-
const { to, items } = params;
|
|
24
|
+
const { originZip, to, items } = params;
|
|
24
25
|
|
|
25
26
|
// https://docs.menv.io/?version=latest#9bbc2460-7786-4871-a0cc-2ae3cd54333e
|
|
26
27
|
// creates a new model for calculating freight in the Melhor Envio API.
|
|
27
28
|
calculate.from = appConfig.merchant_address;
|
|
29
|
+
if (originZip) {
|
|
30
|
+
calculate.from = {
|
|
31
|
+
postal_code: originZip,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
const useCubicWeight = appConfig.use_cubic_weight;
|
|
28
35
|
|
|
29
36
|
calculate.to = {
|
|
30
37
|
postal_code: to.zip,
|
|
@@ -40,10 +47,15 @@ const newShipment = (appConfig, params) => {
|
|
|
40
47
|
|
|
41
48
|
calculate.products = [];
|
|
42
49
|
|
|
50
|
+
let finalCubicWeight = 0;
|
|
51
|
+
let finalPhysicalWeight = 0;
|
|
52
|
+
let finalWeight = 0;
|
|
53
|
+
let cartSubtotal = 0;
|
|
43
54
|
items.forEach((item) => {
|
|
44
55
|
const { dimensions, weight, quantity } = item;
|
|
45
56
|
// sum physical weight
|
|
46
57
|
let physicalWeight = 0;
|
|
58
|
+
let cubicWeight = 0;
|
|
47
59
|
if (weight && weight.value) {
|
|
48
60
|
switch (weight.unit) {
|
|
49
61
|
case 'kg':
|
|
@@ -56,10 +68,57 @@ const newShipment = (appConfig, params) => {
|
|
|
56
68
|
physicalWeight = weight.value / 1000000;
|
|
57
69
|
break;
|
|
58
70
|
default:
|
|
59
|
-
break;
|
|
60
71
|
}
|
|
61
72
|
}
|
|
62
73
|
|
|
74
|
+
finalPhysicalWeight += (quantity * physicalWeight);
|
|
75
|
+
cartSubtotal += (quantity * (item.final_price || item.price));
|
|
76
|
+
|
|
77
|
+
const cmDimensions = {};
|
|
78
|
+
const sumDimensions = {};
|
|
79
|
+
|
|
80
|
+
if (dimensions && useCubicWeight) {
|
|
81
|
+
for (const side in dimensions) {
|
|
82
|
+
const dimension = dimensions[side];
|
|
83
|
+
if (dimension && dimension.value) {
|
|
84
|
+
switch (dimension.unit) {
|
|
85
|
+
case 'm':
|
|
86
|
+
cmDimensions[side] = dimension.value * 100;
|
|
87
|
+
break;
|
|
88
|
+
case 'mm':
|
|
89
|
+
cmDimensions[side] = dimension.value / 10;
|
|
90
|
+
break;
|
|
91
|
+
default:
|
|
92
|
+
cmDimensions[side] = dimension.value;
|
|
93
|
+
}
|
|
94
|
+
// add/sum current side to final dimensions object
|
|
95
|
+
if (cmDimensions[side]) {
|
|
96
|
+
sumDimensions[side] = sumDimensions[side]
|
|
97
|
+
? sumDimensions[side] + cmDimensions[side]
|
|
98
|
+
: cmDimensions[side];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
for (const sideCubic in sumDimensions) {
|
|
104
|
+
if (sumDimensions[sideCubic]) {
|
|
105
|
+
cubicWeight = cubicWeight > 0
|
|
106
|
+
? cubicWeight * sumDimensions[sideCubic]
|
|
107
|
+
: sumDimensions[sideCubic];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (cubicWeight > 0) {
|
|
111
|
+
cubicWeight /= 6000;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (useCubicWeight && physicalWeight > 0) {
|
|
116
|
+
finalCubicWeight += (quantity * cubicWeight);
|
|
117
|
+
const correctedWeight = cubicWeight < 5 || physicalWeight > quantity
|
|
118
|
+
? physicalWeight : cubicWeight;
|
|
119
|
+
finalWeight += (quantity * correctedWeight);
|
|
120
|
+
}
|
|
121
|
+
|
|
63
122
|
calculate.products.push({
|
|
64
123
|
id: item.product_id,
|
|
65
124
|
weight: physicalWeight,
|
|
@@ -71,10 +130,23 @@ const newShipment = (appConfig, params) => {
|
|
|
71
130
|
});
|
|
72
131
|
});
|
|
73
132
|
|
|
133
|
+
if (useCubicWeight && finalCubicWeight > 0) {
|
|
134
|
+
const num = Math.cbrt(finalCubicWeight);
|
|
135
|
+
const cubicDimension = Math.round(num * 100) / 100;
|
|
136
|
+
delete calculate.products;
|
|
137
|
+
calculate.volumes = [{
|
|
138
|
+
weight: finalWeight || finalPhysicalWeight || 0.5,
|
|
139
|
+
width: cubicDimension || 10,
|
|
140
|
+
height: cubicDimension || 10,
|
|
141
|
+
length: cubicDimension || 10,
|
|
142
|
+
insurance_value: cartSubtotal,
|
|
143
|
+
}];
|
|
144
|
+
}
|
|
145
|
+
|
|
74
146
|
return calculate;
|
|
75
147
|
};
|
|
76
148
|
|
|
77
|
-
const matchService = (service, name) => {
|
|
149
|
+
export const matchService = (service, name) => {
|
|
78
150
|
const fields = ['service_name', 'service_code'];
|
|
79
151
|
for (let i = 0; i < fields.length; i++) {
|
|
80
152
|
if (service[fields[i]]) {
|
|
@@ -84,36 +156,25 @@ const matchService = (service, name) => {
|
|
|
84
156
|
return true;
|
|
85
157
|
};
|
|
86
158
|
|
|
87
|
-
const sortServicesBy = (by) => {
|
|
159
|
+
export const sortServicesBy = (by) => {
|
|
88
160
|
switch (by) {
|
|
89
161
|
case 'Maior preço':
|
|
90
|
-
return
|
|
162
|
+
return (a, b) => {
|
|
91
163
|
return a.shipping_line.total_price < b.shipping_line.total_price;
|
|
92
164
|
};
|
|
93
165
|
case 'Menor preço':
|
|
94
|
-
return
|
|
166
|
+
return (a, b) => {
|
|
95
167
|
return a.shipping_line.total_price > b.shipping_line.total_price;
|
|
96
168
|
};
|
|
97
169
|
case 'Maior prazo de entrega':
|
|
98
|
-
return
|
|
170
|
+
return (a, b) => {
|
|
99
171
|
return a.shipping_line.delivery_time.days < b.shipping_line.delivery_time.days;
|
|
100
172
|
};
|
|
101
173
|
case 'Menor prazo de entrega':
|
|
102
|
-
return
|
|
174
|
+
return (a, b) => {
|
|
103
175
|
return a.shipping_line.delivery_time.days > b.shipping_line.delivery_time.days;
|
|
104
176
|
};
|
|
105
177
|
default:
|
|
106
|
-
break;
|
|
107
178
|
}
|
|
108
|
-
|
|
109
|
-
// default
|
|
110
|
-
return function sort(a, b) {
|
|
111
|
-
return a.shipping_line.total_price > b.shipping_line.total_price;
|
|
112
|
-
};
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
export {
|
|
116
|
-
newShipment,
|
|
117
|
-
matchService,
|
|
118
|
-
sortServicesBy,
|
|
179
|
+
return () => 0;
|
|
119
180
|
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
|
|
3
|
+
export const getMEAxios = async () => {
|
|
4
|
+
const { MELHORENVIO_TOKEN, MELHORENVIO_ENV } = process.env;
|
|
5
|
+
const headers = {
|
|
6
|
+
'Authorization': `Bearer ${MELHORENVIO_TOKEN}`,
|
|
7
|
+
};
|
|
8
|
+
const baseURL = MELHORENVIO_ENV === 'sandbox'
|
|
9
|
+
? 'https://sandbox.melhorenvio.com.br/api/v2/me'
|
|
10
|
+
: 'https://melhorenvio.com.br/api/v2/me';
|
|
11
|
+
return axios.create({
|
|
12
|
+
baseURL,
|
|
13
|
+
headers,
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export default getMEAxios;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cloudcommerce/app-melhor-envio",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "2.48.
|
|
4
|
+
"version": "2.48.19",
|
|
5
5
|
"description": "e-com.plus Cloud Commerce app to integrate Melhor Envio",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"exports": {
|
|
@@ -26,15 +26,15 @@
|
|
|
26
26
|
},
|
|
27
27
|
"homepage": "https://github.com/ecomplus/cloud-commerce/tree/main/packages/apps/melhor-envio#readme",
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"axios": "^1.
|
|
29
|
+
"axios": "^1.11.0",
|
|
30
30
|
"firebase-admin": "^13.4.0",
|
|
31
31
|
"firebase-functions": "^6.4.0",
|
|
32
|
-
"@cloudcommerce/api": "2.48.
|
|
33
|
-
"@cloudcommerce/firebase": "2.48.
|
|
32
|
+
"@cloudcommerce/api": "2.48.19",
|
|
33
|
+
"@cloudcommerce/firebase": "2.48.19"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@firebase/app-types": "^0.9.3",
|
|
37
|
-
"@cloudcommerce/types": "2.48.
|
|
37
|
+
"@cloudcommerce/types": "2.48.19"
|
|
38
38
|
},
|
|
39
39
|
"scripts": {
|
|
40
40
|
"build": "bash ../../../scripts/build-lib.sh"
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import axios from 'axios';
|
|
2
|
-
|
|
3
|
-
export default (accessToken, isSandbox) => {
|
|
4
|
-
const headers = {
|
|
5
|
-
Accept: 'application/json',
|
|
6
|
-
'Content-Type': 'application/json',
|
|
7
|
-
Authorization: `Bearer ${accessToken}`,
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
return axios.create({
|
|
11
|
-
baseURL: `https://${isSandbox ? 'sandbox.' : ''}melhorenvio.com.br/api/v2/me`,
|
|
12
|
-
headers,
|
|
13
|
-
});
|
|
14
|
-
};
|