Skip to content

Commit 4c9aa72

Browse files
committed
fix: many (non-sense bugs) fixes on new orders handler
1 parent 4f22d7a commit 4c9aa72

File tree

7 files changed

+58
-51
lines changed

7 files changed

+58
-51
lines changed

functions/ecom.config.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,21 +75,21 @@ const app = {
7575
// 'DELETE', // Delete categories
7676
],
7777
customers: [
78-
'GET', // List/read customers
78+
'GET', // List/read customers
7979
// 'POST', // Create customers
8080
// 'PATCH', // Edit customers
8181
// 'PUT', // Overwrite customers
8282
// 'DELETE', // Delete customers
8383
],
8484
orders: [
85-
'GET', // List/read orders with public and private fields
85+
'GET', // List/read orders with public and private fields
8686
// 'POST', // Create orders
8787
// 'PATCH', // Edit orders
8888
// 'PUT', // Overwrite orders
8989
// 'DELETE', // Delete orders
9090
],
9191
carts: [
92-
'GET', // List all carts (no auth needed to read specific cart only)
92+
'GET', // List all carts (no auth needed to read specific cart only)
9393
// 'POST', // Create carts
9494
// 'PATCH', // Edit carts
9595
// 'PUT', // Overwrite carts

functions/lib/mailchimp/client.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
const axios = require('axios')
33

44
class Mailchimp {
5-
constructor(apiKey) {
6-
if (!/.+\-.+/.test(apiKey)) {
5+
constructor (apiKey) {
6+
if (!/.+-.+/.test(apiKey)) {
77
throw new Error('Missing or invalid apiKey: ' + apiKey)
88
}
99

@@ -14,7 +14,7 @@ class Mailchimp {
1414
password: apiKey
1515
},
1616
headers: {
17-
'User-Agent' : 'e-com.plus app-mailchimp'
17+
'User-Agent': 'e-com.plus app-mailchimp'
1818
}
1919
})
2020
}

functions/lib/mailchimp/new-carts.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/* eslint-disable promise/catch-or-return */
22
'use strict'
3+
34
const md5 = require('md5')
45
const Mailchimp = require('./client')
56
const parseTag = require('./parse-tag')
@@ -104,7 +105,7 @@ module.exports = (cartId, storeId, appSdk, configObj) => {
104105
}))
105106
}
106107
return Promise.all(promises).then(resp => {
107-
console.log('Created cart', cartBody._id, Array.isArray(resp) && resp.length && resp[0] && resp[0].status)
108+
console.log('Created cart', cartBody._id, Array.isArray(resp) && resp.length && resp[0] && resp[0].status)
108109
return resolve(resp)
109110
}).catch(err => {
110111
console.log(`#${storeId} error to create`, err.response.status, err.response.detail)

functions/lib/mailchimp/new-order.js

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
/* eslint-disable promise/catch-or-return */
22
'use strict'
3+
4+
const md5 = require('md5')
35
const { lineAddress } = require('@ecomplus/utils')
46
const Mailchimp = require('./client')
57
const parseTag = require('./parse-tag')
@@ -20,8 +22,8 @@ const financialStatus = (status) => {
2022
case 'refunded':
2123
case 'partially_refunded':
2224
return 'refunded'
23-
default: 'pending'
24-
break;
25+
default:
26+
return 'pending'
2527
}
2628
}
2729

@@ -33,8 +35,8 @@ const tagStatus = (status) => {
3335
return 'open_order'
3436
case 'cancelled':
3537
return 'canceled_order'
36-
default: 'pending'
37-
break;
38+
default:
39+
return 'pending'
3840
}
3941
}
4042

