Skip to content

Commit

Permalink
fix: quote edit
Browse files Browse the repository at this point in the history
  • Loading branch information
kris-liu-smile committed Mar 17, 2023
1 parent 1ee4418 commit 179a018
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ const AccountSetting = () => {
const contactInformation = accountFormFields.contactInformation.filter((item: Partial<Fields>) => item.fieldId !== 'field_email_marketing_newsletter')

const {
additionalInformation,
additionalInformation = [],
} = accountFormFields

if (!isBCUser) {
Expand Down
106 changes: 76 additions & 30 deletions apps/storefront/src/pages/quote/components/QuoteTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ import {

import {
B3LStorage,

getModifiersPrice,
getQuickAddProductExtraPrice,
snackbar,
} from '@/utils'

Expand Down Expand Up @@ -211,45 +212,90 @@ const QuoteTable = (props: ShoppingDetailTableProps, ref: Ref<unknown>) => {
setSelectedOptionsOpen(true)
}

const getNewQuoteProduct = (products: CustomFieldItems[]) => products.map((product) => {
const {
variantId,
newSelectOptionList,
id: productId,
name: productName,
quantity,
variants = [],
allOptions,
additionalProducts,
} = product

const modifiersPrice = getModifiersPrice(allOptions || [], newSelectOptionList)

const productExtraPrice = getQuickAddProductExtraPrice(allOptions || [], newSelectOptionList, additionalProducts)

const additionalCalculatedPrices = [...modifiersPrice, ...productExtraPrice]

const variantInfo = variants.length === 1 ? variants[0] : variants.find((item: CustomFieldItems) => item.variant_id === variantId)

const {
image_url: primaryImage = '',
calculated_price: basePrice,
sku: variantSku,
} = variantInfo

let selectOptions
try {
selectOptions = JSON.stringify(newSelectOptionList)
} catch (error) {
selectOptions = '[]'
}

return {
node: {
basePrice: basePrice.toFixed(2),
additionalCalculatedPrices,
optionList: selectOptions,
primaryImage,
productId,
productName,
productsSearch: {
...product,
selectOptions,
},
quantity,
variantSku,
},
}
})

const handleChooseOptionsDialogConfirm = async (products: CustomFieldItems[]) => {
const productsss = getNewQuoteProduct(products)

productsss.forEach((product: CustomFieldItems) => {
const {
variantSku,
productsSearch: {
variants,
},
basePrice,
} = product.node
const variantItem = variants.find((item: CustomFieldItems) => item.sku === variantSku)

product.node.id = optionsProductId

product.node.basePrice = basePrice
product.node.tax = variantItem.bc_calculated_price.tax_inclusive - variantItem.bc_calculated_price.tax_exclusive
})

setSelectedOptionsOpen(false)

const b2bQuoteDraftList = B3LStorage.get('b2bQuoteDraftList') || []

const chooseOptionsProduct = b2bQuoteDraftList.find((item: CustomFieldItems) => item.node.id === optionsProductId)?.node || {}

products.forEach((product) => {
const {
newSelectOptionList,
quantity,
variantId,
variants,
imageUrl,
} = product
let selectOptions
try {
selectOptions = JSON.stringify(newSelectOptionList)
} catch (error) {
selectOptions = chooseOptionsProduct.optionList
b2bQuoteDraftList.forEach((item: CustomFieldItems) => {
if (item.node.id === optionsProductId) {
item.node = productsss[0]?.node || {}
}

const variantInfo = variants.length === 1 ? variants[0] : variants.find((item: CustomFieldItems) => item.variant_id === variantId)

const {
image_url: primaryImage = '',
calculated_price: basePrice,
sku: variantSku,
} = variantInfo

chooseOptionsProduct.optionList = selectOptions
chooseOptionsProduct.quantity = quantity
chooseOptionsProduct.primaryImage = primaryImage || imageUrl
chooseOptionsProduct.basePrice = basePrice
chooseOptionsProduct.variantSku = variantSku
})

B3LStorage.set('b2bQuoteDraftList', b2bQuoteDraftList)

updateSummary()

setSearch({
offset: 0,
})
Expand Down

0 comments on commit 179a018

Please sign in to comment.