contentoh-components-library 21.5.32 → 21.5.34

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 (995) 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/components/atoms/Image/index.js +5 -5
  7. package/dist/components/atoms/ImageLink/index.js +5 -5
  8. package/dist/components/molecules/Dropdown/index.js +1 -1
  9. package/dist/components/molecules/StripeCardForm/paymentForm.js +5 -5
  10. package/dist/components/molecules/VerificationCodeResetPasswordLogin/utils.js +19 -19
  11. package/dist/components/organisms/Chat/Chat.stories.js +8 -8
  12. package/dist/components/organisms/Chat/ContainerItems/index.js +18 -18
  13. package/dist/components/organisms/Chat/ContentChat/ContentChat.stories.js +6 -6
  14. package/dist/components/organisms/Chat/ContentChat/index.js +26 -26
  15. package/dist/components/organisms/Chatv2/Chatv2.stories.js +8 -8
  16. package/dist/components/organisms/Chatv2/ContainerItems/index.js +18 -18
  17. package/dist/components/organisms/Chatv2/ContentChat/ContentChat.stories.js +6 -6
  18. package/dist/components/organisms/Chatv2/ContentChat/index.js +26 -26
  19. package/dist/components/organisms/GlobalModal/index.js +9 -9
  20. package/dist/components/organisms/TableResizable/index.js +3 -3
  21. package/dist/components/pages/MultipleEdition/utils.js +14 -14
  22. package/dist/components/pages/ProviderProductEdition/index.js +5 -5
  23. package/dist/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +21 -21
  24. package/dist/components/pages/RetailerProductEdition/index.js +50 -31
  25. package/dist/components/pages/VerificationCodeResetPassword/utils.js +19 -19
  26. package/dist/global-files/data.js +6 -6
  27. package/dist/global-files/handle_http.js +42 -42
  28. package/dist/global-files/utils.js +95 -95
  29. package/package.json +116 -116
  30. package/src/_utils/helper.js +23 -23
  31. package/src/assets/images/Icons/DownloadIcon.svg +4 -4
  32. package/src/assets/images/Icons/addv2.svg +8 -8
  33. package/src/assets/images/Icons/beenhere.svg +9 -9
  34. package/src/assets/images/Icons/checkv2.svg +8 -8
  35. package/src/assets/images/Icons/close-magenta.svg +9 -9
  36. package/src/assets/images/Icons/close.svg +8 -8
  37. package/src/assets/images/Icons/closeCircle.svg +7 -7
  38. package/src/assets/images/Icons/delete-forever-red.svg +9 -9
  39. package/src/assets/images/Icons/delete-forever-white.svg +10 -10
  40. package/src/assets/images/Icons/edit.svg +8 -8
  41. package/src/assets/images/Icons/fullscreen.svg +2 -2
  42. package/src/assets/images/Icons/info.svg +8 -8
  43. package/src/assets/images/Icons/infoNR.svg +8 -8
  44. package/src/assets/images/Icons/options.svg +3 -3
  45. package/src/assets/images/Icons/save-white-gray.svg +9 -9
  46. package/src/assets/images/Icons/save-white.svg +9 -9
  47. package/src/assets/images/Icons/save.svg +8 -8
  48. package/src/assets/images/Icons/search.svg +3 -3
  49. package/src/assets/images/Icons/settings.svg +8 -8
  50. package/src/assets/images/Icons/trash.svg +8 -8
  51. package/src/assets/images/Icons/undo.svg +8 -8
  52. package/src/assets/images/Icons/upload-file-white.svg +3 -3
  53. package/src/assets/images/Icons/upload-file.svg +10 -10
  54. package/src/assets/images/Icons/upload_file.svg +10 -10
  55. package/src/assets/images/Icons/warningv2.svg +3 -3
  56. package/src/assets/images/activedFilter/removeFilter.svg +3 -3
  57. package/src/assets/images/arrow/arrowIcon.svg +3 -3
  58. package/src/assets/images/arrow/polygon.svg +3 -3
  59. package/src/assets/images/asignationOptions/availableIcon.svg +3 -3
  60. package/src/assets/images/asignationOptions/removeAsigned.svg +4 -4
  61. package/src/assets/images/asignationOptions/requestToProvider.svg +3 -3
  62. package/src/assets/images/asignationOptions/requestToTeam.svg +3 -3
  63. package/src/assets/images/card/masterCardIcon.svg +5 -5
  64. package/src/assets/images/checkBox/checked.svg +3 -3
  65. package/src/assets/images/checkBox/checkrosa.svg +3 -3
  66. package/src/assets/images/checkBox/checkverde.svg +3 -3
  67. package/src/assets/images/checkBox/unchecked.svg +3 -3
  68. package/src/assets/images/componentAssigned/assignedImage1.svg +9 -9
  69. package/src/assets/images/componentAssigned/assignedImage2.svg +9 -9
  70. package/src/assets/images/componentAssigned/clock.svg +4 -4
  71. package/src/assets/images/componentAssigned/flag.svg +3 -3
  72. package/src/assets/images/customSelect/starIcon.svg +14 -14
  73. package/src/assets/images/defaultImages/check_circle.svg +10 -10
  74. package/src/assets/images/defaultImages/defaultProfileImage.svg +13 -13
  75. package/src/assets/images/dropDownButton/dropDownArrowButton.svg +3 -3
  76. package/src/assets/images/editField/editField.svg +3 -3
  77. package/src/assets/images/flags/highPriority.svg +3 -3
  78. package/src/assets/images/flags/lowPriority.svg +3 -3
  79. package/src/assets/images/flags/mediumPriority.svg +3 -3
  80. package/src/assets/images/flags/noPriority.svg +3 -3
  81. package/src/assets/images/flagsv2/highPriority.svg +2 -2
  82. package/src/assets/images/flagsv2/lowPriority.svg +3 -3
  83. package/src/assets/images/flagsv2/mediumPriority.svg +2 -2
  84. package/src/assets/images/flagsv2/noPriority.svg +3 -3
  85. package/src/assets/images/generalButton/Icono AB.svg +14 -14
  86. package/src/assets/images/generalButton/acceptIcon.svg +3 -3
  87. package/src/assets/images/generalButton/closeIcon.svg +4 -4
  88. package/src/assets/images/generalButton/closeIconWhite.svg +4 -4
  89. package/src/assets/images/generalButton/closeIconv2.svg +4 -4
  90. package/src/assets/images/generalButton/deleteIcon.svg +13 -13
  91. package/src/assets/images/generalButton/deleteIconHover.svg +13 -13
  92. package/src/assets/images/generalButton/downloadIcon.svg +3 -3
  93. package/src/assets/images/generalButton/gridLayout.svg +3 -3
  94. package/src/assets/images/generalButton/nullIcon.svg +3 -3
  95. package/src/assets/images/generalButton/openModal.svg +3 -3
  96. package/src/assets/images/generalButton/rejectIcon.svg +3 -3
  97. package/src/assets/images/generalButton/rowLayout.svg +3 -3
  98. package/src/assets/images/generalButton/saveIcon.svg +3 -3
  99. package/src/assets/images/generalButton/saveIconHover.svg +3 -3
  100. package/src/assets/images/generalButton/saveIconpink.svg +3 -3
  101. package/src/assets/images/generalImage/assigned.svg +14 -14
  102. package/src/assets/images/generalImage/bags.svg +25 -25
  103. package/src/assets/images/generalImage/clock.svg +4 -4
  104. package/src/assets/images/generalImage/flag.svg +3 -3
  105. package/src/assets/images/genericModal/errorModal.svg +3 -3
  106. package/src/assets/images/genericModal/genericModalCheck.svg +3 -3
  107. package/src/assets/images/genericModal/genericModalClose.svg +3 -3
  108. package/src/assets/images/genericModal/genericModalDown.svg +3 -3
  109. package/src/assets/images/genericModal/genericModalUp.svg +3 -3
  110. package/src/assets/images/genericModal/genericModalWarning.svg +12 -12
  111. package/src/assets/images/genericModal/yellowAlert.svg +12 -12
  112. package/src/assets/images/logo/logoLogin.svg +15 -15
  113. package/src/assets/images/menuNotification/menuNotificationComment.svg +3 -3
  114. package/src/assets/images/menuNotification/menuNotificationProduct.svg +3 -3
  115. package/src/assets/images/menuProfile/logOut.svg +3 -3
  116. package/src/assets/images/menuProfile/myAccount.svg +3 -3
  117. package/src/assets/images/menuProfile/settings.svg +3 -3
  118. package/src/assets/images/modalsSVGs/attributesSent.svg +208 -208
  119. package/src/assets/images/modalsSVGs/descriptionSent.svg +237 -237
  120. package/src/assets/images/modalsSVGs/providerSent.svg +445 -445
  121. package/src/assets/images/modalsSVGs/uploadingImages.svg +148 -148
  122. package/src/assets/images/productImage/openModal.svg +3 -3
  123. package/src/assets/images/productNotification/productNotification.svg +3 -3
  124. package/src/assets/images/profileHeader/profilePicture.svg +9 -9
  125. package/src/assets/images/providerAndCadena/Cadena.svg +188 -188
  126. package/src/assets/images/providerAndCadena/LoginContentoh.svg +15 -15
  127. package/src/assets/images/providerAndCadena/Proveedor.svg +231 -231
  128. package/src/assets/images/sideMenuButton/contenoh.svg +5 -5
  129. package/src/assets/images/sideMenuButton/dashboard.svg +5 -5
  130. package/src/assets/images/sideMenuButton/products.svg +10 -10
  131. package/src/assets/images/sideMenuButton/providers.svg +10 -10
  132. package/src/assets/images/sideMenuButton/tasks.svg +3 -3
  133. package/src/assets/images/sliderToolTip/infoIcon.svg +4 -4
  134. package/src/assets/images/sliderToolTip/slide1.svg +5 -5
  135. package/src/assets/images/sliderToolTip/slide2.svg +9 -9
  136. package/src/assets/images/sliderToolTip/slide21.svg +9 -9
  137. package/src/assets/images/sliderToolTip/slide22.svg +9 -9
  138. package/src/assets/images/sliderToolTip/slide23.svg +9 -9
  139. package/src/assets/images/sliderToolTip/slide3.svg +9 -9
  140. package/src/assets/images/sliderToolTip/slide4.svg +9 -9
  141. package/src/assets/images/sliderToolTip/slide5.svg +40 -40
  142. package/src/assets/images/versionSelector/acceptIcon.svg +3 -3
  143. package/src/assets/images/versionSelector/addVersion.svg +5 -5
  144. package/src/assets/images/versionSelector/closeVersionSelector.svg +4 -4
  145. package/src/assets/images/versionSelector/createVersion.svg +3 -3
  146. package/src/assets/images/versionSelector/nullIcon.svg +3 -3
  147. package/src/assets/images/versionSelector/versionSelected.svg +3 -3
  148. package/src/assets/images/verticalSideMenuMainPage/closeMenu.svg +4 -4
  149. package/src/assets/images/verticalSideMenuMainPage/iconFAQS.svg +12 -12
  150. package/src/assets/images/verticalSideMenuMainPage/iconGroup.svg +3 -3
  151. package/src/assets/images/verticalSideMenuMainPage/iconLogo.svg +12 -12
  152. package/src/assets/images/verticalSideMenuMainPage/iconLogoContentoh.svg +15 -15
  153. package/src/assets/images/verticalSideMenuMainPage/iconProduct.svg +3 -3
  154. package/src/assets/images/verticalSideMenuMainPage/iconSpeedometer.svg +12 -12
  155. package/src/assets/images/verticalSideMenuMainPage/iconTask.svg +10 -10
  156. package/src/assets/images/verticalSideMenuMainPage/openMenu.svg +4 -4
  157. package/src/components/atoms/ActivedFilter/ActivedFilter.stories.js +13 -13
  158. package/src/components/atoms/ActivedFilter/index.js +13 -13
  159. package/src/components/atoms/ActivedFilter/styles.js +36 -36
  160. package/src/components/atoms/AsignationOption/AsignationOptions.stories.js +20 -20
  161. package/src/components/atoms/AsignationOption/index.js +60 -60
  162. package/src/components/atoms/AsignationOption/styles.js +69 -69
  163. package/src/components/atoms/AtomList/AtomList.stories.js +15 -15
  164. package/src/components/atoms/AtomList/index.js +14 -14
  165. package/src/components/atoms/AtomList/styles.js +17 -17
  166. package/src/components/atoms/Avatar/AsignationImage.stories.js +27 -27
  167. package/src/components/atoms/Avatar/index.js +22 -22
  168. package/src/components/atoms/Avatar/styles.js +34 -34
  169. package/src/components/atoms/Button/index.js +16 -16
  170. package/src/components/atoms/Button/styles.js +38 -38
  171. package/src/components/atoms/ButtonFileChooser/ButtonFileChooser.stories.js +47 -47
  172. package/src/components/atoms/ButtonFileChooser/index.js +68 -68
  173. package/src/components/atoms/ButtonFileChooser/styles.js +4 -4
  174. package/src/components/atoms/ButtonV2/ButtonV2.stories.js +54 -54
  175. package/src/components/atoms/ButtonV2/index.js +86 -86
  176. package/src/components/atoms/ButtonV2/styles.js +233 -233
  177. package/src/components/atoms/Card/Card.stories.js +12 -12
  178. package/src/components/atoms/Card/index.js +42 -42
  179. package/src/components/atoms/Card/styles.js +44 -44
  180. package/src/components/atoms/CharCounter/CharCounter.stories.js +11 -11
  181. package/src/components/atoms/CharCounter/index.js +13 -13
  182. package/src/components/atoms/CharCounter/styles.js +10 -10
  183. package/src/components/atoms/CharsMissing/Wysiwyg.stories.js +12 -12
  184. package/src/components/atoms/CharsMissing/index.js +60 -60
  185. package/src/components/atoms/CharsMissing/styles.js +44 -44
  186. package/src/components/atoms/CheckBox/CheckBox.stories.js +25 -25
  187. package/src/components/atoms/CheckBox/index.js +33 -33
  188. package/src/components/atoms/CheckBox/styles.js +57 -57
  189. package/src/components/atoms/Commentary/index.js +9 -9
  190. package/src/components/atoms/Commentary/styles.js +15 -15
  191. package/src/components/atoms/CustomChip/CustomChip.stories.js +15 -15
  192. package/src/components/atoms/CustomChip/index.js +34 -34
  193. package/src/components/atoms/CustomChip/styles.js +5 -5
  194. package/src/components/atoms/CustomIcon/CustomIcon.stories.js +36 -36
  195. package/src/components/atoms/CustomIcon/index.js +41 -41
  196. package/src/components/atoms/CustomIcon/styles.js +85 -85
  197. package/src/components/atoms/CustomSelectItem/CustomSelectItem.stories.js +410 -410
  198. package/src/components/atoms/CustomSelectItem/index.js +150 -150
  199. package/src/components/atoms/CustomSelectItem/styles.js +32 -32
  200. package/src/components/atoms/CustomerTypeImage/CustomerTypeImage.stories.js +10 -10
  201. package/src/components/atoms/CustomerTypeImage/index.js +14 -14
  202. package/src/components/atoms/CustomerTypeImage/styles.js +14 -14
  203. package/src/components/atoms/DropDownButton/DropDownButton.stories.js +20 -20
  204. package/src/components/atoms/DropDownButton/index.js +10 -10
  205. package/src/components/atoms/DropDownButton/styles.js +19 -19
  206. package/src/components/atoms/EditField/EditField.stories.js +13 -13
  207. package/src/components/atoms/EditField/index.js +15 -15
  208. package/src/components/atoms/EditField/styles.js +35 -35
  209. package/src/components/atoms/FeatureTag/FeatureTag.stories.js +16 -16
  210. package/src/components/atoms/FeatureTag/index.js +10 -10
  211. package/src/components/atoms/FeatureTag/styles.js +43 -43
  212. package/src/components/atoms/FeatureTagv2/FeatureTagv2.stories.js +16 -16
  213. package/src/components/atoms/FeatureTagv2/index.js +10 -10
  214. package/src/components/atoms/FeatureTagv2/styles.js +56 -56
  215. package/src/components/atoms/GeneralButton/GeneralButton.stories.js +76 -76
  216. package/src/components/atoms/GeneralButton/index.js +34 -34
  217. package/src/components/atoms/GeneralButton/styles.js +235 -235
  218. package/src/components/atoms/GeneralInput/GeneralInput.stories.js +33 -33
  219. package/src/components/atoms/GeneralInput/index.js +159 -159
  220. package/src/components/atoms/GeneralInput/styles.js +86 -86
  221. package/src/components/atoms/GeneralInputv2/GeneralInputv2.stories.js +33 -33
  222. package/src/components/atoms/GeneralInputv2/index.js +155 -155
  223. package/src/components/atoms/GeneralInputv2/styles.js +67 -67
  224. package/src/components/atoms/GeneralTextBox/GeneralTextBox.stories.js +13 -13
  225. package/src/components/atoms/GeneralTextBox/index.js +10 -10
  226. package/src/components/atoms/GeneralTextBox/styles.js +35 -35
  227. package/src/components/atoms/GenericModal/GenericModal.stories.js +140 -140
  228. package/src/components/atoms/GenericModal/index.js +12 -12
  229. package/src/components/atoms/GenericModal/styles.js +134 -134
  230. package/src/components/atoms/GradientPanel/GradientPanel.stories.js +134 -134
  231. package/src/components/atoms/GradientPanel/index.js +15 -15
  232. package/src/components/atoms/GradientPanel/styles.js +139 -139
  233. package/src/components/atoms/Graphic/Graphic.stories.js +29 -29
  234. package/src/components/atoms/Graphic/index.js +43 -43
  235. package/src/components/atoms/Graphic/styles.js +3 -3
  236. package/src/components/atoms/IconFile/IconFile.stories.js +35 -35
  237. package/src/components/atoms/IconFile/index.js +119 -119
  238. package/src/components/atoms/IconFile/styles.js +67 -67
  239. package/src/components/atoms/Image/Image.stories.js +51 -51
  240. package/src/components/atoms/Image/index.js +55 -55
  241. package/src/components/atoms/Image/styles.js +34 -34
  242. package/src/components/atoms/ImageCarousel/ImgeSlider.stories.js +76 -76
  243. package/src/components/atoms/ImageCarousel/index.js +103 -103
  244. package/src/components/atoms/ImageCarousel/styles.js +79 -79
  245. package/src/components/atoms/ImageLink/ImageLink.stories.js +43 -43
  246. package/src/components/atoms/ImageLink/index.js +57 -57
  247. package/src/components/atoms/ImageLink/styles.js +30 -30
  248. package/src/components/atoms/ImagePreview/ImagePreview.stories.js +52 -52
  249. package/src/components/atoms/ImagePreview/index.js +178 -178
  250. package/src/components/atoms/ImagePreview/styles.js +77 -77
  251. package/src/components/atoms/Input/index.js +15 -15
  252. package/src/components/atoms/Input/style.js +31 -31
  253. package/src/components/atoms/InputFormatter/Wysiwyg.stories.js +12 -12
  254. package/src/components/atoms/InputFormatter/index.js +152 -152
  255. package/src/components/atoms/InputFormatter/styles.js +46 -46
  256. package/src/components/atoms/InputFormatterv2/Wysiwyg.stories.js +12 -12
  257. package/src/components/atoms/InputFormatterv2/index.js +148 -148
  258. package/src/components/atoms/InputFormatterv2/styles.js +39 -39
  259. package/src/components/atoms/InputImages/InputImages.stories.js +19 -19
  260. package/src/components/atoms/InputImages/index.js +25 -25
  261. package/src/components/atoms/InputImages/styles.js +17 -17
  262. package/src/components/atoms/InputText/InputText.stories.js +39 -39
  263. package/src/components/atoms/InputText/index.js +61 -61
  264. package/src/components/atoms/InputText/styles.js +89 -89
  265. package/src/components/atoms/LabelToInput/index.js +26 -26
  266. package/src/components/atoms/LabelToInput/style.js +41 -41
  267. package/src/components/atoms/LoadImageMenu/LoadImageMenu.stories.js +17 -17
  268. package/src/components/atoms/LoadImageMenu/index.js +58 -58
  269. package/src/components/atoms/LoadImageMenu/styles.js +72 -72
  270. package/src/components/atoms/Loading/Loading.stories.js +9 -9
  271. package/src/components/atoms/Loading/index.js +13 -13
  272. package/src/components/atoms/Loading/styles.js +57 -57
  273. package/src/components/atoms/LogoImage/LogoImage.stories.js +9 -9
  274. package/src/components/atoms/LogoImage/index.js +10 -10
  275. package/src/components/atoms/LogoImage/styles.js +11 -11
  276. package/src/components/atoms/MenuNotification/MenuNotification.stories.js +17 -17
  277. package/src/components/atoms/MenuNotification/index.js +30 -30
  278. package/src/components/atoms/MenuNotification/styles.js +50 -50
  279. package/src/components/atoms/MenuProfile/MenuProfile.stories.js +13 -13
  280. package/src/components/atoms/MenuProfile/index.js +31 -31
  281. package/src/components/atoms/MenuProfile/styles.js +57 -57
  282. package/src/components/atoms/MetricCard/MetricCard.stories.js +14 -14
  283. package/src/components/atoms/MetricCard/index.js +10 -10
  284. package/src/components/atoms/MetricCard/styles.js +30 -30
  285. package/src/components/atoms/MetricSelect/MetricSelect.stories.js +37 -37
  286. package/src/components/atoms/MetricSelect/index.js +22 -22
  287. package/src/components/atoms/MetricSelect/styles.js +20 -20
  288. package/src/components/atoms/Multiselect/Multiselect.stories.js +364 -364
  289. package/src/components/atoms/Multiselect/index.js +351 -351
  290. package/src/components/atoms/Multiselect/styles.js +33 -33
  291. package/src/components/atoms/NotFound/NotFound.stories.js +19 -19
  292. package/src/components/atoms/NotFound/index.js +52 -52
  293. package/src/components/atoms/NotFound/styles.js +55 -55
  294. package/src/components/atoms/Notification/Notification.stories.js +16 -16
  295. package/src/components/atoms/Notification/index.js +20 -20
  296. package/src/components/atoms/Notification/styles.js +42 -42
  297. package/src/components/atoms/NumberMandatory/NumberMandatory.stories.js +19 -19
  298. package/src/components/atoms/NumberMandatory/index.js +16 -16
  299. package/src/components/atoms/NumberMandatory/styles.js +11 -11
  300. package/src/components/atoms/ObservationFlag/ObservationFlag.stories.js +20 -20
  301. package/src/components/atoms/ObservationFlag/index.js +167 -167
  302. package/src/components/atoms/ObservationFlag/styles.js +104 -104
  303. package/src/components/atoms/PercentTag/PercentTag.stories.js +7 -7
  304. package/src/components/atoms/PercentTag/index.js +9 -9
  305. package/src/components/atoms/PercentTag/styles.js +69 -69
  306. package/src/components/atoms/PriorityFlag/PriorityFlag.stories.js +20 -20
  307. package/src/components/atoms/PriorityFlag/index.js +20 -20
  308. package/src/components/atoms/PriorityFlag/styles.js +3 -3
  309. package/src/components/atoms/PriorityFlagv2/PriorityFlagv2.stories.js +20 -20
  310. package/src/components/atoms/PriorityFlagv2/index.js +20 -20
  311. package/src/components/atoms/PriorityFlagv2/styles.js +6 -6
  312. package/src/components/atoms/ProductImage/ProductImage.stories.js +28 -28
  313. package/src/components/atoms/ProductImage/index.js +29 -29
  314. package/src/components/atoms/ProductImage/styles.js +69 -69
  315. package/src/components/atoms/ProductImagev2/ProductImagev2.stories.js +28 -28
  316. package/src/components/atoms/ProductImagev2/index.js +16 -16
  317. package/src/components/atoms/ProductImagev2/styles.js +62 -62
  318. package/src/components/atoms/ProductPercentCard/Percent.stories.js +40 -40
  319. package/src/components/atoms/ProductPercentCard/index.js +23 -23
  320. package/src/components/atoms/ProductPercentCard/styles.js +83 -83
  321. package/src/components/atoms/Progress/Progress.stories.js +25 -25
  322. package/src/components/atoms/Progress/index.js +74 -74
  323. package/src/components/atoms/Progress/styles.js +98 -98
  324. package/src/components/atoms/ProgressBar/ProgressBar.stories.js +25 -25
  325. package/src/components/atoms/ProgressBar/index.js +53 -53
  326. package/src/components/atoms/ProgressBar/styles.js +94 -94
  327. package/src/components/atoms/RatingStars/RatingStars.stories.js +10 -10
  328. package/src/components/atoms/RatingStars/index.js +31 -31
  329. package/src/components/atoms/RatingStars/styles.js +28 -28
  330. package/src/components/atoms/RetailerCatalog/RetailerCatalog.stories.js +36 -36
  331. package/src/components/atoms/RetailerCatalog/index.js +49 -49
  332. package/src/components/atoms/RetailerCatalog/styles.js +30 -30
  333. package/src/components/atoms/RetailerOption/RetailerOption.stories.js +15 -15
  334. package/src/components/atoms/RetailerOption/index.js +53 -53
  335. package/src/components/atoms/RetailerOption/styles.js +41 -41
  336. package/src/components/atoms/RetailersList/RetailersList.stories.js +33 -33
  337. package/src/components/atoms/RetailersList/index.js +20 -20
  338. package/src/components/atoms/RetailersList/styles.js +19 -19
  339. package/src/components/atoms/ScreenHeader/ScreenHeader.stories.js +52 -52
  340. package/src/components/atoms/ScreenHeader/index.js +29 -29
  341. package/src/components/atoms/ScreenHeader/styles.js +90 -90
  342. package/src/components/atoms/ScreenHeaderv2/ScreenHeaderv2.stories.js +52 -52
  343. package/src/components/atoms/ScreenHeaderv2/index.js +134 -134
  344. package/src/components/atoms/ScreenHeaderv2/styles.js +103 -103
  345. package/src/components/atoms/Select/VersionSelect.js +27 -27
  346. package/src/components/atoms/Select/index.js +35 -35
  347. package/src/components/atoms/Select/style.js +95 -95
  348. package/src/components/atoms/SelectItemV2/SelectItemV2.stories.js +26 -26
  349. package/src/components/atoms/SelectItemV2/index.js +61 -61
  350. package/src/components/atoms/SelectItemV2/styles.js +90 -90
  351. package/src/components/atoms/Selectv2/VersionSelect.js +27 -27
  352. package/src/components/atoms/Selectv2/index.js +35 -35
  353. package/src/components/atoms/Selectv2/style.js +93 -93
  354. package/src/components/atoms/SideMenuButton/SideMenuButton.stories.js +16 -16
  355. package/src/components/atoms/SideMenuButton/index.js +10 -10
  356. package/src/components/atoms/SideMenuButton/styles.js +28 -28
  357. package/src/components/atoms/SliderToolTip/SliderToolTip.stories.js +89 -89
  358. package/src/components/atoms/SliderToolTip/index.js +110 -110
  359. package/src/components/atoms/SliderToolTip/styles.js +197 -197
  360. package/src/components/atoms/Status/Status.stories.js +14 -14
  361. package/src/components/atoms/Status/index.js +13 -13
  362. package/src/components/atoms/Status/styles.js +78 -78
  363. package/src/components/atoms/TabSection/TabSection.stories.js +25 -25
  364. package/src/components/atoms/TabSection/index.js +9 -9
  365. package/src/components/atoms/TabSection/styles.js +19 -19
  366. package/src/components/atoms/TabSectionv2/TabSection.stories.js +25 -25
  367. package/src/components/atoms/TabSectionv2/index.js +9 -9
  368. package/src/components/atoms/TabSectionv2/styles.js +20 -20
  369. package/src/components/atoms/Tooltip/Tooltip.stories.js +51 -51
  370. package/src/components/atoms/Tooltip/index.js +59 -59
  371. package/src/components/atoms/Tooltip/styles.js +42 -42
  372. package/src/components/atoms/TooltipLight/Tooltip.stories.js +20 -20
  373. package/src/components/atoms/TooltipLight/index.js +46 -46
  374. package/src/components/atoms/TooltipLight/styles.js +65 -65
  375. package/src/components/atoms/UserCatalog/UserCatalog.stories.js +67 -67
  376. package/src/components/atoms/UserCatalog/index.js +100 -100
  377. package/src/components/atoms/UserCatalog/styles.js +24 -24
  378. package/src/components/atoms/UserOption/UserOption.stories.js +25 -25
  379. package/src/components/atoms/UserOption/index.js +95 -95
  380. package/src/components/atoms/UserOption/styles.js +61 -61
  381. package/src/components/atoms/UserSelector/UserSelector.stories.js +25 -25
  382. package/src/components/atoms/UserSelector/index.js +92 -92
  383. package/src/components/atoms/UserSelector/styles.js +55 -55
  384. package/src/components/atoms/ValidationPanel/ValidationPanel.stories.js +10 -10
  385. package/src/components/atoms/ValidationPanel/index.js +59 -59
  386. package/src/components/atoms/ValidationPanel/styles.js +44 -44
  387. package/src/components/atoms/VerticalSideMenuMainPage/VerticalSideMenuMainPage.stories.js +39 -39
  388. package/src/components/atoms/VerticalSideMenuMainPage/index.js +59 -59
  389. package/src/components/atoms/VerticalSideMenuMainPage/styles.js +187 -187
  390. package/src/components/atoms/WordsMissing/Wysiwyg.stories.js +12 -12
  391. package/src/components/atoms/WordsMissing/index.js +60 -60
  392. package/src/components/atoms/WordsMissing/styles.js +10 -10
  393. package/src/components/molecules/AddGroup/AddGroup.stories.js +14 -14
  394. package/src/components/molecules/AddGroup/index.js +84 -84
  395. package/src/components/molecules/AddGroup/styles.js +141 -141
  396. package/src/components/molecules/AddProvidersAndProducts/AddProvidersAndProducts.stories.js +15 -15
  397. package/src/components/molecules/AddProvidersAndProducts/index.js +19 -19
  398. package/src/components/molecules/AddProvidersAndProducts/styles.js +22 -22
  399. package/src/components/molecules/AsignationInfo/AsignationInfo.stories.js +17 -17
  400. package/src/components/molecules/AsignationInfo/index.js +108 -108
  401. package/src/components/molecules/AsignationInfo/styles.js +86 -86
  402. package/src/components/molecules/AssignedWork/AssignedWork.stories.js +41 -41
  403. package/src/components/molecules/AssignedWork/index.js +40 -40
  404. package/src/components/molecules/AssignedWork/styles.js +110 -110
  405. package/src/components/molecules/AvatarAndValidation/AvatarAndValidation.stories.js +12 -12
  406. package/src/components/molecules/AvatarAndValidation/index.js +75 -75
  407. package/src/components/molecules/AvatarAndValidation/styles.js +15 -15
  408. package/src/components/molecules/BoxAttribute/BoxAttribute.stories.js +15 -15
  409. package/src/components/molecules/BoxAttribute/index.js +78 -78
  410. package/src/components/molecules/BoxAttribute/styles.js +38 -38
  411. package/src/components/molecules/BoxButtons/BoxButtons.stories.js +14 -14
  412. package/src/components/molecules/BoxButtons/index.js +29 -29
  413. package/src/components/molecules/BoxButtons/styles.js +43 -43
  414. package/src/components/molecules/ButtonDownloadFile/DownloadFile.stories.js +54 -54
  415. package/src/components/molecules/ButtonDownloadFile/index.js +109 -109
  416. package/src/components/molecules/ButtonDownloadFile/styles.js +66 -66
  417. package/src/components/molecules/CarouselImagesLogin/CarouselImagesLogin.stories.js +17 -17
  418. package/src/components/molecules/CarouselImagesLogin/index.js +65 -65
  419. package/src/components/molecules/CarouselImagesLogin/styles.js +60 -60
  420. package/src/components/molecules/CustomSelect/CustomSelect.stories.js +35 -35
  421. package/src/components/molecules/CustomSelect/SelectItem.js +104 -104
  422. package/src/components/molecules/CustomSelect/index.js +194 -194
  423. package/src/components/molecules/CustomSelect/styles.js +126 -126
  424. package/src/components/molecules/Dropdown/Dropdown.stories.js +103 -103
  425. package/src/components/molecules/Dropdown/index.js +150 -150
  426. package/src/components/molecules/Dropdown/styles.js +75 -75
  427. package/src/components/molecules/EditionActiveImage/EditionActiveImage.stories.js +12 -12
  428. package/src/components/molecules/EditionActiveImage/index.js +15 -15
  429. package/src/components/molecules/EditionActiveImage/styles.js +7 -7
  430. package/src/components/molecules/EditionActiveImagev2/EditionActiveImagev2.stories.js +12 -12
  431. package/src/components/molecules/EditionActiveImagev2/index.js +15 -15
  432. package/src/components/molecules/EditionActiveImagev2/styles.js +7 -7
  433. package/src/components/molecules/EditionTabs/EditionTabs.stories.js +12 -12
  434. package/src/components/molecules/EditionTabs/index.js +33 -33
  435. package/src/components/molecules/EditionTabs/styles.js +23 -23
  436. package/src/components/molecules/EmailResetPasswordLogin/EmailResetPasswordLogin.stories.js +11 -11
  437. package/src/components/molecules/EmailResetPasswordLogin/index.js +85 -85
  438. package/src/components/molecules/EmailResetPasswordLogin/styles.js +23 -23
  439. package/src/components/molecules/FeaturesBar/FeaturesBar.stories.js +20 -20
  440. package/src/components/molecules/FeaturesBar/index.js +30 -30
  441. package/src/components/molecules/FeaturesBar/styles.js +16 -16
  442. package/src/components/molecules/FeaturesBarv2/FeaturesBarv2.stories.js +20 -20
  443. package/src/components/molecules/FeaturesBarv2/index.js +32 -32
  444. package/src/components/molecules/FeaturesBarv2/styles.js +17 -17
  445. package/src/components/molecules/GalleryElement/GalleryElement.stories.js +30 -30
  446. package/src/components/molecules/GalleryElement/index.js +225 -225
  447. package/src/components/molecules/GalleryElement/styles.js +125 -125
  448. package/src/components/molecules/GalleryElementv2/GalleryElementv2.stories.js +30 -30
  449. package/src/components/molecules/GalleryElementv2/index.js +142 -142
  450. package/src/components/molecules/GalleryElementv2/styles.js +119 -119
  451. package/src/components/molecules/GalleryHeader/GalleryHeader.stories.js +10 -10
  452. package/src/components/molecules/GalleryHeader/index.js +27 -27
  453. package/src/components/molecules/GalleryHeader/styles.js +49 -49
  454. package/src/components/molecules/GalleryHeaderv2/GalleryHeaderv2.stories.js +10 -10
  455. package/src/components/molecules/GalleryHeaderv2/index.js +25 -25
  456. package/src/components/molecules/GalleryHeaderv2/styles.js +47 -47
  457. package/src/components/molecules/GridItem/GridItem.stories.js +126 -126
  458. package/src/components/molecules/GridItem/index.js +128 -128
  459. package/src/components/molecules/GridItem/styles.js +129 -129
  460. package/src/components/molecules/GroupSelect/GroupSelect.stories.js +35 -35
  461. package/src/components/molecules/GroupSelect/SelectItem.js +105 -105
  462. package/src/components/molecules/GroupSelect/index.js +190 -190
  463. package/src/components/molecules/GroupSelect/styles.js +124 -124
  464. package/src/components/molecules/HeaderItem/ColumnItem.js +9 -9
  465. package/src/components/molecules/HeaderItem/HeaderItem.stories.js +24 -24
  466. package/src/components/molecules/HeaderItem/index.js +26 -26
  467. package/src/components/molecules/HeaderItem/styles.js +27 -27
  468. package/src/components/molecules/HeaderTop/HeaderTop.stories.js +10 -10
  469. package/src/components/molecules/HeaderTop/index.js +106 -106
  470. package/src/components/molecules/HeaderTop/styles.js +33 -33
  471. package/src/components/molecules/HeaderTopv2/HeaderTopv2.stories.js +10 -10
  472. package/src/components/molecules/HeaderTopv2/index.js +100 -100
  473. package/src/components/molecules/HeaderTopv2/styles.js +33 -33
  474. package/src/components/molecules/ImageSelector/ImageSelector.stories.js +46 -46
  475. package/src/components/molecules/ImageSelector/index.js +22 -22
  476. package/src/components/molecules/ImageSelector/styles.js +13 -13
  477. package/src/components/molecules/ImageSelectorv2/ImageSelectorv2.stories.js +46 -46
  478. package/src/components/molecules/ImageSelectorv2/index.js +22 -22
  479. package/src/components/molecules/ImageSelectorv2/styles.js +15 -15
  480. package/src/components/molecules/ImageTooltip/ImageTooltip.stories.js +68 -68
  481. package/src/components/molecules/ImageTooltip/index.js +53 -53
  482. package/src/components/molecules/ImageTooltip/styles.js +18 -18
  483. package/src/components/molecules/LoginPasswordStrength/LoginPasswordStrength.stories.js +8 -8
  484. package/src/components/molecules/LoginPasswordStrength/index.js +84 -84
  485. package/src/components/molecules/LoginPasswordStrength/styles.js +91 -91
  486. package/src/components/molecules/LogoLoading/Loading.stories.js +9 -9
  487. package/src/components/molecules/LogoLoading/index.js +12 -12
  488. package/src/components/molecules/LogoLoading/styles.js +16 -16
  489. package/src/components/molecules/ParentComponent/ParentComponent.stories.js +18 -18
  490. package/src/components/molecules/ParentComponent/index.js +66 -66
  491. package/src/components/molecules/ParentComponent/styles.js +7 -7
  492. package/src/components/molecules/PayMethod/PayMethod.stories.js +12 -12
  493. package/src/components/molecules/PayMethod/index.js +46 -46
  494. package/src/components/molecules/PayMethod/styles.js +31 -31
  495. package/src/components/molecules/Phase/Phase.stories.js +107 -107
  496. package/src/components/molecules/Phase/index.js +391 -391
  497. package/src/components/molecules/Phase/styles.js +97 -97
  498. package/src/components/molecules/PlanSelection/PlanSelection.stories.js +19 -19
  499. package/src/components/molecules/PlanSelection/index.js +25 -25
  500. package/src/components/molecules/PlanSelection/styles.js +14 -14
  501. package/src/components/molecules/ProductNameHeader/ProductNameHeader.stories.js +37 -37
  502. package/src/components/molecules/ProductNameHeader/index.js +45 -45
  503. package/src/components/molecules/ProductNameHeader/styles.js +10 -10
  504. package/src/components/molecules/ProductNameHeaderv2/ProductNameHeaderv2.stories.js +37 -37
  505. package/src/components/molecules/ProductNameHeaderv2/index.js +12 -12
  506. package/src/components/molecules/ProductNameHeaderv2/styles.js +10 -10
  507. package/src/components/molecules/ProductNotification/ProductNotification.stories.js +13 -13
  508. package/src/components/molecules/ProductNotification/index.js +53 -53
  509. package/src/components/molecules/ProductNotification/styles.js +37 -37
  510. package/src/components/molecules/ProductSkuStatus/ProductSkuStatus.stories.js +37 -37
  511. package/src/components/molecules/ProductSkuStatus/index.js +26 -26
  512. package/src/components/molecules/ProductSkuStatus/styles.js +7 -7
  513. package/src/components/molecules/ProfileHeader/ProfileHeader.stories.js +16 -16
  514. package/src/components/molecules/ProfileHeader/index.js +54 -54
  515. package/src/components/molecules/ProfileHeader/styles.js +30 -30
  516. package/src/components/molecules/RegistrationFirstStep/RegistrationFirstStep.stories.js +11 -11
  517. package/src/components/molecules/RegistrationFirstStep/index.js +227 -227
  518. package/src/components/molecules/RegistrationFirstStep/styles.js +87 -87
  519. package/src/components/molecules/RegistrationSecondStep/RegistrationSecondStep.stories.js +11 -11
  520. package/src/components/molecules/RegistrationSecondStep/index.js +135 -135
  521. package/src/components/molecules/RegistrationSecondStep/styles.js +64 -64
  522. package/src/components/molecules/RegistrationThirdStep/RegistrationThirdStep.stories.js +11 -11
  523. package/src/components/molecules/RegistrationThirdStep/index.js +130 -130
  524. package/src/components/molecules/RegistrationThirdStep/styles.js +44 -44
  525. package/src/components/molecules/RetailerSelector/RetailerSelector.stories.js +35 -35
  526. package/src/components/molecules/RetailerSelector/index.js +81 -81
  527. package/src/components/molecules/RetailerSelector/styles.js +21 -21
  528. package/src/components/molecules/RetailerSelectorv2/RetailerSelectorv2.stories.js +35 -35
  529. package/src/components/molecules/RetailerSelectorv2/index.js +80 -80
  530. package/src/components/molecules/RetailerSelectorv2/styles.js +21 -21
  531. package/src/components/molecules/RowItem/ColumnItem.js +9 -9
  532. package/src/components/molecules/RowItem/RowItem.stories.js +5660 -5660
  533. package/src/components/molecules/RowItem/index.js +45 -45
  534. package/src/components/molecules/RowItem/styles.js +41 -41
  535. package/src/components/molecules/SelectV2/SelectV2.stories.js +115 -115
  536. package/src/components/molecules/SelectV2/index.js +357 -357
  537. package/src/components/molecules/SelectV2/styles.js +105 -105
  538. package/src/components/molecules/SelectV2/test.js +60 -60
  539. package/src/components/molecules/SelectV2/test.stories.js +10 -10
  540. package/src/components/molecules/ServiceDataValidator/ServiceDataValidator.stories.js +89 -89
  541. package/src/components/molecules/ServiceDataValidator/index.js +49 -49
  542. package/src/components/molecules/ServiceDataValidator/styles.js +36 -36
  543. package/src/components/molecules/SidebarNotification/SidebarNotification.stories.js +101 -101
  544. package/src/components/molecules/SidebarNotification/index.js +95 -95
  545. package/src/components/molecules/SidebarNotification/styles.js +63 -63
  546. package/src/components/molecules/SignInLogin/SignInLogin.stories.js +11 -11
  547. package/src/components/molecules/SignInLogin/index.js +244 -244
  548. package/src/components/molecules/SignInLogin/styles.js +111 -111
  549. package/src/components/molecules/StatusAsignationInfo/FinancedCompanies.js +44 -44
  550. package/src/components/molecules/StatusAsignationInfo/StatusAsignationInfo.stories.js +17 -17
  551. package/src/components/molecules/StatusAsignationInfo/index.js +197 -197
  552. package/src/components/molecules/StatusAsignationInfo/styles.js +82 -82
  553. package/src/components/molecules/StatusRetailer/StatusAsignationInfo.stories.js +17 -17
  554. package/src/components/molecules/StatusRetailer/index.js +55 -55
  555. package/src/components/molecules/StatusRetailer/styles.js +85 -85
  556. package/src/components/molecules/StripeCardForm/StripeCardForm.stories.js +14 -14
  557. package/src/components/molecules/StripeCardForm/index.js +45 -45
  558. package/src/components/molecules/StripeCardForm/paymentForm.js +126 -126
  559. package/src/components/molecules/StripeCardForm/styles.js +84 -84
  560. package/src/components/molecules/StripeCardSelector/CardSelector.stories.js +12 -12
  561. package/src/components/molecules/StripeCardSelector/index.js +59 -59
  562. package/src/components/molecules/StripeCardSelector/styles.js +15 -15
  563. package/src/components/molecules/StripeCardSelector/utils.js +17 -17
  564. package/src/components/molecules/TableHeader/TableHeader.stories.js +20 -20
  565. package/src/components/molecules/TableHeader/index.js +36 -36
  566. package/src/components/molecules/TableHeader/styles.js +30 -30
  567. package/src/components/molecules/TableRow/TableRow.stories.js +18 -18
  568. package/src/components/molecules/TableRow/index.js +14 -14
  569. package/src/components/molecules/TableRow/styles.js +11 -11
  570. package/src/components/molecules/TabsMenu/TabsMenu.stories.js +19 -19
  571. package/src/components/molecules/TabsMenu/index.js +110 -110
  572. package/src/components/molecules/TabsMenu/styles.js +5 -5
  573. package/src/components/molecules/TabsMenuv2/TabsMenuv2.stories.js +19 -19
  574. package/src/components/molecules/TabsMenuv2/index.js +112 -112
  575. package/src/components/molecules/TabsMenuv2/styles.js +19 -19
  576. package/src/components/molecules/TagAndInput/TagAndInput.stories.js +24 -24
  577. package/src/components/molecules/TagAndInput/index.js +120 -120
  578. package/src/components/molecules/TagAndInput/styles.js +36 -36
  579. package/src/components/molecules/TagAndInputv2/TagAndInputv2.stories.js +24 -24
  580. package/src/components/molecules/TagAndInputv2/index.js +86 -86
  581. package/src/components/molecules/TagAndInputv2/styles.js +35 -35
  582. package/src/components/molecules/Validation/Validation.stories.js +12 -12
  583. package/src/components/molecules/Validation/index.js +77 -77
  584. package/src/components/molecules/Validation/styles.js +19 -19
  585. package/src/components/molecules/VerificationCodeResetPasswordLogin/VerificationCodeResetPasswordLogin.stories.js +11 -11
  586. package/src/components/molecules/VerificationCodeResetPasswordLogin/index.js +171 -171
  587. package/src/components/molecules/VerificationCodeResetPasswordLogin/styles.js +54 -54
  588. package/src/components/molecules/VerificationCodeResetPasswordLogin/utils.js +54 -54
  589. package/src/components/molecules/VersionItem/VersionItem.stories.js +14 -14
  590. package/src/components/molecules/VersionItem/index.js +55 -55
  591. package/src/components/molecules/VersionItem/styles.js +32 -32
  592. package/src/components/molecules/VersionItemv2/VersionItemv2.stories.js +14 -14
  593. package/src/components/molecules/VersionItemv2/index.js +59 -59
  594. package/src/components/molecules/VersionItemv2/styles.js +47 -47
  595. package/src/components/organisms/BarButtons/BarButtons.stories.js +12 -12
  596. package/src/components/organisms/BarButtons/index.js +150 -150
  597. package/src/components/organisms/BarButtons/styles.js +54 -54
  598. package/src/components/organisms/Box/Box.stories.js +16 -16
  599. package/src/components/organisms/Box/index.js +103 -103
  600. package/src/components/organisms/Box/styles.js +47 -47
  601. package/src/components/organisms/BoxOnboarding/BoxOnboarding.stories.js +16 -16
  602. package/src/components/organisms/BoxOnboarding/index.js +59 -59
  603. package/src/components/organisms/BoxOnboarding/styles.js +44 -44
  604. package/src/components/organisms/Calendar/Calendar.stories.js +10 -10
  605. package/src/components/organisms/Calendar/index.js +17 -17
  606. package/src/components/organisms/Calendar/styles.js +853 -853
  607. package/src/components/organisms/ChangePassword/ChangePassword.stories.js +11 -11
  608. package/src/components/organisms/ChangePassword/index.js +77 -77
  609. package/src/components/organisms/ChangePassword/styles.js +13 -13
  610. package/src/components/organisms/Chat/Chat.stories.js +184 -184
  611. package/src/components/organisms/Chat/ChatLists/ChatLists.stories.js +65 -65
  612. package/src/components/organisms/Chat/ChatLists/index.js +141 -141
  613. package/src/components/organisms/Chat/ChatLists/styles.js +162 -162
  614. package/src/components/organisms/Chat/ContainerItems/ContainerItems.stories.js +142 -142
  615. package/src/components/organisms/Chat/ContainerItems/index.js +538 -538
  616. package/src/components/organisms/Chat/ContainerItems/styles.js +360 -360
  617. package/src/components/organisms/Chat/ContentChat/ContentChat.stories.js +102 -102
  618. package/src/components/organisms/Chat/ContentChat/index.js +1016 -1016
  619. package/src/components/organisms/Chat/ContentChat/styles.js +44 -44
  620. package/src/components/organisms/Chat/Footer/Footer.stories.js +22 -22
  621. package/src/components/organisms/Chat/Footer/index.js +668 -668
  622. package/src/components/organisms/Chat/Footer/styles.js +290 -290
  623. package/src/components/organisms/Chat/Header/Header.stories.js +66 -66
  624. package/src/components/organisms/Chat/Header/index.js +93 -93
  625. package/src/components/organisms/Chat/Header/styles.js +49 -49
  626. package/src/components/organisms/Chat/index.js +282 -282
  627. package/src/components/organisms/Chat/styles.js +50 -50
  628. package/src/components/organisms/Chatv2/ChatLists/ChatLists.stories.js +65 -65
  629. package/src/components/organisms/Chatv2/ChatLists/index.js +141 -141
  630. package/src/components/organisms/Chatv2/ChatLists/styles.js +162 -162
  631. package/src/components/organisms/Chatv2/Chatv2.stories.js +184 -184
  632. package/src/components/organisms/Chatv2/ContainerItems/ContainerItems.stories.js +142 -142
  633. package/src/components/organisms/Chatv2/ContainerItems/index.js +538 -538
  634. package/src/components/organisms/Chatv2/ContainerItems/styles.js +360 -360
  635. package/src/components/organisms/Chatv2/ContentChat/ContentChat.stories.js +102 -102
  636. package/src/components/organisms/Chatv2/ContentChat/index.js +1016 -1016
  637. package/src/components/organisms/Chatv2/ContentChat/styles.js +44 -44
  638. package/src/components/organisms/Chatv2/Footer/Footer.stories.js +22 -22
  639. package/src/components/organisms/Chatv2/Footer/index.js +668 -668
  640. package/src/components/organisms/Chatv2/Footer/styles.js +290 -290
  641. package/src/components/organisms/Chatv2/Header/Header.stories.js +66 -66
  642. package/src/components/organisms/Chatv2/Header/index.js +93 -93
  643. package/src/components/organisms/Chatv2/Header/styles.js +49 -49
  644. package/src/components/organisms/Chatv2/index.js +281 -281
  645. package/src/components/organisms/Chatv2/styles.js +85 -85
  646. package/src/components/organisms/CompleteServices/CompleteServices.stories.js +90 -90
  647. package/src/components/organisms/CompleteServices/index.js +82 -82
  648. package/src/components/organisms/CompleteServices/styles.js +35 -35
  649. package/src/components/organisms/CreateVersion/CreateVersion.stories.js +14 -14
  650. package/src/components/organisms/CreateVersion/RenderChilds.js +131 -131
  651. package/src/components/organisms/CreateVersion/index.js +68 -68
  652. package/src/components/organisms/CreateVersion/styles.js +79 -79
  653. package/src/components/organisms/DashboardMetric/DashboardMetric.stories.js +28 -28
  654. package/src/components/organisms/DashboardMetric/dashboardMetricUtils.js +130 -130
  655. package/src/components/organisms/DashboardMetric/index.js +120 -120
  656. package/src/components/organisms/DashboardMetric/styles.js +91 -91
  657. package/src/components/organisms/DragAndDropPhases/DragAndDropPhases.stories.js +12 -12
  658. package/src/components/organisms/DragAndDropPhases/index.js +336 -336
  659. package/src/components/organisms/DragAndDropPhases/styles.js +107 -107
  660. package/src/components/organisms/DragPrueba/DragPrueba.stories.js +11 -11
  661. package/src/components/organisms/DragPrueba/index.js +57 -57
  662. package/src/components/organisms/DragPrueba/styles.js +8 -8
  663. package/src/components/organisms/EditGroup/EditGroup.stories.js +19 -19
  664. package/src/components/organisms/EditGroup/index.js +321 -321
  665. package/src/components/organisms/EditGroup/styles.js +206 -206
  666. package/src/components/organisms/FullProductNameHeader/FullProductNameHeader.stories.js +28 -28
  667. package/src/components/organisms/FullProductNameHeader/index.js +102 -102
  668. package/src/components/organisms/FullProductNameHeader/styles.js +12 -12
  669. package/src/components/organisms/FullProductNamev2/FullProductNamev2.stories.js +28 -28
  670. package/src/components/organisms/FullProductNamev2/index.js +101 -101
  671. package/src/components/organisms/FullProductNamev2/styles.js +49 -49
  672. package/src/components/organisms/FullTabsMenu/FullTabsMenu.stories.js +22 -22
  673. package/src/components/organisms/FullTabsMenu/index.js +69 -69
  674. package/src/components/organisms/FullTabsMenu/styles.js +10 -10
  675. package/src/components/organisms/FullTabsMenuv2/FullTabsMenuv2.stories.js +22 -22
  676. package/src/components/organisms/FullTabsMenuv2/index.js +142 -142
  677. package/src/components/organisms/FullTabsMenuv2/styles.js +47 -47
  678. package/src/components/organisms/Fullplan/FullPlan.stories.js +21 -21
  679. package/src/components/organisms/Fullplan/index.js +34 -34
  680. package/src/components/organisms/Fullplan/styles.js +26 -26
  681. package/src/components/organisms/GlobalModal/index.js +68 -68
  682. package/src/components/organisms/GlobalModal/styles.js +123 -123
  683. package/src/components/organisms/GridProducts/GridProducts.stories.js +5853 -5853
  684. package/src/components/organisms/GridProducts/index.js +50 -50
  685. package/src/components/organisms/GridProducts/styles.js +15 -15
  686. package/src/components/organisms/GridProducts/utils.js +111 -111
  687. package/src/components/organisms/ImageDataTable/ImageDataTable.stories.js +24 -24
  688. package/src/components/organisms/ImageDataTable/index.js +124 -124
  689. package/src/components/organisms/ImageDataTable/styles.js +17 -17
  690. package/src/components/organisms/ImageDataTablev2/ImageDataTablev2.stories.js +24 -24
  691. package/src/components/organisms/ImageDataTablev2/index.js +124 -124
  692. package/src/components/organisms/ImageDataTablev2/styles.js +18 -18
  693. package/src/components/organisms/ImagePreviewer/ImagePreviewer.stories.js +38 -38
  694. package/src/components/organisms/ImagePreviewer/index.js +21 -21
  695. package/src/components/organisms/ImagePreviewer/styles.js +7 -7
  696. package/src/components/organisms/ImagePreviewerv2/ImagePreviewerv2.stories.js +38 -38
  697. package/src/components/organisms/ImagePreviewerv2/index.js +22 -22
  698. package/src/components/organisms/ImagePreviewerv2/styles.js +7 -7
  699. package/src/components/organisms/ImageUploader/ImageUploader.stories.js +15 -15
  700. package/src/components/organisms/ImageUploader/index.js +62 -62
  701. package/src/components/organisms/ImageUploader/styles.js +29 -29
  702. package/src/components/organisms/ImageVisor/ImageVisor.stories.js +15 -15
  703. package/src/components/organisms/ImageVisor/index.js +143 -143
  704. package/src/components/organisms/ImageVisor/styles.js +106 -106
  705. package/src/components/organisms/ImagesGroup/index.js +10 -10
  706. package/src/components/organisms/ImagesGroup/styles.js +3 -3
  707. package/src/components/organisms/InputGroup/InputGroup.stories.js +31 -31
  708. package/src/components/organisms/InputGroup/index.js +439 -439
  709. package/src/components/organisms/InputGroup/styles.js +87 -87
  710. package/src/components/organisms/InputGroupv2/InputGroupv2.stories.js +31 -31
  711. package/src/components/organisms/InputGroupv2/index.js +296 -296
  712. package/src/components/organisms/InputGroupv2/styles.js +90 -90
  713. package/src/components/organisms/MandatoryBar/MandatoryBar.stories.js +18 -18
  714. package/src/components/organisms/MandatoryBar/index.js +31 -31
  715. package/src/components/organisms/MandatoryBar/styles.js +12 -12
  716. package/src/components/organisms/Modal/Modal.stories.js +56 -56
  717. package/src/components/organisms/Modal/index.js +104 -104
  718. package/src/components/organisms/Modal/styles.js +110 -110
  719. package/src/components/organisms/OrderDetail/OrderDetail.stories.js +87 -87
  720. package/src/components/organisms/OrderDetail/index.js +216 -216
  721. package/src/components/organisms/OrderDetail/styles.js +122 -122
  722. package/src/components/organisms/OrderDetail/utils/ImageGroup/index.js +34 -34
  723. package/src/components/organisms/OrderDetail/utils/ImageGroup/styles.js +46 -46
  724. package/src/components/organisms/OrderDetail/utils/Table/index.js +133 -133
  725. package/src/components/organisms/OrderDetail/utils/Table/styles.js +74 -74
  726. package/src/components/organisms/OrderDetail/utils/Table/utils.js +32 -32
  727. package/src/components/organisms/PanelLayout/PanelLayout.stories.js +63 -63
  728. package/src/components/organisms/PanelLayout/index.js +11 -11
  729. package/src/components/organisms/PanelLayout/styles.js +39 -39
  730. package/src/components/organisms/ProductImageModal/ProductImageModal.stories.js +90 -90
  731. package/src/components/organisms/ProductImageModal/index.js +98 -98
  732. package/src/components/organisms/ProductImageModal/styles.js +60 -60
  733. package/src/components/organisms/ProductImageModalv2/ProductImageModalv2.stories.js +90 -90
  734. package/src/components/organisms/ProductImageModalv2/index.js +105 -105
  735. package/src/components/organisms/ProductImageModalv2/styles.js +71 -71
  736. package/src/components/organisms/RangeCalendar/RangeCalendar.stories.js +16 -16
  737. package/src/components/organisms/RangeCalendar/index.js +121 -121
  738. package/src/components/organisms/RangeCalendar/styles.js +883 -883
  739. package/src/components/organisms/RenameImagesBar/RenameImagesBar.stories.js +18 -18
  740. package/src/components/organisms/RenameImagesBar/index.js +30 -30
  741. package/src/components/organisms/RenameImagesBar/styles.js +12 -12
  742. package/src/components/organisms/SideModal/SideModal.stories.js +23 -23
  743. package/src/components/organisms/SideModal/index.js +50 -50
  744. package/src/components/organisms/SideModal/styles.js +30 -30
  745. package/src/components/organisms/Table/Table.stories.js +609 -609
  746. package/src/components/organisms/Table/index.js +84 -84
  747. package/src/components/organisms/Table/styles.js +119 -119
  748. package/src/components/organisms/TableResizable/TableResizable.stories.js +17 -17
  749. package/src/components/organisms/TableResizable/index.js +119 -119
  750. package/src/components/organisms/TableResizable/styles.js +133 -133
  751. package/src/components/organisms/TableResizable/utils.js +46 -46
  752. package/src/components/organisms/VersionSelector/VersionSelector.stories.js +15 -15
  753. package/src/components/organisms/VersionSelector/index.js +106 -106
  754. package/src/components/organisms/VersionSelector/styles.js +29 -29
  755. package/src/components/organisms/VersionSelectorv2/VersionSelectorv2.stories.js +15 -15
  756. package/src/components/organisms/VersionSelectorv2/index.js +105 -105
  757. package/src/components/organisms/VersionSelectorv2/styles.js +45 -45
  758. package/src/components/pages/ChangePasswordLogin/ChangePasswordLogin.stories.js +18 -18
  759. package/src/components/pages/ChangePasswordLogin/index.js +77 -77
  760. package/src/components/pages/ChangePasswordLogin/styles.js +20 -20
  761. package/src/components/pages/CustomerLogin/CustomerLogin.stories.js +78 -78
  762. package/src/components/pages/CustomerLogin/index.js +22 -22
  763. package/src/components/pages/CustomerLogin/styles.js +12 -12
  764. package/src/components/pages/CustomerPayMethod/CustomerPayMethod.stories.js +56 -56
  765. package/src/components/pages/CustomerPayMethod/index.js +23 -23
  766. package/src/components/pages/CustomerPayMethod/styles.js +21 -21
  767. package/src/components/pages/CustomerType/CustomerType.stories.js +33 -33
  768. package/src/components/pages/CustomerType/index.js +22 -22
  769. package/src/components/pages/CustomerType/styles.js +21 -21
  770. package/src/components/pages/Dashboard/Dashboard.stories.js +62 -62
  771. package/src/components/pages/Dashboard/dashboardUtils.js +74 -74
  772. package/src/components/pages/Dashboard/index.js +382 -382
  773. package/src/components/pages/Dashboard/styles.js +37 -37
  774. package/src/components/pages/EmailResetPassword/EmailResetPassword.stories.js +17 -17
  775. package/src/components/pages/EmailResetPassword/index.js +77 -77
  776. package/src/components/pages/EmailResetPassword/styles.js +27 -27
  777. package/src/components/pages/MultipleEdition/MultipleEdition.stories.js +16 -16
  778. package/src/components/pages/MultipleEdition/components/ImageUploader.js +62 -62
  779. package/src/components/pages/MultipleEdition/components/ImageUploaderStyles.js +29 -29
  780. package/src/components/pages/MultipleEdition/components/ImageVisor.js +143 -143
  781. package/src/components/pages/MultipleEdition/components/styles.js +106 -106
  782. package/src/components/pages/MultipleEdition/index.js +248 -248
  783. package/src/components/pages/MultipleEdition/saveData.js +92 -92
  784. package/src/components/pages/MultipleEdition/styles.js +197 -197
  785. package/src/components/pages/MultipleEdition/utils.js +1074 -1074
  786. package/src/components/pages/OnboardPlan/OnboardPlan.stories.js +51 -51
  787. package/src/components/pages/OnboardPlan/index.js +22 -22
  788. package/src/components/pages/OnboardPlan/styles.js +33 -33
  789. package/src/components/pages/ProductEditionv2/ProductEditionv2.stories.js +213 -213
  790. package/src/components/pages/ProductEditionv2/index.js +1758 -1758
  791. package/src/components/pages/ProductEditionv2/styles.js +154 -154
  792. package/src/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +139 -139
  793. package/src/components/pages/ProviderProductEdition/index.js +1779 -1779
  794. package/src/components/pages/ProviderProductEdition/styles.js +122 -122
  795. package/src/components/pages/RegistrationLoginSecondStep/RegistrationLoginSecondStep.stories.js +18 -18
  796. package/src/components/pages/RegistrationLoginSecondStep/index.js +111 -111
  797. package/src/components/pages/RegistrationLoginSecondStep/styles.js +64 -64
  798. package/src/components/pages/RegistrationLoginThirdStep/RegistrationLoginThirdStep.stories.js +17 -17
  799. package/src/components/pages/RegistrationLoginThirdStep/index.js +105 -105
  800. package/src/components/pages/RegistrationLoginThirdStep/styles.js +48 -48
  801. package/src/components/pages/RetailerPlan/RetailerPlan.stories.js +49 -49
  802. package/src/components/pages/RetailerPlan/index.js +24 -24
  803. package/src/components/pages/RetailerPlan/styles.js +26 -26
  804. package/src/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +119 -119
  805. package/src/components/pages/RetailerProductEdition/generateThumnail.js +20 -20
  806. package/src/components/pages/RetailerProductEdition/index.js +1838 -1828
  807. package/src/components/pages/RetailerProductEdition/styles.js +104 -104
  808. package/src/components/pages/RetailerProductEdition/utils.js +71 -71
  809. package/src/components/pages/VerificationCodeResetPassword/VerificationCodeResetPassword.stories.js +17 -17
  810. package/src/components/pages/VerificationCodeResetPassword/index.js +92 -92
  811. package/src/components/pages/VerificationCodeResetPassword/styles.js +54 -54
  812. package/src/components/pages/VerificationCodeResetPassword/utils.js +56 -56
  813. package/src/global-files/customHooks.js +24 -24
  814. package/src/global-files/data.js +186 -186
  815. package/src/global-files/fonts.css +69 -69
  816. package/src/global-files/global-styles.css +42 -42
  817. package/src/global-files/handle_http.js +224 -224
  818. package/src/global-files/handle_userTech.js +7 -7
  819. package/src/global-files/utils.js +330 -330
  820. package/src/global-files/variables.js +56 -56
  821. package/src/index.js +113 -113
  822. package/dist/assets/fonts/avenirnext/AvenirNextLTPro-Bold.otf +0 -0
  823. package/dist/assets/fonts/avenirnext/AvenirNextLTPro-It.otf +0 -0
  824. package/dist/assets/fonts/avenirnext/AvenirNextLTPro-Regular.otf +0 -0
  825. package/dist/assets/fonts/lato/Lato-Bold.ttf +0 -0
  826. package/dist/assets/fonts/lato/Lato-Italic.ttf +0 -0
  827. package/dist/assets/fonts/lato/Lato-Light.ttf +0 -0
  828. package/dist/assets/fonts/lato/Lato-Regular.ttf +0 -0
  829. package/dist/assets/fonts/lato/Lato-Thin.ttf +0 -0
  830. package/dist/assets/fonts/lato/OFL.txt +0 -93
  831. package/dist/assets/fonts/raleway/Raleway-Black.ttf +0 -0
  832. package/dist/assets/fonts/raleway/Raleway-Bold.ttf +0 -0
  833. package/dist/assets/fonts/raleway/Raleway-ExtraBold.ttf +0 -0
  834. package/dist/assets/fonts/raleway/Raleway-Italic.ttf +0 -0
  835. package/dist/assets/fonts/raleway/Raleway-Medium.ttf +0 -0
  836. package/dist/assets/fonts/raleway/Raleway-Regular.ttf +0 -0
  837. package/dist/assets/fonts/raleway/Raleway-SemiBold.ttf +0 -0
  838. package/dist/assets/fonts/roboto/Roboto-Black.ttf +0 -0
  839. package/dist/assets/fonts/roboto/Roboto-BlackItalic.ttf +0 -0
  840. package/dist/assets/fonts/roboto/Roboto-Bold.ttf +0 -0
  841. package/dist/assets/fonts/roboto/Roboto-BoldItalic.ttf +0 -0
  842. package/dist/assets/fonts/roboto/Roboto-Italic.ttf +0 -0
  843. package/dist/assets/fonts/roboto/Roboto-Light.ttf +0 -0
  844. package/dist/assets/fonts/roboto/Roboto-LightItalic.ttf +0 -0
  845. package/dist/assets/fonts/roboto/Roboto-Medium.ttf +0 -0
  846. package/dist/assets/fonts/roboto/Roboto-MediumItalic.ttf +0 -0
  847. package/dist/assets/fonts/roboto/Roboto-Regular.ttf +0 -0
  848. package/dist/assets/fonts/roboto/Roboto-Thin.ttf +0 -0
  849. package/dist/assets/fonts/roboto/Roboto-ThinItalic.ttf +0 -0
  850. package/dist/assets/images/Icons/DownloadIcon copy.svg +0 -4
  851. package/dist/assets/images/Icons/DownloadIcon.svg +0 -4
  852. package/dist/assets/images/Icons/Spinner copy.gif +0 -0
  853. package/dist/assets/images/Icons/Spinner.gif +0 -0
  854. package/dist/assets/images/Icons/addv2.svg +0 -8
  855. package/dist/assets/images/Icons/beenhere.svg +0 -9
  856. package/dist/assets/images/Icons/checkv2.svg +0 -8
  857. package/dist/assets/images/Icons/close-magenta.svg +0 -9
  858. package/dist/assets/images/Icons/close.svg +0 -8
  859. package/dist/assets/images/Icons/closeCircle.svg +0 -8
  860. package/dist/assets/images/Icons/delete-forever-red.svg +0 -9
  861. package/dist/assets/images/Icons/delete-forever-white.svg +0 -10
  862. package/dist/assets/images/Icons/edit.svg +0 -8
  863. package/dist/assets/images/Icons/fullscreen.svg +0 -3
  864. package/dist/assets/images/Icons/info copy.svg +0 -8
  865. package/dist/assets/images/Icons/info.svg +0 -8
  866. package/dist/assets/images/Icons/infoNR.svg +0 -8
  867. package/dist/assets/images/Icons/options.svg +0 -3
  868. package/dist/assets/images/Icons/save-white-gray.svg +0 -9
  869. package/dist/assets/images/Icons/save-white.svg +0 -9
  870. package/dist/assets/images/Icons/save.svg +0 -8
  871. package/dist/assets/images/Icons/search.svg +0 -3
  872. package/dist/assets/images/Icons/settings.svg +0 -8
  873. package/dist/assets/images/Icons/trash.svg +0 -8
  874. package/dist/assets/images/Icons/undo.svg +0 -8
  875. package/dist/assets/images/Icons/upload-file-white.svg +0 -4
  876. package/dist/assets/images/Icons/upload-file.svg +0 -10
  877. package/dist/assets/images/Icons/upload_file.svg +0 -10
  878. package/dist/assets/images/Icons/warningv2.svg +0 -3
  879. package/dist/assets/images/activedFilter/removeFilter.svg +0 -3
  880. package/dist/assets/images/arrow/arrowIcon.svg +0 -3
  881. package/dist/assets/images/arrow/polygon.svg +0 -3
  882. package/dist/assets/images/asignationOptions/availableIcon.svg +0 -3
  883. package/dist/assets/images/asignationOptions/removeAsigned.svg +0 -4
  884. package/dist/assets/images/asignationOptions/requestToProvider.svg +0 -3
  885. package/dist/assets/images/asignationOptions/requestToTeam.svg +0 -3
  886. package/dist/assets/images/card/masterCardIcon.svg +0 -5
  887. package/dist/assets/images/carouselImagesLogin/login2.svg +0 -117
  888. package/dist/assets/images/carouselImagesLogin/login3.svg +0 -147
  889. package/dist/assets/images/carouselImagesLogin/loginImage.svg +0 -301
  890. package/dist/assets/images/checkBox/checked.svg +0 -3
  891. package/dist/assets/images/checkBox/checkrosa.svg +0 -3
  892. package/dist/assets/images/checkBox/checkverde.svg +0 -3
  893. package/dist/assets/images/checkBox/unchecked.svg +0 -3
  894. package/dist/assets/images/componentAssigned/assignedImage1.svg +0 -9
  895. package/dist/assets/images/componentAssigned/assignedImage2.svg +0 -9
  896. package/dist/assets/images/componentAssigned/clock.svg +0 -4
  897. package/dist/assets/images/componentAssigned/flag.svg +0 -3
  898. package/dist/assets/images/customSelect/searchIcon.png +0 -0
  899. package/dist/assets/images/customSelect/starIcon.svg +0 -14
  900. package/dist/assets/images/defaultImages/Spinner.gif +0 -0
  901. package/dist/assets/images/defaultImages/check_circle.svg +0 -10
  902. package/dist/assets/images/defaultImages/defaultProductImage.png +0 -0
  903. package/dist/assets/images/defaultImages/defaultProfileImage.svg +0 -13
  904. package/dist/assets/images/defaultImages/defaultUpdate.png +0 -0
  905. package/dist/assets/images/defaultImages/notFound.svg +0 -124
  906. package/dist/assets/images/dropDownButton/dropDownArrowButton.svg +0 -3
  907. package/dist/assets/images/editField/editField.svg +0 -3
  908. package/dist/assets/images/editField/showPassword.png +0 -0
  909. package/dist/assets/images/flags/highPriority.svg +0 -3
  910. package/dist/assets/images/flags/lowPriority.svg +0 -3
  911. package/dist/assets/images/flags/mediumPriority.svg +0 -3
  912. package/dist/assets/images/flags/noPriority.svg +0 -3
  913. package/dist/assets/images/flagsv2/highPriority.svg +0 -3
  914. package/dist/assets/images/flagsv2/lowPriority.svg +0 -3
  915. package/dist/assets/images/flagsv2/mediumPriority.svg +0 -3
  916. package/dist/assets/images/flagsv2/noPriority.svg +0 -3
  917. package/dist/assets/images/generalButton/Icono AB.svg +0 -14
  918. package/dist/assets/images/generalButton/acceptIcon.svg +0 -3
  919. package/dist/assets/images/generalButton/closeIcon.svg +0 -4
  920. package/dist/assets/images/generalButton/closeIconWhite.svg +0 -4
  921. package/dist/assets/images/generalButton/closeIconv2.svg +0 -4
  922. package/dist/assets/images/generalButton/deleteIcon.svg +0 -13
  923. package/dist/assets/images/generalButton/deleteIconHover.svg +0 -13
  924. package/dist/assets/images/generalButton/downloadIcon.svg +0 -3
  925. package/dist/assets/images/generalButton/gridLayout.svg +0 -3
  926. package/dist/assets/images/generalButton/nullIcon.svg +0 -3
  927. package/dist/assets/images/generalButton/openModal.svg +0 -3
  928. package/dist/assets/images/generalButton/rejectIcon.svg +0 -3
  929. package/dist/assets/images/generalButton/rowLayout.svg +0 -3
  930. package/dist/assets/images/generalButton/saveIcon.svg +0 -3
  931. package/dist/assets/images/generalButton/saveIconHover.svg +0 -3
  932. package/dist/assets/images/generalButton/saveIconpink.svg +0 -3
  933. package/dist/assets/images/generalImage/assigned.svg +0 -14
  934. package/dist/assets/images/generalImage/bags.svg +0 -25
  935. package/dist/assets/images/generalImage/clock.svg +0 -4
  936. package/dist/assets/images/generalImage/flag.svg +0 -3
  937. package/dist/assets/images/genericModal/closeWhite.svg +0 -3
  938. package/dist/assets/images/genericModal/errorModal.svg +0 -3
  939. package/dist/assets/images/genericModal/genericModalCheck.svg +0 -3
  940. package/dist/assets/images/genericModal/genericModalClose.svg +0 -3
  941. package/dist/assets/images/genericModal/genericModalDown.svg +0 -3
  942. package/dist/assets/images/genericModal/genericModalUp.svg +0 -3
  943. package/dist/assets/images/genericModal/genericModalWarning.svg +0 -12
  944. package/dist/assets/images/genericModal/yellowAlert.svg +0 -12
  945. package/dist/assets/images/logo/logoLogin.svg +0 -15
  946. package/dist/assets/images/menuNotification/menuNotificationComment.svg +0 -3
  947. package/dist/assets/images/menuNotification/menuNotificationProduct.svg +0 -3
  948. package/dist/assets/images/menuProfile/logOut.svg +0 -3
  949. package/dist/assets/images/menuProfile/myAccount.svg +0 -3
  950. package/dist/assets/images/menuProfile/settings.svg +0 -3
  951. package/dist/assets/images/modalsSVGs/attributesSent.svg +0 -208
  952. package/dist/assets/images/modalsSVGs/descriptionSent.svg +0 -237
  953. package/dist/assets/images/modalsSVGs/providerSent.svg +0 -445
  954. package/dist/assets/images/modalsSVGs/uploadingImages.svg +0 -148
  955. package/dist/assets/images/productImage/openModal.svg +0 -3
  956. package/dist/assets/images/productNotification/productNotification.svg +0 -3
  957. package/dist/assets/images/profileHeader/profilePicture.svg +0 -9
  958. package/dist/assets/images/providerAndCadena/Cadena.svg +0 -188
  959. package/dist/assets/images/providerAndCadena/LoginContentoh.svg +0 -15
  960. package/dist/assets/images/providerAndCadena/Proveedor.svg +0 -231
  961. package/dist/assets/images/sideMenuButton/contenoh.svg +0 -5
  962. package/dist/assets/images/sideMenuButton/dashboard.svg +0 -5
  963. package/dist/assets/images/sideMenuButton/products.svg +0 -10
  964. package/dist/assets/images/sideMenuButton/providers.svg +0 -10
  965. package/dist/assets/images/sideMenuButton/tasks.svg +0 -3
  966. package/dist/assets/images/sliderToolTip/infoIcon.svg +0 -4
  967. package/dist/assets/images/sliderToolTip/slide1.svg +0 -5
  968. package/dist/assets/images/sliderToolTip/slide2.svg +0 -9
  969. package/dist/assets/images/sliderToolTip/slide21.svg +0 -9
  970. package/dist/assets/images/sliderToolTip/slide22.svg +0 -9
  971. package/dist/assets/images/sliderToolTip/slide23.svg +0 -9
  972. package/dist/assets/images/sliderToolTip/slide3.svg +0 -9
  973. package/dist/assets/images/sliderToolTip/slide4.svg +0 -9
  974. package/dist/assets/images/sliderToolTip/slide5.svg +0 -40
  975. package/dist/assets/images/versionSelector/acceptIcon.svg +0 -3
  976. package/dist/assets/images/versionSelector/addVersion.svg +0 -5
  977. package/dist/assets/images/versionSelector/closeVersionSelector.svg +0 -4
  978. package/dist/assets/images/versionSelector/createVersion.svg +0 -3
  979. package/dist/assets/images/versionSelector/nullIcon.svg +0 -3
  980. package/dist/assets/images/versionSelector/versionSelected.svg +0 -3
  981. package/dist/assets/images/verticalSideMenuMainPage/closeMenu.svg +0 -4
  982. package/dist/assets/images/verticalSideMenuMainPage/iconFAQS.svg +0 -12
  983. package/dist/assets/images/verticalSideMenuMainPage/iconGroup.svg +0 -3
  984. package/dist/assets/images/verticalSideMenuMainPage/iconLogo.svg +0 -12
  985. package/dist/assets/images/verticalSideMenuMainPage/iconLogoContentoh.svg +0 -15
  986. package/dist/assets/images/verticalSideMenuMainPage/iconProduct.svg +0 -3
  987. package/dist/assets/images/verticalSideMenuMainPage/iconSpeedometer.svg +0 -12
  988. package/dist/assets/images/verticalSideMenuMainPage/iconTask.svg +0 -10
  989. package/dist/assets/images/verticalSideMenuMainPage/openMenu.svg +0 -4
  990. package/dist/assets/sounds/newMessage.mp3 +0 -0
  991. package/dist/components/organisms/ServiceDataValidator/ServiceDataValidator.stories.js +0 -99
  992. package/dist/components/organisms/ServiceDataValidator/index.js +0 -57
  993. package/dist/components/organisms/ServiceDataValidator/styles.js +0 -20
  994. package/dist/global-files/fonts.css +0 -69
  995. package/dist/global-files/global-styles.css +0 -42
@@ -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
+ };