sme-pos-package 1.0.13 → 1.0.15

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 (314) hide show
  1. package/dist/index.d.mts +1 -1
  2. package/dist/index.mjs +1 -0
  3. package/package.json +4 -1
  4. package/dist/index.css.map +0 -1
  5. package/dist/index.mjs.map +0 -1
  6. package/dist/tailwind.preset.mjs.map +0 -1
  7. package/public/assets/images/bank-logos.png +0 -0
  8. package/public/assets/images/banner1.png +0 -0
  9. package/public/assets/images/banner2.png +0 -0
  10. package/public/assets/images/banner3.png +0 -0
  11. package/public/assets/images/banner4.png +0 -0
  12. package/public/assets/images/cashier.svg +0 -9
  13. package/public/assets/images/empty-cart.png +0 -0
  14. package/public/assets/images/empty-table-state.png +0 -0
  15. package/public/assets/images/layout-display/left-layout.png +0 -0
  16. package/public/assets/images/layout-display/right-layout.png +0 -0
  17. package/public/assets/images/modal-illustration.png +0 -0
  18. package/public/assets/images/order-empty-state.png +0 -0
  19. package/public/assets/images/order.png +0 -0
  20. package/public/assets/images/payment-success-label.png +0 -0
  21. package/public/assets/images/table-empty.png +0 -0
  22. package/public/assets/images/take-away.png +0 -0
  23. package/public/assets/lottie/loading.json +0 -1
  24. package/public/assets/lottie/soft_pos.json +0 -1
  25. package/public/assets/lottie/success.json +0 -1
  26. package/public/config.json +0 -27
  27. package/public/env.json +0 -17
  28. package/src/animations/success.json +0 -9730
  29. package/src/assets/icons/breadcrumbs-icon.tsx +0 -85
  30. package/src/assets/icons/cart-icon.tsx +0 -14
  31. package/src/assets/icons/common.tsx +0 -270
  32. package/src/assets/icons/customer-view-icon.tsx +0 -20
  33. package/src/assets/icons/dining-table.tsx +0 -34
  34. package/src/assets/icons/edit-line-icon.tsx +0 -18
  35. package/src/assets/icons/emenu-icon.tsx +0 -39
  36. package/src/assets/icons/file-close-line-icon.tsx +0 -18
  37. package/src/assets/icons/helper-icon.tsx +0 -84
  38. package/src/assets/icons/home-gear-line-icon.tsx +0 -18
  39. package/src/assets/icons/kanban-icon.tsx +0 -16
  40. package/src/assets/icons/loading-icon.tsx +0 -45
  41. package/src/assets/icons/logout-box-line-icon.tsx +0 -18
  42. package/src/assets/icons/order-icon.tsx +0 -92
  43. package/src/assets/icons/payment-icon.tsx +0 -429
  44. package/src/assets/icons/pincode.tsx +0 -196
  45. package/src/assets/icons/pos-connect-icon.tsx +0 -67
  46. package/src/assets/icons/pos-device-icon.tsx +0 -52
  47. package/src/assets/icons/pos-icon.tsx +0 -75
  48. package/src/assets/icons/printer-line-icon.tsx +0 -18
  49. package/src/assets/icons/star-icon.tsx +0 -174
  50. package/src/assets/icons/table-icon.tsx +0 -77
  51. package/src/assets/icons/user-add-line-icon.tsx +0 -33
  52. package/src/assets/icons/user-icon.tsx +0 -65
  53. package/src/components/common/button-action.tsx +0 -46
  54. package/src/components/common/button-icon.tsx +0 -23
  55. package/src/components/common/dropdown/index.tsx +0 -79
  56. package/src/components/common/empty-state.tsx +0 -60
  57. package/src/components/common/header/index.tsx +0 -89
  58. package/src/components/common/header/tabs.tsx +0 -119
  59. package/src/components/common/image.tsx +0 -20
  60. package/src/components/common/input/index.tsx +0 -55
  61. package/src/components/common/input/radio-group.tsx +0 -75
  62. package/src/components/common/input/text-area.tsx +0 -28
  63. package/src/components/common/modal/delete-confirm-modal-container.tsx +0 -65
  64. package/src/components/common/modal/index.ts +0 -2
  65. package/src/components/common/modal/modal-direction.tsx +0 -125
  66. package/src/components/common/modal/modal-header.tsx +0 -37
  67. package/src/components/common/modal/modal-wrapper.tsx +0 -56
  68. package/src/components/common/modal/modal-zoom.tsx +0 -61
  69. package/src/components/common/pagination.tsx +0 -95
  70. package/src/components/common/refresh-button.tsx +0 -28
  71. package/src/components/common/search-bar.tsx +0 -27
  72. package/src/components/common/search.tsx +0 -59
  73. package/src/components/common/skeleton.tsx +0 -7
  74. package/src/components/common/tabs-layout.tsx +0 -98
  75. package/src/components/common/use-check-session.tsx +0 -19
  76. package/src/components/customer-management/add-customer/add-customer-drawer.tsx +0 -286
  77. package/src/components/customer-management/add-customer/address-select.tsx +0 -51
  78. package/src/components/customer-management/choose-customer-drawer.tsx +0 -177
  79. package/src/components/customer-management/customer-info-drawer.tsx +0 -166
  80. package/src/components/customer-management/customer-no-data.tsx +0 -18
  81. package/src/components/emenu/emenu-qr-code.tsx +0 -59
  82. package/src/components/emenu/menu-link.tsx +0 -67
  83. package/src/components/index.ts +0 -8
  84. package/src/components/kanban-template/kitchen-template.tsx +0 -60
  85. package/src/components/kanban-template/pos-order-template.tsx +0 -77
  86. package/src/components/kanban-template/pos-template.tsx +0 -170
  87. package/src/components/kitchen-management/change-status-confirm-modal.tsx +0 -61
  88. package/src/components/kitchen-management/index.ts +0 -1
  89. package/src/components/kitchen-management/kitchen-order/index.tsx +0 -153
  90. package/src/components/kitchen-management/kitchen-order/line.tsx +0 -78
  91. package/src/components/kitchen-management/kitchen-order/state.tsx +0 -52
  92. package/src/components/kitchen-management/kitchen-status.tsx +0 -69
  93. package/src/components/kitchen-management/orders-kitchen-management.tsx +0 -113
  94. package/src/components/order-management/index.tsx +0 -128
  95. package/src/components/order-management/order-actions.tsx +0 -46
  96. package/src/components/order-management/order-detail/header.tsx +0 -37
  97. package/src/components/order-management/order-detail/index.ts +0 -3
  98. package/src/components/order-management/order-detail/information.tsx +0 -96
  99. package/src/components/order-management/order-detail/order-detail.tsx +0 -84
  100. package/src/components/order-management/order-detail/order-line.tsx +0 -56
  101. package/src/components/order-management/order-detail/summary.tsx +0 -221
  102. package/src/components/order-management/order-header.tsx +0 -113
  103. package/src/components/order-management/order-pagination.tsx +0 -49
  104. package/src/components/order-management/order-status.tsx +0 -58
  105. package/src/components/order-management/order-table.tsx +0 -179
  106. package/src/components/order-management/order-tabs.tsx +0 -48
  107. package/src/components/pos-management/add-product-from-barcode/index.tsx +0 -97
  108. package/src/components/pos-management/cart-content/action-line.tsx +0 -81
  109. package/src/components/pos-management/cart-content/cancel-order-line-modal.tsx +0 -41
  110. package/src/components/pos-management/cart-content/cart-item.tsx +0 -173
  111. package/src/components/pos-management/cart-content/cart-items.tsx +0 -130
  112. package/src/components/pos-management/cart-content/draft-orders/draft-order-line.tsx +0 -67
  113. package/src/components/pos-management/cart-content/draft-orders/index.tsx +0 -40
  114. package/src/components/pos-management/cart-content/edit-cart-modal.tsx +0 -11
  115. package/src/components/pos-management/cart-content/index.tsx +0 -260
  116. package/src/components/pos-management/cart-content/no-select-order.tsx +0 -26
  117. package/src/components/pos-management/cart-content/order-info/customer-info.tsx +0 -53
  118. package/src/components/pos-management/cart-content/order-info/index.tsx +0 -109
  119. package/src/components/pos-management/cart-content/order-total.tsx +0 -36
  120. package/src/components/pos-management/cart-content/orders-line.tsx +0 -72
  121. package/src/components/pos-management/menu-content/category-tab.tsx +0 -38
  122. package/src/components/pos-management/menu-content/create-order-modal.tsx +0 -65
  123. package/src/components/pos-management/menu-content/product-content.tsx +0 -93
  124. package/src/components/pos-management/menu-content/product-detail/info.tsx +0 -28
  125. package/src/components/pos-management/menu-content/product-detail/modal.tsx +0 -148
  126. package/src/components/pos-management/menu-content/product-detail/option.tsx +0 -87
  127. package/src/components/pos-management/menu-content/product-detail/quantity-control.tsx +0 -155
  128. package/src/components/pos-management/menu-content/product-detail/sale-keypad.tsx +0 -100
  129. package/src/components/pos-management/menu-content/product-item.tsx +0 -65
  130. package/src/components/pos-management/order-helper/cancel-order-confirm.tsx +0 -43
  131. package/src/components/pos-management/order-helper/history-call.tsx +0 -105
  132. package/src/components/pos-management/order-helper/order-helper-modal.tsx +0 -116
  133. package/src/components/pos-management/payment-content/bill/actions.tsx +0 -46
  134. package/src/components/pos-management/payment-content/bill/content.tsx +0 -207
  135. package/src/components/pos-management/payment-content/bill/index.tsx +0 -18
  136. package/src/components/pos-management/payment-content/card-payment/index.tsx +0 -124
  137. package/src/components/pos-management/payment-content/card-payment/pos-payment/pos-connect.tsx +0 -183
  138. package/src/components/pos-management/payment-content/card-payment/pos-payment/qr-connect.tsx +0 -185
  139. package/src/components/pos-management/payment-content/card-payment/waiting-for-payment-pos-modal.tsx +0 -37
  140. package/src/components/pos-management/payment-content/cash-payment/index.tsx +0 -216
  141. package/src/components/pos-management/payment-content/index.tsx +0 -70
  142. package/src/components/pos-management/payment-content/payment-info.tsx +0 -67
  143. package/src/components/pos-management/payment-content/payment-layout.tsx +0 -16
  144. package/src/components/pos-management/payment-content/payment-method-cards.tsx +0 -99
  145. package/src/components/pos-management/payment-content/qr-payment/index.tsx +0 -118
  146. package/src/components/pos-management/payment-content/qr-payment/qr_code.js +0 -29
  147. package/src/components/pos-management/payment-content/qr-payment/vietqr.js +0 -436
  148. package/src/components/pos-management/payment-content/session-close-modal.tsx +0 -35
  149. package/src/components/pos-management/payment-content/soft-pos-payment/index.tsx +0 -48
  150. package/src/components/pos-management/pos-helpers/back-confirm.tsx +0 -45
  151. package/src/components/pos-management/pos-helpers/index.tsx +0 -135
  152. package/src/components/pos-management/pos-helpers/layout-display-modal.tsx +0 -99
  153. package/src/components/pos-management/search.tsx +0 -48
  154. package/src/components/pos-management/table-content/filtered-tables.tsx +0 -59
  155. package/src/components/pos-management/table-content/floor-tabs.tsx +0 -65
  156. package/src/components/pos-management/table-content/index.tsx +0 -76
  157. package/src/components/pos-management/table-content/table-item.tsx +0 -127
  158. package/src/components/pos-management/table-content/tables.tsx +0 -96
  159. package/src/components/restaurant-management/add-floor-modal.tsx +0 -133
  160. package/src/components/restaurant-management/add-table-modal.tsx +0 -198
  161. package/src/components/restaurant-management/delete-floor-confirm-modal.tsx +0 -42
  162. package/src/components/restaurant-management/delete-table-confirm-modal.tsx +0 -51
  163. package/src/components/restaurant-management/header.tsx +0 -22
  164. package/src/components/restaurant-management/index.tsx +0 -54
  165. package/src/components/restaurant-management/left-side.tsx +0 -51
  166. package/src/components/restaurant-management/right-side.tsx +0 -179
  167. package/src/components/restaurant-management/table-empty.tsx +0 -43
  168. package/src/components/session-management/close-session-modal/actions.tsx +0 -45
  169. package/src/components/session-management/close-session-modal/close-session-confirm.tsx +0 -157
  170. package/src/components/session-management/close-session-modal/close-session-ticket.tsx +0 -218
  171. package/src/components/session-management/close-session-modal/container.tsx +0 -25
  172. package/src/components/session-management/close-session-modal/draft-orders-confirm.tsx +0 -53
  173. package/src/components/session-management/close-session-modal/draft-orders-summary.tsx +0 -82
  174. package/src/components/session-management/close-session-modal/draft-orders.tsx +0 -34
  175. package/src/components/session-management/close-session-modal/index.tsx +0 -35
  176. package/src/components/session-management/close-session-modal/order/index.ts +0 -1
  177. package/src/components/session-management/close-session-modal/order/order-line.tsx +0 -64
  178. package/src/components/session-management/close-session-modal/order/orders-in-draft.tsx +0 -31
  179. package/src/components/session-management/close-session-modal/session-summary.tsx +0 -165
  180. package/src/components/session-management/index.ts +0 -1
  181. package/src/components/session-management/open-shift/index.tsx +0 -172
  182. package/src/components/table-management/index.tsx +0 -0
  183. package/src/constants/api/index.ts +0 -1
  184. package/src/constants/headers.constant.tsx +0 -24
  185. package/src/constants/index.ts +0 -1
  186. package/src/constants/language.store.ts +0 -21
  187. package/src/constants/methods.constant.ts +0 -10
  188. package/src/constants/order-state.ts +0 -8
  189. package/src/constants/payment-color.constant.ts +0 -26
  190. package/src/constants/query.constant.ts +0 -14
  191. package/src/constants/routes.constants.ts +0 -23
  192. package/src/constants/template-name.constant.ts +0 -9
  193. package/src/hooks/bill/use-get-bill-information.ts +0 -49
  194. package/src/hooks/bill/use-print-bill.tsx +0 -0
  195. package/src/hooks/common/load-env-config.ts +0 -98
  196. package/src/hooks/common/use-back.ts +0 -13
  197. package/src/hooks/common/use-broadcast.ts +0 -22
  198. package/src/hooks/common/use-click-outside.ts +0 -58
  199. package/src/hooks/common/use-get-base64-photo.ts +0 -71
  200. package/src/hooks/common/use-get-query.ts +0 -25
  201. package/src/hooks/common/use-pos.ts +0 -21
  202. package/src/hooks/common/use-query-params.ts +0 -89
  203. package/src/hooks/common/use-speech.ts +0 -36
  204. package/src/hooks/customer/use-customer-provider.ts +0 -247
  205. package/src/hooks/floor/use-floor-provider.ts +0 -172
  206. package/src/hooks/kitchen/use-kitchen-provider.ts +0 -80
  207. package/src/hooks/order/use-get-point-reward.ts +0 -50
  208. package/src/hooks/order/use-loop-fetch-order.ts +0 -30
  209. package/src/hooks/order/use-order-items.ts +0 -61
  210. package/src/hooks/order/use-orders.ts +0 -76
  211. package/src/hooks/payment/use-payment-provider.ts +0 -221
  212. package/src/hooks/product/use-product-provider.ts +0 -87
  213. package/src/hooks/session/use-check-session.tsx +0 -19
  214. package/src/hooks/session/use-session-provider.ts +0 -79
  215. package/src/hooks/table/use-pos-table-provider.ts +0 -193
  216. package/src/index.css +0 -5
  217. package/src/index.ts +0 -10
  218. package/src/layouts/common.tsx +0 -15
  219. package/src/layouts/index.ts +0 -4
  220. package/src/layouts/pos-layout.tsx +0 -33
  221. package/src/layouts/pos-order-layout.tsx +0 -43
  222. package/src/layouts/sale-layout.tsx +0 -25
  223. package/src/locales/en.json +0 -394
  224. package/src/locales/vi.json +0 -400
  225. package/src/pages/index.ts +0 -4
  226. package/src/pages/login/index.tsx +0 -128
  227. package/src/pages/pincode/index.tsx +0 -198
  228. package/src/pages/pos/kitchen-management/layout.tsx +0 -18
  229. package/src/pages/pos/management-floor/index.tsx +0 -7
  230. package/src/pages/pos/management-order/index.tsx +0 -7
  231. package/src/pages/pos/management-order/order-detail/index.tsx +0 -7
  232. package/src/pages/pos/management-table/index.tsx +0 -0
  233. package/src/pages/pos/payment-success/index.tsx +0 -75
  234. package/src/provider/app-provider.tsx +0 -56
  235. package/src/provider/fallback/custom-error.tsx +0 -26
  236. package/src/provider/main-provider.tsx +0 -41
  237. package/src/provider/meta-provider.tsx +0 -72
  238. package/src/provider/modal-provider.tsx +0 -48
  239. package/src/provider/notification-provider.tsx +0 -64
  240. package/src/provider/pos-provider/close-session-provider/index.tsx +0 -207
  241. package/src/provider/pos-provider/customer-provider/index.tsx +0 -30
  242. package/src/provider/pos-provider/floor-provider/index.tsx +0 -39
  243. package/src/provider/pos-provider/index.ts +0 -6
  244. package/src/provider/pos-provider/kitchen-provider/index.tsx +0 -30
  245. package/src/provider/pos-provider/order-detail-provider/index.tsx +0 -233
  246. package/src/provider/pos-provider/order-provider/index.tsx +0 -803
  247. package/src/provider/pos-provider/payment-provider/index.tsx +0 -30
  248. package/src/provider/pos-provider/product-provider/index.tsx +0 -30
  249. package/src/provider/pos-provider/sale-provider/index.tsx +0 -168
  250. package/src/provider/pos-provider/session-provider/index.tsx +0 -30
  251. package/src/provider/pos-provider/socket-provider/index.tsx +0 -118
  252. package/src/provider/pos-provider/table-provider/index.tsx +0 -30
  253. package/src/provider/public-provider.tsx +0 -104
  254. package/src/provider/use-session-provider.ts +0 -79
  255. package/src/router/app-router.tsx +0 -38
  256. package/src/router/index.tsx +0 -26
  257. package/src/router/pos-route.tsx +0 -75
  258. package/src/router/protected-route.tsx +0 -16
  259. package/src/router/public-route.tsx +0 -11
  260. package/src/store/header/index.ts +0 -21
  261. package/src/store/session/index.ts +0 -25
  262. package/src/store/states/cart.state.ts +0 -135
  263. package/src/store/states/close-session.state.ts +0 -20
  264. package/src/store/states/customer.state.ts +0 -19
  265. package/src/store/states/payment.state.ts +0 -14
  266. package/src/styles/base.css +0 -212
  267. package/src/styles/common.css +0 -65
  268. package/src/styles/lib/tailwind.css +0 -0
  269. package/src/styles/lib/tailwind.theme.css +0 -34
  270. package/src/styles/loading.css +0 -72
  271. package/src/styles/main.css +0 -5
  272. package/src/styles/refreshing-content.css +0 -55
  273. package/src/styles/text.css +0 -44
  274. package/src/types/account.ts +0 -61
  275. package/src/types/branch.ts +0 -6
  276. package/src/types/category.ts +0 -13
  277. package/src/types/common.ts +0 -4
  278. package/src/types/customer.ts +0 -52
  279. package/src/types/dashboard.ts +0 -18
  280. package/src/types/edc.ts +0 -37
  281. package/src/types/export-e-invoice.ts +0 -17
  282. package/src/types/filter.d.ts +0 -12
  283. package/src/types/floor/floor.ts +0 -16
  284. package/src/types/floor.d.ts +0 -36
  285. package/src/types/index.ts +0 -127
  286. package/src/types/invoice.ts +0 -32
  287. package/src/types/modal.ts +0 -15
  288. package/src/types/notification.ts +0 -12
  289. package/src/types/order.ts +0 -182
  290. package/src/types/payment.ts +0 -44
  291. package/src/types/product/product.ts +0 -47
  292. package/src/types/product.ts +0 -137
  293. package/src/types/provider-info.d.ts +0 -14
  294. package/src/types/qr.d.ts +0 -25
  295. package/src/types/report.d.ts +0 -43
  296. package/src/types/sale.d.ts +0 -68
  297. package/src/types/search.d.ts +0 -7
  298. package/src/types/session.d.ts +0 -30
  299. package/src/types/shop-qr.d.ts +0 -89
  300. package/src/types/staff.d.ts +0 -35
  301. package/src/types/store.d.ts +0 -25
  302. package/src/types/table.d.ts +0 -57
  303. package/src/utils/close-session-ticket.tsx +0 -129
  304. package/src/utils/functions.ts +0 -299
  305. package/src/utils/i18n.ts +0 -25
  306. package/src/utils/pos/bill.ts +0 -156
  307. package/src/utils/pos/convert-order.ts +0 -58
  308. package/src/utils/pos/helpers.ts +0 -48
  309. package/src/utils/pos/session.ts +0 -44
  310. package/src/utils/storages/index.ts +0 -1
  311. package/src/utils/storages/local-storage.ts +0 -72
  312. package/tailwind.preset.ts +0 -25
  313. package/tsconfig.json +0 -30
  314. package/tsup.config.ts +0 -30
