From 42fed2490fe537b46a717eafaf1b1e4a5e0a08c8 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Tue, 18 Apr 2023 17:05:25 +0700 Subject: price tier --- src/pages/api/shop/search.js | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'src/pages/api') diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index 19b9655a..4a237d47 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -57,7 +57,12 @@ export default async function handler(req, res) { let result = await axios(process.env.SOLR_HOST + '/solr/product/select?' + parameter.join('&')) try { - result.data.response.products = productResponseMap(result.data.response.docs) + let { auth } = req.cookies + if (auth) auth = JSON.parse(auth) + result.data.response.products = productResponseMap( + result.data.response.docs, + auth?.pricelist || false + ) result.data.responseHeader.params.start = parseInt(result.data.responseHeader.params.start) result.data.responseHeader.params.rows = parseInt(result.data.responseHeader.params.rows) delete result.data.response.docs @@ -83,8 +88,19 @@ const escapeSolrQuery = (query) => { return escapedWords.join(' ') } -const productResponseMap = (products) => { +const productResponseMap = (products, pricelist) => { return products.map((product) => { + let priceDiscount = product.price_discount_f || 0 + let discount = product.discount_f || 0 + + if (pricelist) { + const pricelistDiscount = product?.[`price_${pricelist}_f`] || false + const pricelistDiscountPerc = product?.[`discount_${pricelist}_f`] || false + + if (pricelistDiscount && pricelistDiscount > 0) priceDiscount = pricelistDiscount + if (pricelistDiscountPerc && pricelistDiscountPerc > 0) discount = pricelistDiscountPerc + } + let productMapped = { id: product.product_id_i || '', image: product.image_s || '', @@ -92,8 +108,8 @@ const productResponseMap = (products) => { name: product.name_s || '', lowestPrice: { price: product.price_f || 0, - priceDiscount: product.price_discount_f || 0, - discountPercentage: product.discount_f || 0 + priceDiscount: priceDiscount, + discountPercentage: discount }, variantTotal: product.variant_total_i || 0, stockTotal: product.stock_total_f || 0, -- cgit v1.2.3 From 5d8ad078bdc735e708654e278b226868dc3bc403 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Thu, 27 Apr 2023 16:45:05 +0700 Subject: flash sale mapping, mobile flash sale --- src/pages/api/shop/search.js | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) (limited to 'src/pages/api') diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index 4a237d47..404da1b3 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -43,10 +43,17 @@ export default async function handler(req, res) { 'qf=name_s', `start=${offset}`, `rows=${limit}`, - `sort=${paramOrderBy}`, - `fq=price_discount_f:[${priceFrom == '' ? '*' : priceFrom} TO ${priceTo == '' ? '*' : priceTo}]` + `sort=${paramOrderBy}` ] + if (priceFrom > 0 || priceTo > 0) { + parameter.push( + `fq=price_discount_f:[${priceFrom == '' ? '*' : priceFrom} TO ${ + priceTo == '' ? '*' : priceTo + }]` + ) + } + if (brand) parameter.push(`fq=manufacture_name:${brand}`) if (category) parameter.push(`fq=category_name:${category}`) @@ -90,15 +97,23 @@ const escapeSolrQuery = (query) => { const productResponseMap = (products, pricelist) => { return products.map((product) => { + let price = product.price_f || 0 let priceDiscount = product.price_discount_f || 0 - let discount = product.discount_f || 0 + let discountPercentage = product.discount_f || 0 if (pricelist) { const pricelistDiscount = product?.[`price_${pricelist}_f`] || false const pricelistDiscountPerc = product?.[`discount_${pricelist}_f`] || false - + if (pricelistDiscount && pricelistDiscount > 0) priceDiscount = pricelistDiscount - if (pricelistDiscountPerc && pricelistDiscountPerc > 0) discount = pricelistDiscountPerc + if (pricelistDiscountPerc && pricelistDiscountPerc > 0) + discountPercentage = pricelistDiscountPerc + } + + if (product?.flashsale_id_i > 0) { + price = product?.flashsale_base_price_f || 0 + priceDiscount = product?.flashsale_price_f || 0 + discountPercentage = product?.flashsale_discount_f || 0 } let productMapped = { @@ -106,16 +121,16 @@ const productResponseMap = (products, pricelist) => { image: product.image_s || '', code: product.default_code_s || '', name: product.name_s || '', - lowestPrice: { - price: product.price_f || 0, - priceDiscount: priceDiscount, - discountPercentage: discount - }, + lowestPrice: { price, priceDiscount, discountPercentage }, variantTotal: product.variant_total_i || 0, stockTotal: product.stock_total_f || 0, weight: product.weight_f || 0, manufacture: {}, - categories: [] + categories: [], + flashSale: { + id: product?.flashsale_id_i, + name: product?.product?.flashsale_name_s + } } if (product.manufacture_id_i && product.manufacture_name_s) { -- cgit v1.2.3 From 22afd4cf502a4dbd7bf68308cd92443545336645 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Fri, 28 Apr 2023 10:51:17 +0700 Subject: search spell when not found --- src/pages/api/shop/spell.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/pages/api/shop/spell.js (limited to 'src/pages/api') diff --git a/src/pages/api/shop/spell.js b/src/pages/api/shop/spell.js new file mode 100644 index 00000000..634adb50 --- /dev/null +++ b/src/pages/api/shop/spell.js @@ -0,0 +1,19 @@ +import axios from 'axios' + +export default async function handler(req, res) { + const { q = '' } = req.query + + let result = await axios( + process.env.SOLR_HOST + + `/solr/product/spell?indent=true&q.op=AND&q=${q}` + ) + + try { + res.status(200).json(result.data) + } catch (error) { + res.status(400).json({ + numFound: 0, + suggestions: [] + }) + } +} -- cgit v1.2.3 From e02f6630910bb7dbecff0aa9eec937b9c02f1f52 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Fri, 28 Apr 2023 11:44:51 +0700 Subject: fix checkout --- src/pages/api/shop/midtrans-payment.js | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) (limited to 'src/pages/api') diff --git a/src/pages/api/shop/midtrans-payment.js b/src/pages/api/shop/midtrans-payment.js index 1772e9e0..6843c688 100644 --- a/src/pages/api/shop/midtrans-payment.js +++ b/src/pages/api/shop/midtrans-payment.js @@ -22,6 +22,7 @@ export default async function handler(req, res) { {}, { Token: auth.token } ) + if (!transaction?.id) { return res.status(400).json({ error: 'No Data' }) } @@ -48,7 +49,7 @@ export default async function handler(req, res) { const parameter = { transaction_details: { order_id: transaction.name?.replaceAll('/', '-'), - gross_amount: transaction.amountTotal + gross_amount: Math.floor(transaction.amountTotal) }, credit_card: { secure: true @@ -57,19 +58,11 @@ export default async function handler(req, res) { first_name: transaction.address.customer.name, email: transaction.address.customer.email || '', phone: transaction.address.customer.phone || '', - billing_address: { - first_name: transaction.address.invoice.name, - email: transaction.address.invoice.email || '', - phone: transaction.address.invoice.phone || '' - }, - shipping_address: { - first_name: transaction.address.shipping.name, - email: transaction.address.shipping.email || '', - phone: transaction.address.shipping.phone || '' - } } } + console.log(parameter); + const midtransTransaction = await snap.createTransaction(parameter) return res.status(200).json(camelcaseObjectDeep(midtransTransaction)) -- cgit v1.2.3 From bfd9e65575eca673573429eb75a5ab3c21f53459 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Fri, 28 Apr 2023 13:44:14 +0700 Subject: delete console.log --- src/pages/api/shop/midtrans-payment.js | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/pages/api') diff --git a/src/pages/api/shop/midtrans-payment.js b/src/pages/api/shop/midtrans-payment.js index 6843c688..f7f29c7c 100644 --- a/src/pages/api/shop/midtrans-payment.js +++ b/src/pages/api/shop/midtrans-payment.js @@ -61,8 +61,6 @@ export default async function handler(req, res) { } } - console.log(parameter); - const midtransTransaction = await snap.createTransaction(parameter) return res.status(200).json(camelcaseObjectDeep(midtransTransaction)) -- cgit v1.2.3 From 2d9ef5366a35e658bc060d8ff8778dfaa6b68b03 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Fri, 28 Apr 2023 16:12:46 +0700 Subject: fix defat sort search --- src/pages/api/shop/search.js | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/pages/api') diff --git a/src/pages/api/shop/search.js b/src/pages/api/shop/search.js index 404da1b3..2e6764fd 100644 --- a/src/pages/api/shop/search.js +++ b/src/pages/api/shop/search.js @@ -29,6 +29,9 @@ export default async function handler(req, res) { case 'stock': paramOrderBy += 'stock_total_f DESC' break + default: + paramOrderBy += 'product_rating_f DESC, price_discount_f DESC' + break } let offset = (page - 1) * limit -- cgit v1.2.3 From 92b99c8d1d890766da55031f921601372d5b49a3 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Wed, 3 May 2023 09:14:02 +0700 Subject: default banner brand, whatsapp link, bug fix after transaction --- src/pages/api/shop/finish-checkout.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/pages/api') diff --git a/src/pages/api/shop/finish-checkout.js b/src/pages/api/shop/finish-checkout.js index 04e82118..9eaa36db 100644 --- a/src/pages/api/shop/finish-checkout.js +++ b/src/pages/api/shop/finish-checkout.js @@ -46,7 +46,7 @@ export default async function handler(req, res) { } } - const query = `name=${orderName.replaceAll('-', '/')}&limit=1` + const query = `name=${orderName.replaceAll('-', '/')}&limit=1&context=quotation` const searchTransaction = await odooApi( 'GET', `/api/v1/partner/${auth.partnerId}/sale_order?${query}`, -- cgit v1.2.3 From b4abdb00ef83aa824e8a05d5b75df48adb7b9629 Mon Sep 17 00:00:00 2001 From: Rafi Zadanly Date: Wed, 3 May 2023 10:38:52 +0700 Subject: semi dynamic page --- src/pages/api/shop/midtrans-payment.js | 4 ++-- src/pages/api/shop/spell.js | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) (limited to 'src/pages/api') diff --git a/src/pages/api/shop/midtrans-payment.js b/src/pages/api/shop/midtrans-payment.js index f7f29c7c..12aaa51f 100644 --- a/src/pages/api/shop/midtrans-payment.js +++ b/src/pages/api/shop/midtrans-payment.js @@ -22,7 +22,7 @@ export default async function handler(req, res) { {}, { Token: auth.token } ) - + if (!transaction?.id) { return res.status(400).json({ error: 'No Data' }) } @@ -57,7 +57,7 @@ export default async function handler(req, res) { customer_details: { first_name: transaction.address.customer.name, email: transaction.address.customer.email || '', - phone: transaction.address.customer.phone || '', + phone: transaction.address.customer.phone || '' } } diff --git a/src/pages/api/shop/spell.js b/src/pages/api/shop/spell.js index 634adb50..4c01765c 100644 --- a/src/pages/api/shop/spell.js +++ b/src/pages/api/shop/spell.js @@ -4,10 +4,9 @@ export default async function handler(req, res) { const { q = '' } = req.query let result = await axios( - process.env.SOLR_HOST + - `/solr/product/spell?indent=true&q.op=AND&q=${q}` + process.env.SOLR_HOST + `/solr/product/spell?indent=true&q.op=AND&q=${q}` ) - + try { res.status(200).json(result.data) } catch (error) { -- cgit v1.2.3