@evershop/evershop 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (390) hide show
  1. package/bin/build/index.js +24 -0
  2. package/bin/extension/index.js +2 -2
  3. package/bin/lib/addDefaultMiddlewareFuncs.js +7 -2
  4. package/bin/lib/buildEntry.js +15 -0
  5. package/bin/lib/onListening.js +7 -4
  6. package/bin/lib/startUp.js +6 -0
  7. package/package.json +9 -1
  8. package/src/components/admin/catalog/productEdit/category/CategoryItem.jsx +2 -7
  9. package/src/components/admin/catalog/productEdit/category/CategoryTree.jsx +14 -7
  10. package/src/components/admin/catalog/productEdit/category/CategoryTree.scss +10 -0
  11. package/src/components/admin/catalog/productEdit/variants/CreateVariant.jsx +2 -2
  12. package/src/components/admin/catalog/productEdit/variants/CreateVariantGroup.jsx +1 -1
  13. package/src/components/admin/catalog/productEdit/variants/EditVariant.jsx +1 -1
  14. package/src/components/admin/catalog/productEdit/variants/New.jsx +2 -2
  15. package/src/components/admin/catalog/productEdit/variants/Search.jsx +1 -1
  16. package/src/components/admin/catalog/productEdit/variants/SearchModal.jsx +1 -1
  17. package/src/components/admin/catalog/productEdit/variants/VariantModal.jsx +6 -6
  18. package/src/components/admin/catalog/productGrid/rows/ThumbnailRow.jsx +1 -1
  19. package/src/components/admin/checkout/shippingSetting/Method.jsx +6 -6
  20. package/src/components/admin/checkout/shippingSetting/MethodForm.jsx +4 -4
  21. package/src/components/admin/checkout/shippingSetting/Methods.jsx +3 -3
  22. package/src/components/admin/checkout/shippingSetting/PriceBasedPrice.jsx +2 -2
  23. package/src/components/admin/checkout/shippingSetting/WeightBasedPrice.jsx +2 -2
  24. package/src/components/admin/checkout/shippingSetting/Zone.jsx +7 -7
  25. package/src/components/admin/checkout/shippingSetting/ZoneForm.jsx +1 -1
  26. package/src/components/admin/cms/Card.jsx +3 -3
  27. package/src/components/admin/cms/PageHeading.jsx +3 -3
  28. package/src/components/admin/cms/widget/WidgetTypes.jsx +28 -0
  29. package/src/components/admin/cms/widget/grid/WidgetTypeRow.jsx +29 -0
  30. package/src/components/admin/oms/orderEdit/items/ItemVariantOptions.jsx +1 -1
  31. package/src/components/admin/oms/orderEdit/items/Name.jsx +1 -1
  32. package/src/components/admin/oms/orderGrid/headers/OrderDateColumnHeader.jsx +1 -1
  33. package/src/components/admin/promotion/couponEdit/AttributeGroupSelector.jsx +3 -3
  34. package/src/components/admin/promotion/couponEdit/BuyXGetY.jsx +2 -2
  35. package/src/components/admin/promotion/couponEdit/CategorySelector.jsx +6 -6
  36. package/src/components/admin/promotion/couponEdit/CollectionSelector.jsx +3 -3
  37. package/src/components/admin/promotion/couponEdit/ProductSkuSelector.jsx +4 -4
  38. package/src/components/admin/promotion/couponEdit/RequireProducts.jsx +2 -2
  39. package/src/components/admin/promotion/couponEdit/Setting.jsx +1 -1
  40. package/src/components/admin/promotion/couponEdit/TargetProducts.jsx +4 -4
  41. package/src/components/admin/tax/taxSetting/Rate.jsx +6 -6
  42. package/src/components/admin/tax/taxSetting/RateForm.jsx +5 -5
  43. package/src/components/admin/tax/taxSetting/Rates.jsx +6 -6
  44. package/src/components/admin/tax/taxSetting/TaxClass.jsx +3 -3
  45. package/src/components/admin/tax/taxSetting/TaxClassForm.jsx +1 -1
  46. package/src/components/admin/widgets/BasicMenuSetting.jsx +614 -0
  47. package/src/components/admin/widgets/BasicMenuSetting.scss +19 -0
  48. package/src/components/admin/widgets/CollectionProductsSetting.jsx +203 -0
  49. package/src/components/admin/widgets/TextBlockSetting.jsx +70 -0
  50. package/src/components/common/Area.jsx +31 -8
  51. package/src/components/common/Badge.jsx +1 -1
  52. package/src/components/common/Editor.jsx +191 -0
  53. package/src/components/common/Notification.scss +1 -0
  54. package/src/components/common/SimplePagination.jsx +2 -2
  55. package/src/components/common/form/Form.jsx +1 -1
  56. package/src/components/common/form/fields/Checkbox.jsx +1 -1
  57. package/src/components/common/form/fields/Ckeditor.jsx +11 -11
  58. package/src/components/common/form/fields/Editor.jsx +326 -0
  59. package/src/components/common/form/fields/Editor.scss +29 -0
  60. package/src/components/common/form/fields/Radio.jsx +1 -1
  61. package/src/components/common/form/fields/editor/FileBrowser.jsx +419 -0
  62. package/src/components/common/form/fields/editor/FileBrowser.scss +37 -0
  63. package/src/components/common/form/fields/editor/GetColumnClasses.jsx +14 -0
  64. package/src/components/common/form/fields/editor/GetRowClasses.jsx +18 -0
  65. package/src/components/common/form/fields/editor/RowTemplates.jsx +154 -0
  66. package/src/components/common/grid/Pagination.jsx +4 -4
  67. package/src/components/common/grid/headers/FromTo.jsx +1 -1
  68. package/src/components/common/grid/headers/Sortable.jsx +1 -1
  69. package/src/components/common/grid/rows/ThumbnailRow.jsx +1 -1
  70. package/src/components/common/list/Filter.jsx +1 -1
  71. package/src/components/common/modal/Alert.jsx +1 -1
  72. package/src/components/common/modal/Modal.jsx +1 -1
  73. package/src/components/frontStore/catalog/categoryView/filter/AttributeFilter.jsx +2 -2
  74. package/src/components/frontStore/catalog/categoryView/filter/CategoryFilter.jsx +3 -2
  75. package/src/components/frontStore/catalog/categoryView/filter/CategoryFilter.scss +5 -0
  76. package/src/components/frontStore/catalog/product/list/List.jsx +4 -4
  77. package/src/components/frontStore/catalog/product/list/Pagination.jsx +1 -1
  78. package/src/components/frontStore/catalog/product/list/Sorting.jsx +2 -2
  79. package/src/components/frontStore/catalog/product/list/item/Name.jsx +1 -1
  80. package/src/components/frontStore/checkout/cart/Empty.jsx +3 -3
  81. package/src/components/frontStore/checkout/cart/items/ItemOptions.jsx +1 -1
  82. package/src/components/frontStore/checkout/cart/items/ItemVariantOptions.jsx +1 -1
  83. package/src/components/frontStore/checkout/cart/items/Items.jsx +20 -21
  84. package/src/components/frontStore/checkout/cart/items/Items.scss +47 -0
  85. package/src/components/frontStore/checkout/cart/items/Quantity.jsx +154 -0
  86. package/src/components/frontStore/checkout/checkout/StepTitle.jsx +1 -1
  87. package/src/components/frontStore/checkout/checkout/payment/paymentStep/StepContent.jsx +5 -5
  88. package/src/components/frontStore/checkout/checkout/shipment/StepContent.jsx +1 -1
  89. package/src/components/frontStore/checkout/checkout/summary/Cart.jsx +10 -12
  90. package/src/components/frontStore/checkout/checkout/summary/Items.jsx +9 -9
  91. package/src/components/frontStore/checkout/checkout/summary/cart/Total.jsx +6 -6
  92. package/src/components/frontStore/checkout/success/summary/items/ItemOptions.jsx +1 -1
  93. package/src/components/frontStore/checkout/success/summary/items/Items.jsx +9 -6
  94. package/src/components/frontStore/checkout/success/summary/order/OrderSummary.jsx +9 -13
  95. package/src/components/frontStore/checkout/success/summary/order/Total.jsx +5 -5
  96. package/src/components/frontStore/customer/address/addressForm/AddressFormLoadingSkeleton.jsx +2 -2
  97. package/src/components/frontStore/customer/address/addressForm/NameAndTelephone.jsx +1 -1
  98. package/src/components/frontStore/customer/address/addressForm/ProvinceAndPostcode.jsx +1 -1
  99. package/src/components/frontStore/customer/checkout/Edit.jsx +2 -2
  100. package/src/components/frontStore/customer/detail/Order.jsx +4 -4
  101. package/src/components/frontStore/stripe/checkout/CheckoutForm.jsx +2 -2
  102. package/src/components/frontStore/stripe/checkout/TestCards.jsx +1 -1
  103. package/src/components/frontStore/widgets/BasicMenu.jsx +129 -0
  104. package/src/{modules/catalog/pages/frontStore/homepage/FeaturedProducts.jsx → components/frontStore/widgets/CollectionProducts.jsx} +40 -32
  105. package/src/components/frontStore/widgets/TextBlock.jsx +46 -0
  106. package/src/lib/componee/getComponentsByRoute.js +15 -2
  107. package/src/lib/event/event-manager.js +1 -1
  108. package/src/lib/middleware/tests/app/modules/404page/pages/frontStore/product/route.json +2 -1
  109. package/src/lib/middlewares/static.js +3 -1
  110. package/src/lib/response/render.js +5 -6
  111. package/src/lib/router/Router.js +1 -1
  112. package/src/lib/router/loadModuleRoutes.js +3 -0
  113. package/src/lib/router/registerAdminRoute.js +9 -1
  114. package/src/lib/router/registerFrontStoreRoute.js +2 -0
  115. package/src/lib/router/scanForRoutes.js +1 -0
  116. package/src/lib/router/tests/unit/unit.validateRoute.test.js +7 -1
  117. package/src/lib/util/defaultPaginationFilters.js +19 -17
  118. package/src/lib/util/getEnabledWidgets.js +28 -0
  119. package/src/lib/util/merge.js +67 -14
  120. package/src/lib/util/tests/unit/util.merge.test.js +21 -4
  121. package/src/lib/util/validateConfiguration.js +83 -0
  122. package/src/lib/webpack/createBaseConfig.js +4 -1
  123. package/src/lib/webpack/dev/createConfigClient.js +10 -2
  124. package/src/lib/webpack/loaders/AreaLoader.js +14 -3
  125. package/src/lib/webpack/util/parseGraphql.js +29 -16
  126. package/src/lib/webpack/util/parseGraphqlByFile.js +16 -2
  127. package/src/modules/auth/pages/admin/adminLogin/LoginForm.jsx +54 -21
  128. package/src/modules/auth/pages/admin/all/AdminUser.jsx +3 -3
  129. package/src/modules/base/bootstrap.js +79 -0
  130. package/src/modules/base/graphql/types/Route/Route.admin.graphql +15 -0
  131. package/src/modules/base/graphql/types/Route/Route.admin.resolvers.js +10 -0
  132. package/src/modules/base/pages/global/response[errorHandler].js +23 -0
  133. package/src/modules/catalog/bootstrap.js +125 -5
  134. package/src/modules/catalog/graphql/types/Category/Category.graphql +4 -3
  135. package/src/modules/catalog/graphql/types/Category/Category.resolvers.js +34 -0
  136. package/src/modules/catalog/graphql/types/Collection/Collection.graphql +2 -2
  137. package/src/modules/catalog/graphql/types/Collection/Collection.resolvers.js +34 -0
  138. package/src/modules/catalog/graphql/types/Product/Attribute/ProductAttribute.resolvers.js +1 -0
  139. package/src/modules/catalog/graphql/types/Product/Product.graphql +1 -1
  140. package/src/modules/catalog/graphql/types/Product/Product.resolvers.js +34 -0
  141. package/src/modules/catalog/graphql/types/Widget/CollectionProductsWidget/CollectionProductsWidget.graphql +11 -0
  142. package/src/modules/catalog/graphql/types/Widget/CollectionProductsWidget/CollectionProductsWidget.resolvers.js +8 -0
  143. package/src/modules/catalog/migration/Version-1.0.0.js +1 -0
  144. package/src/modules/catalog/migration/Version-1.0.7.js +10 -0
  145. package/src/modules/catalog/pages/admin/attributeEdit+attributeNew/FormContent.jsx +4 -4
  146. package/src/modules/catalog/pages/admin/attributeEdit+attributeNew/General.jsx +5 -5
  147. package/src/modules/catalog/pages/admin/attributeGrid/Grid.jsx +2 -2
  148. package/src/modules/catalog/pages/admin/categoryEdit/Products.jsx +4 -4
  149. package/src/modules/catalog/pages/admin/categoryEdit+categoryNew/FormContent.jsx +4 -4
  150. package/src/modules/catalog/pages/admin/categoryEdit+categoryNew/General.jsx +16 -18
  151. package/src/modules/catalog/pages/admin/categoryEdit+categoryNew/Image.jsx +1 -2
  152. package/src/modules/catalog/pages/admin/categoryEdit+categoryNew/Status.jsx +16 -1
  153. package/src/modules/catalog/pages/admin/categoryGrid/Grid.jsx +3 -3
  154. package/src/modules/catalog/pages/admin/collectionEdit/Products.jsx +4 -4
  155. package/src/modules/catalog/pages/admin/collectionEdit+collectionNew/FormContent.jsx +2 -2
  156. package/src/modules/catalog/pages/admin/collectionEdit+collectionNew/General.jsx +2 -2
  157. package/src/modules/catalog/pages/admin/collectionGrid/Grid.jsx +3 -3
  158. package/src/modules/catalog/pages/admin/productEdit/Collection.jsx +7 -7
  159. package/src/modules/catalog/pages/admin/productEdit+productNew/Attributes.jsx +1 -1
  160. package/src/modules/catalog/pages/admin/productEdit+productNew/CustomOptions.jsss +4 -4
  161. package/src/modules/catalog/pages/admin/productEdit+productNew/FormContent.jsx +4 -4
  162. package/src/modules/catalog/pages/admin/productEdit+productNew/General.jsx +15 -17
  163. package/src/modules/catalog/pages/admin/productGrid/Grid.jsx +3 -3
  164. package/src/modules/catalog/pages/frontStore/catalogSearch/General.jsx +2 -2
  165. package/src/modules/catalog/pages/frontStore/catalogSearch/Products.jsx +1 -1
  166. package/src/modules/catalog/pages/frontStore/catalogSearch/route.json +2 -1
  167. package/src/modules/catalog/pages/frontStore/categoryView/CategoryView.jsx +19 -2
  168. package/src/modules/catalog/pages/frontStore/categoryView/Filter.scss +1 -0
  169. package/src/modules/catalog/pages/frontStore/categoryView/General.jsx +6 -8
  170. package/src/modules/catalog/pages/frontStore/categoryView/General.scss +0 -2
  171. package/src/modules/catalog/pages/frontStore/categoryView/Pagination.jsx +6 -0
  172. package/src/modules/catalog/pages/frontStore/categoryView/Products.jsx +8 -1
  173. package/src/modules/catalog/pages/frontStore/categoryView/route.json +2 -1
  174. package/src/modules/catalog/pages/frontStore/productView/Description.jsx +3 -3
  175. package/src/modules/catalog/pages/frontStore/productView/Form.jsx +4 -4
  176. package/src/modules/catalog/pages/frontStore/productView/Form.scss +1 -0
  177. package/src/modules/catalog/pages/frontStore/productView/GeneralInfo.jsx +1 -1
  178. package/src/modules/catalog/pages/frontStore/productView/Images.jsx +1 -1
  179. package/src/modules/catalog/pages/frontStore/productView/Layout.jsx +1 -1
  180. package/src/modules/catalog/pages/frontStore/productView/Options.jsx +2 -2
  181. package/src/modules/catalog/pages/frontStore/productView/Variants.jsx +4 -4
  182. package/src/modules/catalog/pages/frontStore/productView/route.json +2 -1
  183. package/src/modules/catalog/services/AttributeCollection.js +10 -10
  184. package/src/modules/catalog/services/AttributeGroupCollection.js +10 -10
  185. package/src/modules/catalog/services/CategoryCollection.js +10 -10
  186. package/src/modules/catalog/services/CollectionCollection.js +10 -10
  187. package/src/modules/catalog/services/registerCartItemProductUrlField.js +35 -0
  188. package/src/modules/catalog/services/registerCartItemVariantOptionsField.js +51 -0
  189. package/src/modules/catalog/services/registerDefaultCategoryCollectionFilters.js +16 -0
  190. package/src/modules/checkout/api/addShippingNote/[context]bodyParser[auth].js +5 -0
  191. package/src/modules/checkout/api/addShippingNote/payloadSchema.json +15 -0
  192. package/src/modules/checkout/api/addShippingNote/route.json +5 -0
  193. package/src/modules/checkout/api/addShippingNote/saveShippingNote.js +50 -0
  194. package/src/modules/checkout/api/createCart/createNewCart.js +28 -1
  195. package/src/modules/checkout/api/updateCartItemQty/[bodyParser]updateQty.js +49 -0
  196. package/src/modules/checkout/api/updateCartItemQty/[context]bodyParser[auth].js +5 -0
  197. package/src/modules/checkout/api/updateCartItemQty/payloadSchema.json +21 -0
  198. package/src/modules/checkout/api/updateCartItemQty/route.json +5 -0
  199. package/src/modules/checkout/api/updateMineCartItemQty/[context]bodyParser[auth].js +5 -0
  200. package/src/modules/checkout/api/updateMineCartItemQty/[detectCurrentCart]updateQty.js +51 -0
  201. package/src/modules/checkout/api/updateMineCartItemQty/[getCurrentCustomer]detectCurrentCart.js +32 -0
  202. package/src/modules/checkout/api/updateMineCartItemQty/payloadSchema.json +21 -0
  203. package/src/modules/checkout/api/updateMineCartItemQty/route.json +5 -0
  204. package/src/modules/checkout/bootstrap.js +27 -0
  205. package/src/modules/checkout/graphql/types/Cart/Cart.graphql +22 -3
  206. package/src/modules/checkout/graphql/types/Cart/Cart.resolvers.js +18 -2
  207. package/src/modules/checkout/graphql/types/CheckoutSetting/CheckoutSetting.graphql +3 -0
  208. package/src/modules/checkout/graphql/types/CheckoutSetting/CheckoutSetting.resolvers.js +7 -0
  209. package/src/modules/checkout/migration/Version-1.0.0.js +14 -0
  210. package/src/modules/checkout/migration/Version-1.0.6.js +201 -0
  211. package/src/modules/checkout/pages/admin/shippingSetting/ShippingSetting.jsx +2 -2
  212. package/src/modules/checkout/pages/frontStore/all/[context]detectCurrentCart[auth].js +5 -0
  213. package/src/modules/checkout/pages/frontStore/cart/ShoppingCart.jsx +17 -8
  214. package/src/modules/checkout/pages/frontStore/cart/Summary.jsx +18 -19
  215. package/src/modules/checkout/pages/frontStore/cart/route.json +2 -1
  216. package/src/modules/checkout/pages/frontStore/checkout/Checkout.jsx +5 -5
  217. package/src/modules/checkout/pages/frontStore/checkout/Checkout.scss +4 -0
  218. package/src/modules/checkout/pages/frontStore/checkout/ShippingMethods.jsx +2 -2
  219. package/src/modules/checkout/pages/frontStore/checkout/ShippingNote.jsx +105 -0
  220. package/src/modules/checkout/pages/frontStore/checkout/Summary.jsx +14 -14
  221. package/src/modules/checkout/pages/frontStore/checkout/SummaryMobile.jsx +12 -15
  222. package/src/modules/checkout/pages/frontStore/checkout/route.json +2 -1
  223. package/src/modules/checkout/pages/frontStore/checkoutSuccess/CheckoutSuccess.jsx +1 -1
  224. package/src/modules/checkout/pages/frontStore/checkoutSuccess/CheckoutSuccess.scss +4 -0
  225. package/src/modules/checkout/pages/frontStore/checkoutSuccess/CustomerInfo.jsx +30 -32
  226. package/src/modules/checkout/pages/frontStore/checkoutSuccess/ShippingNote.jsx +47 -0
  227. package/src/modules/checkout/pages/frontStore/checkoutSuccess/Summary.jsx +12 -15
  228. package/src/modules/checkout/pages/frontStore/checkoutSuccess/route.json +2 -1
  229. package/src/modules/checkout/services/cart/Cart.js +31 -27
  230. package/src/modules/checkout/services/cart/registerCartBaseFields.js +133 -41
  231. package/src/modules/checkout/services/cart/registerCartItemBaseFields.js +300 -374
  232. package/src/modules/checkout/services/toPrice.js +1 -1
  233. package/src/modules/checkout/tests/basicSetup.js +85 -0
  234. package/src/modules/checkout/tests/coupons.js +82 -0
  235. package/src/modules/checkout/tests/products.js +67 -0
  236. package/src/modules/checkout/tests/taxRates.js +3 -0
  237. package/src/modules/checkout/tests/unit/discountAmount.test.js +60 -0
  238. package/src/modules/checkout/tests/unit/grandTotal.test.js +83 -0
  239. package/src/modules/checkout/tests/unit/lineTotal.test.js +90 -0
  240. package/src/modules/checkout/tests/unit/lineTotalWithDiscount.test.js +103 -0
  241. package/src/modules/checkout/tests/unit/productPrice.test.js +67 -0
  242. package/src/modules/checkout/tests/unit/subTotal.test.js +85 -0
  243. package/src/modules/checkout/tests/unit/subTotalWithDiscount.test.js +117 -0
  244. package/src/modules/checkout/tests/unit/taxAmount.test.js +67 -0
  245. package/src/modules/checkout/tests/unit/taxAmountRounding.test.js +277 -0
  246. package/src/modules/cms/api/createWidget/[context]bodyParser[auth].js +5 -0
  247. package/src/modules/cms/api/createWidget/createWidget[finish].js +17 -0
  248. package/src/modules/cms/api/createWidget/finish[apiResponse].js +27 -0
  249. package/src/modules/cms/api/createWidget/payloadSchema.json +18 -0
  250. package/src/modules/cms/api/createWidget/route.json +5 -0
  251. package/src/modules/cms/api/deleteWidget/deleteWidget.js +27 -0
  252. package/src/modules/cms/api/deleteWidget/route.json +5 -0
  253. package/src/modules/cms/api/updateWidget/[context]bodyParser[auth].js +5 -0
  254. package/src/modules/cms/api/updateWidget/finish[apiResponse].js +27 -0
  255. package/src/modules/cms/api/updateWidget/payloadSchema.json +18 -0
  256. package/src/modules/cms/api/updateWidget/route.json +5 -0
  257. package/src/modules/cms/api/updateWidget/updateWidget[finish].js +17 -0
  258. package/src/modules/cms/bootstrap.js +223 -3
  259. package/src/modules/cms/graphql/types/CmsPage/CmsPage.graphql +1 -2
  260. package/src/modules/cms/graphql/types/CmsPage/CmsPage.resolvers.js +35 -1
  261. package/src/modules/cms/graphql/types/Widget/Widget.graphql +91 -0
  262. package/src/modules/cms/graphql/types/Widget/Widget.resolvers.js +142 -0
  263. package/src/modules/cms/migration/Version-1.1.0.js +22 -0
  264. package/src/modules/cms/migration/Version-1.1.1.js +103 -0
  265. package/src/modules/cms/pages/admin/adminNotFound/NotFound.jsx +4 -4
  266. package/src/modules/cms/pages/admin/all/CmsMenuGroup.jsx +12 -4
  267. package/src/modules/cms/pages/admin/all/Notification.scss +1 -1
  268. package/src/modules/cms/pages/admin/all/search/NoResult.jsx +2 -2
  269. package/src/modules/cms/pages/admin/all/search/Results.jsx +3 -3
  270. package/src/modules/cms/pages/admin/cmsPageEdit+cmsPageNew/FormContent.jsx +7 -9
  271. package/src/modules/cms/pages/admin/cmsPageEdit+cmsPageNew/General.jsx +3 -3
  272. package/src/modules/cms/pages/admin/cmsPageEdit+cmsPageNew/Seo.jsx +1 -1
  273. package/src/modules/cms/pages/admin/cmsPageEdit+cmsPageNew/Status.jsx +40 -0
  274. package/src/modules/cms/pages/admin/cmsPageGrid/Grid.jsx +3 -4
  275. package/src/modules/cms/pages/admin/dashboard/Layout.jsx +3 -3
  276. package/src/modules/cms/pages/admin/widgetEdit/WidgetForm.jsx +52 -0
  277. package/src/modules/cms/pages/admin/widgetEdit/index.js +36 -0
  278. package/src/modules/cms/pages/admin/widgetEdit/route.json +4 -0
  279. package/src/modules/cms/pages/admin/widgetEdit+widgetNew/FormContent.jsx +69 -0
  280. package/src/modules/cms/pages/admin/widgetEdit+widgetNew/FormContent.scss +7 -0
  281. package/src/modules/cms/pages/admin/widgetEdit+widgetNew/General.jsx +185 -0
  282. package/src/modules/cms/pages/admin/widgetEdit+widgetNew/PageHeading.jsx +37 -0
  283. package/src/modules/cms/pages/admin/widgetEdit+widgetNew/Setting.jsx +55 -0
  284. package/src/modules/cms/pages/admin/widgetGrid/Grid.jsx +415 -0
  285. package/src/modules/cms/pages/admin/widgetGrid/Heading.jsx +11 -0
  286. package/src/modules/cms/pages/admin/widgetGrid/NewWidgetButton.jsx +52 -0
  287. package/src/modules/cms/pages/admin/widgetGrid/index.js +15 -0
  288. package/src/modules/cms/pages/admin/widgetGrid/route.json +4 -0
  289. package/src/modules/cms/pages/admin/widgetNew/WidgetNewForm.jsx +60 -0
  290. package/src/modules/cms/pages/admin/widgetNew/index.js +11 -0
  291. package/src/modules/cms/pages/admin/widgetNew/route.json +4 -0
  292. package/src/modules/cms/pages/admin/widgetNew/typeValidate.js +21 -0
  293. package/src/modules/cms/pages/frontStore/all/Breadcrumb.jsx +1 -1
  294. package/src/modules/cms/pages/frontStore/all/Footer.jsx +2 -2
  295. package/src/modules/cms/pages/frontStore/all/Layout.jsx +3 -3
  296. package/src/modules/cms/pages/frontStore/all/Layout.scss +13 -0
  297. package/src/modules/cms/pages/frontStore/all/Logo.jsx +2 -2
  298. package/src/modules/cms/pages/frontStore/all/Logo.scss +2 -4
  299. package/src/modules/cms/pages/frontStore/all/Notification.scss +1 -1
  300. package/src/modules/cms/pages/frontStore/cmsPageView/Layout.jsx +2 -2
  301. package/src/modules/cms/pages/frontStore/cmsPageView/View.jsx +5 -3
  302. package/src/modules/cms/pages/frontStore/cmsPageView/index.js +6 -12
  303. package/src/modules/cms/pages/frontStore/cmsPageView/route.json +2 -1
  304. package/src/modules/cms/pages/frontStore/homepage/route.json +2 -1
  305. package/src/modules/cms/pages/frontStore/notFound/NotFound.jsx +4 -4
  306. package/src/modules/cms/pages/frontStore/notFound/route.json +2 -1
  307. package/src/modules/cms/pages/frontStore/staticAsset/[context]staticAssets[auth].js +1 -1
  308. package/src/modules/cms/services/CMSPageCollection.js +10 -10
  309. package/src/modules/cms/services/WidgetCollection.js +62 -0
  310. package/src/modules/cms/services/getWidgetsBaseQuery.js +7 -0
  311. package/src/modules/cms/services/page/createPage.js +1 -2
  312. package/src/modules/cms/services/page/pageDataSchema.json +0 -4
  313. package/src/modules/cms/services/registerDefaultWidgetCollectionFilters.js +62 -0
  314. package/src/modules/cms/services/tailwind.admin.config.js +22 -107
  315. package/src/modules/cms/services/tailwind.frontStore.config.js +23 -108
  316. package/src/modules/cms/services/widget/createWidget.js +73 -0
  317. package/src/modules/cms/services/widget/deleteWidget.js +49 -0
  318. package/src/modules/cms/services/widget/loadWidgetInstances.js +54 -0
  319. package/src/modules/cms/services/widget/updateWidget.js +86 -0
  320. package/src/modules/cms/services/widget/widgetDataSchema.json +29 -0
  321. package/src/modules/cod/pages/admin/paymentSetting/CODSetting.jsx +2 -2
  322. package/src/modules/cod/pages/frontStore/checkout/CashOnDelivery.jsx +1 -1
  323. package/src/modules/customer/bootstrap.js +21 -4
  324. package/src/modules/customer/pages/admin/customerEdit/CustomerEditForm.jsx +3 -3
  325. package/src/modules/customer/pages/admin/customerEdit+customerNew/OrderHistory.jsx +1 -1
  326. package/src/modules/customer/pages/admin/customerGrid/Grid.jsx +3 -3
  327. package/src/modules/customer/pages/frontStore/account/AccountDetails.jsx +3 -3
  328. package/src/modules/customer/pages/frontStore/account/Layout.jsx +3 -3
  329. package/src/modules/customer/pages/frontStore/account/OrderHistory.jsx +1 -1
  330. package/src/modules/customer/pages/frontStore/account/route.json +2 -1
  331. package/src/modules/customer/pages/frontStore/login/LoginForm.jsx +2 -2
  332. package/src/modules/customer/pages/frontStore/login/route.json +2 -1
  333. package/src/modules/customer/pages/frontStore/register/RegisterForm.jsx +2 -2
  334. package/src/modules/customer/pages/frontStore/register/route.json +2 -1
  335. package/src/modules/customer/pages/frontStore/resetPasswordPage/ResetPasswordForm.jsx +2 -2
  336. package/src/modules/customer/pages/frontStore/resetPasswordPage/route.json +2 -1
  337. package/src/modules/customer/pages/frontStore/updatePasswordPage/UpdatePasswordForm.jsx +3 -3
  338. package/src/modules/customer/pages/frontStore/updatePasswordPage/route.json +2 -1
  339. package/src/modules/customer/services/CustomerCollection.js +10 -10
  340. package/src/modules/customer/services/CustomerGroupCollection.js +10 -10
  341. package/src/modules/graphql/pages/global/[bodyParser]buildQuery[graphql].js +238 -6
  342. package/src/modules/graphql/pages/global/[buildQuery]graphql[notification].js +12 -8
  343. package/src/modules/oms/bootstrap.js +87 -3
  344. package/src/modules/oms/graphql/types/Order/Order.graphql +11 -2
  345. package/src/modules/oms/graphql/types/Order/Order.resolvers.js +7 -1
  346. package/src/modules/oms/pages/admin/dashboard/Bestsellers.jsx +2 -2
  347. package/src/modules/oms/pages/admin/dashboard/Lifetimesales.jsx +5 -5
  348. package/src/modules/oms/pages/admin/orderEdit/AddTrackingButton.jsx +1 -1
  349. package/src/modules/oms/pages/admin/orderEdit/Items.jsx +7 -7
  350. package/src/modules/oms/pages/admin/orderEdit/Layout.jsx +3 -3
  351. package/src/modules/oms/pages/admin/orderEdit/Payment.jsx +6 -6
  352. package/src/modules/oms/pages/admin/orderEdit/ShipButton.jsx +1 -1
  353. package/src/modules/oms/pages/admin/orderGrid/Grid.jsx +3 -3
  354. package/src/modules/oms/services/OrderCollection.js +10 -10
  355. package/src/modules/paypal/api/paypalCreateOrder/[bodyParser]createOrder.js +55 -24
  356. package/src/modules/paypal/pages/admin/paymentSetting/PaypalSetting.jsx +6 -6
  357. package/src/modules/paypal/pages/frontStore/checkout/Paypal.jsx +3 -4
  358. package/src/modules/promotion/bootstrap.js +19 -101
  359. package/src/modules/promotion/pages/admin/couponEdit+couponNew/DiscountType.jsx +1 -1
  360. package/src/modules/promotion/pages/admin/couponEdit+couponNew/FormContent.jsx +5 -5
  361. package/src/modules/promotion/pages/admin/couponGrid/Grid.jsx +3 -3
  362. package/src/modules/promotion/pages/frontStore/cart/Coupon.jsx +2 -2
  363. package/src/modules/promotion/services/CouponCollection.js +10 -10
  364. package/src/modules/promotion/services/couponValidator.js +4 -7
  365. package/src/modules/promotion/services/discountCalculator.js +2 -7
  366. package/src/modules/promotion/services/registerCartItemPromotionFields.js +80 -0
  367. package/src/modules/promotion/services/registerCartPromotionFields.js +128 -0
  368. package/src/modules/promotion/services/registerDefaultCalculators.js +48 -20
  369. package/src/modules/promotion/services/registerDefaultValidators.js +16 -4
  370. package/src/modules/setting/pages/admin/paymentSetting/PaymentSetting.jsx +2 -2
  371. package/src/modules/setting/pages/admin/storeSetting/StoreSetting.jsx +98 -35
  372. package/src/modules/stripe/pages/admin/paymentSetting/StripePayment.jsx +5 -5
  373. package/src/modules/stripe/pages/frontStore/checkout/Stripe.jsx +1 -1
  374. package/src/modules/tax/bootstrap.js +40 -5
  375. package/src/modules/tax/graphql/types/Product/Price/ProductPrice.resolvers.js +6 -39
  376. package/src/modules/tax/graphql/types/TaxSetting/TaxSetting.graphql +1 -2
  377. package/src/modules/tax/graphql/types/TaxSetting/TaxSetting.resolvers.js +1 -8
  378. package/src/modules/tax/pages/admin/taxSetting/TaxSetting.jsx +4 -4
  379. package/src/modules/tax/services/TaxClassCollection.js +10 -10
  380. package/src/modules/tax/services/calculateTaxAmount.js +12 -9
  381. package/src/modules/tax/services/registerCartItemTaxPercentField.js +76 -0
  382. package/src/modules/auth/services/adminSessionMiddleware.js +0 -0
  383. package/src/modules/catalog/pages/frontStore/homepage/FeaturedCategories.jsx +0 -58
  384. package/src/modules/cms/pages/admin/cmsPageEdit+cmsPageNew/StatusAndLayout.jsx +0 -61
  385. package/src/modules/cms/pages/frontStore/all/Menu.jsx +0 -46
  386. package/src/modules/cms/pages/frontStore/all/Menu.scss +0 -7
  387. package/src/modules/cms/pages/frontStore/all/MobileMenu.jsx +0 -73
  388. package/src/modules/cms/pages/frontStore/all/MobileMenu.scss +0 -35
  389. package/src/modules/cms/pages/frontStore/homepage/MainBanner.jsx +0 -31
  390. package/src/modules/cms/pages/frontStore/homepage/MainBanner.scss +0 -48
