ordering-ui-admin-external 1.28.0 → 1.29.0

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.
Files changed (169) hide show
  1. package/_bundles/main.css +294 -26
  2. package/_bundles/{ordering-ui-admin.88341b2ec95c8949082e.js → ordering-ui-admin.452c5996b9b7ebdf8016.js} +2 -2
  3. package/_bundles/{ordering-ui-admin.88341b2ec95c8949082e.js.LICENSE.txt → ordering-ui-admin.452c5996b9b7ebdf8016.js.LICENSE.txt} +8 -0
  4. package/_modules/components/Delivery/AddressForm/styles.js +2 -2
  5. package/_modules/components/Delivery/AddressList/index.js +9 -56
  6. package/_modules/components/Delivery/AddressList/styles.js +1 -1
  7. package/_modules/components/Delivery/DriversGroupLogs/index.js +5 -2
  8. package/_modules/components/Delivery/UserAddForm/index.js +16 -4
  9. package/_modules/components/Delivery/UserFormDetails/index.js +17 -5
  10. package/_modules/components/Home/HomePage/index.js +5 -1
  11. package/_modules/components/MyProducts/OrderingWebsite/index.js +5 -1
  12. package/_modules/components/OrderingProducts/SiteTheme/index.js +1 -1
  13. package/_modules/components/Orders/CreateCustomOrder/CardForm/index.js +96 -0
  14. package/_modules/components/Orders/CreateCustomOrder/CardForm/styles.js +35 -0
  15. package/_modules/components/Orders/CreateCustomOrder/CardFormCustom/cardUtils.js +102 -0
  16. package/_modules/components/Orders/CreateCustomOrder/CardFormCustom/index.js +148 -0
  17. package/_modules/components/Orders/CreateCustomOrder/CardFormCustom/styles.js +16 -0
  18. package/_modules/components/Orders/CreateCustomOrder/CartBill/index.js +275 -0
  19. package/_modules/components/Orders/CreateCustomOrder/CartBill/styles.js +23 -0
  20. package/_modules/components/Orders/CreateCustomOrder/Checkout/index.js +498 -0
  21. package/_modules/components/Orders/CreateCustomOrder/Checkout/styles.js +31 -0
  22. package/_modules/components/Orders/CreateCustomOrder/CouponControl/index.js +100 -0
  23. package/_modules/components/Orders/CreateCustomOrder/CouponControl/styles.js +17 -0
  24. package/_modules/components/Orders/CreateCustomOrder/CustomOrderDetails/index.js +139 -0
  25. package/_modules/components/Orders/CreateCustomOrder/CustomOrderDetails/styles.js +17 -0
  26. package/_modules/components/Orders/CreateCustomOrder/DriverTips/index.js +101 -0
  27. package/_modules/components/Orders/CreateCustomOrder/DriverTips/styles.js +37 -0
  28. package/_modules/components/Orders/CreateCustomOrder/Map/index.js +131 -0
  29. package/_modules/components/Orders/CreateCustomOrder/Map/styles.js +12 -0
  30. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionCard/index.js +83 -0
  31. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionCash/index.js +81 -0
  32. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionCash/styles.js +23 -0
  33. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionPaypal/index.js +45 -0
  34. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionPaypal/styles.js +12 -0
  35. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionSquare/index.js +112 -0
  36. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionSquare/styles.js +21 -0
  37. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionStripe/index.js +259 -0
  38. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionStripe/styles.js +66 -0
  39. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionWallet/index.js +173 -0
  40. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionWallet/styles.js +26 -0
  41. package/_modules/components/Orders/CreateCustomOrder/PaymentOptions/index.js +400 -0
  42. package/_modules/components/Orders/CreateCustomOrder/PaymentOptions/styles.js +40 -0
  43. package/_modules/components/Orders/CreateCustomOrder/ProductForm/index.js +613 -0
  44. package/_modules/components/Orders/CreateCustomOrder/ProductForm/styles.js +109 -0
  45. package/_modules/components/Orders/CreateCustomOrder/ProductIngredient/index.js +39 -0
  46. package/_modules/components/Orders/CreateCustomOrder/ProductIngredient/styles.js +23 -0
  47. package/_modules/components/Orders/CreateCustomOrder/ProductOption/index.js +51 -0
  48. package/_modules/components/Orders/CreateCustomOrder/ProductOption/styles.js +29 -0
  49. package/_modules/components/Orders/CreateCustomOrder/ProductOptionSubOption/index.js +148 -0
  50. package/_modules/components/Orders/CreateCustomOrder/ProductOptionSubOption/styles.js +79 -0
  51. package/_modules/components/Orders/CreateCustomOrder/SelectBusinesses/index.js +82 -0
  52. package/_modules/components/Orders/CreateCustomOrder/SelectBusinesses/styles.js +21 -0
  53. package/_modules/components/Orders/CreateCustomOrder/SelectCustomer/index.js +191 -0
  54. package/_modules/components/Orders/CreateCustomOrder/SelectCustomer/styles.js +68 -0
  55. package/_modules/components/Orders/CreateCustomOrder/SelectProducts/index.js +234 -0
  56. package/_modules/components/Orders/CreateCustomOrder/SelectProducts/styles.js +54 -0
  57. package/_modules/components/Orders/CreateCustomOrder/SingleProductCard/index.js +99 -0
  58. package/_modules/components/Orders/CreateCustomOrder/SingleProductCard/styles.js +131 -0
  59. package/_modules/components/Orders/CreateCustomOrder/StripeElementsForm/index.js +73 -0
  60. package/_modules/components/Orders/CreateCustomOrder/StripeElementsForm/styles.js +17 -0
  61. package/_modules/components/Orders/CreateCustomOrder/StripeMethodForm/index.js +124 -0
  62. package/_modules/components/Orders/CreateCustomOrder/StripeMethodForm/styles.js +12 -0
  63. package/_modules/components/Orders/CreateCustomOrder/StripeRedirectForm/index.js +83 -0
  64. package/_modules/components/Orders/CreateCustomOrder/StripeRedirectForm/styles.js +21 -0
  65. package/_modules/components/Orders/CreateCustomOrder/TaxInformation/index.js +48 -0
  66. package/_modules/components/Orders/CreateCustomOrder/TaxInformation/styles.js +14 -0
  67. package/_modules/components/Orders/CreateCustomOrder/index.js +59 -0
  68. package/_modules/components/Orders/OrderToPrintTicket/index.js +2 -2
  69. package/_modules/components/Orders/OrdersDashboardControls/index.js +6 -2
  70. package/_modules/components/Orders/OrdersDashboardControls/styles.js +3 -3
  71. package/_modules/components/Orders/OrdersExportCSV/styles.js +14 -8
  72. package/_modules/components/Orders/OrdersManager/index.js +6 -4
  73. package/_modules/components/Orders/OrdersManager/styles.js +1 -1
  74. package/_modules/components/Shared/AutoScroll/index.js +1 -0
  75. package/_modules/components/Shared/LinkableText/index.js +22 -0
  76. package/_modules/components/Shared/Tabs/index.js +32 -0
  77. package/_modules/components/Shared/index.js +20 -0
  78. package/_modules/components/SidebarMenu/index.js +2 -1
  79. package/_modules/components/Stores/BusinessProductsListing/index.js +7 -3
  80. package/_modules/components/Stores/BusinessQRCodeOption/index.js +6 -2
  81. package/_modules/components/Stores/BusinessSummary/index.js +7 -3
  82. package/_modules/components/Users/UserAddForm/index.js +13 -5
  83. package/_modules/components/Users/UserAddForm/styles.js +1 -1
  84. package/_modules/styles/Selects/index.js +1 -1
  85. package/_modules/utils/index.js +9 -2
  86. package/index-template.js +1 -1
  87. package/package.json +6 -4
  88. package/src/components/Delivery/AddressForm/styles.js +3 -3
  89. package/src/components/Delivery/AddressList/index.js +6 -61
  90. package/src/components/Delivery/AddressList/styles.js +1 -1
  91. package/src/components/Delivery/DriversGroupLogs/index.js +8 -2
  92. package/src/components/Delivery/UserAddForm/index.js +32 -13
  93. package/src/components/Delivery/UserFormDetails/index.js +30 -13
  94. package/src/components/Home/HomePage/index.js +3 -2
  95. package/src/components/MyProducts/OrderingWebsite/index.js +9 -8
  96. package/src/components/OrderingProducts/SiteTheme/index.js +1 -1
  97. package/src/components/Orders/CreateCustomOrder/CardForm/index.js +135 -0
  98. package/src/components/Orders/CreateCustomOrder/CardForm/styles.js +135 -0
  99. package/src/components/Orders/CreateCustomOrder/CardFormCustom/cardUtils.js +111 -0
  100. package/src/components/Orders/CreateCustomOrder/CardFormCustom/index.js +161 -0
  101. package/src/components/Orders/CreateCustomOrder/CardFormCustom/styles.js +20 -0
  102. package/src/components/Orders/CreateCustomOrder/CartBill/index.js +267 -0
  103. package/src/components/Orders/CreateCustomOrder/CartBill/styles.js +67 -0
  104. package/src/components/Orders/CreateCustomOrder/Checkout/index.js +519 -0
  105. package/src/components/Orders/CreateCustomOrder/Checkout/styles.js +85 -0
  106. package/src/components/Orders/CreateCustomOrder/CouponControl/index.js +90 -0
  107. package/src/components/Orders/CreateCustomOrder/CouponControl/styles.js +22 -0
  108. package/src/components/Orders/CreateCustomOrder/CustomOrderDetails/index.js +132 -0
  109. package/src/components/Orders/CreateCustomOrder/CustomOrderDetails/styles.js +28 -0
  110. package/src/components/Orders/CreateCustomOrder/DriverTips/index.js +113 -0
  111. package/src/components/Orders/CreateCustomOrder/DriverTips/styles.js +91 -0
  112. package/src/components/Orders/CreateCustomOrder/Map/index.js +115 -0
  113. package/src/components/Orders/CreateCustomOrder/Map/styles.js +10 -0
  114. package/src/components/Orders/CreateCustomOrder/PaymentOptionCard/index.js +70 -0
  115. package/src/components/Orders/CreateCustomOrder/PaymentOptionCash/index.js +83 -0
  116. package/src/components/Orders/CreateCustomOrder/PaymentOptionCash/styles.js +50 -0
  117. package/src/components/Orders/CreateCustomOrder/PaymentOptionPaypal/index.js +43 -0
  118. package/src/components/Orders/CreateCustomOrder/PaymentOptionPaypal/styles.js +5 -0
  119. package/src/components/Orders/CreateCustomOrder/PaymentOptionSquare/index.js +105 -0
  120. package/src/components/Orders/CreateCustomOrder/PaymentOptionSquare/styles.js +27 -0
  121. package/src/components/Orders/CreateCustomOrder/PaymentOptionStripe/index.js +261 -0
  122. package/src/components/Orders/CreateCustomOrder/PaymentOptionStripe/styles.js +159 -0
  123. package/src/components/Orders/CreateCustomOrder/PaymentOptionWallet/index.js +172 -0
  124. package/src/components/Orders/CreateCustomOrder/PaymentOptionWallet/styles.js +33 -0
  125. package/src/components/Orders/CreateCustomOrder/PaymentOptions/index.js +440 -0
  126. package/src/components/Orders/CreateCustomOrder/PaymentOptions/styles.js +132 -0
  127. package/src/components/Orders/CreateCustomOrder/ProductForm/index.js +701 -0
  128. package/src/components/Orders/CreateCustomOrder/ProductForm/styles.js +540 -0
  129. package/src/components/Orders/CreateCustomOrder/ProductIngredient/index.js +43 -0
  130. package/src/components/Orders/CreateCustomOrder/ProductIngredient/styles.js +29 -0
  131. package/src/components/Orders/CreateCustomOrder/ProductOption/index.js +58 -0
  132. package/src/components/Orders/CreateCustomOrder/ProductOption/styles.js +76 -0
  133. package/src/components/Orders/CreateCustomOrder/ProductOptionSubOption/index.js +182 -0
  134. package/src/components/Orders/CreateCustomOrder/ProductOptionSubOption/styles.js +195 -0
  135. package/src/components/Orders/CreateCustomOrder/SelectBusinesses/index.js +67 -0
  136. package/src/components/Orders/CreateCustomOrder/SelectBusinesses/styles.js +63 -0
  137. package/src/components/Orders/CreateCustomOrder/SelectCustomer/index.js +241 -0
  138. package/src/components/Orders/CreateCustomOrder/SelectCustomer/styles.js +235 -0
  139. package/src/components/Orders/CreateCustomOrder/SelectProducts/index.js +237 -0
  140. package/src/components/Orders/CreateCustomOrder/SelectProducts/styles.js +161 -0
  141. package/src/components/Orders/CreateCustomOrder/SingleProductCard/index.js +105 -0
  142. package/src/components/Orders/CreateCustomOrder/SingleProductCard/styles.js +314 -0
  143. package/src/components/Orders/CreateCustomOrder/StripeElementsForm/index.js +71 -0
  144. package/src/components/Orders/CreateCustomOrder/StripeElementsForm/styles.js +13 -0
  145. package/src/components/Orders/CreateCustomOrder/StripeMethodForm/index.js +90 -0
  146. package/src/components/Orders/CreateCustomOrder/StripeMethodForm/styles.js +9 -0
  147. package/src/components/Orders/CreateCustomOrder/StripeRedirectForm/index.js +96 -0
  148. package/src/components/Orders/CreateCustomOrder/StripeRedirectForm/styles.js +73 -0
  149. package/src/components/Orders/CreateCustomOrder/TaxInformation/index.js +69 -0
  150. package/src/components/Orders/CreateCustomOrder/TaxInformation/styles.js +25 -0
  151. package/src/components/Orders/CreateCustomOrder/index.js +45 -0
  152. package/src/components/Orders/OrderToPrintTicket/index.js +1 -1
  153. package/src/components/Orders/OrdersDashboardControls/index.js +4 -1
  154. package/src/components/Orders/OrdersDashboardControls/styles.js +13 -11
  155. package/src/components/Orders/OrdersExportCSV/styles.js +16 -0
  156. package/src/components/Orders/OrdersManager/index.js +5 -1
  157. package/src/components/Orders/OrdersManager/styles.js +2 -0
  158. package/src/components/Shared/AutoScroll/index.js +1 -0
  159. package/src/components/Shared/LinkableText/index.js +17 -0
  160. package/src/components/Shared/Tabs/index.js +28 -0
  161. package/src/components/Shared/index.js +5 -0
  162. package/src/components/SidebarMenu/index.js +1 -1
  163. package/src/components/Stores/BusinessProductsListing/index.js +6 -3
  164. package/src/components/Stores/BusinessQRCodeOption/index.js +5 -3
  165. package/src/components/Stores/BusinessSummary/index.js +6 -4
  166. package/src/components/Users/UserAddForm/index.js +12 -3
  167. package/src/components/Users/UserAddForm/styles.js +2 -2
  168. package/src/styles/Selects/index.js +1 -1
  169. package/src/utils/index.js +5 -0
