contentoh-components-library 21.5.35 → 21.5.37

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 (998) hide show
  1. package/.storybook/main.js +10 -10
  2. package/.storybook/preview-head.html +4 -4
  3. package/.storybook/preview.js +9 -9
  4. package/CHANGELOG.md +115 -115
  5. package/README.md +70 -70
  6. package/dist/assets/fonts/avenirnext/AvenirNextLTPro-Bold.otf +0 -0
  7. package/dist/assets/fonts/avenirnext/AvenirNextLTPro-It.otf +0 -0
  8. package/dist/assets/fonts/avenirnext/AvenirNextLTPro-Regular.otf +0 -0
  9. package/dist/assets/fonts/lato/Lato-Bold.ttf +0 -0
  10. package/dist/assets/fonts/lato/Lato-Italic.ttf +0 -0
  11. package/dist/assets/fonts/lato/Lato-Light.ttf +0 -0
  12. package/dist/assets/fonts/lato/Lato-Regular.ttf +0 -0
  13. package/dist/assets/fonts/lato/Lato-Thin.ttf +0 -0
  14. package/dist/assets/fonts/lato/OFL.txt +93 -0
  15. package/dist/assets/fonts/raleway/Raleway-Black.ttf +0 -0
  16. package/dist/assets/fonts/raleway/Raleway-Bold.ttf +0 -0
  17. package/dist/assets/fonts/raleway/Raleway-ExtraBold.ttf +0 -0
  18. package/dist/assets/fonts/raleway/Raleway-Italic.ttf +0 -0
  19. package/dist/assets/fonts/raleway/Raleway-Medium.ttf +0 -0
  20. package/dist/assets/fonts/raleway/Raleway-Regular.ttf +0 -0
  21. package/dist/assets/fonts/raleway/Raleway-SemiBold.ttf +0 -0
  22. package/dist/assets/fonts/roboto/Roboto-Black.ttf +0 -0
  23. package/dist/assets/fonts/roboto/Roboto-BlackItalic.ttf +0 -0
  24. package/dist/assets/fonts/roboto/Roboto-Bold.ttf +0 -0
  25. package/dist/assets/fonts/roboto/Roboto-BoldItalic.ttf +0 -0
  26. package/dist/assets/fonts/roboto/Roboto-Italic.ttf +0 -0
  27. package/dist/assets/fonts/roboto/Roboto-Light.ttf +0 -0
  28. package/dist/assets/fonts/roboto/Roboto-LightItalic.ttf +0 -0
  29. package/dist/assets/fonts/roboto/Roboto-Medium.ttf +0 -0
  30. package/dist/assets/fonts/roboto/Roboto-MediumItalic.ttf +0 -0
  31. package/dist/assets/fonts/roboto/Roboto-Regular.ttf +0 -0
  32. package/dist/assets/fonts/roboto/Roboto-Thin.ttf +0 -0
  33. package/dist/assets/fonts/roboto/Roboto-ThinItalic.ttf +0 -0
  34. package/dist/assets/images/Icons/DownloadIcon.svg +4 -0
  35. package/dist/assets/images/Icons/Spinner.gif +0 -0
  36. package/dist/assets/images/Icons/addv2.svg +8 -0
  37. package/dist/assets/images/Icons/beenhere.svg +9 -0
  38. package/dist/assets/images/Icons/checkv2.svg +8 -0
  39. package/dist/assets/images/Icons/close-magenta.svg +9 -0
  40. package/dist/assets/images/Icons/close.svg +8 -0
  41. package/dist/assets/images/Icons/closeCircle.svg +8 -0
  42. package/dist/assets/images/Icons/delete-forever-red.svg +9 -0
  43. package/dist/assets/images/Icons/delete-forever-white.svg +10 -0
  44. package/dist/assets/images/Icons/edit.svg +8 -0
  45. package/dist/assets/images/Icons/fullscreen.svg +3 -0
  46. package/dist/assets/images/Icons/info.svg +8 -0
  47. package/dist/assets/images/Icons/infoNR.svg +8 -0
  48. package/dist/assets/images/Icons/options.svg +3 -0
  49. package/dist/assets/images/Icons/save-white-gray.svg +9 -0
  50. package/dist/assets/images/Icons/save-white.svg +9 -0
  51. package/dist/assets/images/Icons/save.svg +8 -0
  52. package/dist/assets/images/Icons/search.svg +3 -0
  53. package/dist/assets/images/Icons/settings.svg +8 -0
  54. package/dist/assets/images/Icons/trash.svg +8 -0
  55. package/dist/assets/images/Icons/undo.svg +8 -0
  56. package/dist/assets/images/Icons/upload-file-white.svg +4 -0
  57. package/dist/assets/images/Icons/upload-file.svg +10 -0
  58. package/dist/assets/images/Icons/upload_file.svg +10 -0
  59. package/dist/assets/images/Icons/warningv2.svg +3 -0
  60. package/dist/assets/images/activedFilter/removeFilter.svg +3 -0
  61. package/dist/assets/images/arrow/arrowIcon.svg +3 -0
  62. package/dist/assets/images/arrow/polygon.svg +3 -0
  63. package/dist/assets/images/asignationOptions/availableIcon.svg +3 -0
  64. package/dist/assets/images/asignationOptions/removeAsigned.svg +4 -0
  65. package/dist/assets/images/asignationOptions/requestToProvider.svg +3 -0
  66. package/dist/assets/images/asignationOptions/requestToTeam.svg +3 -0
  67. package/dist/assets/images/card/masterCardIcon.svg +5 -0
  68. package/dist/assets/images/carouselImagesLogin/login2.svg +117 -0
  69. package/dist/assets/images/carouselImagesLogin/login3.svg +147 -0
  70. package/dist/assets/images/carouselImagesLogin/loginImage.svg +301 -0
  71. package/dist/assets/images/checkBox/checked.svg +3 -0
  72. package/dist/assets/images/checkBox/checkrosa.svg +3 -0
  73. package/dist/assets/images/checkBox/checkverde.svg +3 -0
  74. package/dist/assets/images/checkBox/unchecked.svg +3 -0
  75. package/dist/assets/images/componentAssigned/assignedImage1.svg +9 -0
  76. package/dist/assets/images/componentAssigned/assignedImage2.svg +9 -0
  77. package/dist/assets/images/componentAssigned/clock.svg +4 -0
  78. package/dist/assets/images/componentAssigned/flag.svg +3 -0
  79. package/dist/assets/images/customSelect/searchIcon.png +0 -0
  80. package/dist/assets/images/customSelect/starIcon.svg +14 -0
  81. package/dist/assets/images/defaultImages/Spinner.gif +0 -0
  82. package/dist/assets/images/defaultImages/check_circle.svg +10 -0
  83. package/dist/assets/images/defaultImages/defaultProductImage.png +0 -0
  84. package/dist/assets/images/defaultImages/defaultProfileImage.svg +13 -0
  85. package/dist/assets/images/defaultImages/defaultUpdate.png +0 -0
  86. package/dist/assets/images/defaultImages/notFound.svg +124 -0
  87. package/dist/assets/images/dropDownButton/dropDownArrowButton.svg +3 -0
  88. package/dist/assets/images/editField/editField.svg +3 -0
  89. package/dist/assets/images/editField/showPassword.png +0 -0
  90. package/dist/assets/images/flags/highPriority.svg +3 -0
  91. package/dist/assets/images/flags/lowPriority.svg +3 -0
  92. package/dist/assets/images/flags/mediumPriority.svg +3 -0
  93. package/dist/assets/images/flags/noPriority.svg +3 -0
  94. package/dist/assets/images/flagsv2/highPriority.svg +3 -0
  95. package/dist/assets/images/flagsv2/lowPriority.svg +3 -0
  96. package/dist/assets/images/flagsv2/mediumPriority.svg +3 -0
  97. package/dist/assets/images/flagsv2/noPriority.svg +3 -0
  98. package/dist/assets/images/generalButton/Icono AB.svg +14 -0
  99. package/dist/assets/images/generalButton/acceptIcon.svg +3 -0
  100. package/dist/assets/images/generalButton/closeIcon.svg +4 -0
  101. package/dist/assets/images/generalButton/closeIconWhite.svg +4 -0
  102. package/dist/assets/images/generalButton/closeIconv2.svg +4 -0
  103. package/dist/assets/images/generalButton/deleteIcon.svg +13 -0
  104. package/dist/assets/images/generalButton/deleteIconHover.svg +13 -0
  105. package/dist/assets/images/generalButton/downloadIcon.svg +3 -0
  106. package/dist/assets/images/generalButton/gridLayout.svg +3 -0
  107. package/dist/assets/images/generalButton/nullIcon.svg +3 -0
  108. package/dist/assets/images/generalButton/openModal.svg +3 -0
  109. package/dist/assets/images/generalButton/rejectIcon.svg +3 -0
  110. package/dist/assets/images/generalButton/rowLayout.svg +3 -0
  111. package/dist/assets/images/generalButton/saveIcon.svg +3 -0
  112. package/dist/assets/images/generalButton/saveIconHover.svg +3 -0
  113. package/dist/assets/images/generalButton/saveIconpink.svg +3 -0
  114. package/dist/assets/images/generalImage/assigned.svg +14 -0
  115. package/dist/assets/images/generalImage/bags.svg +25 -0
  116. package/dist/assets/images/generalImage/clock.svg +4 -0
  117. package/dist/assets/images/generalImage/flag.svg +3 -0
  118. package/dist/assets/images/genericModal/closeWhite.svg +3 -0
  119. package/dist/assets/images/genericModal/errorModal.svg +3 -0
  120. package/dist/assets/images/genericModal/genericModalCheck.svg +3 -0
  121. package/dist/assets/images/genericModal/genericModalClose.svg +3 -0
  122. package/dist/assets/images/genericModal/genericModalDown.svg +3 -0
  123. package/dist/assets/images/genericModal/genericModalUp.svg +3 -0
  124. package/dist/assets/images/genericModal/genericModalWarning.svg +12 -0
  125. package/dist/assets/images/genericModal/yellowAlert.svg +12 -0
  126. package/dist/assets/images/logo/logoLogin.svg +15 -0
  127. package/dist/assets/images/menuNotification/menuNotificationComment.svg +3 -0
  128. package/dist/assets/images/menuNotification/menuNotificationProduct.svg +3 -0
  129. package/dist/assets/images/menuProfile/logOut.svg +3 -0
  130. package/dist/assets/images/menuProfile/myAccount.svg +3 -0
  131. package/dist/assets/images/menuProfile/settings.svg +3 -0
  132. package/dist/assets/images/modalsSVGs/attributesSent.svg +208 -0
  133. package/dist/assets/images/modalsSVGs/descriptionSent.svg +237 -0
  134. package/dist/assets/images/modalsSVGs/providerSent.svg +445 -0
  135. package/dist/assets/images/modalsSVGs/uploadingImages.svg +148 -0
  136. package/dist/assets/images/productImage/openModal.svg +3 -0
  137. package/dist/assets/images/productNotification/productNotification.svg +3 -0
  138. package/dist/assets/images/profileHeader/profilePicture.svg +9 -0
  139. package/dist/assets/images/providerAndCadena/Cadena.svg +188 -0
  140. package/dist/assets/images/providerAndCadena/LoginContentoh.svg +15 -0
  141. package/dist/assets/images/providerAndCadena/Proveedor.svg +231 -0
  142. package/dist/assets/images/sideMenuButton/contenoh.svg +5 -0
  143. package/dist/assets/images/sideMenuButton/dashboard.svg +5 -0
  144. package/dist/assets/images/sideMenuButton/products.svg +10 -0
  145. package/dist/assets/images/sideMenuButton/providers.svg +10 -0
  146. package/dist/assets/images/sideMenuButton/tasks.svg +3 -0
  147. package/dist/assets/images/sliderToolTip/infoIcon.svg +4 -0
  148. package/dist/assets/images/sliderToolTip/slide1.svg +5 -0
  149. package/dist/assets/images/sliderToolTip/slide2.svg +9 -0
  150. package/dist/assets/images/sliderToolTip/slide21.svg +9 -0
  151. package/dist/assets/images/sliderToolTip/slide22.svg +9 -0
  152. package/dist/assets/images/sliderToolTip/slide23.svg +9 -0
  153. package/dist/assets/images/sliderToolTip/slide3.svg +9 -0
  154. package/dist/assets/images/sliderToolTip/slide4.svg +9 -0
  155. package/dist/assets/images/sliderToolTip/slide5.svg +40 -0
  156. package/dist/assets/images/versionSelector/acceptIcon.svg +3 -0
  157. package/dist/assets/images/versionSelector/addVersion.svg +5 -0
  158. package/dist/assets/images/versionSelector/closeVersionSelector.svg +4 -0
  159. package/dist/assets/images/versionSelector/createVersion.svg +3 -0
  160. package/dist/assets/images/versionSelector/nullIcon.svg +3 -0
  161. package/dist/assets/images/versionSelector/versionSelected.svg +3 -0
  162. package/dist/assets/images/verticalSideMenuMainPage/closeMenu.svg +4 -0
  163. package/dist/assets/images/verticalSideMenuMainPage/iconFAQS.svg +12 -0
  164. package/dist/assets/images/verticalSideMenuMainPage/iconGroup.svg +3 -0
  165. package/dist/assets/images/verticalSideMenuMainPage/iconLogo.svg +12 -0
  166. package/dist/assets/images/verticalSideMenuMainPage/iconLogoContentoh.svg +15 -0
  167. package/dist/assets/images/verticalSideMenuMainPage/iconProduct.svg +3 -0
  168. package/dist/assets/images/verticalSideMenuMainPage/iconSpeedometer.svg +12 -0
  169. package/dist/assets/images/verticalSideMenuMainPage/iconTask.svg +10 -0
  170. package/dist/assets/images/verticalSideMenuMainPage/openMenu.svg +4 -0
  171. package/dist/assets/sounds/newMessage.mp3 +0 -0
  172. package/dist/components/atoms/FeatureTag/styles.js +1 -1
  173. package/dist/components/atoms/GeneralButton/styles.js +2 -2
  174. package/dist/components/atoms/Image/index.js +5 -5
  175. package/dist/components/atoms/ImageLink/index.js +5 -5
  176. package/dist/components/atoms/MetricCard/styles.js +1 -1
  177. package/dist/components/atoms/ScreenHeader/index.js +1 -1
  178. package/dist/components/atoms/SliderToolTip/styles.js +1 -1
  179. package/dist/components/molecules/CustomSelect/styles.js +2 -2
  180. package/dist/components/molecules/Dropdown/index.js +1 -1
  181. package/dist/components/molecules/StatusAsignationInfo/index.js +3 -1
  182. package/dist/components/molecules/StripeCardForm/paymentForm.js +9 -9
  183. package/dist/components/molecules/StripeCardForm/styles.js +1 -1
  184. package/dist/components/molecules/VerificationCodeResetPasswordLogin/utils.js +19 -19
  185. package/dist/components/organisms/Chat/Chat.stories.js +8 -8
  186. package/dist/components/organisms/Chat/ContainerItems/index.js +18 -18
  187. package/dist/components/organisms/Chat/ContentChat/ContentChat.stories.js +6 -6
  188. package/dist/components/organisms/Chat/ContentChat/index.js +26 -26
  189. package/dist/components/organisms/Chatv2/Chatv2.stories.js +8 -8
  190. package/dist/components/organisms/Chatv2/ContainerItems/index.js +18 -18
  191. package/dist/components/organisms/Chatv2/ContentChat/ContentChat.stories.js +6 -6
  192. package/dist/components/organisms/Chatv2/ContentChat/index.js +26 -26
  193. package/dist/components/organisms/GlobalModal/index.js +9 -9
  194. package/dist/components/organisms/TableResizable/index.js +3 -3
  195. package/dist/components/pages/MultipleEdition/utils.js +14 -14
  196. package/dist/components/pages/ProviderProductEdition/index.js +10 -26
  197. package/dist/components/pages/ProviderProductEdition/styles.js +1 -1
  198. package/dist/components/pages/RetailerProductEdition/index.js +6 -2
  199. package/dist/components/pages/VerificationCodeResetPassword/utils.js +19 -19
  200. package/dist/global-files/data.js +6 -6
  201. package/dist/global-files/fonts.css +69 -0
  202. package/dist/global-files/global-styles.css +42 -0
  203. package/dist/global-files/handle_http.js +42 -42
  204. package/dist/global-files/utils.js +95 -95
  205. package/dist/global-files/variables.js +26 -12
  206. package/package.json +116 -116
  207. package/src/_utils/helper.js +23 -23
  208. package/src/assets/images/Icons/DownloadIcon.svg +4 -4
  209. package/src/assets/images/Icons/addv2.svg +8 -8
  210. package/src/assets/images/Icons/beenhere.svg +9 -9
  211. package/src/assets/images/Icons/checkv2.svg +8 -8
  212. package/src/assets/images/Icons/close-magenta.svg +9 -9
  213. package/src/assets/images/Icons/close.svg +8 -8
  214. package/src/assets/images/Icons/closeCircle.svg +7 -7
  215. package/src/assets/images/Icons/delete-forever-red.svg +9 -9
  216. package/src/assets/images/Icons/delete-forever-white.svg +10 -10
  217. package/src/assets/images/Icons/edit.svg +8 -8
  218. package/src/assets/images/Icons/fullscreen.svg +2 -2
  219. package/src/assets/images/Icons/info.svg +8 -8
  220. package/src/assets/images/Icons/infoNR.svg +8 -8
  221. package/src/assets/images/Icons/options.svg +3 -3
  222. package/src/assets/images/Icons/save-white-gray.svg +9 -9
  223. package/src/assets/images/Icons/save-white.svg +9 -9
  224. package/src/assets/images/Icons/save.svg +8 -8
  225. package/src/assets/images/Icons/search.svg +3 -3
  226. package/src/assets/images/Icons/settings.svg +8 -8
  227. package/src/assets/images/Icons/trash.svg +8 -8
  228. package/src/assets/images/Icons/undo.svg +8 -8
  229. package/src/assets/images/Icons/upload-file-white.svg +3 -3
  230. package/src/assets/images/Icons/upload-file.svg +10 -10
  231. package/src/assets/images/Icons/upload_file.svg +10 -10
  232. package/src/assets/images/Icons/warningv2.svg +3 -3
  233. package/src/assets/images/activedFilter/removeFilter.svg +3 -3
  234. package/src/assets/images/arrow/arrowIcon.svg +3 -3
  235. package/src/assets/images/arrow/polygon.svg +3 -3
  236. package/src/assets/images/asignationOptions/availableIcon.svg +3 -3
  237. package/src/assets/images/asignationOptions/removeAsigned.svg +4 -4
  238. package/src/assets/images/asignationOptions/requestToProvider.svg +3 -3
  239. package/src/assets/images/asignationOptions/requestToTeam.svg +3 -3
  240. package/src/assets/images/card/masterCardIcon.svg +5 -5
  241. package/src/assets/images/checkBox/checked.svg +3 -3
  242. package/src/assets/images/checkBox/checkrosa.svg +3 -3
  243. package/src/assets/images/checkBox/checkverde.svg +3 -3
  244. package/src/assets/images/checkBox/unchecked.svg +3 -3
  245. package/src/assets/images/componentAssigned/assignedImage1.svg +9 -9
  246. package/src/assets/images/componentAssigned/assignedImage2.svg +9 -9
  247. package/src/assets/images/componentAssigned/clock.svg +4 -4
  248. package/src/assets/images/componentAssigned/flag.svg +3 -3
  249. package/src/assets/images/customSelect/starIcon.svg +14 -14
  250. package/src/assets/images/defaultImages/check_circle.svg +10 -10
  251. package/src/assets/images/defaultImages/defaultProfileImage.svg +13 -13
  252. package/src/assets/images/dropDownButton/dropDownArrowButton.svg +3 -3
  253. package/src/assets/images/editField/editField.svg +3 -3
  254. package/src/assets/images/flags/highPriority.svg +3 -3
  255. package/src/assets/images/flags/lowPriority.svg +3 -3
  256. package/src/assets/images/flags/mediumPriority.svg +3 -3
  257. package/src/assets/images/flags/noPriority.svg +3 -3
  258. package/src/assets/images/flagsv2/highPriority.svg +2 -2
  259. package/src/assets/images/flagsv2/lowPriority.svg +3 -3
  260. package/src/assets/images/flagsv2/mediumPriority.svg +2 -2
  261. package/src/assets/images/flagsv2/noPriority.svg +3 -3
  262. package/src/assets/images/generalButton/Icono AB.svg +14 -14
  263. package/src/assets/images/generalButton/acceptIcon.svg +3 -3
  264. package/src/assets/images/generalButton/closeIcon.svg +4 -4
  265. package/src/assets/images/generalButton/closeIconWhite.svg +4 -4
  266. package/src/assets/images/generalButton/closeIconv2.svg +4 -4
  267. package/src/assets/images/generalButton/deleteIcon.svg +13 -13
  268. package/src/assets/images/generalButton/deleteIconHover.svg +13 -13
  269. package/src/assets/images/generalButton/downloadIcon.svg +3 -3
  270. package/src/assets/images/generalButton/gridLayout.svg +3 -3
  271. package/src/assets/images/generalButton/nullIcon.svg +3 -3
  272. package/src/assets/images/generalButton/openModal.svg +3 -3
  273. package/src/assets/images/generalButton/rejectIcon.svg +3 -3
  274. package/src/assets/images/generalButton/rowLayout.svg +3 -3
  275. package/src/assets/images/generalButton/saveIcon.svg +3 -3
  276. package/src/assets/images/generalButton/saveIconHover.svg +3 -3
  277. package/src/assets/images/generalButton/saveIconpink.svg +3 -3
  278. package/src/assets/images/generalImage/assigned.svg +14 -14
  279. package/src/assets/images/generalImage/bags.svg +25 -25
  280. package/src/assets/images/generalImage/clock.svg +4 -4
  281. package/src/assets/images/generalImage/flag.svg +3 -3
  282. package/src/assets/images/genericModal/errorModal.svg +3 -3
  283. package/src/assets/images/genericModal/genericModalCheck.svg +3 -3
  284. package/src/assets/images/genericModal/genericModalClose.svg +3 -3
  285. package/src/assets/images/genericModal/genericModalDown.svg +3 -3
  286. package/src/assets/images/genericModal/genericModalUp.svg +3 -3
  287. package/src/assets/images/genericModal/genericModalWarning.svg +12 -12
  288. package/src/assets/images/genericModal/yellowAlert.svg +12 -12
  289. package/src/assets/images/logo/logoLogin.svg +15 -15
  290. package/src/assets/images/menuNotification/menuNotificationComment.svg +3 -3
  291. package/src/assets/images/menuNotification/menuNotificationProduct.svg +3 -3
  292. package/src/assets/images/menuProfile/logOut.svg +3 -3
  293. package/src/assets/images/menuProfile/myAccount.svg +3 -3
  294. package/src/assets/images/menuProfile/settings.svg +3 -3
  295. package/src/assets/images/modalsSVGs/attributesSent.svg +208 -208
  296. package/src/assets/images/modalsSVGs/descriptionSent.svg +237 -237
  297. package/src/assets/images/modalsSVGs/providerSent.svg +445 -445
  298. package/src/assets/images/modalsSVGs/uploadingImages.svg +148 -148
  299. package/src/assets/images/productImage/openModal.svg +3 -3
  300. package/src/assets/images/productNotification/productNotification.svg +3 -3
  301. package/src/assets/images/profileHeader/profilePicture.svg +9 -9
  302. package/src/assets/images/providerAndCadena/Cadena.svg +188 -188
  303. package/src/assets/images/providerAndCadena/LoginContentoh.svg +15 -15
  304. package/src/assets/images/providerAndCadena/Proveedor.svg +231 -231
  305. package/src/assets/images/sideMenuButton/contenoh.svg +5 -5
  306. package/src/assets/images/sideMenuButton/dashboard.svg +5 -5
  307. package/src/assets/images/sideMenuButton/products.svg +10 -10
  308. package/src/assets/images/sideMenuButton/providers.svg +10 -10
  309. package/src/assets/images/sideMenuButton/tasks.svg +3 -3
  310. package/src/assets/images/sliderToolTip/infoIcon.svg +4 -4
  311. package/src/assets/images/sliderToolTip/slide1.svg +5 -5
  312. package/src/assets/images/sliderToolTip/slide2.svg +9 -9
  313. package/src/assets/images/sliderToolTip/slide21.svg +9 -9
  314. package/src/assets/images/sliderToolTip/slide22.svg +9 -9
  315. package/src/assets/images/sliderToolTip/slide23.svg +9 -9
  316. package/src/assets/images/sliderToolTip/slide3.svg +9 -9
  317. package/src/assets/images/sliderToolTip/slide4.svg +9 -9
  318. package/src/assets/images/sliderToolTip/slide5.svg +40 -40
  319. package/src/assets/images/versionSelector/acceptIcon.svg +3 -3
  320. package/src/assets/images/versionSelector/addVersion.svg +5 -5
  321. package/src/assets/images/versionSelector/closeVersionSelector.svg +4 -4
  322. package/src/assets/images/versionSelector/createVersion.svg +3 -3
  323. package/src/assets/images/versionSelector/nullIcon.svg +3 -3
  324. package/src/assets/images/versionSelector/versionSelected.svg +3 -3
  325. package/src/assets/images/verticalSideMenuMainPage/closeMenu.svg +4 -4
  326. package/src/assets/images/verticalSideMenuMainPage/iconFAQS.svg +12 -12
  327. package/src/assets/images/verticalSideMenuMainPage/iconGroup.svg +3 -3
  328. package/src/assets/images/verticalSideMenuMainPage/iconLogo.svg +12 -12
  329. package/src/assets/images/verticalSideMenuMainPage/iconLogoContentoh.svg +15 -15
  330. package/src/assets/images/verticalSideMenuMainPage/iconProduct.svg +3 -3
  331. package/src/assets/images/verticalSideMenuMainPage/iconSpeedometer.svg +12 -12
  332. package/src/assets/images/verticalSideMenuMainPage/iconTask.svg +10 -10
  333. package/src/assets/images/verticalSideMenuMainPage/openMenu.svg +4 -4
  334. package/src/components/atoms/ActivedFilter/ActivedFilter.stories.js +13 -13
  335. package/src/components/atoms/ActivedFilter/index.js +13 -13
  336. package/src/components/atoms/ActivedFilter/styles.js +36 -36
  337. package/src/components/atoms/AsignationOption/AsignationOptions.stories.js +20 -20
  338. package/src/components/atoms/AsignationOption/index.js +60 -60
  339. package/src/components/atoms/AsignationOption/styles.js +69 -69
  340. package/src/components/atoms/AtomList/AtomList.stories.js +15 -15
  341. package/src/components/atoms/AtomList/index.js +14 -14
  342. package/src/components/atoms/AtomList/styles.js +17 -17
  343. package/src/components/atoms/Avatar/AsignationImage.stories.js +27 -27
  344. package/src/components/atoms/Avatar/index.js +22 -22
  345. package/src/components/atoms/Avatar/styles.js +34 -34
  346. package/src/components/atoms/Button/index.js +16 -16
  347. package/src/components/atoms/Button/styles.js +38 -38
  348. package/src/components/atoms/ButtonFileChooser/ButtonFileChooser.stories.js +47 -47
  349. package/src/components/atoms/ButtonFileChooser/index.js +68 -68
  350. package/src/components/atoms/ButtonFileChooser/styles.js +4 -4
  351. package/src/components/atoms/ButtonV2/ButtonV2.stories.js +54 -54
  352. package/src/components/atoms/ButtonV2/index.js +86 -86
  353. package/src/components/atoms/ButtonV2/styles.js +233 -233
  354. package/src/components/atoms/Card/Card.stories.js +12 -12
  355. package/src/components/atoms/Card/index.js +42 -42
  356. package/src/components/atoms/Card/styles.js +44 -44
  357. package/src/components/atoms/CharCounter/CharCounter.stories.js +11 -11
  358. package/src/components/atoms/CharCounter/index.js +13 -13
  359. package/src/components/atoms/CharCounter/styles.js +10 -10
  360. package/src/components/atoms/CharsMissing/Wysiwyg.stories.js +12 -12
  361. package/src/components/atoms/CharsMissing/index.js +60 -60
  362. package/src/components/atoms/CharsMissing/styles.js +44 -44
  363. package/src/components/atoms/CheckBox/CheckBox.stories.js +25 -25
  364. package/src/components/atoms/CheckBox/index.js +33 -33
  365. package/src/components/atoms/CheckBox/styles.js +57 -57
  366. package/src/components/atoms/Commentary/index.js +9 -9
  367. package/src/components/atoms/Commentary/styles.js +15 -15
  368. package/src/components/atoms/CustomChip/CustomChip.stories.js +15 -15
  369. package/src/components/atoms/CustomChip/index.js +34 -34
  370. package/src/components/atoms/CustomChip/styles.js +5 -5
  371. package/src/components/atoms/CustomIcon/CustomIcon.stories.js +36 -36
  372. package/src/components/atoms/CustomIcon/index.js +41 -41
  373. package/src/components/atoms/CustomIcon/styles.js +85 -85
  374. package/src/components/atoms/CustomSelectItem/CustomSelectItem.stories.js +410 -410
  375. package/src/components/atoms/CustomSelectItem/index.js +150 -150
  376. package/src/components/atoms/CustomSelectItem/styles.js +32 -32
  377. package/src/components/atoms/CustomerTypeImage/CustomerTypeImage.stories.js +10 -10
  378. package/src/components/atoms/CustomerTypeImage/index.js +14 -14
  379. package/src/components/atoms/CustomerTypeImage/styles.js +14 -14
  380. package/src/components/atoms/DropDownButton/DropDownButton.stories.js +20 -20
  381. package/src/components/atoms/DropDownButton/index.js +10 -10
  382. package/src/components/atoms/DropDownButton/styles.js +19 -19
  383. package/src/components/atoms/EditField/EditField.stories.js +13 -13
  384. package/src/components/atoms/EditField/index.js +15 -15
  385. package/src/components/atoms/EditField/styles.js +35 -35
  386. package/src/components/atoms/FeatureTag/FeatureTag.stories.js +16 -16
  387. package/src/components/atoms/FeatureTag/index.js +10 -10
  388. package/src/components/atoms/FeatureTag/styles.js +43 -43
  389. package/src/components/atoms/FeatureTagv2/FeatureTagv2.stories.js +16 -16
  390. package/src/components/atoms/FeatureTagv2/index.js +10 -10
  391. package/src/components/atoms/FeatureTagv2/styles.js +56 -56
  392. package/src/components/atoms/GeneralButton/GeneralButton.stories.js +76 -76
  393. package/src/components/atoms/GeneralButton/index.js +34 -34
  394. package/src/components/atoms/GeneralButton/styles.js +236 -235
  395. package/src/components/atoms/GeneralInput/GeneralInput.stories.js +33 -33
  396. package/src/components/atoms/GeneralInput/index.js +159 -159
  397. package/src/components/atoms/GeneralInput/styles.js +86 -86
  398. package/src/components/atoms/GeneralInputv2/GeneralInputv2.stories.js +33 -33
  399. package/src/components/atoms/GeneralInputv2/index.js +155 -155
  400. package/src/components/atoms/GeneralInputv2/styles.js +67 -67
  401. package/src/components/atoms/GeneralTextBox/GeneralTextBox.stories.js +13 -13
  402. package/src/components/atoms/GeneralTextBox/index.js +10 -10
  403. package/src/components/atoms/GeneralTextBox/styles.js +35 -35
  404. package/src/components/atoms/GenericModal/GenericModal.stories.js +140 -140
  405. package/src/components/atoms/GenericModal/index.js +12 -12
  406. package/src/components/atoms/GenericModal/styles.js +134 -134
  407. package/src/components/atoms/GradientPanel/GradientPanel.stories.js +134 -134
  408. package/src/components/atoms/GradientPanel/index.js +15 -15
  409. package/src/components/atoms/GradientPanel/styles.js +139 -139
  410. package/src/components/atoms/Graphic/Graphic.stories.js +29 -29
  411. package/src/components/atoms/Graphic/index.js +43 -43
  412. package/src/components/atoms/Graphic/styles.js +3 -3
  413. package/src/components/atoms/IconFile/IconFile.stories.js +35 -35
  414. package/src/components/atoms/IconFile/index.js +119 -119
  415. package/src/components/atoms/IconFile/styles.js +67 -67
  416. package/src/components/atoms/Image/Image.stories.js +51 -51
  417. package/src/components/atoms/Image/index.js +55 -55
  418. package/src/components/atoms/Image/styles.js +34 -34
  419. package/src/components/atoms/ImageCarousel/ImgeSlider.stories.js +76 -76
  420. package/src/components/atoms/ImageCarousel/index.js +103 -103
  421. package/src/components/atoms/ImageCarousel/styles.js +79 -79
  422. package/src/components/atoms/ImageLink/ImageLink.stories.js +43 -43
  423. package/src/components/atoms/ImageLink/index.js +57 -57
  424. package/src/components/atoms/ImageLink/styles.js +30 -30
  425. package/src/components/atoms/ImagePreview/ImagePreview.stories.js +52 -52
  426. package/src/components/atoms/ImagePreview/index.js +178 -178
  427. package/src/components/atoms/ImagePreview/styles.js +77 -77
  428. package/src/components/atoms/Input/index.js +15 -15
  429. package/src/components/atoms/Input/style.js +31 -31
  430. package/src/components/atoms/InputFormatter/Wysiwyg.stories.js +12 -12
  431. package/src/components/atoms/InputFormatter/index.js +152 -152
  432. package/src/components/atoms/InputFormatter/styles.js +46 -46
  433. package/src/components/atoms/InputFormatterv2/Wysiwyg.stories.js +12 -12
  434. package/src/components/atoms/InputFormatterv2/index.js +148 -148
  435. package/src/components/atoms/InputFormatterv2/styles.js +39 -39
  436. package/src/components/atoms/InputImages/InputImages.stories.js +19 -19
  437. package/src/components/atoms/InputImages/index.js +25 -25
  438. package/src/components/atoms/InputImages/styles.js +17 -17
  439. package/src/components/atoms/InputText/InputText.stories.js +39 -39
  440. package/src/components/atoms/InputText/index.js +61 -61
  441. package/src/components/atoms/InputText/styles.js +89 -89
  442. package/src/components/atoms/LabelToInput/index.js +26 -26
  443. package/src/components/atoms/LabelToInput/style.js +41 -41
  444. package/src/components/atoms/LoadImageMenu/LoadImageMenu.stories.js +17 -17
  445. package/src/components/atoms/LoadImageMenu/index.js +58 -58
  446. package/src/components/atoms/LoadImageMenu/styles.js +72 -72
  447. package/src/components/atoms/Loading/Loading.stories.js +9 -9
  448. package/src/components/atoms/Loading/index.js +13 -13
  449. package/src/components/atoms/Loading/styles.js +57 -57
  450. package/src/components/atoms/LogoImage/LogoImage.stories.js +9 -9
  451. package/src/components/atoms/LogoImage/index.js +10 -10
  452. package/src/components/atoms/LogoImage/styles.js +11 -11
  453. package/src/components/atoms/MenuNotification/MenuNotification.stories.js +17 -17
  454. package/src/components/atoms/MenuNotification/index.js +30 -30
  455. package/src/components/atoms/MenuNotification/styles.js +50 -50
  456. package/src/components/atoms/MenuProfile/MenuProfile.stories.js +13 -13
  457. package/src/components/atoms/MenuProfile/index.js +31 -31
  458. package/src/components/atoms/MenuProfile/styles.js +57 -57
  459. package/src/components/atoms/MetricCard/MetricCard.stories.js +14 -14
  460. package/src/components/atoms/MetricCard/index.js +10 -10
  461. package/src/components/atoms/MetricCard/styles.js +31 -30
  462. package/src/components/atoms/MetricSelect/MetricSelect.stories.js +37 -37
  463. package/src/components/atoms/MetricSelect/index.js +22 -22
  464. package/src/components/atoms/MetricSelect/styles.js +20 -20
  465. package/src/components/atoms/Multiselect/Multiselect.stories.js +364 -364
  466. package/src/components/atoms/Multiselect/index.js +351 -351
  467. package/src/components/atoms/Multiselect/styles.js +33 -33
  468. package/src/components/atoms/NotFound/NotFound.stories.js +19 -19
  469. package/src/components/atoms/NotFound/index.js +52 -52
  470. package/src/components/atoms/NotFound/styles.js +55 -55
  471. package/src/components/atoms/Notification/Notification.stories.js +16 -16
  472. package/src/components/atoms/Notification/index.js +20 -20
  473. package/src/components/atoms/Notification/styles.js +42 -42
  474. package/src/components/atoms/NumberMandatory/NumberMandatory.stories.js +19 -19
  475. package/src/components/atoms/NumberMandatory/index.js +16 -16
  476. package/src/components/atoms/NumberMandatory/styles.js +11 -11
  477. package/src/components/atoms/ObservationFlag/ObservationFlag.stories.js +20 -20
  478. package/src/components/atoms/ObservationFlag/index.js +167 -167
  479. package/src/components/atoms/ObservationFlag/styles.js +104 -104
  480. package/src/components/atoms/PercentTag/PercentTag.stories.js +7 -7
  481. package/src/components/atoms/PercentTag/index.js +9 -9
  482. package/src/components/atoms/PercentTag/styles.js +69 -69
  483. package/src/components/atoms/PriorityFlag/PriorityFlag.stories.js +20 -20
  484. package/src/components/atoms/PriorityFlag/index.js +20 -20
  485. package/src/components/atoms/PriorityFlag/styles.js +3 -3
  486. package/src/components/atoms/PriorityFlagv2/PriorityFlagv2.stories.js +20 -20
  487. package/src/components/atoms/PriorityFlagv2/index.js +20 -20
  488. package/src/components/atoms/PriorityFlagv2/styles.js +6 -6
  489. package/src/components/atoms/ProductImage/ProductImage.stories.js +28 -28
  490. package/src/components/atoms/ProductImage/index.js +29 -29
  491. package/src/components/atoms/ProductImage/styles.js +69 -69
  492. package/src/components/atoms/ProductImagev2/ProductImagev2.stories.js +28 -28
  493. package/src/components/atoms/ProductImagev2/index.js +16 -16
  494. package/src/components/atoms/ProductImagev2/styles.js +62 -62
  495. package/src/components/atoms/ProductPercentCard/Percent.stories.js +40 -40
  496. package/src/components/atoms/ProductPercentCard/index.js +23 -23
  497. package/src/components/atoms/ProductPercentCard/styles.js +83 -83
  498. package/src/components/atoms/Progress/Progress.stories.js +25 -25
  499. package/src/components/atoms/Progress/index.js +74 -74
  500. package/src/components/atoms/Progress/styles.js +98 -98
  501. package/src/components/atoms/ProgressBar/ProgressBar.stories.js +25 -25
  502. package/src/components/atoms/ProgressBar/index.js +53 -53
  503. package/src/components/atoms/ProgressBar/styles.js +94 -94
  504. package/src/components/atoms/RatingStars/RatingStars.stories.js +10 -10
  505. package/src/components/atoms/RatingStars/index.js +31 -31
  506. package/src/components/atoms/RatingStars/styles.js +28 -28
  507. package/src/components/atoms/RetailerCatalog/RetailerCatalog.stories.js +36 -36
  508. package/src/components/atoms/RetailerCatalog/index.js +49 -49
  509. package/src/components/atoms/RetailerCatalog/styles.js +30 -30
  510. package/src/components/atoms/RetailerOption/RetailerOption.stories.js +15 -15
  511. package/src/components/atoms/RetailerOption/index.js +53 -53
  512. package/src/components/atoms/RetailerOption/styles.js +41 -41
  513. package/src/components/atoms/RetailersList/RetailersList.stories.js +33 -33
  514. package/src/components/atoms/RetailersList/index.js +20 -20
  515. package/src/components/atoms/RetailersList/styles.js +19 -19
  516. package/src/components/atoms/ScreenHeader/ScreenHeader.stories.js +52 -52
  517. package/src/components/atoms/ScreenHeader/index.js +29 -29
  518. package/src/components/atoms/ScreenHeader/styles.js +90 -90
  519. package/src/components/atoms/ScreenHeaderv2/ScreenHeaderv2.stories.js +52 -52
  520. package/src/components/atoms/ScreenHeaderv2/index.js +134 -134
  521. package/src/components/atoms/ScreenHeaderv2/styles.js +103 -103
  522. package/src/components/atoms/Select/VersionSelect.js +27 -27
  523. package/src/components/atoms/Select/index.js +35 -35
  524. package/src/components/atoms/Select/style.js +95 -95
  525. package/src/components/atoms/SelectItemV2/SelectItemV2.stories.js +26 -26
  526. package/src/components/atoms/SelectItemV2/index.js +61 -61
  527. package/src/components/atoms/SelectItemV2/styles.js +90 -90
  528. package/src/components/atoms/Selectv2/VersionSelect.js +27 -27
  529. package/src/components/atoms/Selectv2/index.js +35 -35
  530. package/src/components/atoms/Selectv2/style.js +93 -93
  531. package/src/components/atoms/SideMenuButton/SideMenuButton.stories.js +16 -16
  532. package/src/components/atoms/SideMenuButton/index.js +10 -10
  533. package/src/components/atoms/SideMenuButton/styles.js +28 -28
  534. package/src/components/atoms/SliderToolTip/SliderToolTip.stories.js +89 -89
  535. package/src/components/atoms/SliderToolTip/index.js +110 -110
  536. package/src/components/atoms/SliderToolTip/styles.js +198 -197
  537. package/src/components/atoms/Status/Status.stories.js +14 -14
  538. package/src/components/atoms/Status/index.js +13 -13
  539. package/src/components/atoms/Status/styles.js +78 -78
  540. package/src/components/atoms/TabSection/TabSection.stories.js +25 -25
  541. package/src/components/atoms/TabSection/index.js +9 -9
  542. package/src/components/atoms/TabSection/styles.js +19 -19
  543. package/src/components/atoms/TabSectionv2/TabSection.stories.js +25 -25
  544. package/src/components/atoms/TabSectionv2/index.js +9 -9
  545. package/src/components/atoms/TabSectionv2/styles.js +20 -20
  546. package/src/components/atoms/Tooltip/Tooltip.stories.js +51 -51
  547. package/src/components/atoms/Tooltip/index.js +59 -59
  548. package/src/components/atoms/Tooltip/styles.js +42 -42
  549. package/src/components/atoms/TooltipLight/Tooltip.stories.js +20 -20
  550. package/src/components/atoms/TooltipLight/index.js +46 -46
  551. package/src/components/atoms/TooltipLight/styles.js +65 -65
  552. package/src/components/atoms/UserCatalog/UserCatalog.stories.js +67 -67
  553. package/src/components/atoms/UserCatalog/index.js +100 -100
  554. package/src/components/atoms/UserCatalog/styles.js +24 -24
  555. package/src/components/atoms/UserOption/UserOption.stories.js +25 -25
  556. package/src/components/atoms/UserOption/index.js +95 -95
  557. package/src/components/atoms/UserOption/styles.js +61 -61
  558. package/src/components/atoms/UserSelector/UserSelector.stories.js +25 -25
  559. package/src/components/atoms/UserSelector/index.js +92 -92
  560. package/src/components/atoms/UserSelector/styles.js +55 -55
  561. package/src/components/atoms/ValidationPanel/ValidationPanel.stories.js +10 -10
  562. package/src/components/atoms/ValidationPanel/index.js +59 -59
  563. package/src/components/atoms/ValidationPanel/styles.js +44 -44
  564. package/src/components/atoms/VerticalSideMenuMainPage/VerticalSideMenuMainPage.stories.js +39 -39
  565. package/src/components/atoms/VerticalSideMenuMainPage/index.js +59 -59
  566. package/src/components/atoms/VerticalSideMenuMainPage/styles.js +187 -187
  567. package/src/components/atoms/WordsMissing/Wysiwyg.stories.js +12 -12
  568. package/src/components/atoms/WordsMissing/index.js +60 -60
  569. package/src/components/atoms/WordsMissing/styles.js +10 -10
  570. package/src/components/molecules/AddGroup/AddGroup.stories.js +14 -14
  571. package/src/components/molecules/AddGroup/index.js +84 -84
  572. package/src/components/molecules/AddGroup/styles.js +141 -141
  573. package/src/components/molecules/AddProvidersAndProducts/AddProvidersAndProducts.stories.js +15 -15
  574. package/src/components/molecules/AddProvidersAndProducts/index.js +19 -19
  575. package/src/components/molecules/AddProvidersAndProducts/styles.js +22 -22
  576. package/src/components/molecules/AsignationInfo/AsignationInfo.stories.js +17 -17
  577. package/src/components/molecules/AsignationInfo/index.js +108 -108
  578. package/src/components/molecules/AsignationInfo/styles.js +86 -86
  579. package/src/components/molecules/AssignedWork/AssignedWork.stories.js +41 -41
  580. package/src/components/molecules/AssignedWork/index.js +40 -40
  581. package/src/components/molecules/AssignedWork/styles.js +110 -110
  582. package/src/components/molecules/AvatarAndValidation/AvatarAndValidation.stories.js +12 -12
  583. package/src/components/molecules/AvatarAndValidation/index.js +75 -75
  584. package/src/components/molecules/AvatarAndValidation/styles.js +15 -15
  585. package/src/components/molecules/BoxAttribute/BoxAttribute.stories.js +15 -15
  586. package/src/components/molecules/BoxAttribute/index.js +78 -78
  587. package/src/components/molecules/BoxAttribute/styles.js +38 -38
  588. package/src/components/molecules/BoxButtons/BoxButtons.stories.js +14 -14
  589. package/src/components/molecules/BoxButtons/index.js +29 -29
  590. package/src/components/molecules/BoxButtons/styles.js +43 -43
  591. package/src/components/molecules/ButtonDownloadFile/DownloadFile.stories.js +54 -54
  592. package/src/components/molecules/ButtonDownloadFile/index.js +109 -109
  593. package/src/components/molecules/ButtonDownloadFile/styles.js +66 -66
  594. package/src/components/molecules/CarouselImagesLogin/CarouselImagesLogin.stories.js +17 -17
  595. package/src/components/molecules/CarouselImagesLogin/index.js +65 -65
  596. package/src/components/molecules/CarouselImagesLogin/styles.js +60 -60
  597. package/src/components/molecules/CustomSelect/CustomSelect.stories.js +35 -35
  598. package/src/components/molecules/CustomSelect/SelectItem.js +104 -104
  599. package/src/components/molecules/CustomSelect/index.js +194 -194
  600. package/src/components/molecules/CustomSelect/styles.js +126 -126
  601. package/src/components/molecules/Dropdown/Dropdown.stories.js +103 -103
  602. package/src/components/molecules/Dropdown/index.js +150 -150
  603. package/src/components/molecules/Dropdown/styles.js +75 -75
  604. package/src/components/molecules/EditionActiveImage/EditionActiveImage.stories.js +12 -12
  605. package/src/components/molecules/EditionActiveImage/index.js +15 -15
  606. package/src/components/molecules/EditionActiveImage/styles.js +7 -7
  607. package/src/components/molecules/EditionActiveImagev2/EditionActiveImagev2.stories.js +12 -12
  608. package/src/components/molecules/EditionActiveImagev2/index.js +15 -15
  609. package/src/components/molecules/EditionActiveImagev2/styles.js +7 -7
  610. package/src/components/molecules/EditionTabs/EditionTabs.stories.js +12 -12
  611. package/src/components/molecules/EditionTabs/index.js +33 -33
  612. package/src/components/molecules/EditionTabs/styles.js +23 -23
  613. package/src/components/molecules/EmailResetPasswordLogin/EmailResetPasswordLogin.stories.js +11 -11
  614. package/src/components/molecules/EmailResetPasswordLogin/index.js +85 -85
  615. package/src/components/molecules/EmailResetPasswordLogin/styles.js +23 -23
  616. package/src/components/molecules/FeaturesBar/FeaturesBar.stories.js +20 -20
  617. package/src/components/molecules/FeaturesBar/index.js +30 -30
  618. package/src/components/molecules/FeaturesBar/styles.js +16 -16
  619. package/src/components/molecules/FeaturesBarv2/FeaturesBarv2.stories.js +20 -20
  620. package/src/components/molecules/FeaturesBarv2/index.js +32 -32
  621. package/src/components/molecules/FeaturesBarv2/styles.js +17 -17
  622. package/src/components/molecules/GalleryElement/GalleryElement.stories.js +30 -30
  623. package/src/components/molecules/GalleryElement/index.js +225 -225
  624. package/src/components/molecules/GalleryElement/styles.js +125 -125
  625. package/src/components/molecules/GalleryElementv2/GalleryElementv2.stories.js +30 -30
  626. package/src/components/molecules/GalleryElementv2/index.js +142 -142
  627. package/src/components/molecules/GalleryElementv2/styles.js +119 -119
  628. package/src/components/molecules/GalleryHeader/GalleryHeader.stories.js +10 -10
  629. package/src/components/molecules/GalleryHeader/index.js +27 -27
  630. package/src/components/molecules/GalleryHeader/styles.js +49 -49
  631. package/src/components/molecules/GalleryHeaderv2/GalleryHeaderv2.stories.js +10 -10
  632. package/src/components/molecules/GalleryHeaderv2/index.js +25 -25
  633. package/src/components/molecules/GalleryHeaderv2/styles.js +47 -47
  634. package/src/components/molecules/GridItem/GridItem.stories.js +126 -126
  635. package/src/components/molecules/GridItem/index.js +128 -128
  636. package/src/components/molecules/GridItem/styles.js +129 -129
  637. package/src/components/molecules/GroupSelect/GroupSelect.stories.js +35 -35
  638. package/src/components/molecules/GroupSelect/SelectItem.js +105 -105
  639. package/src/components/molecules/GroupSelect/index.js +190 -190
  640. package/src/components/molecules/GroupSelect/styles.js +124 -124
  641. package/src/components/molecules/HeaderItem/ColumnItem.js +9 -9
  642. package/src/components/molecules/HeaderItem/HeaderItem.stories.js +24 -24
  643. package/src/components/molecules/HeaderItem/index.js +26 -26
  644. package/src/components/molecules/HeaderItem/styles.js +27 -27
  645. package/src/components/molecules/HeaderTop/HeaderTop.stories.js +10 -10
  646. package/src/components/molecules/HeaderTop/index.js +106 -106
  647. package/src/components/molecules/HeaderTop/styles.js +33 -33
  648. package/src/components/molecules/HeaderTopv2/HeaderTopv2.stories.js +10 -10
  649. package/src/components/molecules/HeaderTopv2/index.js +100 -100
  650. package/src/components/molecules/HeaderTopv2/styles.js +33 -33
  651. package/src/components/molecules/ImageSelector/ImageSelector.stories.js +46 -46
  652. package/src/components/molecules/ImageSelector/index.js +22 -22
  653. package/src/components/molecules/ImageSelector/styles.js +13 -13
  654. package/src/components/molecules/ImageSelectorv2/ImageSelectorv2.stories.js +46 -46
  655. package/src/components/molecules/ImageSelectorv2/index.js +22 -22
  656. package/src/components/molecules/ImageSelectorv2/styles.js +15 -15
  657. package/src/components/molecules/ImageTooltip/ImageTooltip.stories.js +68 -68
  658. package/src/components/molecules/ImageTooltip/index.js +53 -53
  659. package/src/components/molecules/ImageTooltip/styles.js +18 -18
  660. package/src/components/molecules/LoginPasswordStrength/LoginPasswordStrength.stories.js +8 -8
  661. package/src/components/molecules/LoginPasswordStrength/index.js +84 -84
  662. package/src/components/molecules/LoginPasswordStrength/styles.js +91 -91
  663. package/src/components/molecules/LogoLoading/Loading.stories.js +9 -9
  664. package/src/components/molecules/LogoLoading/index.js +12 -12
  665. package/src/components/molecules/LogoLoading/styles.js +16 -16
  666. package/src/components/molecules/ParentComponent/ParentComponent.stories.js +18 -18
  667. package/src/components/molecules/ParentComponent/index.js +66 -66
  668. package/src/components/molecules/ParentComponent/styles.js +7 -7
  669. package/src/components/molecules/PayMethod/PayMethod.stories.js +12 -12
  670. package/src/components/molecules/PayMethod/index.js +46 -46
  671. package/src/components/molecules/PayMethod/styles.js +31 -31
  672. package/src/components/molecules/Phase/Phase.stories.js +107 -107
  673. package/src/components/molecules/Phase/index.js +391 -391
  674. package/src/components/molecules/Phase/styles.js +97 -97
  675. package/src/components/molecules/PlanSelection/PlanSelection.stories.js +19 -19
  676. package/src/components/molecules/PlanSelection/index.js +25 -25
  677. package/src/components/molecules/PlanSelection/styles.js +14 -14
  678. package/src/components/molecules/ProductNameHeader/ProductNameHeader.stories.js +37 -37
  679. package/src/components/molecules/ProductNameHeader/index.js +45 -45
  680. package/src/components/molecules/ProductNameHeader/styles.js +10 -10
  681. package/src/components/molecules/ProductNameHeaderv2/ProductNameHeaderv2.stories.js +37 -37
  682. package/src/components/molecules/ProductNameHeaderv2/index.js +12 -12
  683. package/src/components/molecules/ProductNameHeaderv2/styles.js +10 -10
  684. package/src/components/molecules/ProductNotification/ProductNotification.stories.js +13 -13
  685. package/src/components/molecules/ProductNotification/index.js +53 -53
  686. package/src/components/molecules/ProductNotification/styles.js +37 -37
  687. package/src/components/molecules/ProductSkuStatus/ProductSkuStatus.stories.js +37 -37
  688. package/src/components/molecules/ProductSkuStatus/index.js +26 -26
  689. package/src/components/molecules/ProductSkuStatus/styles.js +7 -7
  690. package/src/components/molecules/ProfileHeader/ProfileHeader.stories.js +16 -16
  691. package/src/components/molecules/ProfileHeader/index.js +54 -54
  692. package/src/components/molecules/ProfileHeader/styles.js +30 -30
  693. package/src/components/molecules/RegistrationFirstStep/RegistrationFirstStep.stories.js +11 -11
  694. package/src/components/molecules/RegistrationFirstStep/index.js +227 -227
  695. package/src/components/molecules/RegistrationFirstStep/styles.js +87 -87
  696. package/src/components/molecules/RegistrationSecondStep/RegistrationSecondStep.stories.js +11 -11
  697. package/src/components/molecules/RegistrationSecondStep/index.js +135 -135
  698. package/src/components/molecules/RegistrationSecondStep/styles.js +64 -64
  699. package/src/components/molecules/RegistrationThirdStep/RegistrationThirdStep.stories.js +11 -11
  700. package/src/components/molecules/RegistrationThirdStep/index.js +130 -130
  701. package/src/components/molecules/RegistrationThirdStep/styles.js +44 -44
  702. package/src/components/molecules/RetailerSelector/RetailerSelector.stories.js +35 -35
  703. package/src/components/molecules/RetailerSelector/index.js +81 -81
  704. package/src/components/molecules/RetailerSelector/styles.js +21 -21
  705. package/src/components/molecules/RetailerSelectorv2/RetailerSelectorv2.stories.js +35 -35
  706. package/src/components/molecules/RetailerSelectorv2/index.js +80 -80
  707. package/src/components/molecules/RetailerSelectorv2/styles.js +21 -21
  708. package/src/components/molecules/RowItem/ColumnItem.js +9 -9
  709. package/src/components/molecules/RowItem/RowItem.stories.js +5660 -5660
  710. package/src/components/molecules/RowItem/index.js +45 -45
  711. package/src/components/molecules/RowItem/styles.js +41 -41
  712. package/src/components/molecules/SelectV2/SelectV2.stories.js +115 -115
  713. package/src/components/molecules/SelectV2/index.js +357 -357
  714. package/src/components/molecules/SelectV2/styles.js +105 -105
  715. package/src/components/molecules/SelectV2/test.js +60 -60
  716. package/src/components/molecules/SelectV2/test.stories.js +10 -10
  717. package/src/components/molecules/ServiceDataValidator/ServiceDataValidator.stories.js +89 -89
  718. package/src/components/molecules/ServiceDataValidator/index.js +49 -49
  719. package/src/components/molecules/ServiceDataValidator/styles.js +36 -36
  720. package/src/components/molecules/SidebarNotification/SidebarNotification.stories.js +101 -101
  721. package/src/components/molecules/SidebarNotification/index.js +95 -95
  722. package/src/components/molecules/SidebarNotification/styles.js +63 -63
  723. package/src/components/molecules/SignInLogin/SignInLogin.stories.js +11 -11
  724. package/src/components/molecules/SignInLogin/index.js +244 -244
  725. package/src/components/molecules/SignInLogin/styles.js +111 -111
  726. package/src/components/molecules/StatusAsignationInfo/FinancedCompanies.js +44 -44
  727. package/src/components/molecules/StatusAsignationInfo/StatusAsignationInfo.stories.js +17 -17
  728. package/src/components/molecules/StatusAsignationInfo/index.js +198 -197
  729. package/src/components/molecules/StatusAsignationInfo/styles.js +82 -82
  730. package/src/components/molecules/StatusRetailer/StatusAsignationInfo.stories.js +17 -17
  731. package/src/components/molecules/StatusRetailer/index.js +55 -55
  732. package/src/components/molecules/StatusRetailer/styles.js +85 -85
  733. package/src/components/molecules/StripeCardForm/StripeCardForm.stories.js +14 -14
  734. package/src/components/molecules/StripeCardForm/index.js +45 -45
  735. package/src/components/molecules/StripeCardForm/paymentForm.js +126 -126
  736. package/src/components/molecules/StripeCardForm/styles.js +84 -84
  737. package/src/components/molecules/StripeCardSelector/CardSelector.stories.js +12 -12
  738. package/src/components/molecules/StripeCardSelector/index.js +59 -59
  739. package/src/components/molecules/StripeCardSelector/styles.js +15 -15
  740. package/src/components/molecules/StripeCardSelector/utils.js +17 -17
  741. package/src/components/molecules/TableHeader/TableHeader.stories.js +20 -20
  742. package/src/components/molecules/TableHeader/index.js +36 -36
  743. package/src/components/molecules/TableHeader/styles.js +30 -30
  744. package/src/components/molecules/TableRow/TableRow.stories.js +18 -18
  745. package/src/components/molecules/TableRow/index.js +14 -14
  746. package/src/components/molecules/TableRow/styles.js +11 -11
  747. package/src/components/molecules/TabsMenu/TabsMenu.stories.js +19 -19
  748. package/src/components/molecules/TabsMenu/index.js +110 -110
  749. package/src/components/molecules/TabsMenu/styles.js +5 -5
  750. package/src/components/molecules/TabsMenuv2/TabsMenuv2.stories.js +19 -19
  751. package/src/components/molecules/TabsMenuv2/index.js +112 -112
  752. package/src/components/molecules/TabsMenuv2/styles.js +19 -19
  753. package/src/components/molecules/TagAndInput/TagAndInput.stories.js +24 -24
  754. package/src/components/molecules/TagAndInput/index.js +120 -120
  755. package/src/components/molecules/TagAndInput/styles.js +36 -36
  756. package/src/components/molecules/TagAndInputv2/TagAndInputv2.stories.js +24 -24
  757. package/src/components/molecules/TagAndInputv2/index.js +86 -86
  758. package/src/components/molecules/TagAndInputv2/styles.js +35 -35
  759. package/src/components/molecules/Validation/Validation.stories.js +12 -12
  760. package/src/components/molecules/Validation/index.js +77 -77
  761. package/src/components/molecules/Validation/styles.js +19 -19
  762. package/src/components/molecules/VerificationCodeResetPasswordLogin/VerificationCodeResetPasswordLogin.stories.js +11 -11
  763. package/src/components/molecules/VerificationCodeResetPasswordLogin/index.js +171 -171
  764. package/src/components/molecules/VerificationCodeResetPasswordLogin/styles.js +54 -54
  765. package/src/components/molecules/VerificationCodeResetPasswordLogin/utils.js +54 -54
  766. package/src/components/molecules/VersionItem/VersionItem.stories.js +14 -14
  767. package/src/components/molecules/VersionItem/index.js +55 -55
  768. package/src/components/molecules/VersionItem/styles.js +32 -32
  769. package/src/components/molecules/VersionItemv2/VersionItemv2.stories.js +14 -14
  770. package/src/components/molecules/VersionItemv2/index.js +59 -59
  771. package/src/components/molecules/VersionItemv2/styles.js +47 -47
  772. package/src/components/organisms/BarButtons/BarButtons.stories.js +12 -12
  773. package/src/components/organisms/BarButtons/index.js +150 -150
  774. package/src/components/organisms/BarButtons/styles.js +54 -54
  775. package/src/components/organisms/Box/Box.stories.js +16 -16
  776. package/src/components/organisms/Box/index.js +103 -103
  777. package/src/components/organisms/Box/styles.js +47 -47
  778. package/src/components/organisms/BoxOnboarding/BoxOnboarding.stories.js +16 -16
  779. package/src/components/organisms/BoxOnboarding/index.js +59 -59
  780. package/src/components/organisms/BoxOnboarding/styles.js +44 -44
  781. package/src/components/organisms/Calendar/Calendar.stories.js +10 -10
  782. package/src/components/organisms/Calendar/index.js +17 -17
  783. package/src/components/organisms/Calendar/styles.js +853 -853
  784. package/src/components/organisms/ChangePassword/ChangePassword.stories.js +11 -11
  785. package/src/components/organisms/ChangePassword/index.js +77 -77
  786. package/src/components/organisms/ChangePassword/styles.js +13 -13
  787. package/src/components/organisms/Chat/Chat.stories.js +184 -184
  788. package/src/components/organisms/Chat/ChatLists/ChatLists.stories.js +65 -65
  789. package/src/components/organisms/Chat/ChatLists/index.js +141 -141
  790. package/src/components/organisms/Chat/ChatLists/styles.js +162 -162
  791. package/src/components/organisms/Chat/ContainerItems/ContainerItems.stories.js +142 -142
  792. package/src/components/organisms/Chat/ContainerItems/index.js +538 -538
  793. package/src/components/organisms/Chat/ContainerItems/styles.js +360 -360
  794. package/src/components/organisms/Chat/ContentChat/ContentChat.stories.js +102 -102
  795. package/src/components/organisms/Chat/ContentChat/index.js +1016 -1016
  796. package/src/components/organisms/Chat/ContentChat/styles.js +44 -44
  797. package/src/components/organisms/Chat/Footer/Footer.stories.js +22 -22
  798. package/src/components/organisms/Chat/Footer/index.js +668 -668
  799. package/src/components/organisms/Chat/Footer/styles.js +290 -290
  800. package/src/components/organisms/Chat/Header/Header.stories.js +66 -66
  801. package/src/components/organisms/Chat/Header/index.js +93 -93
  802. package/src/components/organisms/Chat/Header/styles.js +49 -49
  803. package/src/components/organisms/Chat/index.js +282 -282
  804. package/src/components/organisms/Chat/styles.js +50 -50
  805. package/src/components/organisms/Chatv2/ChatLists/ChatLists.stories.js +65 -65
  806. package/src/components/organisms/Chatv2/ChatLists/index.js +141 -141
  807. package/src/components/organisms/Chatv2/ChatLists/styles.js +162 -162
  808. package/src/components/organisms/Chatv2/Chatv2.stories.js +184 -184
  809. package/src/components/organisms/Chatv2/ContainerItems/ContainerItems.stories.js +142 -142
  810. package/src/components/organisms/Chatv2/ContainerItems/index.js +538 -538
  811. package/src/components/organisms/Chatv2/ContainerItems/styles.js +360 -360
  812. package/src/components/organisms/Chatv2/ContentChat/ContentChat.stories.js +102 -102
  813. package/src/components/organisms/Chatv2/ContentChat/index.js +1016 -1016
  814. package/src/components/organisms/Chatv2/ContentChat/styles.js +44 -44
  815. package/src/components/organisms/Chatv2/Footer/Footer.stories.js +22 -22
  816. package/src/components/organisms/Chatv2/Footer/index.js +668 -668
  817. package/src/components/organisms/Chatv2/Footer/styles.js +290 -290
  818. package/src/components/organisms/Chatv2/Header/Header.stories.js +66 -66
  819. package/src/components/organisms/Chatv2/Header/index.js +93 -93
  820. package/src/components/organisms/Chatv2/Header/styles.js +49 -49
  821. package/src/components/organisms/Chatv2/index.js +281 -281
  822. package/src/components/organisms/Chatv2/styles.js +85 -85
  823. package/src/components/organisms/CompleteServices/CompleteServices.stories.js +90 -90
  824. package/src/components/organisms/CompleteServices/index.js +82 -82
  825. package/src/components/organisms/CompleteServices/styles.js +35 -35
  826. package/src/components/organisms/CreateVersion/CreateVersion.stories.js +14 -14
  827. package/src/components/organisms/CreateVersion/RenderChilds.js +131 -131
  828. package/src/components/organisms/CreateVersion/index.js +68 -68
  829. package/src/components/organisms/CreateVersion/styles.js +79 -79
  830. package/src/components/organisms/DashboardMetric/DashboardMetric.stories.js +28 -28
  831. package/src/components/organisms/DashboardMetric/dashboardMetricUtils.js +130 -130
  832. package/src/components/organisms/DashboardMetric/index.js +120 -120
  833. package/src/components/organisms/DashboardMetric/styles.js +91 -91
  834. package/src/components/organisms/DragAndDropPhases/DragAndDropPhases.stories.js +12 -12
  835. package/src/components/organisms/DragAndDropPhases/index.js +336 -336
  836. package/src/components/organisms/DragAndDropPhases/styles.js +107 -107
  837. package/src/components/organisms/DragPrueba/DragPrueba.stories.js +11 -11
  838. package/src/components/organisms/DragPrueba/index.js +57 -57
  839. package/src/components/organisms/DragPrueba/styles.js +8 -8
  840. package/src/components/organisms/EditGroup/EditGroup.stories.js +19 -19
  841. package/src/components/organisms/EditGroup/index.js +321 -321
  842. package/src/components/organisms/EditGroup/styles.js +206 -206
  843. package/src/components/organisms/FullProductNameHeader/FullProductNameHeader.stories.js +28 -28
  844. package/src/components/organisms/FullProductNameHeader/index.js +102 -102
  845. package/src/components/organisms/FullProductNameHeader/styles.js +12 -12
  846. package/src/components/organisms/FullProductNamev2/FullProductNamev2.stories.js +28 -28
  847. package/src/components/organisms/FullProductNamev2/index.js +101 -101
  848. package/src/components/organisms/FullProductNamev2/styles.js +49 -49
  849. package/src/components/organisms/FullTabsMenu/FullTabsMenu.stories.js +22 -22
  850. package/src/components/organisms/FullTabsMenu/index.js +69 -69
  851. package/src/components/organisms/FullTabsMenu/styles.js +10 -10
  852. package/src/components/organisms/FullTabsMenuv2/FullTabsMenuv2.stories.js +22 -22
  853. package/src/components/organisms/FullTabsMenuv2/index.js +142 -142
  854. package/src/components/organisms/FullTabsMenuv2/styles.js +47 -47
  855. package/src/components/organisms/Fullplan/FullPlan.stories.js +21 -21
  856. package/src/components/organisms/Fullplan/index.js +34 -34
  857. package/src/components/organisms/Fullplan/styles.js +26 -26
  858. package/src/components/organisms/GlobalModal/index.js +68 -68
  859. package/src/components/organisms/GlobalModal/styles.js +123 -123
  860. package/src/components/organisms/GridProducts/GridProducts.stories.js +5853 -5853
  861. package/src/components/organisms/GridProducts/index.js +50 -50
  862. package/src/components/organisms/GridProducts/styles.js +15 -15
  863. package/src/components/organisms/GridProducts/utils.js +111 -111
  864. package/src/components/organisms/ImageDataTable/ImageDataTable.stories.js +24 -24
  865. package/src/components/organisms/ImageDataTable/index.js +124 -124
  866. package/src/components/organisms/ImageDataTable/styles.js +17 -17
  867. package/src/components/organisms/ImageDataTablev2/ImageDataTablev2.stories.js +24 -24
  868. package/src/components/organisms/ImageDataTablev2/index.js +124 -124
  869. package/src/components/organisms/ImageDataTablev2/styles.js +18 -18
  870. package/src/components/organisms/ImagePreviewer/ImagePreviewer.stories.js +38 -38
  871. package/src/components/organisms/ImagePreviewer/index.js +21 -21
  872. package/src/components/organisms/ImagePreviewer/styles.js +7 -7
  873. package/src/components/organisms/ImagePreviewerv2/ImagePreviewerv2.stories.js +38 -38
  874. package/src/components/organisms/ImagePreviewerv2/index.js +22 -22
  875. package/src/components/organisms/ImagePreviewerv2/styles.js +7 -7
  876. package/src/components/organisms/ImageUploader/ImageUploader.stories.js +15 -15
  877. package/src/components/organisms/ImageUploader/index.js +62 -62
  878. package/src/components/organisms/ImageUploader/styles.js +29 -29
  879. package/src/components/organisms/ImageVisor/ImageVisor.stories.js +15 -15
  880. package/src/components/organisms/ImageVisor/index.js +143 -143
  881. package/src/components/organisms/ImageVisor/styles.js +106 -106
  882. package/src/components/organisms/ImagesGroup/index.js +10 -10
  883. package/src/components/organisms/ImagesGroup/styles.js +3 -3
  884. package/src/components/organisms/InputGroup/InputGroup.stories.js +31 -31
  885. package/src/components/organisms/InputGroup/index.js +439 -439
  886. package/src/components/organisms/InputGroup/styles.js +87 -87
  887. package/src/components/organisms/InputGroupv2/InputGroupv2.stories.js +31 -31
  888. package/src/components/organisms/InputGroupv2/index.js +296 -296
  889. package/src/components/organisms/InputGroupv2/styles.js +90 -90
  890. package/src/components/organisms/MandatoryBar/MandatoryBar.stories.js +18 -18
  891. package/src/components/organisms/MandatoryBar/index.js +31 -31
  892. package/src/components/organisms/MandatoryBar/styles.js +12 -12
  893. package/src/components/organisms/Modal/Modal.stories.js +56 -56
  894. package/src/components/organisms/Modal/index.js +104 -104
  895. package/src/components/organisms/Modal/styles.js +110 -110
  896. package/src/components/organisms/OrderDetail/OrderDetail.stories.js +87 -87
  897. package/src/components/organisms/OrderDetail/index.js +216 -216
  898. package/src/components/organisms/OrderDetail/styles.js +122 -122
  899. package/src/components/organisms/OrderDetail/utils/ImageGroup/index.js +34 -34
  900. package/src/components/organisms/OrderDetail/utils/ImageGroup/styles.js +46 -46
  901. package/src/components/organisms/OrderDetail/utils/Table/index.js +133 -133
  902. package/src/components/organisms/OrderDetail/utils/Table/styles.js +74 -74
  903. package/src/components/organisms/OrderDetail/utils/Table/utils.js +32 -32
  904. package/src/components/organisms/PanelLayout/PanelLayout.stories.js +63 -63
  905. package/src/components/organisms/PanelLayout/index.js +11 -11
  906. package/src/components/organisms/PanelLayout/styles.js +39 -39
  907. package/src/components/organisms/ProductImageModal/ProductImageModal.stories.js +90 -90
  908. package/src/components/organisms/ProductImageModal/index.js +98 -98
  909. package/src/components/organisms/ProductImageModal/styles.js +60 -60
  910. package/src/components/organisms/ProductImageModalv2/ProductImageModalv2.stories.js +90 -90
  911. package/src/components/organisms/ProductImageModalv2/index.js +105 -105
  912. package/src/components/organisms/ProductImageModalv2/styles.js +71 -71
  913. package/src/components/organisms/RangeCalendar/RangeCalendar.stories.js +16 -16
  914. package/src/components/organisms/RangeCalendar/index.js +121 -121
  915. package/src/components/organisms/RangeCalendar/styles.js +883 -883
  916. package/src/components/organisms/RenameImagesBar/RenameImagesBar.stories.js +18 -18
  917. package/src/components/organisms/RenameImagesBar/index.js +30 -30
  918. package/src/components/organisms/RenameImagesBar/styles.js +12 -12
  919. package/src/components/organisms/SideModal/SideModal.stories.js +23 -23
  920. package/src/components/organisms/SideModal/index.js +50 -50
  921. package/src/components/organisms/SideModal/styles.js +30 -30
  922. package/src/components/organisms/Table/Table.stories.js +609 -609
  923. package/src/components/organisms/Table/index.js +84 -84
  924. package/src/components/organisms/Table/styles.js +119 -119
  925. package/src/components/organisms/TableResizable/TableResizable.stories.js +17 -17
  926. package/src/components/organisms/TableResizable/index.js +119 -119
  927. package/src/components/organisms/TableResizable/styles.js +133 -133
  928. package/src/components/organisms/TableResizable/utils.js +46 -46
  929. package/src/components/organisms/VersionSelector/VersionSelector.stories.js +15 -15
  930. package/src/components/organisms/VersionSelector/index.js +106 -106
  931. package/src/components/organisms/VersionSelector/styles.js +29 -29
  932. package/src/components/organisms/VersionSelectorv2/VersionSelectorv2.stories.js +15 -15
  933. package/src/components/organisms/VersionSelectorv2/index.js +105 -105
  934. package/src/components/organisms/VersionSelectorv2/styles.js +45 -45
  935. package/src/components/pages/ChangePasswordLogin/ChangePasswordLogin.stories.js +18 -18
  936. package/src/components/pages/ChangePasswordLogin/index.js +77 -77
  937. package/src/components/pages/ChangePasswordLogin/styles.js +20 -20
  938. package/src/components/pages/CustomerLogin/CustomerLogin.stories.js +78 -78
  939. package/src/components/pages/CustomerLogin/index.js +22 -22
  940. package/src/components/pages/CustomerLogin/styles.js +12 -12
  941. package/src/components/pages/CustomerPayMethod/CustomerPayMethod.stories.js +56 -56
  942. package/src/components/pages/CustomerPayMethod/index.js +23 -23
  943. package/src/components/pages/CustomerPayMethod/styles.js +21 -21
  944. package/src/components/pages/CustomerType/CustomerType.stories.js +33 -33
  945. package/src/components/pages/CustomerType/index.js +22 -22
  946. package/src/components/pages/CustomerType/styles.js +21 -21
  947. package/src/components/pages/Dashboard/Dashboard.stories.js +62 -62
  948. package/src/components/pages/Dashboard/dashboardUtils.js +74 -74
  949. package/src/components/pages/Dashboard/index.js +382 -382
  950. package/src/components/pages/Dashboard/styles.js +37 -37
  951. package/src/components/pages/EmailResetPassword/EmailResetPassword.stories.js +17 -17
  952. package/src/components/pages/EmailResetPassword/index.js +77 -77
  953. package/src/components/pages/EmailResetPassword/styles.js +27 -27
  954. package/src/components/pages/MultipleEdition/MultipleEdition.stories.js +16 -16
  955. package/src/components/pages/MultipleEdition/components/ImageUploader.js +62 -62
  956. package/src/components/pages/MultipleEdition/components/ImageUploaderStyles.js +29 -29
  957. package/src/components/pages/MultipleEdition/components/ImageVisor.js +143 -143
  958. package/src/components/pages/MultipleEdition/components/styles.js +106 -106
  959. package/src/components/pages/MultipleEdition/index.js +248 -248
  960. package/src/components/pages/MultipleEdition/saveData.js +92 -92
  961. package/src/components/pages/MultipleEdition/styles.js +197 -197
  962. package/src/components/pages/MultipleEdition/utils.js +1074 -1074
  963. package/src/components/pages/OnboardPlan/OnboardPlan.stories.js +51 -51
  964. package/src/components/pages/OnboardPlan/index.js +22 -22
  965. package/src/components/pages/OnboardPlan/styles.js +33 -33
  966. package/src/components/pages/ProductEditionv2/ProductEditionv2.stories.js +213 -213
  967. package/src/components/pages/ProductEditionv2/index.js +1758 -1758
  968. package/src/components/pages/ProductEditionv2/styles.js +154 -154
  969. package/src/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +139 -139
  970. package/src/components/pages/ProviderProductEdition/index.js +1779 -1785
  971. package/src/components/pages/ProviderProductEdition/styles.js +122 -122
  972. package/src/components/pages/RegistrationLoginSecondStep/RegistrationLoginSecondStep.stories.js +18 -18
  973. package/src/components/pages/RegistrationLoginSecondStep/index.js +111 -111
  974. package/src/components/pages/RegistrationLoginSecondStep/styles.js +64 -64
  975. package/src/components/pages/RegistrationLoginThirdStep/RegistrationLoginThirdStep.stories.js +17 -17
  976. package/src/components/pages/RegistrationLoginThirdStep/index.js +105 -105
  977. package/src/components/pages/RegistrationLoginThirdStep/styles.js +48 -48
  978. package/src/components/pages/RetailerPlan/RetailerPlan.stories.js +49 -49
  979. package/src/components/pages/RetailerPlan/index.js +24 -24
  980. package/src/components/pages/RetailerPlan/styles.js +26 -26
  981. package/src/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +119 -119
  982. package/src/components/pages/RetailerProductEdition/generateThumnail.js +20 -20
  983. package/src/components/pages/RetailerProductEdition/index.js +1838 -1838
  984. package/src/components/pages/RetailerProductEdition/styles.js +104 -104
  985. package/src/components/pages/RetailerProductEdition/utils.js +71 -71
  986. package/src/components/pages/VerificationCodeResetPassword/VerificationCodeResetPassword.stories.js +17 -17
  987. package/src/components/pages/VerificationCodeResetPassword/index.js +92 -92
  988. package/src/components/pages/VerificationCodeResetPassword/styles.js +54 -54
  989. package/src/components/pages/VerificationCodeResetPassword/utils.js +56 -56
  990. package/src/global-files/customHooks.js +24 -24
  991. package/src/global-files/data.js +186 -186
  992. package/src/global-files/fonts.css +69 -69
  993. package/src/global-files/global-styles.css +42 -42
  994. package/src/global-files/handle_http.js +224 -224
  995. package/src/global-files/handle_userTech.js +7 -7
  996. package/src/global-files/utils.js +330 -330
  997. package/src/global-files/variables.js +71 -56
  998. package/src/index.js +113 -113