@@ -99,7 +101,7 @@ module.exports = (orderId, storeId, appSdk, configObj) => {
99101
const mailchimp = new Mailchimp(configObj.mc_api_key)
100102

101103
mailchimp.get({
102-
path: `/ecommerce/stores/${storeId}/orders/${orderId}`,
104+
path: `/ecommerce/stores/${storeId}/orders/${orderId}`
103105
}).then(resp => {
104106
console.log('get order', orderId, resp.data && resp.data.id)
105107
const promises = []
@@ -111,15 +113,21 @@ module.exports = (orderId, storeId, appSdk, configObj) => {
111113
if (tagName) {
112114
promises.push(mailchimp.post({
113115
path: `/lists/${configObj.mc_store_list}/members/${md5(customer.main_email)}/tags`,
114-
data: {"tags": [{"name": tagName, "status": "active"}]}
116+
data: {
117+
tags: [{
118+
name: tagName,
119+
status: 'active'
120+
}]
121+
}
115122
}))
116123
}
117124
return Promise.all(promises).then(response => {
118125
console.log(`Update order data: ${orderId} - ${storeId}`)
119126
return resolve(response)
120127
})
121128
})
122-
.catch(error => {
129+
130+
.catch(error => {
123131
// not found
124132
// not exist
125133
// create new order
@@ -135,17 +143,19 @@ module.exports = (orderId, storeId, appSdk, configObj) => {
135143
if (tagName) {
136144
promises.push(mailchimp.post({
137145
path: `/lists/${configObj.mc_store_list}/members/${md5(customer.main_email)}/tags`,
138-
data: {"tags": [{"name": tagName, "status": "active"}]}
146+
data: {
147+
tags: [{
148+
name: tagName,
149+
status: 'active'
150+
}]
151+
}
139152
}))
140153
}
141154
return Promise.all(promises).then(resp => {
142155
console.log(`Create new order ${orderBody._id} | #${storeId}`)
143156
return resolve(resp)
144-
}).catch(err => {
157+
}).catch(err => {
145158
const { response } = err
146-
if (storeId == 51292) {
147-
console.log('Error at store #51292', response.status, response.detail, JSON.stringify(response.errors))
148-
}
149159
if (response.data && response.data.errors) {
150160
console.error('[!] INFO order: ', storeId, JSON.stringify(response.data.errors, undefined, 2))
151161
}
@@ -155,7 +165,6 @@ module.exports = (orderId, storeId, appSdk, configObj) => {
155165
reject(err)
156166
})
157167
} else if (response.status && response.status === 400) {
158-
// email adress
159168
reject(response)
160169
}
161170
} else {

functions/lib/mailchimp/new-product.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ module.exports = (productBody, storeData, storeId, configObj, appSdk) => {
1414
// ecomplus product
1515
const product = response.data
1616
// mailchimp product model
17-
const { name, sku, variations, pictures } = product
17+
const { name, variations, pictures } = product
1818
let { homepage } = storeData
1919
if (!homepage) {
2020
homepage = `https://${storeData.domain}`
@@ -97,8 +97,6 @@ module.exports = (productBody, storeData, storeId, configObj, appSdk) => {
9797
})
9898

9999
.then((response) => {
100-
//const resp = `Update product ${productBody._id} | #${storeId}`
101-
//console.log(resp)
102100
return resolve(response.data)
103101
})
104102

@@ -113,7 +111,6 @@ module.exports = (productBody, storeData, storeId, configObj, appSdk) => {
113111
path: `/ecommerce/stores/${configObj.mc_store_id}/products`,
114112
data
115113
}).then(resp => {
116-
//console.log(`Create new product ${productBody._id} | #${storeId}`)
117114
return resolve(resp)
118115
}).catch(erro => {
119116
if (erro.response) {
@@ -146,4 +143,4 @@ module.exports = (productBody, storeData, storeId, configObj, appSdk) => {
146143
reject(error)
147144
})
148145
})
149-
}
146+
}
Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
module.exports = (resourceType, rules) => {
2-
let configStatus
3-
switch (resourceType) {
4-
case 'canceled_order':
5-
configStatus = 'pedido cancelado'
6-
break
7-
case 'open_cart':
8-
configStatus = 'carrinho aberto'
9-
break
10-
case 'closed_cart':
11-
configStatus = 'carrinho completado'
12-
break
13-
case 'open_order':
14-
configStatus = 'pedido aberto'
15-
break
16-
case 'closed_order':
17-
configStatus = 'pedido pago'
18-
break
19-
}
20-
const bestRule = rules.find(rule => rule.tag_type === configStatus)
21-
return bestRule && bestRule.tag_name || null
22-
}
2+
let configStatus
3+
switch (resourceType) {
4+
case 'canceled_order':
5+
configStatus = 'pedido cancelado'
6+
break
7+
case 'open_cart':
8+
configStatus = 'carrinho aberto'
9+
break
10+
case 'closed_cart':
11+
configStatus = 'carrinho completado'
12+
break
13+
case 'open_order':
14+
configStatus = 'pedido aberto'
15+
break
16+
case 'closed_order':
17+
configStatus = 'pedido pago'
18+
break
19+
}
20+
const bestRule = rules.find(rule => rule.tag_type === configStatus)
21+
return (bestRule && bestRule.tag_name) || null
22+
}

functions/routes/ecom/webhook.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,14 @@ exports.post = ({ appSdk }, req, res) => {
4141
if (cartId) {
4242
promise = newCart(cartId, storeId, appSdk, appData)
4343
}
44-
break;
44+
break
4545
case 'orders':
4646
const orderId = trigger.inserted_id || trigger.resource_id
4747
if (orderId) {
48+
console.log(`Sending new order ${orderId} for #${storeId}`)
4849
promise = newOrder(orderId, storeId, appSdk, appData)
4950
}
50-
break;
51+
break
5152
case 'products':
5253
promise = appSdk
5354
.apiRequest(storeId, '/stores/me')
@@ -56,7 +57,7 @@ exports.post = ({ appSdk }, req, res) => {
5657
const productBody = Object.assign({ _id: trigger.inserted_id }, trigger.body)
5758
return newProduct(productBody, storeData, storeId, appData, appSdk)
5859
})
59-
break;
60+
break
6061
case 'customers':
6162
// const customerBody = Object.assign({ _id: trigger.inserted_id }, trigger.body)
6263
// promise = newCustomer(customerBody, storeId, appData)
@@ -66,9 +67,8 @@ exports.post = ({ appSdk }, req, res) => {
6667
const customerData = response.data
6768
return newCustomer(customerData, storeId, appData)
6869
})
69-
break;
70+
break
7071
default:
71-
break;
7272
}
7373

7474
return promise

0 commit comments

Comments
 (0)