@@ -0,0 +1,267 @@
1
+ import React, { useState } from 'react'
2
+ import { useLanguage, useUtils, useOrder, useConfig, useValidationFields, useCustomer } from 'ordering-components-admin-external'
3
+ import BsInfoCircle from '@meronex/icons/bs/BsInfoCircle'
4
+ import MdCloseCircle from '@meronex/icons/ios/MdCloseCircle'
5
+ import { useTheme } from 'styled-components'
6
+ import { verifyDecimals } from '../../../../utils'
7
+ import { CouponControl } from '../CouponControl'
8
+ import { Confirm, Modal } from '../../../Shared'
9
+ import { TaxInformation } from '../TaxInformation'
10
+
11
+ import {
12
+ CartBillContainer,
13
+ CouponContainer,
14
+ IconContainer
15
+ } from './styles'
16
+
17
+ export const CartBill = (props) => {
18
+ const {
19
+ cart
20
+ } = props
21
+
22
+ const theme = useTheme()
23
+ const [, t] = useLanguage()
24
+ const [{ parsePrice, parseNumber }] = useUtils()
25
+ const [orderState, { removeOffer }] = useOrder()
26
+ const [{ configs }] = useConfig()
27
+ const [validationFields] = useValidationFields()
28
+ const [{ user }] = useCustomer()
29
+
30
+ const [openTaxModal, setOpenTaxModal] = useState({ open: false, tax: null })
31
+ const [confirm, setConfirm] = useState({ open: false, content: null, handleOnAccept: null })
32
+
33
+ const isCouponEnabled = validationFields?.fields?.checkout?.coupon?.enabled
34
+
35
+ const getIncludedTaxes = () => {
36
+ if (cart?.taxes === null) {
37
+ return cart?.business.tax_type === 1 ? cart?.tax : 0
38
+ } else {
39
+ return cart?.taxes.reduce((taxIncluded, tax) => {
40
+ return taxIncluded + (tax.type === 1 ? tax.summary?.tax : 0)
41
+ }, 0)
42
+ }
43
+ }
44
+
45
+ const getIncludedTaxesDiscounts = () => {
46
+ return cart?.taxes?.filter(tax => tax?.type === 1)?.reduce((carry, tax) => carry + (tax?.summary?.tax_after_discount ?? tax?.summary?.tax), 0)
47
+ }
48
+
49
+ const handleRemoveOfferClick = (id, userId) => {
50
+ const dataOffer = {
51
+ business_id: cart?.business_id,
52
+ offer_id: id
53
+ }
54
+ if (userId) dataOffer.user_id = userId
55
+ removeOffer(dataOffer)
56
+ }
57
+
58
+ const onRemoveOffer = (id) => {
59
+ setConfirm({
60
+ open: true,
61
+ content: t('QUESTION_DELETE_OFFER', 'Are you sure that you want to delete the offer?'),
62
+ title: t('OFFER', 'Offer'),
63
+ handleOnAccept: () => {
64
+ setConfirm({ ...confirm, open: false })
65
+ handleRemoveOfferClick(id, user?.id)
66
+ }
67
+ })
68
+ }
69
+
70
+ return (
71
+ <CartBillContainer>
72
+ <h3>{t('SUMMARY', '')}</h3>
73
+ <table>
74
+ <tbody>
75
+ <tr>
76
+ <td>{t('SUBTOTAL', 'Subtotal')}</td>
77
+ <td>{parsePrice(cart?.subtotal + getIncludedTaxes())}</td>
78
+ </tr>
79
+ {cart?.discount > 0 && cart?.total >= 0 && cart?.offers?.length === 0 && (
80
+ <tr>
81
+ {cart?.discount_type === 1 ? (
82
+ <td>
83
+ {t('DISCOUNT', 'Discount')}{' '}
84
+ <span>{`(${verifyDecimals(cart?.discount_rate, parsePrice)}%)`}</span>
85
+ </td>
86
+ ) : (
87
+ <td>{t('DISCOUNT', 'Discount')}</td>
88
+ )}
89
+ <td>- {parsePrice(cart?.discount || 0)}</td>
90
+ </tr>
91
+ )}
92
+ {
93
+ cart?.offers?.length > 0 && cart?.offers?.filter(offer => offer?.target === 1)?.map(offer => (
94
+ <tr key={offer.id}>
95
+ <td className='icon'>
96
+ {offer.name}
97
+ {offer.rate_type === 1 && (
98
+ <span>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</span>
99
+ )}
100
+ <IconContainer>
101
+ <BsInfoCircle size='20' color={theme.colors.primary} onClick={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_1' })} />
102
+ {!!offer?.id && (
103
+ <MdCloseCircle size='24' color={theme.colors.primary} onClick={() => onRemoveOffer(offer?.id)} />
104
+ )}
105
+ </IconContainer>
106
+ </td>
107
+ <td>
108
+ - {parsePrice(offer?.summary?.discount)}
109
+ </td>
110
+ </tr>
111
+ ))
112
+ }
113
+ {
114
+ cart?.offers?.filter(offer => offer?.target === 1)?.length > 0 &&
115
+ cart?.subtotal_with_discount > 0 &&
116
+ cart?.discount > 0 &&
117
+ cart?.total >= 0 &&
118
+ (
119
+ <tr>
120
+ <td>{t('SUBTOTAL_WITH_DISCOUNT', 'Subtotal with discount')}</td>
121
+ {cart?.business?.tax_type === 1 ? (
122
+ <td>{parsePrice(cart?.subtotal_with_discount + getIncludedTaxesDiscounts() ?? 0)}</td>
123
+ ) : (
124
+ <td>{parsePrice(cart?.subtotal_with_discount ?? 0)}</td>
125
+ )}
126
+ </tr>
127
+ )
128
+ }
129
+ {
130
+ cart?.taxes?.length > 0 && cart?.taxes?.filter(tax => tax?.type === 2 && tax?.rate !== 0).map(tax => (
131
+ <tr key={tax?.id}>
132
+ <td className='icon'>
133
+ {tax.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
134
+ <span>{`(${verifyDecimals(tax?.rate, parseNumber)}%)`}</span>
135
+ <IconContainer onClick={() => setOpenTaxModal({ open: true, data: tax, type: 'tax' })}>
136
+ <BsInfoCircle size='20' color={theme.colors.primary} />
137
+ </IconContainer>
138
+ </td>
139
+ <td>{parsePrice(tax?.summary?.tax_after_discount ?? tax?.summary?.tax ?? 0)}</td>
140
+ </tr>
141
+ ))
142
+ }
143
+ {
144
+ cart?.fees?.length > 0 && cart?.fees?.filter(fee => !(fee.fixed === 0 && fee.percentage === 0)).map((fee, i) => (
145
+ <tr key={fee.id ?? i}>
146
+ <td className='icon'>
147
+ {fee.name || t('INHERIT_FROM_BUSINESS', 'Inherit from business')}
148
+ ({fee?.fixed > 0 && `${parsePrice(fee?.fixed)}${fee.percentage > 0 ? ' + ' : ''}`}{fee.percentage > 0 && `${fee.percentage}%`})
149
+ <IconContainer onClick={() => setOpenTaxModal({ open: true, data: fee, type: 'fee' })}>
150
+ <BsInfoCircle size='20' color={theme.colors.primary} />
151
+ </IconContainer>
152
+ </td>
153
+ <td>{parsePrice(fee?.summary?.fixed + (fee?.summary?.percentage_after_discount ?? fee?.summary?.percentage) ?? 0)}</td>
154
+ </tr>
155
+ ))
156
+ }
157
+ {
158
+ cart?.offers?.length > 0 && cart?.offers?.filter(offer => offer?.target === 3)?.map(offer => (
159
+ <tr key={offer.id}>
160
+ <td className='icon'>
161
+ {offer.name}
162
+ {offer?.rate_type === 1 && (
163
+ <span>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</span>
164
+ )}
165
+ <IconContainer>
166
+ <BsInfoCircle size='20' color={theme.colors.primary} onClick={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_3' })} />
167
+ {!!offer?.id && (
168
+ <MdCloseCircle size='24' color={theme.colors.primary} onClick={() => onRemoveOffer(offer?.id)} />
169
+ )}
170
+ </IconContainer>
171
+ </td>
172
+ <td>
173
+ - {parsePrice(offer?.summary?.discount)}
174
+ </td>
175
+ </tr>
176
+ ))
177
+ }
178
+ {orderState?.options?.type === 1 && (
179
+ <tr>
180
+ <td>{t('DELIVERY_FEE', 'Delivery Fee')}</td>
181
+ <td>{parsePrice(cart?.delivery_price_with_discount)}</td>
182
+ </tr>
183
+ )}
184
+ {
185
+ cart?.offers?.length > 0 && cart?.offers?.filter(offer => offer?.target === 2)?.map(offer => (
186
+ <tr key={offer.id}>
187
+ <td className='icon'>
188
+ {offer.name}
189
+ {offer?.rate_type === 1 && (
190
+ <span>{`(${verifyDecimals(offer?.rate, parsePrice)}%)`}</span>
191
+ )}
192
+ <IconContainer>
193
+ <BsInfoCircle size='20' color={theme.colors.primary} onClick={() => setOpenTaxModal({ open: true, data: offer, type: 'offer_target_2' })} />
194
+ {!!offer?.id && (
195
+ <MdCloseCircle size='24' color={theme.colors.primary} onClick={() => onRemoveOffer(offer?.id)} />
196
+ )}
197
+ </IconContainer>
198
+ </td>
199
+ <td>
200
+ - {parsePrice(offer?.summary?.discount)}
201
+ </td>
202
+ </tr>
203
+ ))
204
+ }
205
+ {cart?.driver_tip > 0 && (
206
+ <tr>
207
+ <td>
208
+ {t('DRIVER_TIP', 'Driver tip')}{' '}
209
+ {cart?.driver_tip_rate > 0 &&
210
+ parseInt(configs?.driver_tip_type?.value, 10) === 2 &&
211
+ !parseInt(configs?.driver_tip_use_custom?.value, 10) &&
212
+ (
213
+ <span>{`(${verifyDecimals(cart?.driver_tip_rate, parseNumber)}%)`}</span>
214
+ )}
215
+ </td>
216
+ <td>{parsePrice(cart?.driver_tip)}</td>
217
+ </tr>
218
+ )}
219
+ </tbody>
220
+ </table>
221
+ {isCouponEnabled && cart?.status !== 2 &&
222
+ (
223
+ <CouponContainer>
224
+ <CouponControl
225
+ businessId={cart?.business_id}
226
+ price={cart?.total}
227
+ />
228
+ </CouponContainer>
229
+ )}
230
+ <table className='total'>
231
+ <tbody>
232
+ <tr>
233
+ <td>{t('TOTAL', 'Total')}</td>
234
+ <td>{parsePrice(cart?.total >= 0 ? cart?.total : 0)}</td>
235
+ </tr>
236
+ </tbody>
237
+ </table>
238
+
239
+ <Modal
240
+ width='70%'
241
+ open={openTaxModal.open}
242
+ padding='20px'
243
+ closeOnBackdrop
244
+ title={`${openTaxModal.data?.name ||
245
+ t('INHERIT_FROM_BUSINESS', 'Inherit from business')} ${openTaxModal.data?.rate_type !== 2 ? `(${typeof openTaxModal.data?.rate === 'number' ? `${openTaxModal.data?.rate}%` : `${parsePrice(openTaxModal.data?.fixed ?? 0)} + ${openTaxModal.data?.percentage}%`})` : ''} `}
246
+ onClose={() => setOpenTaxModal({ open: false, data: null, type: '' })}
247
+ modalTitleStyle={{ display: 'flex', justifyContent: 'center' }}
248
+ >
249
+ <TaxInformation
250
+ type={openTaxModal.type}
251
+ data={openTaxModal.data}
252
+ products={cart?.products}
253
+ />
254
+ </Modal>
255
+ <Confirm
256
+ title={t('PRODUCT', 'Product')}
257
+ content={confirm.content}
258
+ acceptText={t('ACCEPT', 'Accept')}
259
+ open={confirm.open}
260
+ onClose={() => setConfirm({ ...confirm, open: false })}
261
+ onCancel={() => setConfirm({ ...confirm, open: false })}
262
+ onAccept={confirm.handleOnAccept}
263
+ closeOnBackdrop={false}
264
+ />
265
+ </CartBillContainer>
266
+ )
267
+ }
@@ -0,0 +1,67 @@
1
+ import styled, { css } from 'styled-components'
2
+
3
+ export const CartBillContainer = styled.div`
4
+ margin-top: 40px;
5
+ > h3 {
6
+ margin-bottom: 15px;
7
+ }
8
+
9
+ table {
10
+ width: 100%;
11
+ font-size: 14px;
12
+
13
+ td {
14
+ padding: 5px 0;
15
+ }
16
+
17
+ td span {
18
+ unicode-bidi: bidi-override;
19
+ }
20
+
21
+ tr td:nth-child(2) {
22
+ text-align: right;
23
+ ${props => props.theme?.rtl && css`
24
+ text-align: left;
25
+ `}
26
+ }
27
+
28
+ .icon {
29
+ display: flex;
30
+ align-items: center;
31
+ max-height: 25px;
32
+ }
33
+ }
34
+ table.total {
35
+ border-top: 1px solid ${props => props.theme.colors.borderColor};
36
+ margin-top: 10px;
37
+ tr {
38
+ td {
39
+ font-weight: bold;
40
+ font-size: 16px;
41
+
42
+ &#loyalty {
43
+ font-weight: normal;
44
+ font-size: 14px;
45
+ }
46
+ }
47
+ }
48
+ }
49
+ `
50
+ export const CouponContainer = styled.div`
51
+ margin-top: 10px;
52
+ `
53
+ export const IconContainer = styled.div`
54
+ position: relative;
55
+ display: inline-flex;
56
+ cursor: pointer;
57
+ margin-left: 5px;
58
+ height: 20px;
59
+ svg:nth-child(1){
60
+ position: relative;
61
+ top: -1px;
62
+ }
63
+ svg:nth-child(2){
64
+ position: relative;
65
+ top: -3px;
66
+ }
67
+ `