@@ -1,130 +0,0 @@
1
- import Image from "@components/common/image";
2
- import { CartItemType } from "@store/states/cart.state";
3
- import { useState } from "react";
4
- import CancelOrderLineConfirm from "./cancel-order-line-modal";
5
- import { CartItem } from "./cart-item";
6
- import { EmptyState } from "@components/common/empty-state";
7
- import { VNCurrency } from "@components/common/header";
8
- import { useOrder } from "@provider/pos-provider";
9
-
10
- export const CartItems = ({
11
- cartItemsArr,
12
- showPayment,
13
- }: {
14
- cartItemsArr: CartItemType[];
15
- showPayment?: boolean;
16
- }) => {
17
- const [showModal, setShowModal] = useState(false);
18
- const [cancelOrder, setCancelOrder] = useState<CartItemType | undefined>(
19
- undefined
20
- );
21
- const { onCallDish, onRemoveProduct } = useOrder();
22
-
23
- const onCancelOrderLine = () => {
24
- if (!cancelOrder) return;
25
- onRemoveProduct(cancelOrder.product);
26
- onCallDish();
27
- };
28
-
29
- return (
30
- <div className="bg-white h-fit rounded-lg border border-stroke-default flex flex-col justify-between flex-1 overflow-hidden">
31
- {cartItemsArr.length > 0 ? (
32
- showPayment ? (
33
- <CartTable cartItemsArr={cartItemsArr} />
34
- ) : (
35
- <div className="flex flex-col">
36
- {cartItemsArr.map((item) => (
37
- <CartItem
38
- key={item.lineId?.toString()}
39
- item={item}
40
- setCancelOrder={setCancelOrder}
41
- />
42
- ))}
43
- {showModal && (
44
- <CancelOrderLineConfirm
45
- onClose={() => setShowModal(false)}
46
- onCancelOrderLine={onCancelOrderLine}
47
- />
48
- )}
49
- </div>
50
- )
51
- ) : (
52
- <div className="flex flex-col gap-3 justify-center items-center h-full">
53
- <Image
54
- imageUrl="/assets/images/empty-cart.png"
55
- className="w-[164px] aspect-square"
56
- />
57
- <p className="text-sm font-medium text-text-primary">
58
- Vui lòng thêm món để tiếp tục
59
- </p>
60
- </div>
61
- )}
62
- </div>
63
- );
64
- };
65
-
66
- const CartTable = ({ cartItemsArr }: { cartItemsArr: CartItemType[] }) => {
67
- const tableHeader = ["Sản phẩm", "SL", "Đơn giá", "Thành tiền"];
68
- const isLoading = false;
69
- return (
70
- <table className="min-w-full divide-y divide-stroke-disabled table-fixed">
71
- <thead className=" sticky top-0 z-10 border-b border-stroke-disabled">
72
- <tr>
73
- {tableHeader.map((header, idx) => (
74
- <th
75
- key={idx}
76
- className="px-3 py-3 text-left text-sm font-semibold text-text-disable"
77
- >
78
- <div>{header}</div>
79
- </th>
80
- ))}
81
- </tr>
82
- </thead>
83
-
84
- {/* Body */}
85
- <tbody className="bg-white divide-y divide-stroke-disabled [&>tr]:h-11">
86
- {cartItemsArr?.length ? (
87
- cartItemsArr.map((orderLine) => {
88
- return (
89
- <tr
90
- key={orderLine.lineId?.toString()}
91
- className="text-sm text-text-primary font-semibold leading-5 tracking-[-0.12px] border-b border-stroke-disabled"
92
- >
93
- <td className="p-3">{orderLine.product.name}</td>
94
- <td className="p-3">{orderLine.qty}</td>
95
- <td className="p-3">
96
- {orderLine.product.lst_price.toLocaleString()}
97
- {VNCurrency}
98
- </td>
99
- <td className="p-3">
100
- {(
101
- orderLine.product.lst_price * orderLine.qty
102
- ).toLocaleString()}{" "}
103
- {VNCurrency}
104
- </td>
105
- </tr>
106
- );
107
- })
108
- ) : (
109
- <tr>
110
- <td
111
- colSpan={tableHeader.length}
112
- className="text-center text-sm text-gray-500 py-6"
113
- >
114
- {isLoading ? (
115
- "Đang tải đơn hàng..."
116
- ) : (
117
- <EmptyState
118
- image="/assets/images/order-empty-state.png"
119
- imageAlt="empty-order"
120
- description="Chưa có đơn"
121
- imageClassName="size-[200px]"
122
- />
123
- )}
124
- </td>
125
- </tr>
126
- )}
127
- </tbody>
128
- </table>
129
- );
130
- };
@@ -1,67 +0,0 @@
1
- import { IcDot } from "@assets/icons/common";
2
- import { IcOrderList } from "@assets/icons/pos-icon";
3
- import { VNCurrency } from "@components/common/header";
4
- import { QUERY_KEYS } from "@constants/query.constant";
5
- import { useQueryParams } from "@hooks/common/use-query-params";
6
- import { useFloor } from "@provider/pos-provider/floor-provider";
7
- import { TBasicOrder } from "@type/order";
8
-
9
- export const DraftOrderLine = ({
10
- order,
11
- onBack,
12
- onAppendDisplayedOrders,
13
- }: {
14
- order: TBasicOrder;
15
- onBack: () => void;
16
- onAppendDisplayedOrders?: (orderId: string) => void;
17
- }) => {
18
- const { updateMultipleQuery } = useQueryParams();
19
- const { tableOfOrder } = useFloor();
20
- const { floorId, tableId, fullName } = tableOfOrder(order.table_id, order.id);
21
-
22
- const onSelectOrder = () => {
23
- updateMultipleQuery([
24
- {
25
- key: QUERY_KEYS.ORDER_ID,
26
- value: order.id.toString(),
27
- },
28
- {
29
- key: QUERY_KEYS.TABLE_ID,
30
- value: tableId?.toString(),
31
- },
32
- {
33
- key: QUERY_KEYS.FLOOR,
34
- value: floorId?.toString(),
35
- },
36
- ]);
37
- onBack();
38
- };
39
-
40
- return (
41
- <div
42
- className="px-2 rounded-lg bg-white flex gap-3 items-center min-h-[60px] cursor-pointer"
43
- onClick={() => onSelectOrder()}
44
- >
45
- <div className="flex items-center justify-center bg-bg-disabled h-12 size-11 rounded-lg text-primary">
46
- <IcOrderList />
47
- </div>
48
- <div className="flex flex-col flex-1">
49
- <p className="flex gap-[6px] items-center text-sm font-medium text-text-secondary">
50
- <span className="text-text-primary">{fullName}</span>
51
- <span>#{order.id}</span>
52
- </p>
53
- <p className="flex gap-[6px] items-center text-sm">
54
- <span>
55
- {order.create_date.getHours()}:{order.create_date.getMinutes()}
56
- </span>
57
- <IcDot />
58
- <span>{order.create_date.toLocaleDateString()}</span>
59
- </p>
60
- </div>
61
- <p>
62
- {order.create_date.toLocaleString()}
63
- {VNCurrency}
64
- </p>
65
- </div>
66
- );
67
- };
@@ -1,40 +0,0 @@
1
- import { IcClose } from "@assets/icons/common";
2
- import { ButtonIcon } from "@components/common/button-icon";
3
- import { TBasicOrder } from "@type/order";
4
- import { DraftOrderLine } from "./draft-order-line";
5
-
6
- export const DraftOrders = ({
7
- onBack,
8
- orders,
9
- onAppendDisplayedOrders,
10
- }: {
11
- onBack: () => void;
12
- orders: TBasicOrder[];
13
- onAppendDisplayedOrders?: (orderId: string) => void;
14
- }) => {
15
- return (
16
- <div className="flex-1 flex flex-col overflow-y-auto h-full">
17
- <div className="p-[6px] flex justify-between items-center bg-white h-15">
18
- <ButtonIcon
19
- iconSrc={<IcClose />}
20
- onClick={() => onBack()}
21
- className="bg-neutral-disabled"
22
- />
23
- <p className="text-lg font-semibold text-text-primary">
24
- Đơn chưa thanh toán
25
- </p>
26
- <div className="size-12" />
27
- </div>
28
- <div className="flex flex-col gap-2 p-2 flex-1 overflow-y-auto">
29
- {orders.map((order) => (
30
- <DraftOrderLine
31
- key={order.id}
32
- order={order}
33
- onBack={onBack}
34
- onAppendDisplayedOrders={onAppendDisplayedOrders}
35
- />
36
- ))}
37
- </div>
38
- </div>
39
- );
40
- };
@@ -1,11 +0,0 @@
1
- import { CartItemType } from "@store/states/cart.state"
2
-
3
- export const EditCartModal = ({
4
- cartItem
5
- }:{
6
- cartItem?: CartItemType
7
- }) => {
8
- return (
9
- <div>EditCartModal</div>
10
- )
11
- }
@@ -1,260 +0,0 @@
1
- import ProductDetailModal from "@components/pos-management/menu-content/product-detail/modal";
2
- import { QUERY_KEYS } from "@constants/query.constant";
3
- import { useQueryParams } from "@hooks/common/use-query-params";
4
- import useGetPointReward from "@hooks/order/use-get-point-reward";
5
- import { useFloor } from "@provider/pos-provider/floor-provider";
6
- import { useKitchen } from "@provider/pos-provider/kitchen-provider";
7
- import { useOrderDetail } from "@provider/pos-provider/order-detail-provider";
8
- import { useOrder } from "@provider/pos-provider/order-provider";
9
- import { LoadDataModel, useSale } from "@provider/pos-provider/sale-provider";
10
- import { CartItemType, useCartStore } from "@store/states/cart.state";
11
- import { usePaymentStore } from "@store/states/payment.state";
12
- import { arraysEqual } from "@utils/functions";
13
- import { useEffect, useMemo, useState } from "react";
14
- import { useLocation } from "react-router-dom";
15
- import { ActionLine } from "./action-line";
16
- import { CartItems } from "./cart-items";
17
- import { DraftOrders } from "./draft-orders";
18
- import { NoSelectOrder } from "./no-select-order";
19
- import { OrderInfo } from "./order-info";
20
- import { OrderTotal } from "./order-total";
21
- import { OrdersLine } from "./orders-line";
22
- import POSPath from "@constants/routes.constants";
23
-
24
- export const CartContent = () => {
25
- const { showPayment, setShowPayment } = usePaymentStore();
26
- const [displayedOrders, setDisplayedOrders] = useState<string[]>([]);
27
- const [showDraftOrders, setShowDraftOrders] = useState(false);
28
- const { getQuery, updateMultipleQuery } = useQueryParams();
29
- const orderId = getQuery(QUERY_KEYS.ORDER_ID);
30
- const tableId = getQuery(QUERY_KEYS.TABLE_ID);
31
- const pathName = useLocation().pathname;
32
-
33
- const {
34
- orders,
35
- draftOrders,
36
- orderDetailById,
37
- partnerIdQueryResult,
38
- handleCreateOrder,
39
- } = useOrder();
40
-
41
- const { displayDataQueryResult } = useKitchen();
42
- const { taxAmount, totalAmount, totalQty } = useOrderDetail();
43
- const { pointReward } = useGetPointReward({
44
- totalAmountWithoutTax: totalAmount - taxAmount,
45
- });
46
- const partnerId = useMemo(() => {
47
- return orderDetailById?.partner_id;
48
- }, [orderDetailById]);
49
-
50
- const isGuest = useMemo(() => {
51
- return Number(partnerId) === (partnerIdQueryResult?.data || 7);
52
- }, [partnerId]);
53
-
54
- const { cartItems } = useCartStore();
55
- const orderedLine = useMemo(() => {
56
- const orders = displayDataQueryResult?.data?.orders
57
- ?.filter((item: any) => item?.pos_order_id === Number(orderId))
58
- ?.map((item: any) => item.orderlines)
59
- ?.flat()
60
- ?.reduce((acc: any, item: any) => {
61
- if (!acc[item.product_id]) {
62
- acc[item.product_id] = { ...item };
63
- } else {
64
- acc[item.product_id].product_quantity += item.product_quantity;
65
- acc[item.product_id].product_cancelled += item.product_cancelled;
66
- }
67
- return acc;
68
- }, {});
69
- return orders;
70
- }, [displayDataQueryResult, orderId]);
71
-
72
- const cartItemsArr = useMemo(() => {
73
- const items = Object.values(cartItems);
74
- return items?.map((item: CartItemType) => {
75
- const orderLine = orderedLine?.[item.product.id];
76
- return {
77
- ...item,
78
- ordered:
79
- orderLine?.product_id == item.product.id &&
80
- orderLine.product_quantity - orderLine.product_cancelled ==
81
- item.qty &&
82
- arraysEqual(
83
- orderLine?.attribute_ids ?? [],
84
- item?.product?.attributeValueIds ?? []
85
- ),
86
- orderedNumber:
87
- (orderLine?.product_quantity ?? 0) -
88
- (orderLine?.product_cancelled ?? 0),
89
- };
90
- });
91
- }, [cartItems, orderedLine]);
92
-
93
- const onFindDisplayedOrders = () => {
94
- const takeAwayOrders = draftOrders.filter((order) => !order.table_id);
95
- if (tableId) return tableId;
96
- if (draftOrders.length == 0 || takeAwayOrders.length > 0) return "";
97
- return draftOrders[0].table_id ? draftOrders[0].table_id : "";
98
- };
99
-
100
- useEffect(() => {
101
- const tempTableId = onFindDisplayedOrders();
102
- const orders = draftOrders.filter((order) => {
103
- return tempTableId
104
- ? order.table_id?.toString() === tempTableId?.toString()
105
- : !order.table_id;
106
- });
107
- setDisplayedOrders(orders.slice(0, 3).map((order) => order.id.toString()));
108
- }, [draftOrders, tableId]);
109
-
110
- const onAppendDisplayedOrders = (orderId: string) => {
111
- setDisplayedOrders((prev) => [orderId, ...prev]);
112
- };
113
- const {
114
- queryResult: { data: posSession },
115
- isModePosRestaurant,
116
- } = useSale();
117
- const categoriesData = posSession?.[LoadDataModel.POS_CATEGORY]?.data;
118
- const floorId = getQuery(QUERY_KEYS.FLOOR);
119
- const categoryId = getQuery(QUERY_KEYS.CATEGORY_ID);
120
- const { pathname } = useLocation();
121
- const { floors: floorData } = useFloor();
122
-
123
- useEffect(() => {
124
- const tableIdFirstOrder =
125
- draftOrders?.find((order) => order.id.toString() === displayedOrders[0])
126
- ?.table_id ?? "";
127
-
128
- if (pathname === POSPath.TABLES && (!floorId || !tableId || !orderId)) {
129
- updateMultipleQuery([
130
- {
131
- key: QUERY_KEYS.FLOOR,
132
- value: floorId ?? String(floorData?.[0]?.id),
133
- },
134
- {
135
- key: QUERY_KEYS.ORDER_ID,
136
- value: orderId ?? String(displayedOrders[0]),
137
- },
138
- {
139
- key: QUERY_KEYS.TABLE_ID,
140
- value:
141
- tableId ??
142
- (tableIdFirstOrder == false ? "" : String(tableIdFirstOrder ?? "")),
143
- },
144
- ]);
145
- } else if (
146
- pathname === POSPath.MENUS &&
147
- (!categoryId || !tableId || !orderId)
148
- ) {
149
- updateMultipleQuery([
150
- {
151
- key: QUERY_KEYS.CATEGORY_ID,
152
- value: categoryId ?? String(categoriesData?.[0]?.id ?? ""),
153
- },
154
- {
155
- key: QUERY_KEYS.ORDER_ID,
156
- value: orderId ?? String(displayedOrders[0] ?? ""),
157
- },
158
- {
159
- key: QUERY_KEYS.TABLE_ID,
160
- value:
161
- tableId ??
162
- (tableIdFirstOrder == false ? "" : String(tableIdFirstOrder) ?? ""),
163
- },
164
- ]);
165
- }
166
- }, [
167
- displayedOrders,
168
- categoriesData,
169
- floorData,
170
- floorId,
171
- categoryId,
172
- pathname,
173
- ]);
174
-
175
- useEffect(() => {
176
- updateMultipleQuery([
177
- {
178
- key: QUERY_KEYS.CATEGORY_ID,
179
- value: categoryId ?? String(categoriesData?.[0]?.id ?? ""),
180
- },
181
- {
182
- key: QUERY_KEYS.ORDER_ID,
183
- value: String(displayedOrders[0] ?? ""),
184
- },
185
- ]);
186
- }, [displayedOrders]);
187
-
188
- // useEffect(() => {
189
- // const currentOrder = orders?.find(
190
- // (order) => order.id.toString() === orderId
191
- // );
192
- // if (
193
- // currentOrder &&
194
- // (currentOrder.state === ORDER_STATE.INVOICED ||
195
- // currentOrder.state === ORDER_STATE.PAID)
196
- // ) {
197
- // navigate({
198
- // pathname: POSPath.SUCCESS,
199
- // search: `?${formatQuery([
200
- // QUERY_KEYS.POS_ID,
201
- // QUERY_KEYS.SESSION_ID,
202
- // QUERY_KEYS.ORDER_ID,
203
- // ])}`,
204
- // });
205
- // }
206
- // }, [orderId]);
207
-
208
- return (
209
- <div className="w-[35%] border-r border-stroke-disabled bg-neutral-100-96">
210
- {orders && draftOrders.length == 0 ? (
211
- isModePosRestaurant ? (
212
- <NoSelectOrder text="Vui lòng chọn bàn để tạo đơn" />
213
- ) : (
214
- <NoSelectOrder handleCreateOrder={handleCreateOrder} />
215
- )
216
- ) : showDraftOrders ? (
217
- <DraftOrders
218
- onBack={() => setShowDraftOrders(false)}
219
- orders={draftOrders}
220
- onAppendDisplayedOrders={onAppendDisplayedOrders}
221
- />
222
- ) : (
223
- <div className="flex flex-col justify-between flex-1 h-full overflow-y-auto">
224
- <div className="flex-1 flex flex-col overflow-y-auto">
225
- <OrdersLine
226
- draftOrders={draftOrders}
227
- onShowDraftOrders={() => setShowDraftOrders(true)}
228
- displayedOrders={displayedOrders}
229
- setDisplayedOrders={setDisplayedOrders}
230
- />
231
- <div className="px-2 py-[6px] flex flex-1 flex-col gap-2 overflow-y-auto">
232
- {orderDetailById && (
233
- <>
234
- <OrderInfo
235
- orderDetail={orderDetailById}
236
- showPayment={showPayment}
237
- />
238
- <CartItems
239
- cartItemsArr={cartItemsArr}
240
- showPayment={showPayment}
241
- />
242
- </>
243
- )}
244
- </div>
245
- </div>
246
-
247
- <div className="min-h-fit">
248
- <OrderTotal />
249
- <ActionLine
250
- cartItemsArr={cartItemsArr}
251
- showPayment={showPayment}
252
- setShowPayment={setShowPayment}
253
- />
254
- </div>
255
- </div>
256
- )}
257
- <ProductDetailModal />
258
- </div>
259
- );
260
- };
@@ -1,26 +0,0 @@
1
- import { IcPlus } from "@assets/icons/common";
2
- import ButtonAction from "@components/common/button-action";
3
-
4
- type Props = {
5
- text?: string;
6
- handleCreateOrder?: () => void;
7
- };
8
-
9
- export const NoSelectOrder = ({ text, handleCreateOrder }: Props) => {
10
- return (
11
- <div className="size-full flex flex-col gap-3 justify-center items-center bg-white">
12
- <img src="/assets/images/empty-cart.svg" />
13
- <p className="text-sm font-medium text-text-primary">
14
- {text ?? "Vui lòng tạo đơn để tiếp tục bán"}
15
- </p>
16
- {handleCreateOrder && (
17
- <ButtonAction
18
- onClick={() => handleCreateOrder()}
19
- iconSrc={<IcPlus />}
20
- text="Tạo đơn"
21
- className="button-primary h-12 min-w-fit px-3"
22
- />
23
- )}
24
- </div>
25
- );
26
- };
@@ -1,53 +0,0 @@
1
- import { IcCloseCircleFill } from "@assets/icons/common";
2
- import { IcUserAddFill } from "@assets/icons/user-add-line-icon";
3
- import ButtonAction from "@components/common/button-action";
4
- import { useOrderDetail } from "@provider/pos-provider/order-detail-provider";
5
- import { useOrder } from "@provider/pos-provider/order-provider";
6
- import { TCustomer } from "@type/customer";
7
-
8
- type TProps = {
9
- onOpenChooseCustomerModal: () => void;
10
- onEditCustomer: ({ customer }: { customer: TCustomer }) => void;
11
- };
12
-
13
- const CustomerInfo = ({
14
- onOpenChooseCustomerModal,
15
- onEditCustomer,
16
- }: TProps) => {
17
- const { customer } = useOrderDetail();
18
- const { orderDetailById, partnerIdQueryResult, onRemoveCustomer } =
19
- useOrder();
20
-
21
- const partnerId = orderDetailById?.partner_id;
22
- const isGuest = Number(partnerId) === (partnerIdQueryResult?.data || 7);
23
- const customerName = customer?.name;
24
- const showAddCustomerIcon = isGuest || !customerName;
25
-
26
- return (
27
- <div className="relative">
28
- <ButtonAction
29
- onClick={
30
- !showAddCustomerIcon
31
- ? () => onEditCustomer({ customer })
32
- : onOpenChooseCustomerModal
33
- }
34
- iconSrc={showAddCustomerIcon ? <IcUserAddFill /> : undefined}
35
- text={showAddCustomerIcon ? "" : customerName}
36
- className={`h-11 min-h-11 ${
37
- showAddCustomerIcon
38
- ? "w-11 min-w-11 text-text-active"
39
- : "w-full text-primary"
40
- } rounded-lg border-[0.5px] border-stroke-disabled bg-white min-w-fit`}
41
- textClassName="text-sm"
42
- />
43
-
44
- {!showAddCustomerIcon && (
45
- <button onClick={onRemoveCustomer} className="absolute -right-1 -top-1">
46
- <IcCloseCircleFill />
47
- </button>
48
- )}
49
- </div>
50
- );
51
- };
52
-
53
- export default CustomerInfo;