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 { IcPrint } from "@assets/icons/breadcrumbs-icon";
2
- // import { UsbPrinter } from "@atomsolution/usb-printer-capacitor";
3
- // import ButtonAction from "@components/common/button-action";
4
- // import { ScreenType } from "@components/customer-view";
5
- // import { QUERY_KEYS } from "@constants/query.constant";
6
- // import { LoadingIcon } from "@fctc/sme-widget-ui";
7
- // import { useGetBase64Photo } from "@hooks/common/use-get-base64-photo";
8
- // import { usePlatform } from "@hooks/common/use-platform";
9
- // import { useQueryParams } from "@hooks/common/use-query-params";
10
- // import { usePosAppProvider } from "@provider/app-provider";
11
- // import { useOrderDetail } from "@provider/pos-provider/order-detail-provider";
12
- // import { useOrder } from "@provider/pos-provider/order-provider";
13
- // import { useSale } from "@provider/pos-provider/sale-provider";
14
- // import { usePosTable } from "@provider/pos-provider/table-provider";
15
- // import { dd_mm_yyyy, hh_mm } from "@utils/functions";
16
- // import { CapacitorPresentation } from "dual-screen-plugin";
17
- // import { useEffect, useMemo, useState } from "react";
18
- // import { toast } from "react-toastify";
19
-
20
- // const Content = ({ isHideAction }: { isHideAction?: boolean }) => {
21
- // const { items } = useOrderDetail();
22
- // const { orderDetailById: data } = useOrder();
23
- // const { getQuery } = useQueryParams();
24
-
25
- // const tableId = getQuery(QUERY_KEYS.TABLE_ID);
26
- // const { company, userProfile } = usePosAppProvider();
27
-
28
- // const { data: logo } = useGetBase64Photo(userProfile?.company?.logo);
29
- // const { tablesByFloor } = usePosTable();
30
-
31
- // const { data: saleData } = useSale().queryResult;
32
- // const { isAndroid } = usePlatform();
33
- // const address = useMemo(() => {
34
- // return userProfile?.company?.address;
35
- // }, [userProfile?.company]);
36
-
37
- // const addressFormat = useMemo(() => {
38
- // return `${address?.street} đường ${address?.street2}, ${
39
- // address?.ward ?? ""
40
- // }, Tỉnh ${address?.state} `;
41
- // }, [userProfile?.company]);
42
-
43
- // // const paymentMethod = useMemo(() => {
44
- // // const paymentId = data?.payment_ids?.[0]?.payment_method_id?.id;
45
- // // if (!paymentId) return "";
46
- // // const methods = saleData?.["pos.payment.method"]?.data;
47
- // // return methods?.find((method: any) => method.id === paymentId)?.name ?? "";
48
- // // }, [data?.payment_ids, saleData]);
49
-
50
- // const paymentMethod = "Soft POS";
51
- // const amountTotalWithoutTax = useMemo(() => {
52
- // return (data?.amount_total ?? 0) - (data?.amount_tax ?? 0);
53
- // }, [data?.amount_total, data?.amount_tax]);
54
-
55
- // const tableNumber = useMemo(() => {
56
- // const table = tablesByFloor?.find(
57
- // (table: any) => table?.id === Number(tableId)
58
- // );
59
-
60
- // return table?.table_number ?? "";
61
- // }, [tablesByFloor]);
62
-
63
- // const handlePrintText = async () => {
64
- // if (!isAndroid) return;
65
- // try {
66
- // setPrinting(true);
67
- // await UsbPrinter.connect();
68
-
69
- // const textBill = generateTextBill();
70
- // await UsbPrinter.printText({
71
- // text: textBill,
72
- // });
73
-
74
- // await UsbPrinter.disconnect();
75
- // setPrinting(false);
76
- // } catch (e) {
77
- // setPrinting(false);
78
- // toast.error(`USB Print failed: ${e}`);
79
- // }
80
- // };
81
-
82
- // const money = (amount: number) => {
83
- // return amount.toLocaleString();
84
- // };
85
-
86
- // const generateTextBill = () => {
87
- // // Tạo danh sách sản phẩm
88
- // const productLines =
89
- // items
90
- // ?.map((item, index) => {
91
- // const itemTotal = item.price * item.quantity;
92
- // return `[L]${index + 1}. ${item.name}[R]${item.quantity} x ${money(
93
- // item.unitPrice
94
- // )}
95
- // [R]${money(itemTotal)} VND`;
96
- // })
97
- // .join("\n") || "";
98
-
99
- // const textBill = `[C]<font size='big'><b>${
100
- // userProfile?.company?.invoice_name
101
- // }</b></font>
102
- // [C]<font size='small'>${addressFormat}</font>
103
- // [C]
104
- // [C]<font size=''>Bàn: <b>${tableNumber || "Trống"}</b> | Thời gian: <b>${
105
- // data?.create_date && hh_mm(data?.create_date)
106
- // } - ${data?.create_date && dd_mm_yyyy(data?.create_date)}</b></font>
107
- // [C]
108
- // [L]Số hoá đơn:[R]<b>${data?.pos_reference}</b>
109
- // [L]Phương thức thanh toán:[R]<b>${paymentMethod || "Chưa xác định"}</b>
110
- // [C]----------------------------------------
111
- // [L]<b>TT | Tên món | SL | Đơn giá | Thành tiền</b>
112
- // [C]----------------------------------------
113
- // ${productLines}
114
- // [C]----------------------------------------
115
- // [L]Thuế (VAT):[R]${money(data?.amount_tax ?? 0)} VND
116
- // [L]Thành tiền:[R]${money(amountTotalWithoutTax)} VND
117
- // [C]========================================
118
- // [L]<font size='wide,tall'><b>Tổng tiền:</b></font>[R]<font size='wide,tall'><b>${money(
119
- // data?.amount_total ?? 0
120
- // )} VND</b></font>
121
- // [C]========================================
122
- // [C]
123
- // [C]<font size='small'>${
124
- // userProfile?.company?.invoice_name
125
- // } xin chân thành cảm ơn!
126
- // [C]Powered by ${company?.companyInfo?.data?.[0]?.display_name}</font>
127
- // [C]
128
- // [C]
129
- // [C]`;
130
-
131
- // return textBill.trimStart();
132
- // };
133
-
134
- // const [printing, setPrinting] = useState(false);
135
-
136
- // useEffect(() => {
137
- // CapacitorPresentation.sendMessage({
138
- // data: {
139
- // screen: ScreenType.PAYMENT_SUCCESS,
140
- // data: {
141
- // totalAmount: data?.amount_total,
142
- // time: `${data?.create_date && hh_mm(data?.create_date)} - ${
143
- // data?.create_date && dd_mm_yyyy(data?.create_date)
144
- // }`,
145
- // paymentMethod: paymentMethod,
146
- // orderNumber: data?.pos_reference,
147
- // },
148
- // },
149
- // });
150
- // }, [paymentMethod, data]);
151
-
152
- // useEffect(() => {
153
- // logo && handlePrintText();
154
- // }, [logo]);
155
-
156
- // return (
157
- // <div className="flex flex-col gap-3 w-full pt-8">
158
- // {!isHideAction && (
159
- // <div className="flex flex-col items-center justify-center gap-2.5">
160
- // {/* <div className="flex items-center gap-2">
161
- // <label className="text-sm">
162
- // <input
163
- // type="radio"
164
- // name="printMode"
165
- // value="text"
166
- // checked={printMode === "text"}
167
- // onChange={() => setPrintMode("text")}
168
- // className="mr-1"
169
- // />
170
- // In văn bản
171
- // </label>
172
- // <label className="text-sm">
173
- // <input
174
- // type="radio"
175
- // name="printMode"
176
- // value="svg"
177
- // checked={printMode === "svg"}
178
- // onChange={() => setPrintMode("svg")}
179
- // className="mr-1"
180
- // />
181
- // In hình ảnh
182
- // </label>
183
- // </div> */}
184
- // <ButtonAction
185
- // iconSrc={printing ? <LoadingIcon /> : <IcPrint />}
186
- // onClick={() => handlePrintText()}
187
- // text={`In hoá đơn`}
188
- // className="button-secondary w-[437px]"
189
- // />
190
- // </div>
191
- // )}
192
- // <div className="flex justify-center">
193
- // {/* {productLines && (
194
- // <div className="bg-white rounded-2xl">
195
- // <div
196
- // dangerouslySetInnerHTML={{
197
- // __html: htmlString,
198
- // }}
199
- // ></div>
200
- // </div>
201
- // )} */}
202
- // </div>
203
- // </div>
204
- // );
205
- // };
206
-
207
- // export default Content;
@@ -1,18 +0,0 @@
1
- // import { useSpeech } from "@hooks/common/use-speech";
2
- // import { useOrderDetail } from "@provider/pos-provider/order-detail-provider";
3
- // import { useEffect } from "react";
4
- // import Content from "./content";
5
-
6
- // const BillContent = () => {
7
- // const { speak } = useSpeech();
8
- // const { taxAmount, totalAmount } = useOrderDetail();
9
- // const total = totalAmount + taxAmount;
10
-
11
- // useEffect(() => {
12
- // speak(`Thanh toán thành công, ${total} đồng`);
13
- // }, []);
14
-
15
- // return <Content />;
16
- // };
17
-
18
- // export default BillContent;
@@ -1,124 +0,0 @@
1
- import {
2
- BorderGradient,
3
- DashedLine,
4
- IcBankCard,
5
- IcCardPaymentMerchant,
6
- IcCardPaymentPos,
7
- IcConnect,
8
- } from "@assets/icons/payment-icon";
9
- import ButtonAction from "@components/common/button-action";
10
- import { ORDER_STATE } from "@constants/order-state";
11
- import useLoopFetchOrder from "@hooks/order/use-loop-fetch-order";
12
- import { usePayment } from "@provider/pos-provider/payment-provider";
13
- import { useSocketData } from "@provider/pos-provider/socket-provider";
14
- import { JSX, useEffect, useState } from "react";
15
- import { toast } from "react-toastify";
16
- import { PaymentInfo } from "../payment-info";
17
- import { PaymentLayout } from "../payment-layout";
18
- import { MessageHandlerType, PublishType } from "./pos-payment/qr-connect";
19
- import WaitingForPaymentPosModal from "./waiting-for-payment-pos-modal";
20
-
21
- export const CardPaymentMethod = ({ total }: { total: number }) => {
22
- useLoopFetchOrder();
23
-
24
- return (
25
- <PaymentLayout
26
- leftContent={<LeftContent />}
27
- rightContent={<RightContent total={total} />}
28
- />
29
- );
30
- };
31
-
32
- const LeftContent = () => {
33
- return (
34
- <div className="flex flex-col gap-3 items-center">
35
- <DeviceIcon icon={IcCardPaymentMerchant} />
36
- <DashedLine />
37
- <IcConnect />
38
- <DashedLine />
39
- <DeviceIcon icon={IcCardPaymentPos} />
40
- </div>
41
- );
42
- };
43
-
44
- const RightContent = ({ total }: { total: number }) => {
45
- const { onRequestPayment } = usePayment();
46
- const { clientMtqq } = useSocketData();
47
- const [orderStatus, setOrderStatus] = useState<string>(ORDER_STATE.NEW);
48
- const [showWaitingModal, setShowWaitingModal] = useState(false);
49
-
50
- useEffect(() => {
51
- orderStatus === "waiting_for_payment"
52
- ? setShowWaitingModal(true)
53
- : setShowWaitingModal(false);
54
- }, [orderStatus]);
55
-
56
- useEffect(() => {
57
- clientMtqq?.on("message", (_: any, payload: any) => {
58
- const props = JSON.parse(payload.toString());
59
- const handler: MessageHandlerType = {
60
- [PublishType.Payment]: (payload) => {
61
- if (typeof payload === "boolean") {
62
- toast.success("Gọi thanh toán thành công");
63
- setOrderStatus("waiting_for_payment");
64
- }
65
- },
66
- [PublishType.PaymentResult]: (payload) => {
67
- const { isSuccess, orderId } = payload;
68
- if (isSuccess) {
69
- toast.success("Thanh toán thành công12");
70
- setOrderStatus("waiting_for_update");
71
- } else {
72
- toast.error("Thanh toán thất bại");
73
- setOrderStatus("payemnt_failed");
74
- }
75
- },
76
- };
77
- if (props?.payload && props?.type) {
78
- handler[props?.type as PublishType]?.(props.payload);
79
- }
80
- });
81
- }, [clientMtqq]);
82
-
83
- const handleRequestPayment = async (amount: number) => {
84
- try {
85
- await onRequestPayment(amount);
86
- } catch (error: any) {
87
- toast.error(error?.message || "");
88
- }
89
- };
90
- return (
91
- <>
92
- <div className="flex flex-col gap-3 h-full justify-center ">
93
- <PaymentInfo />
94
- <ButtonAction
95
- onClick={() => handleRequestPayment(total)}
96
- iconSrc={<IcBankCard />}
97
- text="Thanh toán trên POS"
98
- className="button-primary h-[56px]"
99
- />
100
- </div>
101
- <WaitingForPaymentPosModal
102
- isOpen={showWaitingModal}
103
- onClose={() => setOrderStatus(ORDER_STATE.NEW)}
104
- onRetry={() => onRequestPayment(total)}
105
- />
106
- </>
107
- );
108
- };
109
-
110
- const DeviceIcon = ({ icon }: { icon: JSX.Element }) => {
111
- return (
112
- <div
113
- className="rounded-full relative size-[90px] flex justify-center items-center"
114
- style={{}}
115
- >
116
- <div className=" z-0 absolute top-0 left-0 ">
117
- <BorderGradient />
118
- </div>
119
- <div className="relative size-20 border border-stroke-disabled rounded-full flex justify-center items-center">
120
- {icon}
121
- </div>
122
- </div>
123
- );
124
- };
@@ -1,183 +0,0 @@
1
- import { IcDisConnectPos, IcPosConnect } from "@assets/icons/pos-connect-icon";
2
- import QrConnect, {
3
- MessageHandlerType,
4
- MqttConnectType,
5
- PublishType,
6
- } from "@components/pos-management/payment-content/card-payment/pos-payment/qr-connect";
7
-
8
- import { QUERY_KEYS } from "@constants/query.constant";
9
- import { useQueryParams } from "@hooks/common/use-query-params";
10
- import { useSpeech } from "@hooks/common/use-speech";
11
- import { LoadDataModel, useSale } from "@provider/pos-provider/sale-provider";
12
- import { useSocketData } from "@provider/pos-provider/socket-provider";
13
- import { parseStringToObject, randomNumber } from "@utils/functions";
14
- import { t } from "i18next";
15
- import { useEffect, useState } from "react";
16
- import { toast } from "react-toastify";
17
-
18
- export const PosConnect = ({ dataUser }: { dataUser: any }) => {
19
- const { clientMtqq, onPublish, onDisconnect, onConnect } = useSocketData();
20
- const { speak } = useSpeech();
21
-
22
- const { getQuery } = useQueryParams();
23
- const posId = getQuery(QUERY_KEYS.POS_ID);
24
-
25
- const sessionId = getQuery(QUERY_KEYS.SESSION_ID);
26
- const { getData } = useSale();
27
-
28
- const POSName = getData(LoadDataModel.POS_CONFIG)?.[0]?.name;
29
- const qrLocal = localStorage.getItem(`mttqQrConnect${posId}`);
30
- const serialNumberPosLocal = localStorage.getItem(`serialNumberPos${posId}`);
31
-
32
- const [socketPaymentQr, setSocketPaymentQr] = useState("");
33
- const [showQrConnect, setShowQrConnect] = useState(false);
34
- const [serialNumberPos, setSerialNumberPos] = useState("");
35
- const [isConnect, setIsConnect] = useState(0);
36
-
37
- const onGetQrConnect = async () => {
38
- if (!dataUser?.company.cif) {
39
- return undefined;
40
- }
41
- if (qrLocal) return qrLocal;
42
-
43
- const serialNumber = randomNumber();
44
- localStorage.setItem(`serialNumber${posId}`, serialNumber);
45
- const res: MqttConnectType = {
46
- cif: dataUser?.company.cif,
47
- platform: "web",
48
- serialNumber: serialNumber,
49
- posId: `${POSName}(${posId?.toString()})`,
50
- };
51
- localStorage.setItem(`mttqQrConnect${posId}`, JSON.stringify(res));
52
- return JSON.stringify(res);
53
- };
54
-
55
- const onConnectDevice = async () => {
56
- const qr = await onGetQrConnect();
57
- qr && setSocketPaymentQr(qr);
58
- setShowQrConnect(true);
59
- };
60
-
61
- useEffect(() => {
62
- qrLocal && setSocketPaymentQr(qrLocal);
63
- serialNumberPosLocal && setSerialNumberPos(serialNumberPosLocal);
64
- }, [qrLocal, serialNumberPosLocal]);
65
-
66
- const cancelConnect = () => {
67
- setSocketPaymentQr("");
68
- setSerialNumberPos("");
69
- localStorage.removeItem(`serialNumberPos${posId}`);
70
- localStorage.removeItem(`mttqQrConnect${posId}`);
71
- };
72
-
73
- useEffect(() => {
74
- clientMtqq?.on("message", (_: any, payload: any) => {
75
- const props =
76
- typeof JSON.parse(payload.toString()) === "object"
77
- ? JSON.parse(payload.toString())
78
- : parseStringToObject(JSON.parse(payload.toString()));
79
- // console.log("props", props);
80
- const handleRequiredPayment = async () => {
81
- speak(`Bàn ${props?.payload?.table_number} yêu cầu thanh toán`);
82
- toast.success(`Bàn ${props?.payload?.table_number} yêu cầu thanh toán`);
83
- };
84
- const handler: MessageHandlerType = {
85
- [PublishType.RequestPayment]: () => handleRequiredPayment(),
86
- [PublishType.Ping]: (payload) => {
87
- if (typeof payload === "object") {
88
- setIsConnect(3000);
89
- // console.log("payload", payload);
90
- const serialNumberOnMessage = payload.serialNumber;
91
- localStorage.setItem(
92
- `serialNumberPos${posId}`,
93
- serialNumberOnMessage
94
- );
95
- setShowQrConnect(false);
96
- serialNumberOnMessage && setSerialNumberPos(serialNumberOnMessage);
97
- if (payload.showToast)
98
- toast.success(
99
- `${t("receive_connection_from")}:` + payload.serialNumber
100
- );
101
- }
102
- },
103
- };
104
- if (props?.payload && props?.type) {
105
- handler[props?.type as PublishType]?.(props.payload);
106
- }
107
- });
108
- }, [clientMtqq]);
109
-
110
- useEffect(() => {
111
- const topics = [];
112
- socketPaymentQr && topics.push(socketPaymentQr);
113
- dataUser?.x_node &&
114
- sessionId &&
115
- topics.push(`["${dataUser?.x_node}","pos.${sessionId}"]`);
116
- if (dataUser?.x_node && onConnect) {
117
- onConnect(topics);
118
- }
119
- }, [dataUser, sessionId, posId, socketPaymentQr]);
120
-
121
- useEffect(() => {
122
- const interval = setInterval(() => {
123
- if (socketPaymentQr && serialNumberPos) {
124
- onPublish(
125
- socketPaymentQr,
126
- JSON.stringify({ type: PublishType.Ping, payload: true })
127
- );
128
- setIsConnect((prev) => prev - 1000);
129
- }
130
- }, 1500);
131
-
132
- return () => clearInterval(interval);
133
- }, [socketPaymentQr, serialNumberPos, clientMtqq]);
134
-
135
- useEffect(() => {
136
- return () => {
137
- clientMtqq && onDisconnect();
138
- };
139
- }, []);
140
-
141
- return (
142
- <>
143
- <div
144
- className={`flex gap-2 items-center rounded-full h-11 bg-white px-[6px] ${
145
- !serialNumberPos && "cursor-pointer"
146
- }`}
147
- onClick={() => !serialNumberPos && onConnectDevice()}
148
- >
149
- <div className="size-8 rounded-full bg-sub-secondary flex justify-center items-center relative">
150
- <IcPosConnect />
151
- {serialNumberPos && (
152
- <div className="absolute size-[10px] bg-white rounded-full right-0 bottom-0 flex justify-center items-center">
153
- <div
154
- className="size-[7px] rounded-full"
155
- style={{
156
- background: isConnect > 0 ? "#22c55e" : "#ef4444",
157
- }}
158
- />
159
- </div>
160
- )}
161
- </div>
162
- <p className="pr-[10px] tetx-sm text-semibold text-text-primary">
163
- {serialNumberPos ? serialNumberPos : "Kết nối"}
164
- </p>
165
- {serialNumberPos && (
166
- <div onClick={() => cancelConnect()}>
167
- <IcDisConnectPos />
168
- </div>
169
- )}
170
- </div>
171
- {showQrConnect && (
172
- <QrConnect
173
- isOpen={showQrConnect}
174
- onClose={() => setShowQrConnect(false)}
175
- posId={posId && !isNaN(Number(posId)) ? Number(posId) : 0}
176
- name={POSName}
177
- />
178
- )}
179
- </>
180
- );
181
- };
182
-
183
- export default PosConnect;