sme-pos-package 1.0.14 → 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 -13
  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,207 +0,0 @@
1
- import { useService } from "@fctc/widget-logic/provider";
2
- import { useMutation, useQuery } from "@tanstack/react-query";
3
- import { createContext, useContext, useMemo } from "react";
4
- import { useSearchParams } from "react-router-dom";
5
-
6
- import { METHOD } from "@constants/methods.constant";
7
- import { ORDER_STATE } from "@constants/order-state";
8
- import { QUERY_KEYS } from "@constants/query.constant";
9
- import { sessionStorageUtils } from "@fctc/widget-logic/utils";
10
- import { usePosAppProvider } from "@provider/app-provider";
11
- import { TBasicOrder } from "@type/order";
12
- import { toast } from "react-toastify";
13
- import { useOrder } from "../order-provider";
14
-
15
- const Context = createContext<{
16
- draftInPaidOrders: TBasicOrder[];
17
- getDataCloseSessionQuery: any;
18
- closeSession: ({
19
- countedCash,
20
- notes,
21
- }: {
22
- countedCash: number;
23
- notes: string;
24
- }) => Promise<boolean | undefined | TCloseSessionRes>;
25
- }>({
26
- draftInPaidOrders: [],
27
- getDataCloseSessionQuery: {},
28
- closeSession: () => Promise.resolve(true),
29
- });
30
-
31
- const Provider = ({ children }: { children: React.ReactNode }) => {
32
- const {
33
- useHandleCloseSession,
34
- useHandleClosingDetailSession,
35
- useUpdateEntity,
36
- } = useService();
37
- const handleCloseSession = useHandleCloseSession().mutateAsync;
38
- const updateEntityMutation = useUpdateEntity().mutateAsync;
39
- const handleClosingDetailSessionMutation =
40
- useHandleClosingDetailSession().mutateAsync;
41
-
42
- const [searchParams] = useSearchParams();
43
- const sessionId = searchParams.get(QUERY_KEYS.SESSION_ID);
44
- const { user } = usePosAppProvider();
45
- const xNode = user?.userProfile?.data?.x_node;
46
- const service = sessionStorageUtils.getMenuFocus().service || `wesap`;
47
-
48
- const commonPayload = useMemo(() => {
49
- return { model: "pos.session", ids: [Number(sessionId)], service, xNode };
50
- }, [service, sessionId, xNode]);
51
-
52
- const { orders } = useOrder();
53
-
54
- const draftInPaidOrders = orders.filter(
55
- (item) => item.state == ORDER_STATE.NEW || item.state == ORDER_STATE.IN_PAID
56
- );
57
-
58
- const getDataCloseSession = useMutation({
59
- mutationFn: async () => {
60
- return await handleCloseSession({
61
- ...commonPayload,
62
- method: METHOD.GET_CLOSING_CONTROL_DATA,
63
- });
64
- },
65
- });
66
-
67
- const getDataCloseSessionQuery = useQuery({
68
- queryKey: [
69
- "get-data-close-session",
70
- service,
71
- xNode,
72
- commonPayload,
73
- sessionId,
74
- ],
75
- queryFn: () => {
76
- if (!commonPayload) return Promise.resolve(null);
77
- return getDataCloseSession.mutateAsync();
78
- },
79
- enabled: !!service && !!xNode && !!commonPayload && !!sessionId,
80
- });
81
-
82
- const closingDetail = useMutation({
83
- mutationFn: (countedCash: number) => {
84
- return handleClosingDetailSessionMutation({
85
- ...commonPayload,
86
- method: METHOD.POST_CLOSING_CASH_DETAILS,
87
- kwargs: {
88
- counted_cash: countedCash,
89
- },
90
- }) as Promise<{ successful: boolean }>;
91
- },
92
- });
93
-
94
- const updateClosingStateSession = useMutation({
95
- mutationFn: async (notes: string) => {
96
- return await handleClosingDetailSessionMutation({
97
- ...commonPayload,
98
- method: METHOD.UPDATE_CLOSING_CONTROL_STATE_SESSION,
99
- kwargs: {
100
- notes,
101
- },
102
- });
103
- },
104
- });
105
-
106
- const actionCloseSession = useMutation({
107
- mutationFn: async () => {
108
- return (await handleCloseSession({
109
- ...commonPayload,
110
- method: METHOD.ACTION_POS_SESSION_CLOSING_CONTROL,
111
- })) as Promise<boolean | TCloseSessionRes>;
112
- },
113
- });
114
-
115
- const forceCloseSession = useMutation({
116
- mutationFn: async () => {
117
- return (await handleCloseSession({
118
- ...commonPayload,
119
- method: METHOD.ACTION_POS_SESSION_CLOSE,
120
- })) as Promise<boolean>;
121
- },
122
- });
123
-
124
- const updateSessionCloseDate = useMutation({
125
- mutationFn: () =>
126
- updateEntityMutation({
127
- model: "pos.session",
128
- domain: [["id", "=", sessionId]],
129
- values: {
130
- stop_at: new Date().toISOString().slice(0, 19).replace("T", " "),
131
- state: "closed",
132
- },
133
- service: service ?? "",
134
- xNode: xNode ?? "",
135
- }),
136
- });
137
-
138
- const closeSessionSuccessHandler = () => {
139
- toast.success("Đóng ca thành công");
140
- };
141
-
142
- const onForceCloseSession = () => {
143
- forceCloseSession.mutateAsync().then((res) => {
144
- if (res) {
145
- updateSessionCloseDate.mutateAsync().then(() => {
146
- closeSessionSuccessHandler();
147
- });
148
- } else {
149
- toast.error("Close session failed");
150
- }
151
- });
152
- };
153
-
154
- const closeSession = async ({
155
- countedCash,
156
- notes,
157
- }: {
158
- countedCash: number;
159
- notes: string;
160
- }) => {
161
- try {
162
- closingDetail.mutateAsync(countedCash);
163
- } catch (error) {
164
- console.error(error);
165
- onForceCloseSession();
166
- return;
167
- }
168
-
169
- await updateClosingStateSession.mutateAsync(notes);
170
-
171
- const actionCloseSessionRes = await actionCloseSession.mutateAsync();
172
-
173
- if (actionCloseSessionRes && typeof actionCloseSessionRes === "boolean") {
174
- closeSessionSuccessHandler();
175
- } else {
176
- onForceCloseSession();
177
- }
178
-
179
- return actionCloseSessionRes;
180
- };
181
-
182
- return (
183
- <Context.Provider
184
- value={{
185
- draftInPaidOrders,
186
- getDataCloseSessionQuery,
187
- closeSession,
188
- }}
189
- >
190
- {children}
191
- </Context.Provider>
192
- );
193
- };
194
-
195
- export const CloseSessionProvider = Provider;
196
-
197
- export function useCloseSession() {
198
- const context = useContext(Context);
199
-
200
- if (!context) {
201
- throw new Error(
202
- "useCloseSession must be used within a CloseSessionProvider"
203
- );
204
- }
205
-
206
- return context;
207
- }
@@ -1,30 +0,0 @@
1
- import useCustomerProvider, {
2
- useCustomerProviderType,
3
- } from "@hooks/customer/use-customer-provider"
4
- import { createContext, useContext } from "react"
5
-
6
- const ReactContext = createContext<useCustomerProviderType>(
7
- {} as useCustomerProviderType
8
- )
9
-
10
- export const CustomerProvider = ({
11
- children,
12
- }: {
13
- children: React.ReactNode
14
- }) => {
15
- return (
16
- <ReactContext.Provider value={useCustomerProvider()}>
17
- {children}
18
- </ReactContext.Provider>
19
- )
20
- }
21
-
22
- export const useCustomer = () => {
23
- const context = useContext(ReactContext)
24
-
25
- if (!context) {
26
- throw new Error("useCustomer must be used within a CustomerProvider")
27
- }
28
-
29
- return context
30
- }
@@ -1,39 +0,0 @@
1
- import useGetQuery from "@hooks/common/use-get-query";
2
- import usePos from "@hooks/common/use-pos";
3
- import useFloorProvider, {
4
- useFloorProviderType,
5
- } from "@hooks/floor/use-floor-provider";
6
- import { createContext, useContext } from "react";
7
-
8
- const ReactContext = createContext<useFloorProviderType>(
9
- {} as useFloorProviderType
10
- );
11
-
12
- export const FloorProvider = ({ children }: { children: React.ReactNode }) => {
13
- const { dataUser, service } = usePos();
14
-
15
- const { posId } = useGetQuery();
16
-
17
- const queryResult = useFloorProvider({
18
- service,
19
- xNode: dataUser?.x_node || "",
20
- enabled: !!dataUser?.x_node && !!service && !!posId,
21
- posConfigId: posId,
22
- });
23
-
24
- return (
25
- <ReactContext.Provider value={queryResult}>
26
- {children}
27
- </ReactContext.Provider>
28
- );
29
- };
30
-
31
- export const useFloor = () => {
32
- const context = useContext(ReactContext);
33
-
34
- if (!context) {
35
- throw new Error("useFloor must be used within a FloorProvider");
36
- }
37
-
38
- return context;
39
- };
@@ -1,6 +0,0 @@
1
- export * from "./sale-provider";
2
- export * from "./order-provider";
3
- export * from "./product-provider";
4
- export * from "./close-session-provider";
5
- export * from "./socket-provider";
6
- export * from "./payment-provider";
@@ -1,30 +0,0 @@
1
- import useKitchenProvider, {
2
- useKitchenProviderType,
3
- } from "@hooks/kitchen/use-kitchen-provider"
4
- import { createContext, useContext } from "react"
5
-
6
- const ReactContext = createContext<useKitchenProviderType>(
7
- {} as useKitchenProviderType
8
- )
9
-
10
- export const KitchenProvider = ({
11
- children,
12
- }: {
13
- children: React.ReactNode
14
- }) => {
15
- return (
16
- <ReactContext.Provider value={useKitchenProvider()}>
17
- {children}
18
- </ReactContext.Provider>
19
- )
20
- }
21
-
22
- export const useKitchen = () => {
23
- const context = useContext(ReactContext)
24
-
25
- if (!context) {
26
- throw new Error("useKitchen must be used within a KitchenProvider")
27
- }
28
-
29
- return context
30
- }
@@ -1,233 +0,0 @@
1
- import { QUERY_KEYS } from "@constants/query.constant";
2
-
3
- import { useService } from "@fctc/widget-logic/provider";
4
- import { sessionStorageUtils } from "@fctc/widget-logic/utils";
5
- import { useQueryParams } from "@hooks/common/use-query-params";
6
- import { useSpeech } from "@hooks/common/use-speech";
7
- import { usePosAppProvider } from "@provider/app-provider";
8
- import { CartItemType, useCartStore } from "@store/states/cart.state";
9
- import { OrderDetailItemType } from "@type/index";
10
- import { TAttributeLine, TProduct } from "@type/product/product";
11
- import { t } from "i18next";
12
- import { createContext, useContext, useEffect, useMemo, useState } from "react";
13
- import { useNavigate } from "react-router-dom";
14
- import { toast } from "react-toastify";
15
- import { getTotalProductPrice, useOrder } from "../order-provider";
16
- import { useProduct } from "../product-provider";
17
- import { LoadDataModel, useSale } from "../sale-provider";
18
- import POSPath from "@constants/routes.constants";
19
-
20
- const useOrderDetailProvider = () => {
21
- const { orderDetailById } = useOrder();
22
- const { data: products, isLoading } = useProduct();
23
- const { getData } = useSale();
24
- const { addList, clear, cartItems } = useCartStore();
25
-
26
- const { getQuery, formatQuery } = useQueryParams();
27
- const orderId = getQuery(QUERY_KEYS.ORDER_ID);
28
-
29
- const orderState = useMemo(() => {
30
- return orderDetailById?.state;
31
- }, [orderDetailById]);
32
-
33
- const orderLines = useMemo(() => {
34
- return (getData(LoadDataModel.POS_ORDER_LINE) ?? []).filter(
35
- (item: any) => item.order_id === Number(orderId)
36
- );
37
- }, [getData, orderId]);
38
-
39
- const items: OrderDetailItemType[] = useMemo(() => {
40
- const productMap = new Map<number, TProduct>(
41
- products?.map((item: TProduct) => [item.id, item])
42
- );
43
- return (
44
- orderLines?.map((item: any) => {
45
- const saleItem = productMap.get(item.product_id);
46
- const res: OrderDetailItemType = {
47
- id: item.product_id,
48
- name: saleItem?.name || item.name || t("product"),
49
- quantity: item.qty,
50
- price: item.price_unit,
51
- image: saleItem?.image_128 || "",
52
- unitPrice: item.price_unit,
53
- subTotal: item.price_subtotal,
54
- inchTotal: item.price_subtotal_incl,
55
- taxesId: item.tax_ids,
56
- lineId: item.id,
57
- tax: saleItem?.tax || 0,
58
- attributeValueIds: item.attribute_value_ids,
59
- attributeLines: saleItem?.attributeLines,
60
- pos_categ_ids: saleItem?.pos_categ_ids || [],
61
- note: item.note,
62
- };
63
- return res;
64
- }) || []
65
- );
66
- }, [orderLines, products]);
67
-
68
- const cartItemsArr = useMemo(() => {
69
- const cartArr = Object.values(cartItems).map((item: CartItemType) => {
70
- const totalProductPrice = getTotalProductPrice({
71
- ...item.product,
72
- });
73
- return {
74
- ...item,
75
- subTotal: totalProductPrice * item.qty,
76
- inchTotal:
77
- Number(
78
- (totalProductPrice * (1 + item.product.tax * 0.01)).toFixed(2)
79
- ) * item.qty,
80
- };
81
- });
82
- return cartArr;
83
- }, [cartItems, items]);
84
-
85
- const totalAmount = useMemo(() => {
86
- const value = cartItemsArr.reduce(
87
- (sum, item) => sum + (item.subTotal ?? 0),
88
- 0
89
- );
90
- return value;
91
- }, [cartItemsArr]);
92
-
93
- const taxAmount = useMemo(() => {
94
- const value = cartItemsArr.reduce(
95
- (sum, item) => sum + (item.inchTotal ?? 0),
96
- 0
97
- );
98
- return value - totalAmount;
99
- }, [totalAmount]);
100
-
101
- const totalQty = useMemo(() => {
102
- const value = cartItemsArr.reduce((sum, item) => sum + item.qty, 0);
103
- return value;
104
- }, [cartItemsArr]);
105
- const { useCreateEInvoice } = useService();
106
- const createEInvoiceMutation = useCreateEInvoice().mutateAsync;
107
- const { user } = usePosAppProvider();
108
- const xNode = user?.userProfile?.data?.x_node;
109
- const service = sessionStorageUtils.getMenuFocus().service || `wesap`;
110
- const [isEInvoiceCreating, setIsEInvoiceCreating] = useState(false);
111
-
112
- const onCreateEInvoice = async () => {
113
- try {
114
- setIsEInvoiceCreating(true);
115
- await createEInvoiceMutation({
116
- service: service ?? "",
117
- xNode: xNode ?? "",
118
- kwargs: {},
119
- ids: [Number(orderId)],
120
- });
121
-
122
- toast.success("Xuất hoá đơn thành công");
123
- setIsEInvoiceCreating(false);
124
- } catch (error: any) {
125
- toast.error(error?.message);
126
- console.log("create e invoice error", error);
127
- } finally {
128
- setIsEInvoiceCreating(false);
129
- }
130
- };
131
- const { speak } = useSpeech();
132
- const navigate = useNavigate();
133
- const onPaymentSuccess = (total: number) => {
134
- speak(`Thanh toán thành công, ${total} đồng`);
135
- navigate({
136
- pathname: POSPath.SUCCESS,
137
- search: `?${formatQuery([
138
- QUERY_KEYS.POS_ID,
139
- QUERY_KEYS.SESSION_ID,
140
- QUERY_KEYS.ORDER_ID,
141
- ])}`,
142
- });
143
- };
144
-
145
- useEffect(() => {
146
- clear();
147
- const orderItems: CartItemType[] = items?.map(
148
- (item: OrderDetailItemType) => {
149
- const pickAttributeValue = item.attributeLines?.map(
150
- (attributeLine: TAttributeLine) => {
151
- return {
152
- ...attributeLine,
153
- value_string: attributeLine.value_string?.filter(
154
- (attributeValue: any) =>
155
- item.attributeValueIds?.includes(attributeValue.id)
156
- ),
157
- };
158
- }
159
- );
160
- const product: TProduct = {
161
- id: item.id,
162
- name: item.name,
163
- lst_price: item.price,
164
- image_128: item.image,
165
- taxes_id: item.taxesId,
166
- tax: item.tax,
167
- pos_categ_ids: item.pos_categ_ids ?? [],
168
- attributeValueIds: item.attributeValueIds,
169
- pickAttributeValue: pickAttributeValue,
170
- };
171
- return {
172
- product: product,
173
- qty: item.quantity,
174
- lineId: [item.lineId],
175
- subTotal: item.subTotal,
176
- inchTotal: item.inchTotal,
177
- note: item.note,
178
- };
179
- }
180
- );
181
- addList(orderItems);
182
- }, [items]);
183
-
184
- return {
185
- onCreateEInvoice,
186
- isEInvoiceCreating,
187
- items,
188
- isLoading: isLoading,
189
- // staffName: saleData?.["res.users"]?.data,
190
- customer: getData(LoadDataModel.RES_PARTNER)?.find(
191
- (item: any) => item.id === Number(orderDetailById?.partner_id)
192
- ),
193
- refetchOrderLines: {},
194
- totalAmount,
195
- taxAmount,
196
- totalQty,
197
- orderState,
198
- onPaymentSuccess,
199
- };
200
- };
201
- export default useOrderDetailProvider;
202
-
203
- export type useOrderDetailProviderType = ReturnType<
204
- typeof useOrderDetailProvider
205
- >;
206
-
207
- const ReactContext = createContext<useOrderDetailProviderType>(
208
- {} as useOrderDetailProviderType
209
- );
210
-
211
- export const OrderDetailProvider = ({
212
- children,
213
- }: {
214
- children: React.ReactNode;
215
- }) => {
216
- return (
217
- <ReactContext.Provider value={useOrderDetailProvider()}>
218
- {children}
219
- </ReactContext.Provider>
220
- );
221
- };
222
-
223
- export const useOrderDetail = () => {
224
- const context = useContext(ReactContext);
225
-
226
- if (!context) {
227
- throw new Error("useOrderDetail must be used within a OrderDetailProvider");
228
- }
229
-
230
- return context;
231
- };
232
-
233
- export type TDomainCondition = [string, string, any];