summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrisusilo48 <tri.susilo@altama.co.id>2024-09-20 15:11:26 +0700
committertrisusilo48 <tri.susilo@altama.co.id>2024-09-20 15:11:26 +0700
commitb7e7696d675d0c2e36364f7cbedb0483a343048d (patch)
tree7456154104e450b5430dd8be7370f5fbd5f7a3be /src
parent840b50072a885dd3cf41ea3351d70c9a1d525ff4 (diff)
parent171f4328fce3144e4b72f94dcc3c2d2c7d8b4273 (diff)
Merge branch 'release' of https://bitbucket.org/altafixco/next-indoteknik into release
Diffstat (limited to 'src')
-rw-r--r--src/pages/api/shop/finish-checkout.js84
1 files changed, 45 insertions, 39 deletions
diff --git a/src/pages/api/shop/finish-checkout.js b/src/pages/api/shop/finish-checkout.js
index 9eaa36db..4dcc915c 100644
--- a/src/pages/api/shop/finish-checkout.js
+++ b/src/pages/api/shop/finish-checkout.js
@@ -1,60 +1,66 @@
-import odooApi from '@/core/api/odooApi'
-import mailer from '@/core/utils/mailer'
-import FinishCheckoutEmail from '@/lib/checkout/email/FinishCheckoutEmail'
-import { render } from '@react-email/render'
-import axios from 'axios'
-import camelcaseObjectDeep from 'camelcase-object-deep'
+import odooApi from '@/core/api/odooApi';
+import mailer from '@/core/utils/mailer';
+import FinishCheckoutEmail from '@/lib/checkout/email/FinishCheckoutEmail';
+import { render } from '@react-email/render';
+import axios from 'axios';
+import camelcaseObjectDeep from 'camelcase-object-deep';
export default async function handler(req, res) {
- const { orderName = null } = req.query
+ const { orderName = null } = req.query;
if (!orderName) {
- return res.status(422).json({ error: 'parameter missing' })
+ return res.status(422).json({ error: 'parameter missing' });
}
- let { auth } = req.cookies
+ let { auth } = req.cookies;
if (!auth) {
- return res.status(401).json({ error: 'Unauthorized' })
+ return res.status(401).json({ error: 'Unauthorized' });
}
- auth = JSON.parse(auth)
+ auth = JSON.parse(auth);
- const midtransAuthKey = btoa(process.env.MIDTRANS_SERVER_KEY + ':')
+ const midtransAuthKey = btoa(process.env.MIDTRANS_SERVER_KEY + ':');
const midtransHeaders = {
Accept: 'application/json',
'Content-Type': 'application/json',
- Authorization: `Basic ${midtransAuthKey}`
- }
- let midtransStatus = {}
+ Authorization: `Basic ${midtransAuthKey}`,
+ };
+ let midtransStatus = {};
try {
- midtransStatus = await axios.get(`${process.env.MIDTRANS_HOST}/v2/${orderName}/status`, {
- headers: midtransHeaders
- })
- midtransStatus = camelcaseObjectDeep(midtransStatus.data)
+ midtransStatus = await axios.get(
+ `${process.env.MIDTRANS_HOST}/v2/${orderName}/status`,
+ {
+ headers: midtransHeaders,
+ }
+ );
+ midtransStatus = camelcaseObjectDeep(midtransStatus.data);
} catch (error) {
- console.log(error)
+ console.log(error);
}
- let statusPayment = 'manual'
+ let statusPayment = 'manual';
if (midtransStatus?.orderId) {
- const transactionStatus = midtransStatus.transactionStatus
- statusPayment = 'failed'
+ const transactionStatus = midtransStatus.transactionStatus;
+ statusPayment = 'failed';
if (['capture', 'settlement'].includes(transactionStatus)) {
- statusPayment = 'success'
+ statusPayment = 'success';
} else if (transactionStatus == 'pending') {
- statusPayment = 'pending'
+ statusPayment = 'pending';
}
}
- const query = `name=${orderName.replaceAll('-', '/')}&limit=1&context=quotation`
+ const query = `name=${orderName.replaceAll(
+ '-',
+ '/'
+ )}&limit=1&context=quotation`;
const searchTransaction = await odooApi(
'GET',
`/api/v1/partner/${auth.partnerId}/sale_order?${query}`,
{},
{ Token: auth.token }
- )
+ );
if (searchTransaction.saleOrderTotal == 0) {
- return res.status(400).json({ error: 'Transaction Not Found' })
+ return res.status(400).json({ error: 'Transaction Not Found' });
}
let transaction = await odooApi(
@@ -62,17 +68,17 @@ export default async function handler(req, res) {
`/api/v1/partner/${auth.partnerId}/sale_order/${searchTransaction.saleOrders[0].id}`,
{},
{ Token: auth.token }
- )
+ );
if (!transaction?.id) {
- return res.status(400).json({ error: 'Transaction Detail Not Found' })
+ return res.status(400).json({ error: 'Transaction Detail Not Found' });
}
- transaction.subtotal = 0
- transaction.discountTotal = 0
+ transaction.subtotal = 0;
+ transaction.discountTotal = 0;
for (const product of transaction.products) {
- transaction.subtotal += product.price.price * product.quantity
+ transaction.subtotal += product.price.price * product.quantity;
transaction.discountTotal -=
- (product.price.price - product.price.priceDiscount) * product.quantity
+ (product.price.price - product.price.priceDiscount) * product.quantity;
}
const emailMessage = render(
@@ -81,14 +87,14 @@ export default async function handler(req, res) {
payment={midtransStatus}
statusPayment={statusPayment}
/>
- )
+ );
mailer.sendMail({
- from: 'sales@indoteknik.com',
+ from: 'noreply@indoteknik.com',
to: transaction.address.customer.email,
subject: 'Pembelian di Indoteknik.com',
- html: emailMessage
- })
+ html: emailMessage,
+ });
- return res.status(200).json({ description: 'success' })
+ return res.status(200).json({ description: 'success' });
}