@cloudcommerce/app-melhor-envio 2.48.18 → 2.48.20
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 +154 -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":"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"}
|
|
@@ -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);
|
|
102
104
|
}
|
|
103
105
|
}
|
|
104
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
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (!originZip) {
|
|
160
|
+
originZip = appData.merchant_address.postal_code;
|
|
161
|
+
}
|
|
162
|
+
originZip = typeof originZip === 'string' ? originZip.replace(/\D/g, '') : '';
|
|
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,8 @@ export default async ({ params, application }) => {
|
|
|
114
174
|
};
|
|
115
175
|
}
|
|
116
176
|
|
|
117
|
-
// calculate the shipment
|
|
118
177
|
try {
|
|
119
|
-
const data = await
|
|
120
|
-
.post('/shipment/calculate', schema);
|
|
178
|
+
const { data } = await meAxios.post('/shipment/calculate', schema);
|
|
121
179
|
|
|
122
180
|
let errorMsg;
|
|
123
181
|
data.forEach((service) => {
|
|
@@ -125,11 +183,13 @@ export default async ({ params, application }) => {
|
|
|
125
183
|
// check if service is not disabled
|
|
126
184
|
if (Array.isArray(appData.unavailable_for)) {
|
|
127
185
|
for (let i = 0; i < appData.unavailable_for.length; i++) {
|
|
128
|
-
if (
|
|
186
|
+
if (
|
|
187
|
+
appData.unavailable_for[i] && appData.unavailable_for[i].zip_range
|
|
129
188
|
&& appData.unavailable_for[i].service_name
|
|
130
189
|
) {
|
|
131
190
|
const unavailable = appData.unavailable_for[i];
|
|
132
|
-
if (
|
|
191
|
+
if (
|
|
192
|
+
intZipCode >= unavailable.zip_range.min
|
|
133
193
|
&& intZipCode <= unavailable.zip_range.max
|
|
134
194
|
&& matchService(unavailable, service.name)
|
|
135
195
|
) {
|
|
@@ -141,16 +201,14 @@ export default async ({ params, application }) => {
|
|
|
141
201
|
|
|
142
202
|
if (!service.error && isAvailable) {
|
|
143
203
|
// 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
204
|
const shippingLine = {
|
|
152
|
-
|
|
153
|
-
|
|
205
|
+
from: {
|
|
206
|
+
...params.from,
|
|
207
|
+
...appData.from,
|
|
208
|
+
...from,
|
|
209
|
+
zip: originZip,
|
|
210
|
+
},
|
|
211
|
+
to: params.to,
|
|
154
212
|
own_hand: service.additional_services.own_hand,
|
|
155
213
|
receipt: service.additional_services.receipt,
|
|
156
214
|
discount: 0,
|
|
@@ -162,7 +220,9 @@ export default async ({ params, application }) => {
|
|
|
162
220
|
posting_deadline: {
|
|
163
221
|
days: 3,
|
|
164
222
|
...appData.posting_deadline,
|
|
223
|
+
...postingDeadline,
|
|
165
224
|
},
|
|
225
|
+
warehouse_code: warehouseCode,
|
|
166
226
|
custom_fields: [
|
|
167
227
|
{
|
|
168
228
|
field: 'by_melhor_envio',
|
|
@@ -173,7 +233,6 @@ export default async ({ params, application }) => {
|
|
|
173
233
|
|
|
174
234
|
const servicePkg = (service.packages && service.packages[0])
|
|
175
235
|
|| (service.volumes && service.volumes[0]);
|
|
176
|
-
|
|
177
236
|
if (servicePkg) {
|
|
178
237
|
shippingLine.package = {};
|
|
179
238
|
if (servicePkg.dimensions) {
|
|
@@ -197,10 +256,11 @@ export default async ({ params, application }) => {
|
|
|
197
256
|
}
|
|
198
257
|
}
|
|
199
258
|
|
|
200
|
-
|
|
259
|
+
const jadlogAgency = warehouseConfig.jadlog_agency || appData.jadlog_agency;
|
|
260
|
+
if (jadlogAgency) {
|
|
201
261
|
shippingLine.custom_fields.push({
|
|
202
262
|
field: 'jadlog_agency',
|
|
203
|
-
value: String(
|
|
263
|
+
value: String(jadlogAgency),
|
|
204
264
|
});
|
|
205
265
|
}
|
|
206
266
|
|
|
@@ -218,14 +278,20 @@ export default async ({ params, application }) => {
|
|
|
218
278
|
}
|
|
219
279
|
// update total price
|
|
220
280
|
shippingLine.total_price += appData.additional_price;
|
|
281
|
+
if (shippingLine.total_price < 0) {
|
|
282
|
+
shippingLine.total_price = 0;
|
|
283
|
+
}
|
|
221
284
|
}
|
|
222
285
|
|
|
223
|
-
// search for discount by shipping rule
|
|
286
|
+
// search for discount or fixed value by shipping rule
|
|
224
287
|
if (Array.isArray(shippingRules)) {
|
|
225
288
|
for (let i = 0; i < shippingRules.length; i++) {
|
|
226
289
|
const rule = shippingRules[i];
|
|
227
|
-
if (
|
|
228
|
-
|
|
290
|
+
if (
|
|
291
|
+
rule
|
|
292
|
+
&& matchService(rule, service.name)
|
|
293
|
+
&& checkZipCode(rule)
|
|
294
|
+
&& !(rule.min_amount > params.subtotal)
|
|
229
295
|
) {
|
|
230
296
|
// valid shipping rule
|
|
231
297
|
if (rule.free_shipping) {
|
|
@@ -237,24 +303,30 @@ export default async ({ params, application }) => {
|
|
|
237
303
|
if (rule.discount.percentage) {
|
|
238
304
|
discountValue *= (shippingLine.total_price / 100);
|
|
239
305
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
shippingLine.total_price
|
|
306
|
+
if (discountValue) {
|
|
307
|
+
shippingLine.discount += discountValue;
|
|
308
|
+
shippingLine.total_price -= discountValue;
|
|
309
|
+
if (shippingLine.total_price < 0) {
|
|
310
|
+
shippingLine.total_price = 0;
|
|
311
|
+
}
|
|
244
312
|
}
|
|
245
313
|
break;
|
|
314
|
+
} else if (rule.fixed) {
|
|
315
|
+
shippingLine.total_price = rule.fixed;
|
|
246
316
|
}
|
|
247
317
|
}
|
|
248
318
|
}
|
|
249
319
|
}
|
|
250
320
|
|
|
251
|
-
let label =
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
321
|
+
let label = appData.prefix_labels === true
|
|
322
|
+
? `ME ${service.name}`
|
|
323
|
+
: service.name;
|
|
324
|
+
if (Array.isArray(appData.services) && appData.services.length) {
|
|
325
|
+
const matchedService = appData.services.find((_service) => {
|
|
326
|
+
return _service && matchService(_service, label);
|
|
255
327
|
});
|
|
256
|
-
if (
|
|
257
|
-
label =
|
|
328
|
+
if (matchedService?.label) {
|
|
329
|
+
label = matchedService.label;
|
|
258
330
|
}
|
|
259
331
|
}
|
|
260
332
|
|
|
@@ -271,21 +343,35 @@ export default async ({ params, application }) => {
|
|
|
271
343
|
}
|
|
272
344
|
});
|
|
273
345
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
&& response.shipping_services
|
|
346
|
+
if (
|
|
347
|
+
appData.sort_services
|
|
348
|
+
&& Array.isArray(response.shipping_services)
|
|
349
|
+
&& response.shipping_services.length
|
|
350
|
+
) {
|
|
277
351
|
response.shipping_services.sort(sortServicesBy(appData.sort_services));
|
|
278
352
|
}
|
|
353
|
+
if (appData.max_services > 0) {
|
|
354
|
+
response.shipping_services = response.shipping_services
|
|
355
|
+
.slice(0, appData.max_services);
|
|
356
|
+
}
|
|
279
357
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
358
|
+
if (
|
|
359
|
+
!Array.isArray(response.shipping_services)
|
|
360
|
+
|| !response.shipping_services.length
|
|
361
|
+
) {
|
|
362
|
+
if (errorMsg) {
|
|
363
|
+
return {
|
|
364
|
+
status: 400,
|
|
365
|
+
error: 'CALCULATE_ERR_MSG',
|
|
366
|
+
message: errorMsg,
|
|
367
|
+
};
|
|
286
368
|
}
|
|
287
|
-
|
|
288
|
-
|
|
369
|
+
logger.warn('Empty ME calculate result', {
|
|
370
|
+
data,
|
|
371
|
+
schema,
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
return response;
|
|
289
375
|
} catch (err) {
|
|
290
376
|
let message = 'Unexpected Error Try Later';
|
|
291
377
|
if (err.response && err.isAxiosError) {
|
|
@@ -295,7 +381,11 @@ export default async ({ params, application }) => {
|
|
|
295
381
|
message = 'Melhor Envio offline no momento';
|
|
296
382
|
isAppError = false;
|
|
297
383
|
} else if (data) {
|
|
298
|
-
if (
|
|
384
|
+
if (
|
|
385
|
+
data.errors
|
|
386
|
+
&& typeof data.errors === 'object'
|
|
387
|
+
&& Object.keys(data.errors).length
|
|
388
|
+
) {
|
|
299
389
|
const errorKeys = Object.keys(data.errors);
|
|
300
390
|
for (let i = 0; i < errorKeys.length; i++) {
|
|
301
391
|
const meError = data.errors[errorKeys[i]];
|
|
@@ -320,27 +410,25 @@ export default async ({ params, application }) => {
|
|
|
320
410
|
|
|
321
411
|
if (isAppError) {
|
|
322
412
|
// debug unexpected error
|
|
323
|
-
logger.error('
|
|
413
|
+
logger.error('CalculateShippingErr:', {
|
|
324
414
|
status,
|
|
325
415
|
data,
|
|
326
416
|
config,
|
|
327
|
-
}
|
|
417
|
+
});
|
|
328
418
|
}
|
|
329
419
|
} else {
|
|
330
420
|
errorHandling(err);
|
|
331
421
|
}
|
|
332
|
-
|
|
333
422
|
return {
|
|
334
423
|
status: 409,
|
|
335
424
|
error: 'CALCULATE_ERR',
|
|
336
425
|
message,
|
|
337
426
|
};
|
|
338
427
|
}
|
|
339
|
-
} else {
|
|
340
|
-
return {
|
|
341
|
-
status: 400,
|
|
342
|
-
error: 'CALCULATE_EMPTY_CART',
|
|
343
|
-
message: 'Cannot calculate shipping without cart items',
|
|
344
|
-
};
|
|
345
428
|
}
|
|
429
|
+
return {
|
|
430
|
+
status: 400,
|
|
431
|
+
error: 'CALCULATE_EMPTY_CART',
|
|
432
|
+
message: 'Cannot calculate shipping without cart items',
|
|
433
|
+
};
|
|
346
434
|
};
|
|
@@ -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.20",
|
|
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.20",
|
|
33
|
+
"@cloudcommerce/firebase": "2.48.20"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@firebase/app-types": "^0.9.3",
|
|
37
|
-
"@cloudcommerce/types": "2.48.
|
|
37
|
+
"@cloudcommerce/types": "2.48.20"
|
|
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
|
-
};
|