@@ -1,4 +1,5 @@
1
1
  const config = require('config');
2
+ const { merge } = require('@evershop/evershop/src/lib/util/merge');
2
3
  const registerDefaultOrderCollectionFilters = require('./services/registerDefaultOrderCollectionFilters');
3
4
  const {
4
5
  defaultPaginationFilters
@@ -6,8 +7,91 @@ const {
6
7
  const { addProcessor } = require('../../lib/util/registry');
7
8
 
8
9
  module.exports = () => {
9
- // Default order status and carriers configuration
10
- const orderStatusConfig = {
10
+ addProcessor('configuratonSchema', (schema) => {
11
+ merge(schema, {
12
+ properties: {
13
+ oms: {
14
+ type: 'object',
15
+ properties: {
16
+ order: {
17
+ type: 'object',
18
+ properties: {
19
+ shipmentStatus: {
20
+ type: 'object',
21
+ patternProperties: {
22
+ '^[a-zA-Z_]+$': {
23
+ type: 'object',
24
+ properties: {
25
+ name: {
26
+ type: 'string'
27
+ },
28
+ badge: {
29
+ type: 'string'
30
+ },
31
+ progress: {
32
+ type: 'string'
33
+ },
34
+ isDefault: {
35
+ type: 'boolean'
36
+ }
37
+ },
38
+ required: ['name', 'badge', 'progress']
39
+ }
40
+ },
41
+ additionalProperties: false
42
+ },
43
+ paymentStatus: {
44
+ type: 'object',
45
+ patternProperties: {
46
+ '^[a-zA-Z_]+$': {
47
+ type: 'object',
48
+ properties: {
49
+ name: {
50
+ type: 'string'
51
+ },
52
+ badge: {
53
+ type: 'string'
54
+ },
55
+ progress: {
56
+ type: 'string'
57
+ },
58
+ isDefault: {
59
+ type: 'boolean'
60
+ }
61
+ },
62
+ required: ['name', 'badge', 'progress']
63
+ }
64
+ },
65
+ additionalProperties: false
66
+ }
67
+ },
68
+ required: ['shipmentStatus', 'paymentStatus'],
69
+ additionalProperties: false
70
+ },
71
+ carriers: {
72
+ type: 'object',
73
+ additionalProperties: {
74
+ type: 'object',
75
+ properties: {
76
+ name: {
77
+ type: 'string'
78
+ },
79
+ trackingUrl: {
80
+ type: 'string'
81
+ }
82
+ },
83
+ required: ['name']
84
+ }
85
+ }
86
+ }
87
+ }
88
+ }
89
+ });
90
+ return schema;
91
+ });
92
+
93
+ // Default order configuration
94
+ const defaultOrderConfig = {
11
95
  order: {
12
96
  shipmentStatus: {
13
97
  processing: {
@@ -61,7 +145,7 @@ module.exports = () => {
61
145
  }
62
146
  }
63
147
  };
64
- config.util.setModuleDefaults('oms', orderStatusConfig);
148
+ config.util.setModuleDefaults('oms', defaultOrderConfig);
65
149
 
66
150
  // Reigtering the default filters for attribute collection
67
151
  addProcessor(
@@ -33,9 +33,14 @@ type OrderItem {
33
33
  finalPriceInclTax: Price!
34
34
  taxPercent: Float!
35
35
  taxAmount: Price!
36
+ taxAmountBeforeDiscount: Price!
36
37
  discountAmount: Price!
37
- subTotal: Price!
38
- total: Price!
38
+ lineTotal: Price!
39
+ subTotal: Price! # Deprecated, this field is equivalent to lineTotal
40
+ lineTotalWithDiscount: Price!
41
+ lineTotalWithDiscountInclTax: Price!
42
+ lineTotalInclTax: Price!
43
+ total: Price! # Deprecated, this field is equivalent to lineTotalInclTax
39
44
  variantGroupId: Int
40
45
  variantOptions: String
41
46
  productCustomOptions: String
@@ -66,9 +71,13 @@ type Order implements ShoppingCart {
66
71
  discountAmount: Price!
67
72
  subTotal: Price!
68
73
  subTotalInclTax: Price!
74
+ subTotalWithDiscount: Price!
75
+ subTotalWithDiscountInclTax: Price!
69
76
  totalQty: Int!
70
77
  totalWeight: Weight!
71
78
  taxAmount: Price!
79
+ taxAmountBeforeDiscount: Price!
80
+ totalTaxAmount: Price!
72
81
  grandTotal: Price!
73
82
  shippingMethod: String
74
83
  shippingMethodName: String
@@ -102,6 +102,12 @@ module.exports = {
102
102
  .where('product_id', '=', productId)
103
103
  .load(pool);
104
104
  return product ? buildUrl('productEdit', { id: product.uuid }) : null;
105
- }
105
+ },
106
+ total: ({ lineTotalInclTax }) =>
107
+ // This field is deprecated, use lineTotalInclTax instead
108
+ lineTotalInclTax,
109
+ subTotal: ({ lineTotal }) =>
110
+ // This field is deprecated, use lineTotal instead
111
+ lineTotal
106
112
  }
107
113
  };
@@ -32,9 +32,9 @@ export default function BestSellers({ bestSellers, listUrl }) {
32
32
  <tr key={i}>
33
33
  <td>
34
34
  <div className=" flex justify-left">
35
- <div className="flex justify-start gap-1 items-center">
35
+ <div className="flex justify-start gap-4 items-center">
36
36
  <div
37
- className="grid-thumbnail text-border border border-divider p-075 rounded"
37
+ className="grid-thumbnail text-border border border-divider p-3 rounded"
38
38
  style={{ width: '6rem' }}
39
39
  >
40
40
  {p.image?.thumb && (
@@ -64,22 +64,22 @@ export default function LifetimeSale({ api }) {
64
64
  return (
65
65
  <Card title="Lifetime Sales">
66
66
  <Card.Session>
67
- <div className="grid grid-cols-1 gap-1">
68
- <div className="flex space-x-1 items-center">
67
+ <div className="grid grid-cols-1 gap-4">
68
+ <div className="flex space-x-4 items-center">
69
69
  <Dot variant="info" />
70
70
  <div className="self-center">{orders} orders</div>
71
71
  </div>
72
- <div className="flex space-x-1 items-center">
72
+ <div className="flex space-x-4 items-center">
73
73
  <Dot variant="info" />
74
74
  <div className="self-center">{total} lifetime sale</div>
75
75
  </div>
76
- <div className="flex space-x-1 items-center">
76
+ <div className="flex space-x-4 items-center">
77
77
  <Dot variant="success" />
78
78
  <div className="self-center">
79
79
  {completed_percentage}% of orders completed
80
80
  </div>
81
81
  </div>
82
- <div className="flex space-x-1 items-center">
82
+ <div className="flex space-x-4 items-center">
83
83
  <Dot variant="critical" />
84
84
  <div className="self-center">
85
85
  {cancelled_percentage}% of orders cancelled
@@ -38,7 +38,7 @@ export default function AddTrackingButton({ order: { shipment }, carriers }) {
38
38
  });
39
39
  }}
40
40
  >
41
- <div className="grid grid-cols-2 gap-1">
41
+ <div className="grid grid-cols-2 gap-4">
42
42
  <div>
43
43
  <Field
44
44
  formId="edit-tracking-info"
@@ -14,7 +14,7 @@ export default function Items({ order: { items, shipmentStatus } }) {
14
14
  return (
15
15
  <Card
16
16
  title={
17
- <div className="flex space-x-1">
17
+ <div className="flex space-x-4">
18
18
  <Circle variant={shipmentStatus.badge || 'new'} />
19
19
  <span className="block self-center">
20
20
  {shipmentStatus.name || 'Unknown'}
@@ -59,11 +59,11 @@ export default function Items({ order: { items, shipmentStatus } }) {
59
59
  {
60
60
  component: { default: 'td' },
61
61
  props: {
62
- children: <span>{i.subTotal.text}</span>,
63
- key: 'subTotal'
62
+ children: <span>{i.lineTotal.text}</span>,
63
+ key: 'lineTotal'
64
64
  },
65
65
  sortOrder: 40,
66
- id: 'subTotal'
66
+ id: 'lineTotal'
67
67
  }
68
68
  ]}
69
69
  />
@@ -73,7 +73,7 @@ export default function Items({ order: { items, shipmentStatus } }) {
73
73
  </table>
74
74
  </Card.Session>
75
75
  <Card.Session>
76
- <div className="flex justify-end gap-1">
76
+ <div className="flex justify-end gap-4">
77
77
  <Area id="order_actions" noOuter />
78
78
  </div>
79
79
  </Card.Session>
@@ -104,7 +104,7 @@ Items.propTypes = {
104
104
  value: PropTypes.number,
105
105
  text: PropTypes.string
106
106
  }),
107
- subTotal: PropTypes.shape({
107
+ lineTotal: PropTypes.shape({
108
108
  value: PropTypes.number,
109
109
  text: PropTypes.string
110
110
  })
@@ -167,7 +167,7 @@ export const query = `
167
167
  value
168
168
  text
169
169
  }
170
- subTotal {
170
+ lineTotal {
171
171
  value
172
172
  text
173
173
  }
@@ -4,11 +4,11 @@ import './Layout.scss';
4
4
 
5
5
  export default function OrderEdit() {
6
6
  return (
7
- <div className="grid grid-cols-3 gap-x-2 grid-flow-row ">
8
- <div className="col-span-2 grid grid-cols-1 gap-2 auto-rows-max">
7
+ <div className="grid grid-cols-3 gap-x-8 grid-flow-row ">
8
+ <div className="col-span-2 grid grid-cols-1 gap-8 auto-rows-max">
9
9
  <Area id="leftSide" noOuter />
10
10
  </div>
11
- <div className="col-span-1 grid grid-cols-1 gap-2 auto-rows-max">
11
+ <div className="col-span-1 grid grid-cols-1 gap-8 auto-rows-max">
12
12
  <Area id="rightSide" noOuter />
13
13
  </div>
14
14
  </div>
@@ -18,7 +18,7 @@ export default function OrderSummary({
18
18
  shippingMethodName,
19
19
  paymentMethodName,
20
20
  totalQty,
21
- taxAmount,
21
+ totalTaxAmount,
22
22
  discountAmount,
23
23
  grandTotal,
24
24
  subTotal,
@@ -31,7 +31,7 @@ export default function OrderSummary({
31
31
  return (
32
32
  <Card
33
33
  title={
34
- <div className="flex space-x-1">
34
+ <div className="flex space-x-4">
35
35
  <Circle variant={paymentStatus.badge} />
36
36
  <span className="block self-center">
37
37
  {paymentMethodName || 'Unknown'}
@@ -47,7 +47,7 @@ export default function OrderSummary({
47
47
  grandTotal={grandTotal}
48
48
  coupon={coupon}
49
49
  discountAmount={discountAmount}
50
- taxAmount={taxAmount}
50
+ totalTaxAmount={totalTaxAmount}
51
51
  className="summary-wrapper"
52
52
  coreComponents={[
53
53
  {
@@ -70,7 +70,7 @@ export default function OrderSummary({
70
70
  },
71
71
  {
72
72
  component: { default: Tax },
73
- props: { taxClass: '', amount: taxAmount.text },
73
+ props: { taxClass: '', amount: totalTaxAmount.text },
74
74
  sortOrder: 20
75
75
  },
76
76
 
@@ -97,7 +97,7 @@ OrderSummary.propTypes = {
97
97
  coupon: PropTypes.string,
98
98
  shippingMethod: PropTypes.string,
99
99
  paymentMethodName: PropTypes.string,
100
- taxAmount: PropTypes.shape({
100
+ totalTaxAmount: PropTypes.shape({
101
101
  text: PropTypes.string.isRequired
102
102
  }).isRequired,
103
103
  discountAmount: PropTypes.shape({
@@ -148,7 +148,7 @@ export const query = `
148
148
  shippingMethodName
149
149
  paymentMethod
150
150
  paymentMethodName
151
- taxAmount {
151
+ totalTaxAmount {
152
152
  text(currency: getContextValue("orderCurrency"))
153
153
  }
154
154
  discountAmount {
@@ -46,7 +46,7 @@ export default function ShipButton({
46
46
  });
47
47
  }}
48
48
  >
49
- <div className="grid grid-cols-2 gap-1">
49
+ <div className="grid grid-cols-2 gap-4">
50
50
  <div>
51
51
  <Field
52
52
  formId="ship-items"
@@ -70,7 +70,7 @@ function Actions({ orders = [], selectedIds = [] }) {
70
70
  {selectedIds.length > 0 && (
71
71
  <td style={{ borderTop: 0 }} colSpan="100">
72
72
  <div className="inline-flex border border-divider rounded justify-items-start">
73
- <a href="#" className="font-semibold pt-075 pb-075 pl-15 pr-15">
73
+ <a href="#" className="font-semibold pt-3 pb-3 pl-6 pr-6">
74
74
  {selectedIds.length} selected
75
75
  </a>
76
76
  {actions.map((action) => (
@@ -80,7 +80,7 @@ function Actions({ orders = [], selectedIds = [] }) {
80
80
  e.preventDefault();
81
81
  action.onAction();
82
82
  }}
83
- className="font-semibold pt-075 pb-075 pl-15 pr-15 block border-l border-divider self-center"
83
+ className="font-semibold pt-3 pb-3 pl-6 pr-6 block border-l border-divider self-center"
84
84
  >
85
85
  <span>{action.name}</span>
86
86
  </a>
@@ -122,7 +122,7 @@ export default function OrderGrid({
122
122
  <Card.Session
123
123
  title={
124
124
  <Form submitBtn={false}>
125
- <div className="flex gap-2 justify-center items-center">
125
+ <div className="flex gap-8 justify-center items-center">
126
126
  <Area
127
127
  id="orderGridFilter"
128
128
  noOuter
@@ -14,16 +14,16 @@ class OrderCollection {
14
14
  // Apply the filters
15
15
  const orderCollectionFilters = await getValue('orderCollectionFilters', []);
16
16
  orderCollectionFilters.forEach((filter) => {
17
- const check = filters.find((f) => f.key === filter.key);
18
- if (check) {
19
- if (filter.operation.includes(check.operation)) {
20
- filter.callback(
21
- this.baseQuery,
22
- check.operation,
23
- check.value,
24
- currentFilters
25
- );
26
- }
17
+ const check = filters.find(
18
+ (f) => f.key === filter.key && filter.operation.includes(f.operation)
19
+ );
20
+ if (filter.key === '*' || check) {
21
+ filter.callback(
22
+ this.baseQuery,
23
+ check?.operation,
24
+ check?.value,
25
+ currentFilters
26
+ );
27
27
  }
28
28
  });
29
29
 
@@ -8,6 +8,8 @@ const {
8
8
  OK,
9
9
  INTERNAL_SERVER_ERROR
10
10
  } = require('@evershop/evershop/src/lib/util/httpStatus');
11
+ const { getConfig } = require('@evershop/evershop/src/lib/util/getConfig');
12
+ const { getValueSync } = require('@evershop/evershop/src/lib/util/registry');
11
13
  const { getContextValue } = require('../../../graphql/services/contextHelper');
12
14
  const { getSetting } = require('../../../setting/services/setting');
13
15
  const { toPrice } = require('../../../checkout/services/toPrice');
@@ -37,6 +39,43 @@ module.exports = async (request, response, stack, next) => {
37
39
  .from('order_item')
38
40
  .where('order_item_order_id', '=', order.order_id)
39
41
  .execute(pool);
42
+ const catalogPriceInclTax = getConfig(
43
+ 'pricing.tax.price_including_tax',
44
+ false
45
+ );
46
+ const amount = {
47
+ currency_code: order.currency,
48
+ value: toPrice(order.grand_total),
49
+ breakdown: {
50
+ item_total: {
51
+ currency_code: order.currency,
52
+ value: catalogPriceInclTax
53
+ ? toPrice(order.sub_total_incl_tax)
54
+ : toPrice(order.sub_total)
55
+ },
56
+ shipping: {
57
+ currency_code: order.currency,
58
+ value: catalogPriceInclTax
59
+ ? toPrice(order.shipping_fee_incl_tax)
60
+ : toPrice(order.shipping_fee_excl_tax)
61
+ },
62
+ discount: {
63
+ currency_code: order.currency,
64
+ value: toPrice(order.discount_amount)
65
+ }
66
+ }
67
+ };
68
+ if (!catalogPriceInclTax) {
69
+ amount.breakdown.tax_total = {
70
+ currency_code: order.currency,
71
+ value: toPrice(order.total_tax_amount)
72
+ };
73
+ }
74
+
75
+ const finalAmount = getValueSync('paypalFinalAmount', amount, {
76
+ order,
77
+ items
78
+ });
40
79
 
41
80
  const orderData = {
42
81
  intent: await getSetting('paypalPaymentIntent', 'CAPTURE'),
@@ -48,31 +87,12 @@ module.exports = async (request, response, stack, next) => {
48
87
  quantity: item.qty,
49
88
  unit_amount: {
50
89
  currency_code: order.currency,
51
- value: toPrice(item.final_price)
90
+ value: catalogPriceInclTax
91
+ ? toPrice(item.final_price_incl_tax)
92
+ : toPrice(item.final_price)
52
93
  }
53
94
  })),
54
- amount: {
55
- currency_code: order.currency,
56
- value: toPrice(order.grand_total),
57
- breakdown: {
58
- item_total: {
59
- currency_code: order.currency,
60
- value: toPrice(order.sub_total)
61
- },
62
- shipping: {
63
- currency_code: order.currency,
64
- value: toPrice(order.shipping_fee_incl_tax)
65
- },
66
- tax_total: {
67
- currency_code: order.currency,
68
- value: toPrice(order.tax_amount)
69
- },
70
- discount: {
71
- currency_code: order.currency,
72
- value: toPrice(order.discount_amount)
73
- }
74
- }
75
- }
95
+ amount: finalAmount
76
96
  }
77
97
  ],
78
98
  application_context: {
@@ -144,10 +164,21 @@ module.exports = async (request, response, stack, next) => {
144
164
  address
145
165
  };
146
166
  }
167
+
168
+ const finalPaypalOrderData = getValueSync(
169
+ 'finalPaypalOrderData',
170
+ orderData,
171
+ {
172
+ order,
173
+ items,
174
+ shippingAddress,
175
+ billingAddress
176
+ }
177
+ );
147
178
  // Call PayPal API to create order using axios
148
179
  const { data } = await axios.post(
149
180
  `${await getApiBaseUrl()}/v2/checkout/orders`,
150
- orderData,
181
+ finalPaypalOrderData,
151
182
  {
152
183
  headers: {
153
184
  'Content-Type': 'application/json',
@@ -16,7 +16,7 @@ export default function PaypalPayment({
16
16
  return (
17
17
  <Card title="Paypal Payment">
18
18
  <Card.Session>
19
- <div className="grid grid-cols-3 gap-2">
19
+ <div className="grid grid-cols-3 gap-8">
20
20
  <div className="col-span-1 items-center flex">
21
21
  <h4>Enable?</h4>
22
22
  </div>
@@ -26,7 +26,7 @@ export default function PaypalPayment({
26
26
  </div>
27
27
  </Card.Session>
28
28
  <Card.Session>
29
- <div className="grid grid-cols-3 gap-2">
29
+ <div className="grid grid-cols-3 gap-8">
30
30
  <div className="col-span-1 items-center flex">
31
31
  <h4>Dislay Name</h4>
32
32
  </div>
@@ -41,7 +41,7 @@ export default function PaypalPayment({
41
41
  </div>
42
42
  </Card.Session>
43
43
  <Card.Session>
44
- <div className="grid grid-cols-3 gap-2">
44
+ <div className="grid grid-cols-3 gap-8">
45
45
  <div className="col-span-1 items-center flex">
46
46
  <h4>Client ID</h4>
47
47
  </div>
@@ -49,14 +49,14 @@ export default function PaypalPayment({
49
49
  <Field
50
50
  type="text"
51
51
  name="paypalClientId"
52
- placeholder="Publishable Key"
52
+ placeholder="Client ID"
53
53
  value={paypalClientId}
54
54
  />
55
55
  </div>
56
56
  </div>
57
57
  </Card.Session>
58
58
  <Card.Session>
59
- <div className="grid grid-cols-3 gap-2">
59
+ <div className="grid grid-cols-3 gap-8">
60
60
  <div className="col-span-1 items-center flex">
61
61
  <h4>Client Secret</h4>
62
62
  </div>
@@ -71,7 +71,7 @@ export default function PaypalPayment({
71
71
  </div>
72
72
  </Card.Session>
73
73
  <Card.Session>
74
- <div className="grid grid-cols-3 gap-2">
74
+ <div className="grid grid-cols-3 gap-8">
75
75
  <div className="col-span-1 items-center flex">
76
76
  <h4>Environment</h4>
77
77
  </div>
@@ -4,7 +4,6 @@ import { useCheckout } from '@components/common/context/checkout';
4
4
  import PaypalLogo from '@components/frontStore/paypal/PaypalLogo';
5
5
  import { _ } from '@evershop/evershop/src/lib/locale/translate';
6
6
 
7
-
8
7
  export function Paypal({
9
8
  getAccessTokenAPI,
10
9
  createOrderAPI,
@@ -68,8 +67,8 @@ export function Paypal({
68
67
 
69
68
  return (
70
69
  <div>
71
- {error && <div className="text-critical mb-1">{error}</div>}
72
- <div className="p-2 text-center border rounded mt-1 border-divider">
70
+ {error && <div className="text-critical mb-4">{error}</div>}
71
+ <div className="p-8 text-center border rounded mt-4 border-divider">
73
72
  {_('You will be redirected to PayPal')}
74
73
  </div>
75
74
  </div>
@@ -93,7 +92,7 @@ export default function PaypalMethod({ getAccessTokenAPI, createOrderAPI }) {
93
92
 
94
93
  return (
95
94
  <div>
96
- <div className="flex justify-start items-center gap-1">
95
+ <div className="flex justify-start items-center gap-4">
97
96
  {(!selectedPaymentMethod ||
98
97
  selectedPaymentMethod.code !== 'paypal') && (
99
98
  <a