@@ -1,1758 +1,1758 @@
1
- import { Container } from "./styles";
2
- import { HeaderTopv2 } from "../../molecules/HeaderTopv2";
3
- import { ImagePreviewerv2 } from "../../organisms/ImagePreviewerv2";
4
- import { ImageDataTable } from "../../organisms/ImageDataTable";
5
- import { FullProductNamev2 } from "../../organisms/FullProductNamev2";
6
- import { FullTabsMenuv2 } from "../../organisms/FullTabsMenuv2";
7
- import { useEffect, useReducer, useState, useCallback } from "react";
8
- import { saveAs } from "file-saver";
9
- import {
10
- getRetailerServices,
11
- getPercentage,
12
- fetchUsers,
13
- } from "../../../global-files/data";
14
- import { ProductImageModalv2 } from "../../organisms/ProductImageModalv2";
15
- import { useDropzone } from "react-dropzone";
16
- import axios from "axios";
17
- import { v4 as uuidv4 } from "uuid";
18
- import AWS from "aws-sdk";
19
- import { TagAndInputv2 } from "../../molecules/TagAndInputv2";
20
- import { Button } from "../../atoms/GeneralButton";
21
- import { Commentary } from "../../atoms/Commentary";
22
- import { GenericModal } from "../../atoms/GenericModal";
23
- import { ScreenHeader } from "../../atoms/ScreenHeader";
24
- import { Loading } from "../../atoms/Loading";
25
- import succes from "../../../assets/images/genericModal/genericModalCheck.svg";
26
- import { Link } from "react-router-dom";
27
- import face from "../../../assets/images/defaultImages/defaultProfileImage.svg";
28
- import errorModal from "../../../assets/images/genericModal/errorModal.svg";
29
- import { GlobalModal } from "../../organisms/GlobalModal/index";
30
- import { SliderToolTip } from "../../atoms/SliderToolTip";
31
- import InfoIcon from "../../../assets/images/sliderToolTip/infoIcon.svg";
32
- import Slide1_1 from "../../../assets/images/sliderToolTip/slide1.svg";
33
- import Slide1_2 from "../../../assets/images/sliderToolTip/slide2.svg";
34
- import Slide1_3 from "../../../assets/images/sliderToolTip/slide3.svg";
35
- import Slide1_4 from "../../../assets/images/sliderToolTip/slide4.svg";
36
- import Slide1_5 from "../../../assets/images/sliderToolTip/slide5.svg";
37
- import { useCloseModal } from "../../../global-files/customHooks";
38
- import { createMessage, sendMessage } from "../RetailerProductEdition/utils";
39
- import { Modal } from "../../organisms/Modal";
40
- import { ButtonV2 } from "../../atoms/ButtonV2";
41
- import { CompleteServices } from "../../organisms/CompleteServices";
42
- import { InputGroupv2 } from "../../organisms/InputGroupv2";
43
- import { VersionSelectorv2 } from "../../organisms/VersionSelectorv2";
44
- import { MandatoryBar } from "../../organisms/MandatoryBar";
45
- import { GalleryHeaderv2 } from "../../molecules/GalleryHeaderv2";
46
- import { GalleryElementv2 } from "../../molecules/GalleryElementv2";
47
- import { RenameImagesBar } from "../../organisms/RenameImagesBar";
48
-
49
- const reducerImages = (state, action) => {
50
- let { values, attrForImgs, inputsByRetailer } = state;
51
- switch (action.action) {
52
- case "init":
53
- const newInputsByRetailer = {};
54
- action?.init?.inputsByRetailer?.forEach((inputs) => {
55
- inputs?.forEach((input) => {
56
- if (!newInputsByRetailer[`${input.id_retailer}`])
57
- newInputsByRetailer[`${input.id_retailer}`] = [];
58
- newInputsByRetailer[`${input.id_retailer}`].push(input);
59
- });
60
- });
61
- inputsByRetailer = newInputsByRetailer;
62
- return {
63
- ...action.init,
64
- inputsByRetailer,
65
- valuesInitial: action.init.values,
66
- inputsInitial: action.init.inputs,
67
- };
68
- case "addImg":
69
- values = [...values, action.img];
70
- return { ...state, values };
71
- case "changeImageInfo":
72
- values[action.index][action.attribute] = action.value;
73
- return { ...state, values };
74
- case "changeAttrValue":
75
- const index = attrForImgs.general.findIndex((f) => (f.id = action.id));
76
- if (index !== -1) {
77
- attrForImgs.general[index].value = action.value;
78
- }
79
-
80
- return { ...state, attrForImgs, values };
81
- case "deleteImage":
82
- values = values.filter(
83
- (value) => action.selectedImages.indexOf(value) === -1
84
- );
85
- return { ...state, values };
86
- case "orderImages": {
87
- let { inputsByRetailer, valuesInitial, inputsInitial, inputs } = state;
88
- try {
89
- const orderedImages = [];
90
- const imageIdArray = [];
91
- if (action?.retailerId && !inputsByRetailer[action.retailerId])
92
- inputsByRetailer[action.retailerId] = [];
93
- action.retailerId &&
94
- inputsByRetailer[action.retailerId]?.filter((input) => {
95
- imageIdArray.push(input.id_image);
96
- valuesInitial.forEach((value) => {
97
- if (value.image_id === input.id_image) orderedImages.push(value);
98
- });
99
- });
100
-
101
- inputs = inputsInitial?.filter((input) =>
102
- imageIdArray.includes(input.id)
103
- );
104
-
105
- values = orderedImages.length > 0 ? orderedImages : [];
106
- } catch (error) {
107
- console.log(error);
108
- }
109
- return { ...state, values, inputs };
110
- }
111
- default:
112
- return state;
113
- }
114
- };
115
- const S3_BUCKET = process.env.REACT_APP_IMAGES_BUCKET;
116
- const REGION = "us-east-1";
117
-
118
- AWS.config.update({
119
- accessKeyId: process.env.REACT_APP_KUTS3,
120
- secretAccessKey: process.env.REACT_APP_AKUTS3,
121
- });
122
-
123
- const myBucket = new AWS.S3({
124
- params: { Bucket: S3_BUCKET },
125
- region: REGION,
126
- });
127
-
128
- export const ProductEditionv2 = ({
129
- tabsSections,
130
- productSelected = {},
131
- productToEdit,
132
- user = {},
133
- location = {},
134
- token,
135
- revision = false,
136
- setShowContentohRequestModal,
137
- showSurvey,
138
- company,
139
- addToCart,
140
- }) => {
141
- const [activeTab, setActiveTab] = useState("Descripción");
142
- const [activeImage, setActiveImage] = useState();
143
- const [imageLayout, setImageLayout] = useState(false);
144
- const [headerTop, setHeaderTop] = useState(0);
145
- const [descriptions, setDescriptions] = useState([]);
146
- const [datasheets, setDatasheets] = useState([]);
147
- const [images, setImages] = useReducer(reducerImages, {});
148
- const [showModal, setShowModal] = useState(false);
149
- const [boxData, setBoxData] = useState();
150
- const [imageRules, setImageRules] = useState({
151
- maxImg: 0,
152
- minImg: 0,
153
- requiredImg: 0,
154
- });
155
- const { getRootProps, getInputProps } = useDropzone({
156
- accept: "image/*",
157
- noKeyboard: true,
158
- multiple: true,
159
- noClick: true,
160
- onDrop: (acceptedFiles) => {
161
- const newImages = [];
162
- acceptedFiles.map((file) => {
163
- const reader = new FileReader();
164
- reader.fileName = file.name;
165
- reader.onload = async function (e) {
166
- const ext = e.srcElement.fileName.split(".");
167
- const img = new Image();
168
- img.src = e.target.result;
169
- setTimeout(() => {
170
- const width = img.width;
171
- const height = img.height;
172
- const newImg = {
173
- action: "addImg",
174
- img: {
175
- src: e.target.result,
176
- name: e.target.fileName,
177
- ext: ext[ext.length - 1],
178
- width: width,
179
- height: height,
180
- },
181
- };
182
- setImages(newImg);
183
- }, 500);
184
- };
185
- reader.onerror = function (error) {
186
- console.log("dropzoneError: ", error);
187
- };
188
- reader.readAsDataURL(file);
189
- return file;
190
- });
191
- },
192
- });
193
- const [updatedDatasheets, setUpdatedDatasheets] = useState([]);
194
- const [updatedDescriptions, setUpdatedDescriptions] = useState([]);
195
- const [imagesUploaded, setImagesUploaded] = useState(false);
196
- const [dataImages, setDataImages] = useState();
197
- const [percentages, setPercentages] = useState(
198
- product?.retailers
199
- ? new Array(product?.retailers?.length).fill({ percentage: 0 })
200
- : new Array(product?.retailersAvailable?.length).fill({ percentage: 0 })
201
- );
202
- const [activePercentage, setActivePercentage] = useState(0);
203
- const [activeRetailer, setActiveRetailer] = useState({});
204
- const [services, setServices] = useState([]);
205
- const [servicesData, setServicesData] = useState([]);
206
- const [message, setMessage] = useState("");
207
- const [product, setProduct] = useState(
208
- JSON.parse(sessionStorage.getItem("productSelected"))
209
- ? JSON.parse(sessionStorage.getItem("productSelected"))
210
- : productSelected
211
- );
212
- const [productEdit, setProductEdit] = useState(
213
- JSON.parse(sessionStorage.getItem("productEdit"))
214
- ? JSON.parse(sessionStorage.getItem("productEdit"))
215
- : productToEdit
216
- );
217
- const [version, setVersion] = useState(product?.version);
218
- const [comments] = useState({});
219
- const [comment, setComment] = useState("");
220
- const [crossComment, setCrossComment] = useState(false);
221
- const [userGroups, setUserGroups] = useState([]);
222
- const [assig, setAssig] = useState({});
223
- const [selectedImages, setSelectedImages] = useState([]);
224
- const [componentsArray, setComponentsArray] = useState([]);
225
- const [checkAll, setCheckAll] = useState(false);
226
- const isRetailer = user?.is_retailer;
227
- const [loading, setLoading] = useState(true);
228
- const [validatedAll, setValidatedAll] = useState(false);
229
- const [showRejectModal, setShowRejectModal] = useState(false);
230
-
231
- const [origin, setOrigin] = useState({
232
- "Ficha técnica": null,
233
- Descripción: null,
234
- Imágenes: null,
235
- });
236
-
237
- const [inCart, setInCart] = useState(false);
238
- const [dataGenericModal, setDataGenericModal] = useState({
239
- message: "¿Estás seguro de continuar?",
240
- detail: ` ${
241
- user.is_retailer
242
- ? "Asegurate de haber revisado las tres secciones"
243
- : "Envíar el producto a la cadena"
244
- }`,
245
- button1: {
246
- name: "Cerrar",
247
- action: closeGlobalModal,
248
- },
249
- button2: {
250
- name: "Continuar",
251
- action: () => evaluationToRetailer(false),
252
- },
253
- img: face,
254
- });
255
- const [socketType, setSocketType] = useState(null);
256
- const [saving, setSaving] = useState(loading);
257
- const [retailerStatus, setRetailerStatus] = useState(
258
- product.statusByRetailer
259
- );
260
- const [showVersionSelector, setShowVersionSelector] =
261
- useCloseModal("version-selector");
262
- const [globalModal, setGlobalModal] = useState();
263
-
264
- const updateAuditStatus = async (status) => {
265
- const productTemp = product;
266
- productTemp.article_status = status;
267
- productTemp.datasheet_status = status;
268
- productTemp.description_status = status;
269
- productTemp.images_status = status;
270
-
271
- const retailerStatusCopy = { ...retailerStatus };
272
- const conceptArray = ["description", "datasheet", "images"];
273
- Object.keys(retailerStatusCopy).forEach((key) => {
274
- conceptArray.forEach((concept) => {
275
- if (retailerStatusCopy[key][concept]) {
276
- retailerStatusCopy[key][concept] = status;
277
- }
278
- });
279
- });
280
- setRetailerStatus(retailerStatusCopy);
281
- productTemp.statusByRetailer = retailerStatusCopy;
282
- setProduct(productTemp);
283
- sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
284
- setProductEdit({
285
- ArticleId: productTemp.id_article,
286
- idCategory: productTemp.article.id_category,
287
- product: productTemp,
288
- });
289
- sessionStorage.setItem(
290
- "productEdit",
291
- JSON.stringify({
292
- ArticleId: productTemp.id_article,
293
- idCategory: productTemp.article.id_category,
294
- product: productTemp,
295
- })
296
- );
297
- await loadData();
298
- };
299
-
300
- const addCart = async (retailers) => {
301
- const { article, version } = product;
302
- const articleToOrder = [
303
- {
304
- articleId: article.id_article,
305
- version,
306
- userId: user.id_user,
307
- discount: 0,
308
- subtotal: 0,
309
- companyId: user.id_company,
310
- datasheet: retailers,
311
- description: retailers,
312
- image: retailers,
313
- attributeTranslations: false,
314
- descriptionTranslations: false,
315
- build: "[]",
316
- manual: "[]",
317
- userCreated: user.id_user,
318
- },
319
- ];
320
- let modatlType = "addedToCartError";
321
- if (addToCart) {
322
- const resCart = await addToCart({ data: articleToOrder });
323
- if (resCart.data.statusCode === 200) {
324
- modatlType = "addedToCart";
325
- }
326
- }
327
- showGlobalModal(modatlType);
328
- };
329
-
330
- const closeGlobalModal = () => setGlobalModal();
331
-
332
- const seenByProvider = async () => {
333
- const productTemp = product;
334
- const articleId = productTemp.id_article;
335
- const orderId = productTemp.id_order ?? productTemp.orderId;
336
- const promises = [];
337
- const conceptArray = ["description", "datasheet", "images"];
338
- conceptArray.forEach((concept) => {
339
- const sectionStatusKey = `${concept}_status`;
340
- const evalStatus = product[sectionStatusKey] || product?.version_status;
341
- const data = { articleId, orderId, concept, evalStatus };
342
- promises.push(
343
- axios.put(`${process.env.REACT_APP_SEND_EVAL}`, data, {
344
- headers: {
345
- Authorization: token,
346
- },
347
- })
348
- );
349
- });
350
- await Promise.all(promises);
351
- closeGlobalModal();
352
- await updateAuditStatus("FAP");
353
- };
354
-
355
- const showGlobalModal = useCallback(
356
- (type) => {
357
- const formatter = new Intl.ListFormat("es", { type: "conjunction" });
358
- switch (type) {
359
- case "generic":
360
- setGlobalModal(dataGenericModal);
361
- break;
362
- case "commentsSent":
363
- setGlobalModal({
364
- message: "Gracias, tus comentarios fueron entregados.",
365
- detail: "Trabajaremos en conjunto para resolverlo.",
366
- button1: {
367
- name: "Cerrar",
368
- action: closeGlobalModal,
369
- },
370
- img: face,
371
- textArea: false,
372
- });
373
- break;
374
- case "RAC":
375
- const servicesRejected = [];
376
- const translateServices = {
377
- datasheet: "ficha técnica",
378
- description: "descripción",
379
- images: "imágenes",
380
- };
381
- Object.keys(translateServices).forEach((service) => {
382
- if (product[`${service}_status`] === "RAC") {
383
- servicesRejected.push(translateServices[service]);
384
- }
385
- });
386
- const plural = ["Los servicios", "cumplen"];
387
- const singular = ["El servicio", "cumple"];
388
- const grammar = servicesRejected.length > 1 ? plural : singular;
389
- const formatted = formatter.format(servicesRejected);
390
- const text1 = `${grammar[0]} de ${formatted} no ${grammar[1]} con lo que la cadena necesita.`;
391
- const text2 = `¡Solicita el servicio de Content-oh! para completarlo!`;
392
- const retailers = product.retailersWithService.map((retailer) =>
393
- Number(retailer)
394
- );
395
- setGlobalModal({
396
- message:
397
- "Tu producto no cumple con los requerimientos de la cadena",
398
- customComponent: (
399
- <>
400
- <p className="generic-text">
401
- {text1}
402
- <br />
403
- <br />
404
- {text2}
405
- </p>
406
- </>
407
- ),
408
- button1: {
409
- name: "Continuar",
410
- action: async () => await seenByProvider(),
411
- },
412
- button2: {
413
- name: "Solicitar a Content-oh!",
414
- action: async () => {
415
- await addCart(retailers);
416
- await seenByProvider();
417
- },
418
- },
419
- img: errorModal,
420
- });
421
- break;
422
- case "AAC":
423
- setGlobalModal({
424
- message: "Felicidades",
425
- detail: "Tu producto cumple con los requerimientos de la cadena.",
426
- button1: {
427
- name: "Continuar",
428
- action: async () => await seenByProvider(),
429
- },
430
- img: face,
431
- });
432
- break;
433
- case "addedToCartError":
434
- setGlobalModal({
435
- detail:
436
- "Parece que algo salió mal al intentar añadir tu producto a tu carrito.",
437
- button1: {
438
- name: "Continuar",
439
- action: closeGlobalModal,
440
- },
441
- });
442
- break;
443
- case "addedToCart":
444
- setGlobalModal({
445
- message: "Producto añadido",
446
- detail: "Tu producto se añadió al carrito de compras.",
447
- button1: {
448
- name: "Continuar",
449
- action: closeGlobalModal,
450
- },
451
- img: face,
452
- });
453
- break;
454
- default:
455
- closeGlobalModal();
456
- break;
457
- }
458
- },
459
- [activeTab, dataGenericModal, product]
460
- );
461
-
462
- useEffect(() => {
463
- checkAll && setSelectedImages(images.values);
464
- }, [checkAll]);
465
-
466
- useEffect(() => {
467
- if (showModal) {
468
- setActiveTab("Imágenes");
469
- }
470
- }, [showModal]);
471
-
472
- useEffect(() => {
473
- setOrigin({
474
- "Ficha técnica": location?.state?.origin,
475
- Descripción: location?.state?.origin,
476
- Imágenes: location?.state?.origin,
477
- });
478
- }, [location?.state?.origin]);
479
-
480
- const loadData = async () => {
481
- const services = await getRetailerServices(
482
- product?.id_article || product?.article?.id_article,
483
- product?.article?.company_name || product?.categoryName,
484
- parseInt(product?.article?.id_category || product?.id_category),
485
- version,
486
- token
487
- );
488
- //Converts the data inside the datasheets object to array
489
- setServices(services);
490
- await getServices();
491
-
492
- setImages({ action: "init", init: services[2] });
493
- if (services[2]?.values?.length > 0) setActiveImage(0);
494
- getPercentage({ data: [product] }).then((res) => setPercentages(res[0]));
495
- setLoading(false);
496
- };
497
-
498
- const getRetailerImageRules = async (product, version, token) => {
499
- const services = await getRetailerServices(
500
- product?.id_article || product?.article?.id_article,
501
- product?.article?.company_name || product?.categoryName,
502
- parseInt(product?.article?.id_category || product?.id_category),
503
- version,
504
- token
505
- );
506
-
507
- const rulesToImgByRetailer = services[2]?.rulesToImgByRetailer;
508
- const retailerId = services[2]?.retailers?.[0]?.id;
509
- const maxImg = rulesToImgByRetailer?.[retailerId]?.maxImg || 0;
510
- const minImg = rulesToImgByRetailer?.[retailerId]?.minImg || 0;
511
- const requiredImg = rulesToImgByRetailer?.[retailerId]?.requiredImg || 0;
512
-
513
- // Actualizar el estado con las reglas de imágenes
514
- setImageRules({ maxImg, minImg, requiredImg });
515
- };
516
-
517
- useEffect(() => {
518
- getRetailerImageRules(product, version, token);
519
- }, [product, version, token]);
520
-
521
-
522
- const getServices = async () => {
523
- const productInOrder = product.id_order || product.orderId;
524
- const idArticle = product?.id_article || product?.article?.id_article;
525
- let retailers = product.retailers || product.retailersAvailable;
526
- let active = null;
527
- if (isRevision() || productInOrder) {
528
- const servicesResponse = await axios.get(
529
- `${
530
- process.env.REACT_APP_SERVICES_ENDPOINT
531
- }?articleId=${idArticle}&orderId=${
532
- product?.id_order ?? product.orderId
533
- }&end=true`
534
- );
535
- const parsedResponse = JSON.parse(servicesResponse?.data?.body).data;
536
- const retailerResponse = parsedResponse?.map((srv) => srv.id_retailer);
537
- active = retailers?.find((retailer) =>
538
- retailerResponse.includes(retailer.id)
539
- );
540
- setServicesData(parsedResponse);
541
- }
542
- retailers &&
543
- !activeRetailer.id &&
544
- setActiveRetailer(active ? active : retailers[0]);
545
- };
546
-
547
- const isRevision = () => {
548
- if (productEdit) {
549
- const concept = getConcept(activeTab);
550
- const isRetailer = user.is_retailer === 1;
551
- const currentService = productEdit?.product[`${concept}_status`];
552
- const orgn = origin[activeTab];
553
- const revision = [
554
- "RequestWithContentoh",
555
- "RequestWithoutContentoh",
556
- "Contentoh",
557
- ].includes(orgn);
558
- if (isRetailer) {
559
- if (revision && currentService === "AP") return true;
560
- } else {
561
- const { product } = productEdit;
562
- const isRequestWithoutContentoh =
563
- orgn === "RequestWithoutContentoh" &&
564
- (["R", "CA"].includes(currentService) ||
565
- (currentService === "RCA" &&
566
- (!product.id_order || !product.orderId)));
567
- const isRequestWithContentoh =
568
- orgn === "RequestWithContentoh" && currentService === "AA";
569
- const isContentoh = orgn === "Contentoh" && currentService === "AA";
570
- if (isContentoh || isRequestWithoutContentoh || isRequestWithContentoh)
571
- return true;
572
- }
573
- }
574
- return false;
575
- };
576
-
577
- const getCart = async () => {
578
- const res = await axios.get(process.env.REACT_APP_CART, {
579
- headers: {
580
- Authorization: token,
581
- },
582
- });
583
- const arr = JSON.parse(res.data.body).data.map((e) => e.article_id);
584
- setInCart(arr.some((e) => e.articleId === product.id_article));
585
- };
586
-
587
- useEffect(() => {
588
- sessionStorage.setItem("user", JSON.stringify(user));
589
- loadData();
590
- getCart();
591
- fetchUsers(token).then((res) => setUserGroups(res));
592
- setImages({ action: "orderImages", retailerId: activeRetailer.id });
593
- if (["RAC", "AAC"].includes(product.article_status))
594
- showGlobalModal(product.article_status);
595
- }, [product, version]);
596
-
597
- useEffect(() => {
598
- setImages({ action: "orderImages", retailerId: activeRetailer.id });
599
- }, [activeRetailer]);
600
-
601
- const loadAssignations = (currentProduct) => {
602
- setAssig(product?.asignations);
603
- };
604
-
605
- useEffect(() => {
606
- loadAssignations(product);
607
- }, [userGroups]);
608
-
609
- useEffect(() => {
610
- const productTemp = product;
611
- const retailers = productTemp?.retailersAvailable || productTemp?.retailers;
612
- if (Object.keys(percentages[productTemp.id_article] ?? {})?.length > 0) {
613
- retailers?.forEach((retailer, index) => {
614
- retailer["percentage"] = Number(
615
- percentages[productTemp.id_article][retailer.id]?.percentageRequired
616
- );
617
- });
618
- }
619
- setProduct(productTemp);
620
- retailers && setActivePercentage(retailers[0]?.percentage);
621
- }, [percentages]);
622
-
623
- const loadInputs = () => {
624
- if (services.length > 0) {
625
- if (services[0][activeRetailer.id]?.data)
626
- services[0][activeRetailer.id].data = Object.values(
627
- services[0][activeRetailer.id].data
628
- );
629
- setActivePercentage(Math.round(activeRetailer?.percentage, 0));
630
-
631
- const datagroups = services[0][activeRetailer.id];
632
- const inputs = services[0]?.inputs;
633
- const descriptions = services[1]?.filter(
634
- (service) => service?.id === activeRetailer?.id
635
- );
636
- setDatasheets([datagroups, inputs]);
637
- setDescriptions(descriptions);
638
- }
639
- };
640
-
641
- useEffect(() => {
642
- loadInputs();
643
- activeRetailer.id &&
644
- setImages({ action: "orderImages", retailerId: activeRetailer.id });
645
- }, [servicesData, activeRetailer, services]);
646
-
647
- const thumbs = () => {
648
- const imageInputs = socketType?.slice();
649
- const imageType = images?.imageType?.map((e) => ({
650
- value: e?.id,
651
- name: e?.name,
652
- }));
653
- const imagePackagingType = images?.imagePackagingType?.map((e) => ({
654
- value: e?.id,
655
- name: e?.name,
656
- }));
657
- return images?.values?.map((image, index) => (
658
- <GalleryElementv2
659
- setCheckAll={setCheckAll}
660
- key={index}
661
- image={image}
662
- gridLayout={imageLayout}
663
- id={"gallery-element-" + index}
664
- index={index + "-" + image.name}
665
- number={index}
666
- imageType={imageType}
667
- imagePackagingType={imagePackagingType}
668
- imageInputs={imageInputs}
669
- changeImage={setImages}
670
- selectedImages={selectedImages}
671
- setSelectedImages={setSelectedImages}
672
- />
673
- ));
674
- };
675
-
676
- useEffect(() => {
677
- const imageInputs = images?.inputs?.map((e) => ({
678
- value: e?.id,
679
- name: e?.name,
680
- required: e?.required,
681
- active: images?.values.some((value) => value?.image_id === e?.id),
682
- }));
683
- setSocketType(imageInputs);
684
- }, [images]);
685
-
686
- const saveDescriptions = async () => {
687
- setLoading(true);
688
- const dataObject = {
689
- articleId: product?.id_article,
690
- articleData: updatedDescriptions,
691
- };
692
- if (product?.orderId) dataObject["orderId"] = product?.orderId;
693
- try {
694
- const res = await axios.put(
695
- `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?description=true&version=${version}`,
696
- dataObject,
697
- {
698
- headers: {
699
- Authorization: token,
700
- },
701
- }
702
- );
703
- if (res.data.statusCode === 200) {
704
- setUpdatedDescriptions([]);
705
- setMessage("Descripciones guardadas con éxito");
706
- await loadData();
707
- }
708
- } catch (error) {
709
- console.log(error);
710
- }
711
- };
712
-
713
- const saveDatasheets = async () => {
714
- const parseBoxData = [];
715
- Object.entries(boxData).forEach(([, box], index) => {
716
- const { value } = box;
717
- const attributesIds = Object.keys(value);
718
- attributesIds.forEach((attributeId) => {
719
- const boxId = index + 1;
720
- const valueOfAtribute = value[attributeId];
721
- parseBoxData.push({
722
- attributeId,
723
- value: valueOfAtribute,
724
- boxId,
725
- })
726
- });
727
- });
728
-
729
- const dataObject = {
730
- articleId: product?.id_article,
731
- articleData: updatedDatasheets,
732
- ...(parseBoxData.length > 0 && { boxData: parseBoxData }),
733
- };
734
-
735
- if (product?.orderId) dataObject["orderId"] = product?.orderId;
736
- try {
737
- const res = await axios.put(
738
- `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?datasheet=true&version=${version}`,
739
- dataObject,
740
- {
741
- headers: {
742
- Authorization: token,
743
- },
744
- }
745
- );
746
- if (res.data.statusCode === 200) {
747
- setUpdatedDatasheets([]);
748
- setMessage("Fichas técnicas guardadas");
749
- await loadData();
750
- }
751
- } catch (error) {
752
- console.log(error);
753
- }
754
- console.log(dataObject)
755
- };
756
-
757
- const updateImages = useCallback(async () => {
758
- const imagesList = images?.values?.slice();
759
- const imagesListTemp = imagesList?.reduce((acc, image) => {
760
- acc[image?.image_id] = ++acc[image?.image_id] || 0;
761
- return acc;
762
- }, {});
763
-
764
- const duplicated = imagesList?.filter((image) => {
765
- return imagesListTemp[image?.image_id];
766
- });
767
- console.log(imagesList)
768
- const attrForImgs = Object.values(images?.attrForImgs);
769
- attrForImgs.pop();
770
- const data = {
771
- articleId: product?.id_article,
772
- attrReqImgs: attrForImgs?.map((e) => ({
773
- attrId: e[0]?.id,
774
- value: e[0]?.value,
775
- })),
776
- articleData: imagesList?.filter((e) => !e.id),
777
- updateImages: imagesList?.filter((e) => e.id),
778
- };
779
- if (product?.orderId) data["orderId"] = product?.orderId;
780
- let valid =
781
- data?.articleData?.length === 0
782
- ? true
783
- : data?.articleData?.every((e, i) => {
784
- if (e?.image_id && e?.packing_type && e?.image_type) {
785
- return true;
786
- }
787
- return false;
788
- });
789
- if (valid && data?.updateImages?.length > 0 && duplicated?.length === 0) {
790
- valid = data?.updateImages?.every((e, i) => {
791
- if (e?.image_id && e?.packing_type && e?.image_type) {
792
- return true;
793
- }
794
- return false;
795
- });
796
- }
797
- if (valid && duplicated?.length === 0) {
798
- setLoading(true);
799
- try {
800
- data?.articleData?.forEach((e) => {
801
- e.uuid = uuidv4();
802
- });
803
- setDataImages(data);
804
- if (data?.articleData?.length > 0) {
805
- setImagesUploaded(false);
806
- const promiseArray = [];
807
- data?.articleData?.forEach((e) => {
808
- const file = Buffer.from(
809
- e.src.replace(/^data:image\/\w+;base64,/, ""),
810
- "base64"
811
- );
812
- const params = {
813
- ACL: "public-read",
814
- Body: file,
815
- Bucket: S3_BUCKET,
816
- Key: `id-${data.articleId}/${version}/${e?.image_id}-${e?.uuid}.${e?.ext}`,
817
- };
818
- promiseArray.push(myBucket.putObject(params).promise());
819
- });
820
- await Promise.all(promiseArray);
821
- setImagesUploaded(true);
822
- } else {
823
- setImagesUploaded(true);
824
- }
825
- } catch (err) {
826
- console.log(err);
827
- // setMainLoading(false);
828
- }
829
- } else {
830
- // setMainLoading(false);
831
- setMessage(
832
- "Completa los campos que solicita cada una de la imágenes o hay imágenes con el mismo tipo de toma.\nRecuerda hay campos obligatorios y no podras avanzar si no estan completos."
833
- );
834
- }
835
- // eslint-disable-next-line react-hooks/exhaustive-deps
836
- }, [images, imagesUploaded]);
837
-
838
- useEffect(async () => {
839
- if (imagesUploaded) {
840
- dataImages.articleData = dataImages?.articleData.map((e) => {
841
- delete e.src;
842
- e.imageID = e.image_id;
843
- e.packingType = e.packing_type;
844
- e.imageType = e.image_type;
845
- if (product?.orderId) e["orderId"] = product?.orderId;
846
- return e;
847
- });
848
- try {
849
- const res = await axios.put(
850
- `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?image=true&version=${version}`,
851
- dataImages,
852
- {
853
- headers: {
854
- Authorization: token,
855
- },
856
- }
857
- );
858
- if (res.data.statusCode === 200) {
859
- setImages({});
860
- setMessage("Imágenes guardadas con éxito");
861
- sessionStorage.removeItem("imagesList");
862
- await loadData();
863
- }
864
- } catch (error) {
865
- console.log(error);
866
- }
867
- }
868
- }, [dataImages, imagesUploaded]);
869
-
870
- const getConcept = (tab) => {
871
- switch (tab) {
872
- case "Descripción":
873
- return "description";
874
- case "Ficha técnica":
875
- return "datasheet";
876
- case "Imágenes":
877
- return "images";
878
- }
879
- };
880
-
881
- const createComment = async (messages = [], retailerId) => {
882
- const data = {
883
- paramsBody: {
884
- id: product.article.id_article || productEdit.ArticleId,
885
- version: version,
886
- items: messages,
887
- retailerId: retailerId,
888
- status: product.status || productEdit.product.status,
889
- },
890
- paramsHeader: { Authorization: token },
891
- };
892
- setMessage("");
893
- return sendMessage(data);
894
- };
895
-
896
- useEffect(() => {
897
- setComment(comments[activeTab]);
898
- }, [activeTab]);
899
-
900
- const commentRevised = async () => {
901
- const data = {
902
- commentId: comment.id,
903
- };
904
- await axios.put(`${process.env.REACT_APP_COMMENTS_ENDPOINT}`, data, {
905
- headers: {
906
- Authorization: token,
907
- },
908
- });
909
- setCrossComment(false);
910
- };
911
-
912
- const setAssignation = async (assignationType, assignationId) => {
913
- let concept = "";
914
- switch (activeTab) {
915
- case "Ficha técnica":
916
- concept = "datasheet";
917
- break;
918
- case "Imágenes":
919
- concept = "images";
920
- break;
921
-
922
- default:
923
- concept = "description";
924
- break;
925
- }
926
- const productTemp = product;
927
- productTemp.article[`id_${concept}_${assignationType}`] = assignationId;
928
- const data = {
929
- articleList: [
930
- {
931
- orderId: product.orderId,
932
- articleId: product?.id_article,
933
- },
934
- ],
935
- concept: concept,
936
- userId: assignationId,
937
- };
938
- await axios({
939
- method: "post",
940
- url: process.env.REACT_APP_ASSIGNATIONS_ENDPOINT,
941
- data,
942
- headers: {
943
- Authorization: token,
944
- },
945
- });
946
- loadAssignations(productTemp);
947
- sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
948
- };
949
-
950
- const downloadImages = () => {
951
- selectedImages.length > 0
952
- ? selectedImages.forEach((e) => {
953
- if (e.id) {
954
- saveAs(
955
- `https://${process.env.REACT_APP_IMAGES_BUCKET}.s3.amazonaws.com/${e.srcDB}`,
956
- `${product.upc || product.article.upc}_${e.name}.${e.ext}`
957
- );
958
- }
959
- })
960
- : images?.values?.forEach((e) => {
961
- if (e.id) {
962
- saveAs(
963
- `https://${process.env.REACT_APP_IMAGES_BUCKET}.s3.amazonaws.com/${e.srcDB}`,
964
- `${product.upc || product.article.upc}_${e.name}.${e.ext}`
965
- );
966
- }
967
- });
968
- };
969
-
970
- const deleteImages = () => {
971
- setLoading(true);
972
- const { values } = images;
973
- const imgsInBack = [];
974
-
975
- selectedImages.forEach((selectedImg) => {
976
- if (selectedImg.id) imgsInBack.push(selectedImg);
977
- });
978
-
979
- const imgsLeft = values.filter(
980
- (value) => selectedImages.indexOf(value) === -1
981
- );
982
-
983
- if (imgsInBack.length > 0) {
984
- const data = {
985
- articleId: product?.id_article || product?.article?.id_article,
986
- deleteImages: imgsInBack,
987
- };
988
- try {
989
- axios.put(
990
- `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?image=true&version=${version}`,
991
- data,
992
- {
993
- headers: { Authorization: token },
994
- }
995
- );
996
- } catch (err) {
997
- console.log(err);
998
- }
999
- }
1000
-
1001
- setImages({
1002
- action: "deleteImage",
1003
- selectedImages,
1004
- });
1005
-
1006
- setTimeout(() => {
1007
- setLoading(false);
1008
- }, 500);
1009
-
1010
- setMessage("");
1011
- setComponentsArray([]);
1012
- };
1013
-
1014
- const askToDeleteImages = () => {
1015
- if (selectedImages.length > 0) {
1016
- setMessage("¿Está seguro de eliminar las imágenes seleccionadas?");
1017
- setComponentsArray([
1018
- <ScreenHeader
1019
- key={"1"}
1020
- text={"¿Está seguro de eliminar las imágenes seleccionadas?"}
1021
- headerType="retailer-name-header"
1022
- color={"white"}
1023
- />,
1024
- <Button
1025
- key={"2"}
1026
- buttonType="general-white-button"
1027
- label={"Cancelar"}
1028
- onClick={() => setMessage("")}
1029
- />,
1030
- <Button
1031
- key={"3"}
1032
- buttonType="general-button-default"
1033
- label={"Aceptar"}
1034
- onClick={() => {
1035
- setMessage("");
1036
- deleteImages();
1037
- }}
1038
- />,
1039
- ]);
1040
- }
1041
- };
1042
-
1043
- const sendEvaluation = async (result) => {
1044
- setLoading(true);
1045
- const concept = getConcept(activeTab);
1046
- const productTemp = product;
1047
- const articleId = productTemp.id_article;
1048
- const orderId = productTemp.id_order ?? productTemp.orderId;
1049
- const sectionStatusKey = `${getConcept(activeTab)}_status`;
1050
- const evalStatus = product[sectionStatusKey] || product?.version_status;
1051
- let data = { articleId, orderId, concept, evalStatus };
1052
- const retailerId = activeRetailer?.id;
1053
- let res;
1054
- try {
1055
- const body = {
1056
- orderArticleRetailers: [
1057
- { orderId, articleId, retailersIds: [activeRetailer.id] },
1058
- ],
1059
- isAproved: false,
1060
- service: concept,
1061
- };
1062
- if (result) {
1063
- body.isAproved = result === "A";
1064
- res = await axios.post(
1065
- `${process.env.REACT_APP_EVALUATION_REFACTOR}`,
1066
- body,
1067
- {
1068
- headers: {
1069
- Authorization: token,
1070
- },
1071
- }
1072
- );
1073
-
1074
- const response = JSON.parse(res.data.body)?.successfulData;
1075
- const newStatuses = response;
1076
- const statusObject =
1077
- response[`${orderId}-${articleId}-${activeRetailer.id}`];
1078
- const orderStatus = statusObject["generalStatus"];
1079
- const serviceStatus = newStatuses[`${getConcept(activeTab)}Status`];
1080
-
1081
- const newProductEdit = productEdit;
1082
- newProductEdit.product[sectionStatusKey] = serviceStatus;
1083
- setProductEdit(newProductEdit);
1084
- const showSurveyByProvider = !user.is_retailer && orderStatus === "AP";
1085
- const showSurveyByRetailer = user.is_retailer && orderStatus === "ACA";
1086
- showSurvey && showSurvey(showSurveyByProvider || showSurveyByRetailer);
1087
- } else {
1088
- res = await axios.post(
1089
- `${process.env.REACT_APP_EVALUATION_REFACTOR}`,
1090
- body,
1091
- {
1092
- headers: {
1093
- Authorization: token,
1094
- },
1095
- }
1096
- );
1097
- }
1098
- if (res.data.statusCode === 200) {
1099
- const response = JSON.parse(res.data.body)?.successfulData;
1100
- const statusObject =
1101
- response[`${orderId}-${articleId}-${activeRetailer.id}`];
1102
- productTemp.status = statusObject["generalStatus"];
1103
- const retailerStatusCopy = { ...retailerStatus };
1104
- retailerStatusCopy[activeRetailer.id][concept] =
1105
- statusObject[`${concept}Status`];
1106
- setRetailerStatus(retailerStatusCopy);
1107
- productTemp.statusByRetailer = retailerStatusCopy;
1108
- let status;
1109
- status = statusObject[`${concept}Status`];
1110
- productTemp[`${concept}_status`] = status;
1111
- setProduct(productTemp);
1112
- sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
1113
- setOrigin((prev) => ({ ...prev, [concept]: status }));
1114
- }
1115
- } catch (err) {
1116
- console.log(err);
1117
- }
1118
- loadData();
1119
- };
1120
-
1121
- const validateAll = async (result) => {
1122
- try {
1123
- setLoading(true);
1124
- const evaluationArray = [];
1125
- const conceptArray = ["description", "datasheet", "images"];
1126
- const isAproved = result === "A";
1127
- const retailersIds = [];
1128
- servicesData?.forEach((ret) => {
1129
- if (!retailersIds.includes(ret.id_retailer))
1130
- retailersIds.push(ret.id_retailer);
1131
- });
1132
- const body = {
1133
- orderArticleRetailers: [
1134
- {
1135
- orderId: product.id_order ?? product.orderId,
1136
- articleId: product.article.id_article,
1137
- retailersIds,
1138
- },
1139
- ],
1140
- isAproved,
1141
- };
1142
- conceptArray.forEach((concept) => {
1143
- body.service = concept;
1144
- evaluationArray.push(
1145
- axios.post(`${process.env.REACT_APP_EVALUATION_REFACTOR}`, body, {
1146
- headers: {
1147
- Authorization: token,
1148
- },
1149
- })
1150
- );
1151
- });
1152
- await Promise.all(evaluationArray);
1153
- const userType = user.is_retailer === 1 ? "CA" : "P";
1154
-
1155
- const productTemp = product;
1156
- const status = `${result}${userType}`;
1157
- productTemp.status = status;
1158
- productTemp.datasheet_status =
1159
- productTemp.datasheet_status === "NA" ? "NA" : status;
1160
- productTemp.description_status =
1161
- productTemp.description_status === "NA" ? "NA" : status;
1162
- productTemp.images_status =
1163
- productTemp.images_status === "NA" ? "NA" : status;
1164
-
1165
- const retailerStatusCopy = { ...retailerStatus };
1166
- Object.keys(retailerStatusCopy).forEach((key) => {
1167
- conceptArray.forEach((concept) => {
1168
- if (retailerStatusCopy[key][concept]) {
1169
- retailerStatusCopy[key][concept] = status;
1170
- }
1171
- });
1172
- });
1173
- setRetailerStatus(retailerStatusCopy);
1174
- productTemp.statusByRetailer = retailerStatusCopy;
1175
- setProduct(productTemp);
1176
- sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
1177
- setProductEdit({
1178
- ArticleId: productTemp.id_article,
1179
- idCategory: productTemp.article.id_category,
1180
- product: productTemp,
1181
- });
1182
- sessionStorage.setItem(
1183
- "productEdit",
1184
- JSON.stringify({
1185
- ArticleId: productTemp.id_article,
1186
- idCategory: productTemp.article.id_category,
1187
- product: productTemp,
1188
- })
1189
- );
1190
-
1191
- await loadData();
1192
- } catch (error) {
1193
- console.log(error);
1194
- }
1195
- };
1196
-
1197
- const evaluationToRetailer = async (result) => {
1198
- const data = {
1199
- articleId: product.id_article,
1200
- companyId: user.is_retailer
1201
- ? product.provider_company_id
1202
- : product.retailer_company_id,
1203
- versionId: product.version,
1204
- status: result,
1205
- };
1206
- await axios.put(`${process.env.REACT_APP_RETAILER_REQUEST}`, data, {
1207
- headers: {
1208
- Authorization: token,
1209
- },
1210
- });
1211
- const prod = productEdit;
1212
- const statusComplete = user.is_retailer ? `${result}CA` : `${result}P`;
1213
- prod.product.datasheet_status = statusComplete;
1214
- prod.product.description_status = statusComplete;
1215
- prod.product.images_status = statusComplete;
1216
- prod.product.article_status = statusComplete;
1217
- prod.product.services_status = `["${statusComplete}","${statusComplete}","${statusComplete}"]`;
1218
- sessionStorage.setItem("productEdit", JSON.stringify(prod));
1219
- setProduct(prod);
1220
- showGlobalModal("generic");
1221
- await loadData();
1222
- };
1223
-
1224
- const getSectionStatus = () => {
1225
- const concept = getConcept(activeTab);
1226
- return ["AA", "AP", "R", "CA", "RCA"].includes(
1227
- productEdit.product[`${concept}_status`]
1228
- );
1229
- };
1230
-
1231
- const enableActions = (versionStatus) => {
1232
- try {
1233
- if (user.is_retailer) return false;
1234
-
1235
- if (versionStatus) {
1236
- return ["AP", "ACA", "RCA", null].includes(versionStatus);
1237
- }
1238
- return true;
1239
- } catch (err) {
1240
- console.log(err, "Unable de check if user is retailer");
1241
- return false;
1242
- }
1243
- };
1244
-
1245
- useEffect(() => {
1246
- setSaving(loading);
1247
- }, [loading]);
1248
-
1249
- const slidefront = [
1250
- {
1251
- slide: Slide1_1,
1252
- description:
1253
- "Creamos tu contenido, y todo lo que haga falta para tu producto, cada sección puedes socilitar contenido enriquecido, y nosotros lo haremos por ti.",
1254
- },
1255
- {
1256
- slide: Slide1_2,
1257
- description:
1258
- "Puedes agregar solicitudes de contenido enriquecido a tu carrito de compra las veces que sean necesarias. Una vez completada tu lista con los servicios necesitados sigue el proceso de compra en checkout.",
1259
- },
1260
- {
1261
- slide: Slide1_3,
1262
- description:
1263
- "Revisa el contenido que deseas solicilitar, valida y tambien puedes agregar contenido extra, traducciones, o simplemente completar el checkout.",
1264
- },
1265
- {
1266
- slide: Slide1_4,
1267
- description:
1268
- "Elige el tipo de entrega de tu producto, puedes ser recolección en el lugar o por el contrario puedes dejarlo en nuestras oficinas.",
1269
- },
1270
- {
1271
- slide: Slide1_5,
1272
- title: "Bienvenido al modo Content-oh!",
1273
- description:
1274
- "Finalmente elige la forma de pago que más te guste, procede con el pago y listo.",
1275
- },
1276
- ];
1277
- const sendToEvaluation = (result) => {
1278
- console.log({ result });
1279
- if (result === "A") {
1280
- if (
1281
- origin[activeTab] === "RequestWithoutContentoh" &&
1282
- !user.is_retailer &&
1283
- (!product.id_order || !product.orderId)
1284
- ) {
1285
- setDataGenericModal((prev) => ({
1286
- ...prev,
1287
- button2: {
1288
- name: "Continuar",
1289
- action: () => evaluationToRetailer("A"),
1290
- },
1291
- }));
1292
- showGlobalModal("generic");
1293
- } else if (user.is_retailer) {
1294
- if (product.id_order || product.orderId) {
1295
- sendEvaluation("A");
1296
- } else {
1297
- setDataGenericModal((prev) => ({
1298
- ...prev,
1299
- button2: {
1300
- name: "Continuar",
1301
- action: () => evaluationToRetailer("A"),
1302
- },
1303
- }));
1304
- showGlobalModal("generic");
1305
- }
1306
- } else {
1307
- sendEvaluation("A");
1308
- }
1309
- } else {
1310
- if (
1311
- origin === "RequestWithoutContentoh" &&
1312
- !user.is_retailer &&
1313
- (!product.id_order || !product.orderId)
1314
- ) {
1315
- return;
1316
- } else if (user.is_retailer) {
1317
- if (product.id_order || product.orderId) {
1318
- sendEvaluation("R");
1319
- } else {
1320
- setDataGenericModal((prev) => ({
1321
- ...prev,
1322
- button2: {
1323
- name: "Continuar",
1324
- action: () => evaluationToRetailer("R"),
1325
- },
1326
- }));
1327
- showGlobalModal("generic");
1328
- }
1329
- } else {
1330
- sendEvaluation("R");
1331
- }
1332
- }
1333
- };
1334
-
1335
- return (
1336
- <Container headerTop={headerTop}>
1337
- {/* <HeaderTopv2
1338
- setHeaderTop={setHeaderTop}
1339
- withChat={false}
1340
- chatType={location?.state?.chatType}
1341
- productSelected={productSelected}
1342
- token={token}
1343
- activeRetailer={activeRetailer}
1344
- /> */}
1345
- <div className="data-container">
1346
- <div className="product-information">
1347
- <div className="product-information-image">
1348
- <div className="product-image">
1349
- <FullProductNamev2
1350
- headerData={product}
1351
- setShowVersionSelector={setShowVersionSelector}
1352
- percent={activePercentage}
1353
- activeRetailer={activeRetailer}
1354
- setActiveRetailer={setActiveRetailer}
1355
- showValidationButtons={isRevision() && getSectionStatus()}
1356
- servicesData={servicesData ? servicesData : null}
1357
- showApproveRejectAll={isRevision() && getSectionStatus()}
1358
- approveAll={() => {
1359
- if (
1360
- origin === "RequestWithoutContentoh" &&
1361
- !user.is_retailer &&
1362
- (!product.id_order || !product.orderId)
1363
- ) {
1364
- setDataGenericModal((prev) => ({
1365
- ...prev,
1366
- button2: {
1367
- name: "Continuar",
1368
- action: () => evaluationToRetailer("A"),
1369
- },
1370
- }));
1371
- showGlobalModal("generic");
1372
- } else if (user.is_retailer) {
1373
- if (product.id_order || product.orderId) {
1374
- validateAll("A");
1375
- } else {
1376
- setDataGenericModal((prev) => ({
1377
- ...prev,
1378
- button2: {
1379
- name: "Continuar",
1380
- action: () => evaluationToRetailer("A"),
1381
- },
1382
- }));
1383
- showGlobalModal("generic");
1384
- }
1385
- } else {
1386
- validateAll("A");
1387
- }
1388
- }}
1389
- rejectAll={() => {
1390
- if (
1391
- origin === "RequestWithoutContentoh" &&
1392
- !user.is_retailer &&
1393
- (!product.id_order || !product.orderId)
1394
- ) {
1395
- return;
1396
- } else if (user.is_retailer) {
1397
- if (product.id_order || product.orderId) {
1398
- setValidatedAll(true);
1399
- setShowRejectModal(true);
1400
- } else {
1401
- setDataGenericModal((prev) => ({
1402
- ...prev,
1403
- button2: {
1404
- name: "Continuar",
1405
- action: () => evaluationToRetailer("R"),
1406
- },
1407
- }));
1408
- showGlobalModal("generic");
1409
- }
1410
- } else {
1411
- setShowRejectModal(true);
1412
- setValidatedAll(true);
1413
- }
1414
- }}
1415
- approve={() => sendToEvaluation("A")}
1416
- reject={() => {
1417
- setShowRejectModal(true);
1418
- }}
1419
- version={version}
1420
- />
1421
- <FullTabsMenuv2
1422
- tabsSections={tabsSections}
1423
- status={
1424
- activeRetailer?.id &&
1425
- retailerStatus &&
1426
- retailerStatus[activeRetailer.id]
1427
- ? retailerStatus[activeRetailer?.id][getConcept(activeTab)] ||
1428
- "NS"
1429
- : "-"
1430
- }
1431
- activeTab={activeTab}
1432
- setActiveTab={setActiveTab}
1433
- setImageLayout={setImageLayout}
1434
- downloadImages={downloadImages}
1435
- askToDeleteImages={askToDeleteImages}
1436
- assig={assig}
1437
- setAssignation={setAssignation}
1438
- isRetailer={isRetailer}
1439
- showSaveButton={enableActions(product.version_status)}
1440
- version={version}
1441
- updatedDescriptions={updatedDescriptions}
1442
- setUpdatedDescriptions={setUpdatedDescriptions}
1443
- updatedDatasheets={updatedDatasheets}
1444
- setUpdatedDatasheets={setUpdatedDatasheets}
1445
- images={images}
1446
- setImages={setImages}
1447
- selectedImages={selectedImages}
1448
- setSelectedImages={setSelectedImages}
1449
- setShowVersionSelector={setShowVersionSelector}
1450
- headerData={product}
1451
- activeRetailer={activeRetailer}
1452
- setActiveRetailer={setActiveRetailer}
1453
- servicesData={servicesData ? servicesData : null}
1454
- percentRequired={activePercentage}
1455
- withChat={location?.state?.withChat}
1456
- chatType={location?.state?.chatType}
1457
- productSelected={productSelected}
1458
- token={token}
1459
- />
1460
- </div>
1461
- <div className="image-data-panel">
1462
- <ImagePreviewerv2
1463
- activeImage={images?.values ? images?.values[activeImage] : {}}
1464
- imagesArray={images}
1465
- setActiveImage={setActiveImage}
1466
- setShowModal={setShowModal}
1467
- showSelector={false}
1468
- />
1469
- </div>
1470
- </div>
1471
- <div
1472
- className={
1473
- "services-information-container " +
1474
- (imageLayout && activeTab === "Imágenes" ? "image-services" : "")
1475
- }
1476
- >
1477
- {loading ? (
1478
- <Loading />
1479
- ) : (
1480
- <>
1481
- {!imageLayout && activeTab === "Imágenes" && (
1482
- <div className="container-imagesM">
1483
- <div className="container-bars">
1484
- <MandatoryBar maximas={imageRules.maxImg}
1485
- minimas={imageRules.minImg}
1486
- obligatorias={imageRules.requiredImg}></MandatoryBar>
1487
- <RenameImagesBar></RenameImagesBar>
1488
- </div>
1489
- <GalleryHeaderv2
1490
- setSelectedImages={setSelectedImages}
1491
- checkAll={checkAll}
1492
- setCheckAll={setCheckAll}
1493
- />
1494
- </div>
1495
- )}
1496
- {activeTab === "Ficha técnica" &&
1497
- (product?.datasheet_status !== "NS" ? (
1498
- <div>
1499
- {datasheets[0]?.data?.map((dataGroup, index) => (
1500
- <InputGroupv2
1501
- key={index + "-" + activeRetailer.name}
1502
- articleId={product.id_article}
1503
- version={version}
1504
- activeSection={activeTab}
1505
- inputGroup={dataGroup}
1506
- dataInputs={datasheets[1]}
1507
- updatedDatasheets={updatedDatasheets}
1508
- setUpdatedDatasheets={setUpdatedDatasheets}
1509
- isShowbox={true}
1510
- activeRetailer={services[0][activeRetailer.id]}
1511
- groupData={services[0][activeRetailer.id].data}
1512
- setUpdatedBoxData={(e) => {
1513
- setBoxData(e);
1514
- }}
1515
- index={index}
1516
- //enableActions={enableActions(product.version_status)} ADD THIS VALIDATION
1517
- />
1518
- ))}
1519
- </div>
1520
- ) : (
1521
- <ScreenHeader
1522
- text={"No cuentas con este servicio"}
1523
- headerType={"input-name-header"}
1524
- />
1525
- ))}
1526
- {activeTab === "Descripción" &&
1527
- (product?.description_status !== "NS" ? (
1528
- <InputGroupv2
1529
- activeSection={activeTab}
1530
- inputGroup={descriptions[0]}
1531
- updatedDescriptions={updatedDescriptions}
1532
- setUpdatedDescriptions={setUpdatedDescriptions}
1533
- articleId={product?.id_article}
1534
- version={version}
1535
- isShowbox={false}
1536
- dinamicHeight={true}
1537
- showTooltip={true}
1538
- showMissingChars={true}
1539
- />
1540
- ) : (
1541
- <ScreenHeader
1542
- text={"No cuentas con este servicio"}
1543
- headerType={"input-name-header"}
1544
- />
1545
- ))}
1546
-
1547
- {activeTab === "Imágenes" &&
1548
- (product?.images_status !== "NS" ? (
1549
- <section className="container">
1550
- <div {...getRootProps({ className: "dropzone" })}>
1551
- <input {...getInputProps()} />
1552
- <aside>{thumbs()}</aside>
1553
- </div>
1554
- </section>
1555
- ) : (
1556
- <ScreenHeader
1557
- text={"No cuentas con este servicio"}
1558
- headerType={"input-name-header"}
1559
- />
1560
- ))}
1561
- </>
1562
- )}
1563
- </div>
1564
- {!(isRevision() && getSectionStatus()) && !revision && (
1565
- <div className="required-inputs-message">
1566
- <div>
1567
- <p>
1568
- Los atributos son requeridos por las plataformas de las
1569
- cadenas, es muy importante completar los campos requeridos ya
1570
- que pueden rechazar el producto por falta de información.
1571
- </p>
1572
- </div>
1573
- {inCart ? (
1574
- <button type="button">
1575
- <Link to="/checkout">
1576
- <p>Articulo en carrito</p>
1577
- <p>Ir a checkout</p>
1578
- </Link>
1579
- </button>
1580
- ) : (
1581
- <>
1582
- <SliderToolTip
1583
- infoIcon={InfoIcon}
1584
- slidefront={slidefront}
1585
- iconSize={"big-image"}
1586
- slidePosition={"top-slide"}
1587
- />
1588
- <Button
1589
- onClick={() => {
1590
- setShowContentohRequestModal &&
1591
- setShowContentohRequestModal(true);
1592
- }}
1593
- buttonType="general-default-button"
1594
- label="Enviar a Content-oh!"
1595
- />
1596
- </>
1597
- )}
1598
- </div>
1599
- )}
1600
- </div>
1601
- </div>
1602
- <CompleteServices
1603
- headerData={product}
1604
- activeRetailer={activeRetailer}
1605
- setActiveRetailer={setActiveRetailer}
1606
- showValidationButtons={isRevision() && getSectionStatus()}
1607
- showApproveRejectAll={isRevision() && getSectionStatus()}
1608
- approveAll={() => {
1609
- if (
1610
- origin === "RequestWithoutContentoh" &&
1611
- !user.is_retailer &&
1612
- (!product.id_order || !product.orderId)
1613
- ) {
1614
- setDataGenericModal((prev) => ({
1615
- ...prev,
1616
- button2: {
1617
- name: "Continuar",
1618
- action: () => evaluationToRetailer("A"),
1619
- },
1620
- }));
1621
- showGlobalModal("generic");
1622
- } else if (user.is_retailer) {
1623
- if (product.id_order || product.orderId) {
1624
- validateAll("A");
1625
- } else {
1626
- setDataGenericModal((prev) => ({
1627
- ...prev,
1628
- button2: {
1629
- name: "Continuar",
1630
- action: () => evaluationToRetailer("A"),
1631
- },
1632
- }));
1633
- showGlobalModal("generic");
1634
- }
1635
- } else {
1636
- validateAll("A");
1637
- }
1638
- }}
1639
- rejectAll={() => {
1640
- if (
1641
- origin === "RequestWithoutContentoh" &&
1642
- !user.is_retailer &&
1643
- (!product.id_order || !product.orderId)
1644
- ) {
1645
- return;
1646
- } else if (user.is_retailer) {
1647
- if (product.id_order || product.orderId) {
1648
- setValidatedAll(true);
1649
- setShowRejectModal(true);
1650
- } else {
1651
- setDataGenericModal((prev) => ({
1652
- ...prev,
1653
- button2: {
1654
- name: "Continuar",
1655
- action: () => evaluationToRetailer("R"),
1656
- },
1657
- }));
1658
- showGlobalModal("generic");
1659
- }
1660
- } else {
1661
- setShowRejectModal(true);
1662
- setValidatedAll(true);
1663
- }
1664
- }}
1665
- approve={() => sendToEvaluation("A")}
1666
- reject={() => {
1667
- setShowRejectModal(true);
1668
- }}
1669
- onClick={() => {
1670
- setShowContentohRequestModal &&
1671
- setShowContentohRequestModal(true);
1672
- }}
1673
-
1674
- ></CompleteServices>
1675
- {showModal && (
1676
- <ProductImageModalv2
1677
- images={images}
1678
- setShowModal={setShowModal}
1679
- approveRejectButtons={isRevision() && getSectionStatus()}
1680
- sendToFacilitator={sendToEvaluation}
1681
- />
1682
- )}
1683
- {message.length > 0 && !showSurvey && (
1684
- <GenericModal
1685
- buttonType={componentsArray.length > 0 && "delete-product"}
1686
- componentsArray={
1687
- componentsArray.length > 0
1688
- ? componentsArray
1689
- : [
1690
- <img key="1" src={succes} alt="success icon" />,
1691
- <ScreenHeader
1692
- key="2"
1693
- headerType={"retailer-name-header"}
1694
- text={message}
1695
- color={"white"}
1696
- />,
1697
- ]
1698
- }
1699
- onClick={() => setMessage("")}
1700
- />
1701
- )}
1702
- {globalModal && <GlobalModal close={closeGlobalModal} {...globalModal} />}
1703
- {showVersionSelector && (
1704
- <VersionSelectorv2
1705
- modalId={"version-selector"}
1706
- articleId={product.id_article}
1707
- setVersion={setVersion}
1708
- companyName={company.company_name}
1709
- currentVersion={version}
1710
- setShowVersionSelector={setShowVersionSelector}
1711
- jwt={token}
1712
- />
1713
- )}
1714
- {showRejectModal && (
1715
- <Modal
1716
- title={"Agregar mensaje de rechazo"}
1717
- show={showRejectModal}
1718
- customComponent={
1719
- <TagAndInputv2
1720
- inputType={"textarea"}
1721
- inputId={"modal-message-box"}
1722
- index={0}
1723
- color={"white"}
1724
- />
1725
- }
1726
- buttons={[
1727
- <ButtonV2
1728
- key={"btn-Cancelar"}
1729
- type={"white"}
1730
- label={"Cancelar"}
1731
- size={12}
1732
- onClick={() => {
1733
- setShowRejectModal(false);
1734
- }}
1735
- />,
1736
- <ButtonV2
1737
- key={"btn-Aceptar"}
1738
- type={"pink"}
1739
- label={"Aceptar"}
1740
- size={12}
1741
- onClick={async () => {
1742
- const body = document.querySelector(
1743
- "#modal-message-box .ql-container .ql-editor > p"
1744
- ).innerHTML;
1745
- const messages = [
1746
- { type: "message", value: body?.replace(/<.*?\/?>/gm, "") },
1747
- ];
1748
- await createComment(messages, activeRetailer.id);
1749
- validatedAll ? validateAll("R") : sendToEvaluation("R");
1750
- setShowRejectModal(false);
1751
- }}
1752
- />,
1753
- ]}
1754
- />
1755
- )}
1756
- </Container>
1757
- );
1758
- };
1
+ import { Container } from "./styles";
2
+ import { HeaderTopv2 } from "../../molecules/HeaderTopv2";
3
+ import { ImagePreviewerv2 } from "../../organisms/ImagePreviewerv2";
4
+ import { ImageDataTable } from "../../organisms/ImageDataTable";
5
+ import { FullProductNamev2 } from "../../organisms/FullProductNamev2";
6
+ import { FullTabsMenuv2 } from "../../organisms/FullTabsMenuv2";
7
+ import { useEffect, useReducer, useState, useCallback } from "react";
8
+ import { saveAs } from "file-saver";
9
+ import {
10
+ getRetailerServices,
11
+ getPercentage,
12
+ fetchUsers,
13
+ } from "../../../global-files/data";
14
+ import { ProductImageModalv2 } from "../../organisms/ProductImageModalv2";
15
+ import { useDropzone } from "react-dropzone";
16
+ import axios from "axios";
17
+ import { v4 as uuidv4 } from "uuid";
18
+ import AWS from "aws-sdk";
19
+ import { TagAndInputv2 } from "../../molecules/TagAndInputv2";
20
+ import { Button } from "../../atoms/GeneralButton";
21
+ import { Commentary } from "../../atoms/Commentary";
22
+ import { GenericModal } from "../../atoms/GenericModal";
23
+ import { ScreenHeader } from "../../atoms/ScreenHeader";
24
+ import { Loading } from "../../atoms/Loading";
25
+ import succes from "../../../assets/images/genericModal/genericModalCheck.svg";
26
+ import { Link } from "react-router-dom";
27
+ import face from "../../../assets/images/defaultImages/defaultProfileImage.svg";
28
+ import errorModal from "../../../assets/images/genericModal/errorModal.svg";
29
+ import { GlobalModal } from "../../organisms/GlobalModal/index";
30
+ import { SliderToolTip } from "../../atoms/SliderToolTip";
31
+ import InfoIcon from "../../../assets/images/sliderToolTip/infoIcon.svg";
32
+ import Slide1_1 from "../../../assets/images/sliderToolTip/slide1.svg";
33
+ import Slide1_2 from "../../../assets/images/sliderToolTip/slide2.svg";
34
+ import Slide1_3 from "../../../assets/images/sliderToolTip/slide3.svg";
35
+ import Slide1_4 from "../../../assets/images/sliderToolTip/slide4.svg";
36
+ import Slide1_5 from "../../../assets/images/sliderToolTip/slide5.svg";
37
+ import { useCloseModal } from "../../../global-files/customHooks";
38
+ import { createMessage, sendMessage } from "../RetailerProductEdition/utils";
39
+ import { Modal } from "../../organisms/Modal";
40
+ import { ButtonV2 } from "../../atoms/ButtonV2";
41
+ import { CompleteServices } from "../../organisms/CompleteServices";
42
+ import { InputGroupv2 } from "../../organisms/InputGroupv2";
43
+ import { VersionSelectorv2 } from "../../organisms/VersionSelectorv2";
44
+ import { MandatoryBar } from "../../organisms/MandatoryBar";
45
+ import { GalleryHeaderv2 } from "../../molecules/GalleryHeaderv2";
46
+ import { GalleryElementv2 } from "../../molecules/GalleryElementv2";
47
+ import { RenameImagesBar } from "../../organisms/RenameImagesBar";
48
+
49
+ const reducerImages = (state, action) => {
50
+ let { values, attrForImgs, inputsByRetailer } = state;
51
+ switch (action.action) {
52
+ case "init":
53
+ const newInputsByRetailer = {};
54
+ action?.init?.inputsByRetailer?.forEach((inputs) => {
55
+ inputs?.forEach((input) => {
56
+ if (!newInputsByRetailer[`${input.id_retailer}`])
57
+ newInputsByRetailer[`${input.id_retailer}`] = [];
58
+ newInputsByRetailer[`${input.id_retailer}`].push(input);
59
+ });
60
+ });
61
+ inputsByRetailer = newInputsByRetailer;
62
+ return {
63
+ ...action.init,
64
+ inputsByRetailer,
65
+ valuesInitial: action.init.values,
66
+ inputsInitial: action.init.inputs,
67
+ };
68
+ case "addImg":
69
+ values = [...values, action.img];
70
+ return { ...state, values };
71
+ case "changeImageInfo":
72
+ values[action.index][action.attribute] = action.value;
73
+ return { ...state, values };
74
+ case "changeAttrValue":
75
+ const index = attrForImgs.general.findIndex((f) => (f.id = action.id));
76
+ if (index !== -1) {
77
+ attrForImgs.general[index].value = action.value;
78
+ }
79
+
80
+ return { ...state, attrForImgs, values };
81
+ case "deleteImage":
82
+ values = values.filter(
83
+ (value) => action.selectedImages.indexOf(value) === -1
84
+ );
85
+ return { ...state, values };
86
+ case "orderImages": {
87
+ let { inputsByRetailer, valuesInitial, inputsInitial, inputs } = state;
88
+ try {
89
+ const orderedImages = [];
90
+ const imageIdArray = [];
91
+ if (action?.retailerId && !inputsByRetailer[action.retailerId])
92
+ inputsByRetailer[action.retailerId] = [];
93
+ action.retailerId &&
94
+ inputsByRetailer[action.retailerId]?.filter((input) => {
95
+ imageIdArray.push(input.id_image);
96
+ valuesInitial.forEach((value) => {
97
+ if (value.image_id === input.id_image) orderedImages.push(value);
98
+ });
99
+ });
100
+
101
+ inputs = inputsInitial?.filter((input) =>
102
+ imageIdArray.includes(input.id)
103
+ );
104
+
105
+ values = orderedImages.length > 0 ? orderedImages : [];
106
+ } catch (error) {
107
+ console.log(error);
108
+ }
109
+ return { ...state, values, inputs };
110
+ }
111
+ default:
112
+ return state;
113
+ }
114
+ };
115
+ const S3_BUCKET = process.env.REACT_APP_IMAGES_BUCKET;
116
+ const REGION = "us-east-1";
117
+
118
+ AWS.config.update({
119
+ accessKeyId: process.env.REACT_APP_KUTS3,
120
+ secretAccessKey: process.env.REACT_APP_AKUTS3,
121
+ });
122
+
123
+ const myBucket = new AWS.S3({
124
+ params: { Bucket: S3_BUCKET },
125
+ region: REGION,
126
+ });
127
+
128
+ export const ProductEditionv2 = ({
129
+ tabsSections,
130
+ productSelected = {},
131
+ productToEdit,
132
+ user = {},
133
+ location = {},
134
+ token,
135
+ revision = false,
136
+ setShowContentohRequestModal,
137
+ showSurvey,
138
+ company,
139
+ addToCart,
140
+ }) => {
141
+ const [activeTab, setActiveTab] = useState("Descripción");
142
+ const [activeImage, setActiveImage] = useState();
143
+ const [imageLayout, setImageLayout] = useState(false);
144
+ const [headerTop, setHeaderTop] = useState(0);
145
+ const [descriptions, setDescriptions] = useState([]);
146
+ const [datasheets, setDatasheets] = useState([]);
147
+ const [images, setImages] = useReducer(reducerImages, {});
148
+ const [showModal, setShowModal] = useState(false);
149
+ const [boxData, setBoxData] = useState();
150
+ const [imageRules, setImageRules] = useState({
151
+ maxImg: 0,
152
+ minImg: 0,
153
+ requiredImg: 0,
154
+ });
155
+ const { getRootProps, getInputProps } = useDropzone({
156
+ accept: "image/*",
157
+ noKeyboard: true,
158
+ multiple: true,
159
+ noClick: true,
160
+ onDrop: (acceptedFiles) => {
161
+ const newImages = [];
162
+ acceptedFiles.map((file) => {
163
+ const reader = new FileReader();
164
+ reader.fileName = file.name;
165
+ reader.onload = async function (e) {
166
+ const ext = e.srcElement.fileName.split(".");
167
+ const img = new Image();
168
+ img.src = e.target.result;
169
+ setTimeout(() => {
170
+ const width = img.width;
171
+ const height = img.height;
172
+ const newImg = {
173
+ action: "addImg",
174
+ img: {
175
+ src: e.target.result,
176
+ name: e.target.fileName,
177
+ ext: ext[ext.length - 1],
178
+ width: width,
179
+ height: height,
180
+ },
181
+ };
182
+ setImages(newImg);
183
+ }, 500);
184
+ };
185
+ reader.onerror = function (error) {
186
+ console.log("dropzoneError: ", error);
187
+ };
188
+ reader.readAsDataURL(file);
189
+ return file;
190
+ });
191
+ },
192
+ });
193
+ const [updatedDatasheets, setUpdatedDatasheets] = useState([]);
194
+ const [updatedDescriptions, setUpdatedDescriptions] = useState([]);
195
+ const [imagesUploaded, setImagesUploaded] = useState(false);
196
+ const [dataImages, setDataImages] = useState();
197
+ const [percentages, setPercentages] = useState(
198
+ product?.retailers
199
+ ? new Array(product?.retailers?.length).fill({ percentage: 0 })
200
+ : new Array(product?.retailersAvailable?.length).fill({ percentage: 0 })
201
+ );
202
+ const [activePercentage, setActivePercentage] = useState(0);
203
+ const [activeRetailer, setActiveRetailer] = useState({});
204
+ const [services, setServices] = useState([]);
205
+ const [servicesData, setServicesData] = useState([]);
206
+ const [message, setMessage] = useState("");
207
+ const [product, setProduct] = useState(
208
+ JSON.parse(sessionStorage.getItem("productSelected"))
209
+ ? JSON.parse(sessionStorage.getItem("productSelected"))
210
+ : productSelected
211
+ );
212
+ const [productEdit, setProductEdit] = useState(
213
+ JSON.parse(sessionStorage.getItem("productEdit"))
214
+ ? JSON.parse(sessionStorage.getItem("productEdit"))
215
+ : productToEdit
216
+ );
217
+ const [version, setVersion] = useState(product?.version);
218
+ const [comments] = useState({});
219
+ const [comment, setComment] = useState("");
220
+ const [crossComment, setCrossComment] = useState(false);
221
+ const [userGroups, setUserGroups] = useState([]);
222
+ const [assig, setAssig] = useState({});
223
+ const [selectedImages, setSelectedImages] = useState([]);
224
+ const [componentsArray, setComponentsArray] = useState([]);
225
+ const [checkAll, setCheckAll] = useState(false);
226
+ const isRetailer = user?.is_retailer;
227
+ const [loading, setLoading] = useState(true);
228
+ const [validatedAll, setValidatedAll] = useState(false);
229
+ const [showRejectModal, setShowRejectModal] = useState(false);
230
+
231
+ const [origin, setOrigin] = useState({
232
+ "Ficha técnica": null,
233
+ Descripción: null,
234
+ Imágenes: null,
235
+ });
236
+
237
+ const [inCart, setInCart] = useState(false);
238
+ const [dataGenericModal, setDataGenericModal] = useState({
239
+ message: "¿Estás seguro de continuar?",
240
+ detail: ` ${
241
+ user.is_retailer
242
+ ? "Asegurate de haber revisado las tres secciones"
243
+ : "Envíar el producto a la cadena"
244
+ }`,
245
+ button1: {
246
+ name: "Cerrar",
247
+ action: closeGlobalModal,
248
+ },
249
+ button2: {
250
+ name: "Continuar",
251
+ action: () => evaluationToRetailer(false),
252
+ },
253
+ img: face,
254
+ });
255
+ const [socketType, setSocketType] = useState(null);
256
+ const [saving, setSaving] = useState(loading);
257
+ const [retailerStatus, setRetailerStatus] = useState(
258
+ product.statusByRetailer
259
+ );
260
+ const [showVersionSelector, setShowVersionSelector] =
261
+ useCloseModal("version-selector");
262
+ const [globalModal, setGlobalModal] = useState();
263
+
264
+ const updateAuditStatus = async (status) => {
265
+ const productTemp = product;
266
+ productTemp.article_status = status;
267
+ productTemp.datasheet_status = status;
268
+ productTemp.description_status = status;
269
+ productTemp.images_status = status;
270
+
271
+ const retailerStatusCopy = { ...retailerStatus };
272
+ const conceptArray = ["description", "datasheet", "images"];
273
+ Object.keys(retailerStatusCopy).forEach((key) => {
274
+ conceptArray.forEach((concept) => {
275
+ if (retailerStatusCopy[key][concept]) {
276
+ retailerStatusCopy[key][concept] = status;
277
+ }
278
+ });
279
+ });
280
+ setRetailerStatus(retailerStatusCopy);
281
+ productTemp.statusByRetailer = retailerStatusCopy;
282
+ setProduct(productTemp);
283
+ sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
284
+ setProductEdit({
285
+ ArticleId: productTemp.id_article,
286
+ idCategory: productTemp.article.id_category,
287
+ product: productTemp,
288
+ });
289
+ sessionStorage.setItem(
290
+ "productEdit",
291
+ JSON.stringify({
292
+ ArticleId: productTemp.id_article,
293
+ idCategory: productTemp.article.id_category,
294
+ product: productTemp,
295
+ })
296
+ );
297
+ await loadData();
298
+ };
299
+
300
+ const addCart = async (retailers) => {
301
+ const { article, version } = product;
302
+ const articleToOrder = [
303
+ {
304
+ articleId: article.id_article,
305
+ version,
306
+ userId: user.id_user,
307
+ discount: 0,
308
+ subtotal: 0,
309
+ companyId: user.id_company,
310
+ datasheet: retailers,
311
+ description: retailers,
312
+ image: retailers,
313
+ attributeTranslations: false,
314
+ descriptionTranslations: false,
315
+ build: "[]",
316
+ manual: "[]",
317
+ userCreated: user.id_user,
318
+ },
319
+ ];
320
+ let modatlType = "addedToCartError";
321
+ if (addToCart) {
322
+ const resCart = await addToCart({ data: articleToOrder });
323
+ if (resCart.data.statusCode === 200) {
324
+ modatlType = "addedToCart";
325
+ }
326
+ }
327
+ showGlobalModal(modatlType);
328
+ };
329
+
330
+ const closeGlobalModal = () => setGlobalModal();
331
+
332
+ const seenByProvider = async () => {
333
+ const productTemp = product;
334
+ const articleId = productTemp.id_article;
335
+ const orderId = productTemp.id_order ?? productTemp.orderId;
336
+ const promises = [];
337
+ const conceptArray = ["description", "datasheet", "images"];
338
+ conceptArray.forEach((concept) => {
339
+ const sectionStatusKey = `${concept}_status`;
340
+ const evalStatus = product[sectionStatusKey] || product?.version_status;
341
+ const data = { articleId, orderId, concept, evalStatus };
342
+ promises.push(
343
+ axios.put(`${process.env.REACT_APP_SEND_EVAL}`, data, {
344
+ headers: {
345
+ Authorization: token,
346
+ },
347
+ })
348
+ );
349
+ });
350
+ await Promise.all(promises);
351
+ closeGlobalModal();
352
+ await updateAuditStatus("FAP");
353
+ };
354
+
355
+ const showGlobalModal = useCallback(
356
+ (type) => {
357
+ const formatter = new Intl.ListFormat("es", { type: "conjunction" });
358
+ switch (type) {
359
+ case "generic":
360
+ setGlobalModal(dataGenericModal);
361
+ break;
362
+ case "commentsSent":
363
+ setGlobalModal({
364
+ message: "Gracias, tus comentarios fueron entregados.",
365
+ detail: "Trabajaremos en conjunto para resolverlo.",
366
+ button1: {
367
+ name: "Cerrar",
368
+ action: closeGlobalModal,
369
+ },
370
+ img: face,
371
+ textArea: false,
372
+ });
373
+ break;
374
+ case "RAC":
375
+ const servicesRejected = [];
376
+ const translateServices = {
377
+ datasheet: "ficha técnica",
378
+ description: "descripción",
379
+ images: "imágenes",
380
+ };
381
+ Object.keys(translateServices).forEach((service) => {
382
+ if (product[`${service}_status`] === "RAC") {
383
+ servicesRejected.push(translateServices[service]);
384
+ }
385
+ });
386
+ const plural = ["Los servicios", "cumplen"];
387
+ const singular = ["El servicio", "cumple"];
388
+ const grammar = servicesRejected.length > 1 ? plural : singular;
389
+ const formatted = formatter.format(servicesRejected);
390
+ const text1 = `${grammar[0]} de ${formatted} no ${grammar[1]} con lo que la cadena necesita.`;
391
+ const text2 = `¡Solicita el servicio de Content-oh! para completarlo!`;
392
+ const retailers = product.retailersWithService.map((retailer) =>
393
+ Number(retailer)
394
+ );
395
+ setGlobalModal({
396
+ message:
397
+ "Tu producto no cumple con los requerimientos de la cadena",
398
+ customComponent: (
399
+ <>
400
+ <p className="generic-text">
401
+ {text1}
402
+ <br />
403
+ <br />
404
+ {text2}
405
+ </p>
406
+ </>
407
+ ),
408
+ button1: {
409
+ name: "Continuar",
410
+ action: async () => await seenByProvider(),
411
+ },
412
+ button2: {
413
+ name: "Solicitar a Content-oh!",
414
+ action: async () => {
415
+ await addCart(retailers);
416
+ await seenByProvider();
417
+ },
418
+ },
419
+ img: errorModal,
420
+ });
421
+ break;
422
+ case "AAC":
423
+ setGlobalModal({
424
+ message: "Felicidades",
425
+ detail: "Tu producto cumple con los requerimientos de la cadena.",
426
+ button1: {
427
+ name: "Continuar",
428
+ action: async () => await seenByProvider(),
429
+ },
430
+ img: face,
431
+ });
432
+ break;
433
+ case "addedToCartError":
434
+ setGlobalModal({
435
+ detail:
436
+ "Parece que algo salió mal al intentar añadir tu producto a tu carrito.",
437
+ button1: {
438
+ name: "Continuar",
439
+ action: closeGlobalModal,
440
+ },
441
+ });
442
+ break;
443
+ case "addedToCart":
444
+ setGlobalModal({
445
+ message: "Producto añadido",
446
+ detail: "Tu producto se añadió al carrito de compras.",
447
+ button1: {
448
+ name: "Continuar",
449
+ action: closeGlobalModal,
450
+ },
451
+ img: face,
452
+ });
453
+ break;
454
+ default:
455
+ closeGlobalModal();
456
+ break;
457
+ }
458
+ },
459
+ [activeTab, dataGenericModal, product]
460
+ );
461
+
462
+ useEffect(() => {
463
+ checkAll && setSelectedImages(images.values);
464
+ }, [checkAll]);
465
+
466
+ useEffect(() => {
467
+ if (showModal) {
468
+ setActiveTab("Imágenes");
469
+ }
470
+ }, [showModal]);
471
+
472
+ useEffect(() => {
473
+ setOrigin({
474
+ "Ficha técnica": location?.state?.origin,
475
+ Descripción: location?.state?.origin,
476
+ Imágenes: location?.state?.origin,
477
+ });
478
+ }, [location?.state?.origin]);
479
+
480
+ const loadData = async () => {
481
+ const services = await getRetailerServices(
482
+ product?.id_article || product?.article?.id_article,
483
+ product?.article?.company_name || product?.categoryName,
484
+ parseInt(product?.article?.id_category || product?.id_category),
485
+ version,
486
+ token
487
+ );
488
+ //Converts the data inside the datasheets object to array
489
+ setServices(services);
490
+ await getServices();
491
+
492
+ setImages({ action: "init", init: services[2] });
493
+ if (services[2]?.values?.length > 0) setActiveImage(0);
494
+ getPercentage({ data: [product] }).then((res) => setPercentages(res[0]));
495
+ setLoading(false);
496
+ };
497
+
498
+ const getRetailerImageRules = async (product, version, token) => {
499
+ const services = await getRetailerServices(
500
+ product?.id_article || product?.article?.id_article,
501
+ product?.article?.company_name || product?.categoryName,
502
+ parseInt(product?.article?.id_category || product?.id_category),
503
+ version,
504
+ token
505
+ );
506
+
507
+ const rulesToImgByRetailer = services[2]?.rulesToImgByRetailer;
508
+ const retailerId = services[2]?.retailers?.[0]?.id;
509
+ const maxImg = rulesToImgByRetailer?.[retailerId]?.maxImg || 0;
510
+ const minImg = rulesToImgByRetailer?.[retailerId]?.minImg || 0;
511
+ const requiredImg = rulesToImgByRetailer?.[retailerId]?.requiredImg || 0;
512
+
513
+ // Actualizar el estado con las reglas de imágenes
514
+ setImageRules({ maxImg, minImg, requiredImg });
515
+ };
516
+
517
+ useEffect(() => {
518
+ getRetailerImageRules(product, version, token);
519
+ }, [product, version, token]);
520
+
521
+
522
+ const getServices = async () => {
523
+ const productInOrder = product.id_order || product.orderId;
524
+ const idArticle = product?.id_article || product?.article?.id_article;
525
+ let retailers = product.retailers || product.retailersAvailable;
526
+ let active = null;
527
+ if (isRevision() || productInOrder) {
528
+ const servicesResponse = await axios.get(
529
+ `${
530
+ process.env.REACT_APP_SERVICES_ENDPOINT
531
+ }?articleId=${idArticle}&orderId=${
532
+ product?.id_order ?? product.orderId
533
+ }&end=true`
534
+ );
535
+ const parsedResponse = JSON.parse(servicesResponse?.data?.body).data;
536
+ const retailerResponse = parsedResponse?.map((srv) => srv.id_retailer);
537
+ active = retailers?.find((retailer) =>
538
+ retailerResponse.includes(retailer.id)
539
+ );
540
+ setServicesData(parsedResponse);
541
+ }
542
+ retailers &&
543
+ !activeRetailer.id &&
544
+ setActiveRetailer(active ? active : retailers[0]);
545
+ };
546
+
547
+ const isRevision = () => {
548
+ if (productEdit) {
549
+ const concept = getConcept(activeTab);
550
+ const isRetailer = user.is_retailer === 1;
551
+ const currentService = productEdit?.product[`${concept}_status`];
552
+ const orgn = origin[activeTab];
553
+ const revision = [
554
+ "RequestWithContentoh",
555
+ "RequestWithoutContentoh",
556
+ "Contentoh",
557
+ ].includes(orgn);
558
+ if (isRetailer) {
559
+ if (revision && currentService === "AP") return true;
560
+ } else {
561
+ const { product } = productEdit;
562
+ const isRequestWithoutContentoh =
563
+ orgn === "RequestWithoutContentoh" &&
564
+ (["R", "CA"].includes(currentService) ||
565
+ (currentService === "RCA" &&
566
+ (!product.id_order || !product.orderId)));
567
+ const isRequestWithContentoh =
568
+ orgn === "RequestWithContentoh" && currentService === "AA";
569
+ const isContentoh = orgn === "Contentoh" && currentService === "AA";
570
+ if (isContentoh || isRequestWithoutContentoh || isRequestWithContentoh)
571
+ return true;
572
+ }
573
+ }
574
+ return false;
575
+ };
576
+
577
+ const getCart = async () => {
578
+ const res = await axios.get(process.env.REACT_APP_CART, {
579
+ headers: {
580
+ Authorization: token,
581
+ },
582
+ });
583
+ const arr = JSON.parse(res.data.body).data.map((e) => e.article_id);
584
+ setInCart(arr.some((e) => e.articleId === product.id_article));
585
+ };
586
+
587
+ useEffect(() => {
588
+ sessionStorage.setItem("user", JSON.stringify(user));
589
+ loadData();
590
+ getCart();
591
+ fetchUsers(token).then((res) => setUserGroups(res));
592
+ setImages({ action: "orderImages", retailerId: activeRetailer.id });
593
+ if (["RAC", "AAC"].includes(product.article_status))
594
+ showGlobalModal(product.article_status);
595
+ }, [product, version]);
596
+
597
+ useEffect(() => {
598
+ setImages({ action: "orderImages", retailerId: activeRetailer.id });
599
+ }, [activeRetailer]);
600
+
601
+ const loadAssignations = (currentProduct) => {
602
+ setAssig(product?.asignations);
603
+ };
604
+
605
+ useEffect(() => {
606
+ loadAssignations(product);
607
+ }, [userGroups]);
608
+
609
+ useEffect(() => {
610
+ const productTemp = product;
611
+ const retailers = productTemp?.retailersAvailable || productTemp?.retailers;
612
+ if (Object.keys(percentages[productTemp.id_article] ?? {})?.length > 0) {
613
+ retailers?.forEach((retailer, index) => {
614
+ retailer["percentage"] = Number(
615
+ percentages[productTemp.id_article][retailer.id]?.percentageRequired
616
+ );
617
+ });
618
+ }
619
+ setProduct(productTemp);
620
+ retailers && setActivePercentage(retailers[0]?.percentage);
621
+ }, [percentages]);
622
+
623
+ const loadInputs = () => {
624
+ if (services.length > 0) {
625
+ if (services[0][activeRetailer.id]?.data)
626
+ services[0][activeRetailer.id].data = Object.values(
627
+ services[0][activeRetailer.id].data
628
+ );
629
+ setActivePercentage(Math.round(activeRetailer?.percentage, 0));
630
+
631
+ const datagroups = services[0][activeRetailer.id];
632
+ const inputs = services[0]?.inputs;
633
+ const descriptions = services[1]?.filter(
634
+ (service) => service?.id === activeRetailer?.id
635
+ );
636
+ setDatasheets([datagroups, inputs]);
637
+ setDescriptions(descriptions);
638
+ }
639
+ };
640
+
641
+ useEffect(() => {
642
+ loadInputs();
643
+ activeRetailer.id &&
644
+ setImages({ action: "orderImages", retailerId: activeRetailer.id });
645
+ }, [servicesData, activeRetailer, services]);
646
+
647
+ const thumbs = () => {
648
+ const imageInputs = socketType?.slice();
649
+ const imageType = images?.imageType?.map((e) => ({
650
+ value: e?.id,
651
+ name: e?.name,
652
+ }));
653
+ const imagePackagingType = images?.imagePackagingType?.map((e) => ({
654
+ value: e?.id,
655
+ name: e?.name,
656
+ }));
657
+ return images?.values?.map((image, index) => (
658
+ <GalleryElementv2
659
+ setCheckAll={setCheckAll}
660
+ key={index}
661
+ image={image}
662
+ gridLayout={imageLayout}
663
+ id={"gallery-element-" + index}
664
+ index={index + "-" + image.name}
665
+ number={index}
666
+ imageType={imageType}
667
+ imagePackagingType={imagePackagingType}
668
+ imageInputs={imageInputs}
669
+ changeImage={setImages}
670
+ selectedImages={selectedImages}
671
+ setSelectedImages={setSelectedImages}
672
+ />
673
+ ));
674
+ };
675
+
676
+ useEffect(() => {
677
+ const imageInputs = images?.inputs?.map((e) => ({
678
+ value: e?.id,
679
+ name: e?.name,
680
+ required: e?.required,
681
+ active: images?.values.some((value) => value?.image_id === e?.id),
682
+ }));
683
+ setSocketType(imageInputs);
684
+ }, [images]);
685
+
686
+ const saveDescriptions = async () => {
687
+ setLoading(true);
688
+ const dataObject = {
689
+ articleId: product?.id_article,
690
+ articleData: updatedDescriptions,
691
+ };
692
+ if (product?.orderId) dataObject["orderId"] = product?.orderId;
693
+ try {
694
+ const res = await axios.put(
695
+ `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?description=true&version=${version}`,
696
+ dataObject,
697
+ {
698
+ headers: {
699
+ Authorization: token,
700
+ },
701
+ }
702
+ );
703
+ if (res.data.statusCode === 200) {
704
+ setUpdatedDescriptions([]);
705
+ setMessage("Descripciones guardadas con éxito");
706
+ await loadData();
707
+ }
708
+ } catch (error) {
709
+ console.log(error);
710
+ }
711
+ };
712
+
713
+ const saveDatasheets = async () => {
714
+ const parseBoxData = [];
715
+ Object.entries(boxData).forEach(([, box], index) => {
716
+ const { value } = box;
717
+ const attributesIds = Object.keys(value);
718
+ attributesIds.forEach((attributeId) => {
719
+ const boxId = index + 1;
720
+ const valueOfAtribute = value[attributeId];
721
+ parseBoxData.push({
722
+ attributeId,
723
+ value: valueOfAtribute,
724
+ boxId,
725
+ })
726
+ });
727
+ });
728
+
729
+ const dataObject = {
730
+ articleId: product?.id_article,
731
+ articleData: updatedDatasheets,
732
+ ...(parseBoxData.length > 0 && { boxData: parseBoxData }),
733
+ };
734
+
735
+ if (product?.orderId) dataObject["orderId"] = product?.orderId;
736
+ try {
737
+ const res = await axios.put(
738
+ `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?datasheet=true&version=${version}`,
739
+ dataObject,
740
+ {
741
+ headers: {
742
+ Authorization: token,
743
+ },
744
+ }
745
+ );
746
+ if (res.data.statusCode === 200) {
747
+ setUpdatedDatasheets([]);
748
+ setMessage("Fichas técnicas guardadas");
749
+ await loadData();
750
+ }
751
+ } catch (error) {
752
+ console.log(error);
753
+ }
754
+ console.log(dataObject)
755
+ };
756
+
757
+ const updateImages = useCallback(async () => {
758
+ const imagesList = images?.values?.slice();
759
+ const imagesListTemp = imagesList?.reduce((acc, image) => {
760
+ acc[image?.image_id] = ++acc[image?.image_id] || 0;
761
+ return acc;
762
+ }, {});
763
+
764
+ const duplicated = imagesList?.filter((image) => {
765
+ return imagesListTemp[image?.image_id];
766
+ });
767
+ console.log(imagesList)
768
+ const attrForImgs = Object.values(images?.attrForImgs);
769
+ attrForImgs.pop();
770
+ const data = {
771
+ articleId: product?.id_article,
772
+ attrReqImgs: attrForImgs?.map((e) => ({
773
+ attrId: e[0]?.id,
774
+ value: e[0]?.value,
775
+ })),
776
+ articleData: imagesList?.filter((e) => !e.id),
777
+ updateImages: imagesList?.filter((e) => e.id),
778
+ };
779
+ if (product?.orderId) data["orderId"] = product?.orderId;
780
+ let valid =
781
+ data?.articleData?.length === 0
782
+ ? true
783
+ : data?.articleData?.every((e, i) => {
784
+ if (e?.image_id && e?.packing_type && e?.image_type) {
785
+ return true;
786
+ }
787
+ return false;
788
+ });
789
+ if (valid && data?.updateImages?.length > 0 && duplicated?.length === 0) {
790
+ valid = data?.updateImages?.every((e, i) => {
791
+ if (e?.image_id && e?.packing_type && e?.image_type) {
792
+ return true;
793
+ }
794
+ return false;
795
+ });
796
+ }
797
+ if (valid && duplicated?.length === 0) {
798
+ setLoading(true);
799
+ try {
800
+ data?.articleData?.forEach((e) => {
801
+ e.uuid = uuidv4();
802
+ });
803
+ setDataImages(data);
804
+ if (data?.articleData?.length > 0) {
805
+ setImagesUploaded(false);
806
+ const promiseArray = [];
807
+ data?.articleData?.forEach((e) => {
808
+ const file = Buffer.from(
809
+ e.src.replace(/^data:image\/\w+;base64,/, ""),
810
+ "base64"
811
+ );
812
+ const params = {
813
+ ACL: "public-read",
814
+ Body: file,
815
+ Bucket: S3_BUCKET,
816
+ Key: `id-${data.articleId}/${version}/${e?.image_id}-${e?.uuid}.${e?.ext}`,
817
+ };
818
+ promiseArray.push(myBucket.putObject(params).promise());
819
+ });
820
+ await Promise.all(promiseArray);
821
+ setImagesUploaded(true);
822
+ } else {
823
+ setImagesUploaded(true);
824
+ }
825
+ } catch (err) {
826
+ console.log(err);
827
+ // setMainLoading(false);
828
+ }
829
+ } else {
830
+ // setMainLoading(false);
831
+ setMessage(
832
+ "Completa los campos que solicita cada una de la imágenes o hay imágenes con el mismo tipo de toma.\nRecuerda hay campos obligatorios y no podras avanzar si no estan completos."
833
+ );
834
+ }
835
+ // eslint-disable-next-line react-hooks/exhaustive-deps
836
+ }, [images, imagesUploaded]);
837
+
838
+ useEffect(async () => {
839
+ if (imagesUploaded) {
840
+ dataImages.articleData = dataImages?.articleData.map((e) => {
841
+ delete e.src;
842
+ e.imageID = e.image_id;
843
+ e.packingType = e.packing_type;
844
+ e.imageType = e.image_type;
845
+ if (product?.orderId) e["orderId"] = product?.orderId;
846
+ return e;
847
+ });
848
+ try {
849
+ const res = await axios.put(
850
+ `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?image=true&version=${version}`,
851
+ dataImages,
852
+ {
853
+ headers: {
854
+ Authorization: token,
855
+ },
856
+ }
857
+ );
858
+ if (res.data.statusCode === 200) {
859
+ setImages({});
860
+ setMessage("Imágenes guardadas con éxito");
861
+ sessionStorage.removeItem("imagesList");
862
+ await loadData();
863
+ }
864
+ } catch (error) {
865
+ console.log(error);
866
+ }
867
+ }
868
+ }, [dataImages, imagesUploaded]);
869
+
870
+ const getConcept = (tab) => {
871
+ switch (tab) {
872
+ case "Descripción":
873
+ return "description";
874
+ case "Ficha técnica":
875
+ return "datasheet";
876
+ case "Imágenes":
877
+ return "images";
878
+ }
879
+ };
880
+
881
+ const createComment = async (messages = [], retailerId) => {
882
+ const data = {
883
+ paramsBody: {
884
+ id: product.article.id_article || productEdit.ArticleId,
885
+ version: version,
886
+ items: messages,
887
+ retailerId: retailerId,
888
+ status: product.status || productEdit.product.status,
889
+ },
890
+ paramsHeader: { Authorization: token },
891
+ };
892
+ setMessage("");
893
+ return sendMessage(data);
894
+ };
895
+
896
+ useEffect(() => {
897
+ setComment(comments[activeTab]);
898
+ }, [activeTab]);
899
+
900
+ const commentRevised = async () => {
901
+ const data = {
902
+ commentId: comment.id,
903
+ };
904
+ await axios.put(`${process.env.REACT_APP_COMMENTS_ENDPOINT}`, data, {
905
+ headers: {
906
+ Authorization: token,
907
+ },
908
+ });
909
+ setCrossComment(false);
910
+ };
911
+
912
+ const setAssignation = async (assignationType, assignationId) => {
913
+ let concept = "";
914
+ switch (activeTab) {
915
+ case "Ficha técnica":
916
+ concept = "datasheet";
917
+ break;
918
+ case "Imágenes":
919
+ concept = "images";
920
+ break;
921
+
922
+ default:
923
+ concept = "description";
924
+ break;
925
+ }
926
+ const productTemp = product;
927
+ productTemp.article[`id_${concept}_${assignationType}`] = assignationId;
928
+ const data = {
929
+ articleList: [
930
+ {
931
+ orderId: product.orderId,
932
+ articleId: product?.id_article,
933
+ },
934
+ ],
935
+ concept: concept,
936
+ userId: assignationId,
937
+ };
938
+ await axios({
939
+ method: "post",
940
+ url: process.env.REACT_APP_ASSIGNATIONS_ENDPOINT,
941
+ data,
942
+ headers: {
943
+ Authorization: token,
944
+ },
945
+ });
946
+ loadAssignations(productTemp);
947
+ sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
948
+ };
949
+
950
+ const downloadImages = () => {
951
+ selectedImages.length > 0
952
+ ? selectedImages.forEach((e) => {
953
+ if (e.id) {
954
+ saveAs(
955
+ `https://${process.env.REACT_APP_IMAGES_BUCKET}.s3.amazonaws.com/${e.srcDB}`,
956
+ `${product.upc || product.article.upc}_${e.name}.${e.ext}`
957
+ );
958
+ }
959
+ })
960
+ : images?.values?.forEach((e) => {
961
+ if (e.id) {
962
+ saveAs(
963
+ `https://${process.env.REACT_APP_IMAGES_BUCKET}.s3.amazonaws.com/${e.srcDB}`,
964
+ `${product.upc || product.article.upc}_${e.name}.${e.ext}`
965
+ );
966
+ }
967
+ });
968
+ };
969
+
970
+ const deleteImages = () => {
971
+ setLoading(true);
972
+ const { values } = images;
973
+ const imgsInBack = [];
974
+
975
+ selectedImages.forEach((selectedImg) => {
976
+ if (selectedImg.id) imgsInBack.push(selectedImg);
977
+ });
978
+
979
+ const imgsLeft = values.filter(
980
+ (value) => selectedImages.indexOf(value) === -1
981
+ );
982
+
983
+ if (imgsInBack.length > 0) {
984
+ const data = {
985
+ articleId: product?.id_article || product?.article?.id_article,
986
+ deleteImages: imgsInBack,
987
+ };
988
+ try {
989
+ axios.put(
990
+ `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?image=true&version=${version}`,
991
+ data,
992
+ {
993
+ headers: { Authorization: token },
994
+ }
995
+ );
996
+ } catch (err) {
997
+ console.log(err);
998
+ }
999
+ }
1000
+
1001
+ setImages({
1002
+ action: "deleteImage",
1003
+ selectedImages,
1004
+ });
1005
+
1006
+ setTimeout(() => {
1007
+ setLoading(false);
1008
+ }, 500);
1009
+
1010
+ setMessage("");
1011
+ setComponentsArray([]);
1012
+ };
1013
+
1014
+ const askToDeleteImages = () => {
1015
+ if (selectedImages.length > 0) {
1016
+ setMessage("¿Está seguro de eliminar las imágenes seleccionadas?");
1017
+ setComponentsArray([
1018
+ <ScreenHeader
1019
+ key={"1"}
1020
+ text={"¿Está seguro de eliminar las imágenes seleccionadas?"}
1021
+ headerType="retailer-name-header"
1022
+ color={"white"}
1023
+ />,
1024
+ <Button
1025
+ key={"2"}
1026
+ buttonType="general-white-button"
1027
+ label={"Cancelar"}
1028
+ onClick={() => setMessage("")}
1029
+ />,
1030
+ <Button
1031
+ key={"3"}
1032
+ buttonType="general-button-default"
1033
+ label={"Aceptar"}
1034
+ onClick={() => {
1035
+ setMessage("");
1036
+ deleteImages();
1037
+ }}
1038
+ />,
1039
+ ]);
1040
+ }
1041
+ };
1042
+
1043
+ const sendEvaluation = async (result) => {
1044
+ setLoading(true);
1045
+ const concept = getConcept(activeTab);
1046
+ const productTemp = product;
1047
+ const articleId = productTemp.id_article;
1048
+ const orderId = productTemp.id_order ?? productTemp.orderId;
1049
+ const sectionStatusKey = `${getConcept(activeTab)}_status`;
1050
+ const evalStatus = product[sectionStatusKey] || product?.version_status;
1051
+ let data = { articleId, orderId, concept, evalStatus };
1052
+ const retailerId = activeRetailer?.id;
1053
+ let res;
1054
+ try {
1055
+ const body = {
1056
+ orderArticleRetailers: [
1057
+ { orderId, articleId, retailersIds: [activeRetailer.id] },
1058
+ ],
1059
+ isAproved: false,
1060
+ service: concept,
1061
+ };
1062
+ if (result) {
1063
+ body.isAproved = result === "A";
1064
+ res = await axios.post(
1065
+ `${process.env.REACT_APP_EVALUATION_REFACTOR}`,
1066
+ body,
1067
+ {
1068
+ headers: {
1069
+ Authorization: token,
1070
+ },
1071
+ }
1072
+ );
1073
+
1074
+ const response = JSON.parse(res.data.body)?.successfulData;
1075
+ const newStatuses = response;
1076
+ const statusObject =
1077
+ response[`${orderId}-${articleId}-${activeRetailer.id}`];
1078
+ const orderStatus = statusObject["generalStatus"];
1079
+ const serviceStatus = newStatuses[`${getConcept(activeTab)}Status`];
1080
+
1081
+ const newProductEdit = productEdit;
1082
+ newProductEdit.product[sectionStatusKey] = serviceStatus;
1083
+ setProductEdit(newProductEdit);
1084
+ const showSurveyByProvider = !user.is_retailer && orderStatus === "AP";
1085
+ const showSurveyByRetailer = user.is_retailer && orderStatus === "ACA";
1086
+ showSurvey && showSurvey(showSurveyByProvider || showSurveyByRetailer);
1087
+ } else {
1088
+ res = await axios.post(
1089
+ `${process.env.REACT_APP_EVALUATION_REFACTOR}`,
1090
+ body,
1091
+ {
1092
+ headers: {
1093
+ Authorization: token,
1094
+ },
1095
+ }
1096
+ );
1097
+ }
1098
+ if (res.data.statusCode === 200) {
1099
+ const response = JSON.parse(res.data.body)?.successfulData;
1100
+ const statusObject =
1101
+ response[`${orderId}-${articleId}-${activeRetailer.id}`];
1102
+ productTemp.status = statusObject["generalStatus"];
1103
+ const retailerStatusCopy = { ...retailerStatus };
1104
+ retailerStatusCopy[activeRetailer.id][concept] =
1105
+ statusObject[`${concept}Status`];
1106
+ setRetailerStatus(retailerStatusCopy);
1107
+ productTemp.statusByRetailer = retailerStatusCopy;
1108
+ let status;
1109
+ status = statusObject[`${concept}Status`];
1110
+ productTemp[`${concept}_status`] = status;
1111
+ setProduct(productTemp);
1112
+ sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
1113
+ setOrigin((prev) => ({ ...prev, [concept]: status }));
1114
+ }
1115
+ } catch (err) {
1116
+ console.log(err);
1117
+ }
1118
+ loadData();
1119
+ };
1120
+
1121
+ const validateAll = async (result) => {
1122
+ try {
1123
+ setLoading(true);
1124
+ const evaluationArray = [];
1125
+ const conceptArray = ["description", "datasheet", "images"];
1126
+ const isAproved = result === "A";
1127
+ const retailersIds = [];
1128
+ servicesData?.forEach((ret) => {
1129
+ if (!retailersIds.includes(ret.id_retailer))
1130
+ retailersIds.push(ret.id_retailer);
1131
+ });
1132
+ const body = {
1133
+ orderArticleRetailers: [
1134
+ {
1135
+ orderId: product.id_order ?? product.orderId,
1136
+ articleId: product.article.id_article,
1137
+ retailersIds,
1138
+ },
1139
+ ],
1140
+ isAproved,
1141
+ };
1142
+ conceptArray.forEach((concept) => {
1143
+ body.service = concept;
1144
+ evaluationArray.push(
1145
+ axios.post(`${process.env.REACT_APP_EVALUATION_REFACTOR}`, body, {
1146
+ headers: {
1147
+ Authorization: token,
1148
+ },
1149
+ })
1150
+ );
1151
+ });
1152
+ await Promise.all(evaluationArray);
1153
+ const userType = user.is_retailer === 1 ? "CA" : "P";
1154
+
1155
+ const productTemp = product;
1156
+ const status = `${result}${userType}`;
1157
+ productTemp.status = status;
1158
+ productTemp.datasheet_status =
1159
+ productTemp.datasheet_status === "NA" ? "NA" : status;
1160
+ productTemp.description_status =
1161
+ productTemp.description_status === "NA" ? "NA" : status;
1162
+ productTemp.images_status =
1163
+ productTemp.images_status === "NA" ? "NA" : status;
1164
+
1165
+ const retailerStatusCopy = { ...retailerStatus };
1166
+ Object.keys(retailerStatusCopy).forEach((key) => {
1167
+ conceptArray.forEach((concept) => {
1168
+ if (retailerStatusCopy[key][concept]) {
1169
+ retailerStatusCopy[key][concept] = status;
1170
+ }
1171
+ });
1172
+ });
1173
+ setRetailerStatus(retailerStatusCopy);
1174
+ productTemp.statusByRetailer = retailerStatusCopy;
1175
+ setProduct(productTemp);
1176
+ sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
1177
+ setProductEdit({
1178
+ ArticleId: productTemp.id_article,
1179
+ idCategory: productTemp.article.id_category,
1180
+ product: productTemp,
1181
+ });
1182
+ sessionStorage.setItem(
1183
+ "productEdit",
1184
+ JSON.stringify({
1185
+ ArticleId: productTemp.id_article,
1186
+ idCategory: productTemp.article.id_category,
1187
+ product: productTemp,
1188
+ })
1189
+ );
1190
+
1191
+ await loadData();
1192
+ } catch (error) {
1193
+ console.log(error);
1194
+ }
1195
+ };
1196
+
1197
+ const evaluationToRetailer = async (result) => {
1198
+ const data = {
1199
+ articleId: product.id_article,
1200
+ companyId: user.is_retailer
1201
+ ? product.provider_company_id
1202
+ : product.retailer_company_id,
1203
+ versionId: product.version,
1204
+ status: result,
1205
+ };
1206
+ await axios.put(`${process.env.REACT_APP_RETAILER_REQUEST}`, data, {
1207
+ headers: {
1208
+ Authorization: token,
1209
+ },
1210
+ });
1211
+ const prod = productEdit;
1212
+ const statusComplete = user.is_retailer ? `${result}CA` : `${result}P`;
1213
+ prod.product.datasheet_status = statusComplete;
1214
+ prod.product.description_status = statusComplete;
1215
+ prod.product.images_status = statusComplete;
1216
+ prod.product.article_status = statusComplete;
1217
+ prod.product.services_status = `["${statusComplete}","${statusComplete}","${statusComplete}"]`;
1218
+ sessionStorage.setItem("productEdit", JSON.stringify(prod));
1219
+ setProduct(prod);
1220
+ showGlobalModal("generic");
1221
+ await loadData();
1222
+ };
1223
+
1224
+ const getSectionStatus = () => {
1225
+ const concept = getConcept(activeTab);
1226
+ return ["AA", "AP", "R", "CA", "RCA"].includes(
1227
+ productEdit.product[`${concept}_status`]
1228
+ );
1229
+ };
1230
+
1231
+ const enableActions = (versionStatus) => {
1232
+ try {
1233
+ if (user.is_retailer) return false;
1234
+
1235
+ if (versionStatus) {
1236
+ return ["AP", "ACA", "RCA", null].includes(versionStatus);
1237
+ }
1238
+ return true;
1239
+ } catch (err) {
1240
+ console.log(err, "Unable de check if user is retailer");
1241
+ return false;
1242
+ }
1243
+ };
1244
+
1245
+ useEffect(() => {
1246
+ setSaving(loading);
1247
+ }, [loading]);
1248
+
1249
+ const slidefront = [
1250
+ {
1251
+ slide: Slide1_1,
1252
+ description:
1253
+ "Creamos tu contenido, y todo lo que haga falta para tu producto, cada sección puedes socilitar contenido enriquecido, y nosotros lo haremos por ti.",
1254
+ },
1255
+ {
1256
+ slide: Slide1_2,
1257
+ description:
1258
+ "Puedes agregar solicitudes de contenido enriquecido a tu carrito de compra las veces que sean necesarias. Una vez completada tu lista con los servicios necesitados sigue el proceso de compra en checkout.",
1259
+ },
1260
+ {
1261
+ slide: Slide1_3,
1262
+ description:
1263
+ "Revisa el contenido que deseas solicilitar, valida y tambien puedes agregar contenido extra, traducciones, o simplemente completar el checkout.",
1264
+ },
1265
+ {
1266
+ slide: Slide1_4,
1267
+ description:
1268
+ "Elige el tipo de entrega de tu producto, puedes ser recolección en el lugar o por el contrario puedes dejarlo en nuestras oficinas.",
1269
+ },
1270
+ {
1271
+ slide: Slide1_5,
1272
+ title: "Bienvenido al modo Content-oh!",
1273
+ description:
1274
+ "Finalmente elige la forma de pago que más te guste, procede con el pago y listo.",
1275
+ },
1276
+ ];
1277
+ const sendToEvaluation = (result) => {
1278
+ console.log({ result });
1279
+ if (result === "A") {
1280
+ if (
1281
+ origin[activeTab] === "RequestWithoutContentoh" &&
1282
+ !user.is_retailer &&
1283
+ (!product.id_order || !product.orderId)
1284
+ ) {
1285
+ setDataGenericModal((prev) => ({
1286
+ ...prev,
1287
+ button2: {
1288
+ name: "Continuar",
1289
+ action: () => evaluationToRetailer("A"),
1290
+ },
1291
+ }));
1292
+ showGlobalModal("generic");
1293
+ } else if (user.is_retailer) {
1294
+ if (product.id_order || product.orderId) {
1295
+ sendEvaluation("A");
1296
+ } else {
1297
+ setDataGenericModal((prev) => ({
1298
+ ...prev,
1299
+ button2: {
1300
+ name: "Continuar",
1301
+ action: () => evaluationToRetailer("A"),
1302
+ },
1303
+ }));
1304
+ showGlobalModal("generic");
1305
+ }
1306
+ } else {
1307
+ sendEvaluation("A");
1308
+ }
1309
+ } else {
1310
+ if (
1311
+ origin === "RequestWithoutContentoh" &&
1312
+ !user.is_retailer &&
1313
+ (!product.id_order || !product.orderId)
1314
+ ) {
1315
+ return;
1316
+ } else if (user.is_retailer) {
1317
+ if (product.id_order || product.orderId) {
1318
+ sendEvaluation("R");
1319
+ } else {
1320
+ setDataGenericModal((prev) => ({
1321
+ ...prev,
1322
+ button2: {
1323
+ name: "Continuar",
1324
+ action: () => evaluationToRetailer("R"),
1325
+ },
1326
+ }));
1327
+ showGlobalModal("generic");
1328
+ }
1329
+ } else {
1330
+ sendEvaluation("R");
1331
+ }
1332
+ }
1333
+ };
1334
+
1335
+ return (
1336
+ <Container headerTop={headerTop}>
1337
+ {/* <HeaderTopv2
1338
+ setHeaderTop={setHeaderTop}
1339
+ withChat={false}
1340
+ chatType={location?.state?.chatType}
1341
+ productSelected={productSelected}
1342
+ token={token}
1343
+ activeRetailer={activeRetailer}
1344
+ /> */}
1345
+ <div className="data-container">
1346
+ <div className="product-information">
1347
+ <div className="product-information-image">
1348
+ <div className="product-image">
1349
+ <FullProductNamev2
1350
+ headerData={product}
1351
+ setShowVersionSelector={setShowVersionSelector}
1352
+ percent={activePercentage}
1353
+ activeRetailer={activeRetailer}
1354
+ setActiveRetailer={setActiveRetailer}
1355
+ showValidationButtons={isRevision() && getSectionStatus()}
1356
+ servicesData={servicesData ? servicesData : null}
1357
+ showApproveRejectAll={isRevision() && getSectionStatus()}
1358
+ approveAll={() => {
1359
+ if (
1360
+ origin === "RequestWithoutContentoh" &&
1361
+ !user.is_retailer &&
1362
+ (!product.id_order || !product.orderId)
1363
+ ) {
1364
+ setDataGenericModal((prev) => ({
1365
+ ...prev,
1366
+ button2: {
1367
+ name: "Continuar",
1368
+ action: () => evaluationToRetailer("A"),
1369
+ },
1370
+ }));
1371
+ showGlobalModal("generic");
1372
+ } else if (user.is_retailer) {
1373
+ if (product.id_order || product.orderId) {
1374
+ validateAll("A");
1375
+ } else {
1376
+ setDataGenericModal((prev) => ({
1377
+ ...prev,
1378
+ button2: {
1379
+ name: "Continuar",
1380
+ action: () => evaluationToRetailer("A"),
1381
+ },
1382
+ }));
1383
+ showGlobalModal("generic");
1384
+ }
1385
+ } else {
1386
+ validateAll("A");
1387
+ }
1388
+ }}
1389
+ rejectAll={() => {
1390
+ if (
1391
+ origin === "RequestWithoutContentoh" &&
1392
+ !user.is_retailer &&
1393
+ (!product.id_order || !product.orderId)
1394
+ ) {
1395
+ return;
1396
+ } else if (user.is_retailer) {
1397
+ if (product.id_order || product.orderId) {
1398
+ setValidatedAll(true);
1399
+ setShowRejectModal(true);
1400
+ } else {
1401
+ setDataGenericModal((prev) => ({
1402
+ ...prev,
1403
+ button2: {
1404
+ name: "Continuar",
1405
+ action: () => evaluationToRetailer("R"),
1406
+ },
1407
+ }));
1408
+ showGlobalModal("generic");
1409
+ }
1410
+ } else {
1411
+ setShowRejectModal(true);
1412
+ setValidatedAll(true);
1413
+ }
1414
+ }}
1415
+ approve={() => sendToEvaluation("A")}
1416
+ reject={() => {
1417
+ setShowRejectModal(true);
1418
+ }}
1419
+ version={version}
1420
+ />
1421
+ <FullTabsMenuv2
1422
+ tabsSections={tabsSections}
1423
+ status={
1424
+ activeRetailer?.id &&
1425
+ retailerStatus &&
1426
+ retailerStatus[activeRetailer.id]
1427
+ ? retailerStatus[activeRetailer?.id][getConcept(activeTab)] ||
1428
+ "NS"
1429
+ : "-"
1430
+ }
1431
+ activeTab={activeTab}
1432
+ setActiveTab={setActiveTab}
1433
+ setImageLayout={setImageLayout}
1434
+ downloadImages={downloadImages}
1435
+ askToDeleteImages={askToDeleteImages}
1436
+ assig={assig}
1437
+ setAssignation={setAssignation}
1438
+ isRetailer={isRetailer}
1439
+ showSaveButton={enableActions(product.version_status)}
1440
+ version={version}
1441
+ updatedDescriptions={updatedDescriptions}
1442
+ setUpdatedDescriptions={setUpdatedDescriptions}
1443
+ updatedDatasheets={updatedDatasheets}
1444
+ setUpdatedDatasheets={setUpdatedDatasheets}
1445
+ images={images}
1446
+ setImages={setImages}
1447
+ selectedImages={selectedImages}
1448
+ setSelectedImages={setSelectedImages}
1449
+ setShowVersionSelector={setShowVersionSelector}
1450
+ headerData={product}
1451
+ activeRetailer={activeRetailer}
1452
+ setActiveRetailer={setActiveRetailer}
1453
+ servicesData={servicesData ? servicesData : null}
1454
+ percentRequired={activePercentage}
1455
+ withChat={location?.state?.withChat}
1456
+ chatType={location?.state?.chatType}
1457
+ productSelected={productSelected}
1458
+ token={token}
1459
+ />
1460
+ </div>
1461
+ <div className="image-data-panel">
1462
+ <ImagePreviewerv2
1463
+ activeImage={images?.values ? images?.values[activeImage] : {}}
1464
+ imagesArray={images}
1465
+ setActiveImage={setActiveImage}
1466
+ setShowModal={setShowModal}
1467
+ showSelector={false}
1468
+ />
1469
+ </div>
1470
+ </div>
1471
+ <div
1472
+ className={
1473
+ "services-information-container " +
1474
+ (imageLayout && activeTab === "Imágenes" ? "image-services" : "")
1475
+ }
1476
+ >
1477
+ {loading ? (
1478
+ <Loading />
1479
+ ) : (
1480
+ <>
1481
+ {!imageLayout && activeTab === "Imágenes" && (
1482
+ <div className="container-imagesM">
1483
+ <div className="container-bars">
1484
+ <MandatoryBar maximas={imageRules.maxImg}
1485
+ minimas={imageRules.minImg}
1486
+ obligatorias={imageRules.requiredImg}></MandatoryBar>
1487
+ <RenameImagesBar></RenameImagesBar>
1488
+ </div>
1489
+ <GalleryHeaderv2
1490
+ setSelectedImages={setSelectedImages}
1491
+ checkAll={checkAll}
1492
+ setCheckAll={setCheckAll}
1493
+ />
1494
+ </div>
1495
+ )}
1496
+ {activeTab === "Ficha técnica" &&
1497
+ (product?.datasheet_status !== "NS" ? (
1498
+ <div>
1499
+ {datasheets[0]?.data?.map((dataGroup, index) => (
1500
+ <InputGroupv2
1501
+ key={index + "-" + activeRetailer.name}
1502
+ articleId={product.id_article}
1503
+ version={version}
1504
+ activeSection={activeTab}
1505
+ inputGroup={dataGroup}
1506
+ dataInputs={datasheets[1]}
1507
+ updatedDatasheets={updatedDatasheets}
1508
+ setUpdatedDatasheets={setUpdatedDatasheets}
1509
+ isShowbox={true}
1510
+ activeRetailer={services[0][activeRetailer.id]}
1511
+ groupData={services[0][activeRetailer.id].data}
1512
+ setUpdatedBoxData={(e) => {
1513
+ setBoxData(e);
1514
+ }}
1515
+ index={index}
1516
+ //enableActions={enableActions(product.version_status)} ADD THIS VALIDATION
1517
+ />
1518
+ ))}
1519
+ </div>
1520
+ ) : (
1521
+ <ScreenHeader
1522
+ text={"No cuentas con este servicio"}
1523
+ headerType={"input-name-header"}
1524
+ />
1525
+ ))}
1526
+ {activeTab === "Descripción" &&
1527
+ (product?.description_status !== "NS" ? (
1528
+ <InputGroupv2
1529
+ activeSection={activeTab}
1530
+ inputGroup={descriptions[0]}
1531
+ updatedDescriptions={updatedDescriptions}
1532
+ setUpdatedDescriptions={setUpdatedDescriptions}
1533
+ articleId={product?.id_article}
1534
+ version={version}
1535
+ isShowbox={false}
1536
+ dinamicHeight={true}
1537
+ showTooltip={true}
1538
+ showMissingChars={true}
1539
+ />
1540
+ ) : (
1541
+ <ScreenHeader
1542
+ text={"No cuentas con este servicio"}
1543
+ headerType={"input-name-header"}
1544
+ />
1545
+ ))}
1546
+
1547
+ {activeTab === "Imágenes" &&
1548
+ (product?.images_status !== "NS" ? (
1549
+ <section className="container">
1550
+ <div {...getRootProps({ className: "dropzone" })}>
1551
+ <input {...getInputProps()} />
1552
+ <aside>{thumbs()}</aside>
1553
+ </div>
1554
+ </section>
1555
+ ) : (
1556
+ <ScreenHeader
1557
+ text={"No cuentas con este servicio"}
1558
+ headerType={"input-name-header"}
1559
+ />
1560
+ ))}
1561
+ </>
1562
+ )}
1563
+ </div>
1564
+ {!(isRevision() && getSectionStatus()) && !revision && (
1565
+ <div className="required-inputs-message">
1566
+ <div>
1567
+ <p>
1568
+ Los atributos son requeridos por las plataformas de las
1569
+ cadenas, es muy importante completar los campos requeridos ya
1570
+ que pueden rechazar el producto por falta de información.
1571
+ </p>
1572
+ </div>
1573
+ {inCart ? (
1574
+ <button type="button">
1575
+ <Link to="/checkout">
1576
+ <p>Articulo en carrito</p>
1577
+ <p>Ir a checkout</p>
1578
+ </Link>
1579
+ </button>
1580
+ ) : (
1581
+ <>
1582
+ <SliderToolTip
1583
+ infoIcon={InfoIcon}
1584
+ slidefront={slidefront}
1585
+ iconSize={"big-image"}
1586
+ slidePosition={"top-slide"}
1587
+ />
1588
+ <Button
1589
+ onClick={() => {
1590
+ setShowContentohRequestModal &&
1591
+ setShowContentohRequestModal(true);
1592
+ }}
1593
+ buttonType="general-default-button"
1594
+ label="Enviar a Content-oh!"
1595
+ />
1596
+ </>
1597
+ )}
1598
+ </div>
1599
+ )}
1600
+ </div>
1601
+ </div>
1602
+ <CompleteServices
1603
+ headerData={product}
1604
+ activeRetailer={activeRetailer}
1605
+ setActiveRetailer={setActiveRetailer}
1606
+ showValidationButtons={isRevision() && getSectionStatus()}
1607
+ showApproveRejectAll={isRevision() && getSectionStatus()}
1608
+ approveAll={() => {
1609
+ if (
1610
+ origin === "RequestWithoutContentoh" &&
1611
+ !user.is_retailer &&
1612
+ (!product.id_order || !product.orderId)
1613
+ ) {
1614
+ setDataGenericModal((prev) => ({
1615
+ ...prev,
1616
+ button2: {
1617
+ name: "Continuar",
1618
+ action: () => evaluationToRetailer("A"),
1619
+ },
1620
+ }));
1621
+ showGlobalModal("generic");
1622
+ } else if (user.is_retailer) {
1623
+ if (product.id_order || product.orderId) {
1624
+ validateAll("A");
1625
+ } else {
1626
+ setDataGenericModal((prev) => ({
1627
+ ...prev,
1628
+ button2: {
1629
+ name: "Continuar",
1630
+ action: () => evaluationToRetailer("A"),
1631
+ },
1632
+ }));
1633
+ showGlobalModal("generic");
1634
+ }
1635
+ } else {
1636
+ validateAll("A");
1637
+ }
1638
+ }}
1639
+ rejectAll={() => {
1640
+ if (
1641
+ origin === "RequestWithoutContentoh" &&
1642
+ !user.is_retailer &&
1643
+ (!product.id_order || !product.orderId)
1644
+ ) {
1645
+ return;
1646
+ } else if (user.is_retailer) {
1647
+ if (product.id_order || product.orderId) {
1648
+ setValidatedAll(true);
1649
+ setShowRejectModal(true);
1650
+ } else {
1651
+ setDataGenericModal((prev) => ({
1652
+ ...prev,
1653
+ button2: {
1654
+ name: "Continuar",
1655
+ action: () => evaluationToRetailer("R"),
1656
+ },
1657
+ }));
1658
+ showGlobalModal("generic");
1659
+ }
1660
+ } else {
1661
+ setShowRejectModal(true);
1662
+ setValidatedAll(true);
1663
+ }
1664
+ }}
1665
+ approve={() => sendToEvaluation("A")}
1666
+ reject={() => {
1667
+ setShowRejectModal(true);
1668
+ }}
1669
+ onClick={() => {
1670
+ setShowContentohRequestModal &&
1671
+ setShowContentohRequestModal(true);
1672
+ }}
1673
+
1674
+ ></CompleteServices>
1675
+ {showModal && (
1676
+ <ProductImageModalv2
1677
+ images={images}
1678
+ setShowModal={setShowModal}
1679
+ approveRejectButtons={isRevision() && getSectionStatus()}
1680
+ sendToFacilitator={sendToEvaluation}
1681
+ />
1682
+ )}
1683
+ {message.length > 0 && !showSurvey && (
1684
+ <GenericModal
1685
+ buttonType={componentsArray.length > 0 && "delete-product"}
1686
+ componentsArray={
1687
+ componentsArray.length > 0
1688
+ ? componentsArray
1689
+ : [
1690
+ <img key="1" src={succes} alt="success icon" />,
1691
+ <ScreenHeader
1692
+ key="2"
1693
+ headerType={"retailer-name-header"}
1694
+ text={message}
1695
+ color={"white"}
1696
+ />,
1697
+ ]
1698
+ }
1699
+ onClick={() => setMessage("")}
1700
+ />
1701
+ )}
1702
+ {globalModal && <GlobalModal close={closeGlobalModal} {...globalModal} />}
1703
+ {showVersionSelector && (
1704
+ <VersionSelectorv2
1705
+ modalId={"version-selector"}
1706
+ articleId={product.id_article}
1707
+ setVersion={setVersion}
1708
+ companyName={company.company_name}
1709
+ currentVersion={version}
1710
+ setShowVersionSelector={setShowVersionSelector}
1711
+ jwt={token}
1712
+ />
1713
+ )}
1714
+ {showRejectModal && (
1715
+ <Modal
1716
+ title={"Agregar mensaje de rechazo"}
1717
+ show={showRejectModal}
1718
+ customComponent={
1719
+ <TagAndInputv2
1720
+ inputType={"textarea"}
1721
+ inputId={"modal-message-box"}
1722
+ index={0}
1723
+ color={"white"}
1724
+ />
1725
+ }
1726
+ buttons={[
1727
+ <ButtonV2
1728
+ key={"btn-Cancelar"}
1729
+ type={"white"}
1730
+ label={"Cancelar"}
1731
+ size={12}
1732
+ onClick={() => {
1733
+ setShowRejectModal(false);
1734
+ }}
1735
+ />,
1736
+ <ButtonV2
1737
+ key={"btn-Aceptar"}
1738
+ type={"pink"}
1739
+ label={"Aceptar"}
1740
+ size={12}
1741
+ onClick={async () => {
1742
+ const body = document.querySelector(
1743
+ "#modal-message-box .ql-container .ql-editor > p"
1744
+ ).innerHTML;
1745
+ const messages = [
1746
+ { type: "message", value: body?.replace(/<.*?\/?>/gm, "") },
1747
+ ];
1748
+ await createComment(messages, activeRetailer.id);
1749
+ validatedAll ? validateAll("R") : sendToEvaluation("R");
1750
+ setShowRejectModal(false);
1751
+ }}
1752
+ />,
1753
+ ]}
1754
+ />
1755
+ )}
1756
+ </Container>
1757
+ );
1758
+ };