contentoh-components-library 21.1.46 → 21.1.49

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 (29) hide show
  1. package/dist/components/atoms/GeneralInput/index.js +0 -1
  2. package/dist/components/atoms/StatusTag/index.js +2 -17
  3. package/dist/components/atoms/StatusTag/styles.js +1 -1
  4. package/dist/components/molecules/HeaderTop/index.js +4 -1
  5. package/dist/components/molecules/RetailerSelector/index.js +34 -0
  6. package/dist/components/molecules/StatusAsignationInfo/index.js +3 -2
  7. package/dist/components/organisms/FullProductNameHeader/index.js +1 -1
  8. package/dist/components/organisms/FullTabsMenu/index.js +4 -2
  9. package/dist/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +119 -87
  10. package/dist/components/pages/ProviderProductEdition/index.js +380 -328
  11. package/dist/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +75 -33
  12. package/dist/components/pages/RetailerProductEdition/index.js +211 -197
  13. package/dist/components/pages/RetailerProductEdition/styles.js +1 -1
  14. package/dist/global-files/data.js +10 -9
  15. package/package.json +2 -2
  16. package/src/components/atoms/GeneralInput/index.js +0 -1
  17. package/src/components/atoms/StatusTag/index.js +2 -12
  18. package/src/components/atoms/StatusTag/styles.js +11 -11
  19. package/src/components/molecules/HeaderTop/index.js +6 -1
  20. package/src/components/molecules/RetailerSelector/index.js +16 -0
  21. package/src/components/molecules/StatusAsignationInfo/index.js +3 -2
  22. package/src/components/organisms/FullProductNameHeader/index.js +1 -1
  23. package/src/components/organisms/FullTabsMenu/index.js +2 -0
  24. package/src/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +116 -92
  25. package/src/components/pages/ProviderProductEdition/index.js +218 -208
  26. package/src/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +77 -31
  27. package/src/components/pages/RetailerProductEdition/index.js +141 -165
  28. package/src/components/pages/RetailerProductEdition/styles.js +1 -1
  29. package/src/global-files/data.js +10 -9
@@ -9,6 +9,14 @@ const Template = (args) => <RetailerProductEdition {...args} />;
9
9
 
10
10
  export const RetailerProductEditionDefault = Template.bind({});
11
11
 
12
+ // token coordinador textos: eyJraWQiOiJkQWJkZCtlclwvTlwveVRQUWNvUlVyOCtrNUd2M1hMM2N1MWUzQ09zWExVRnc9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJiMmNlNWIyYS02MDljLTRlNzktOWVhOS0yZjc0Y2ZmNDM4ODkiLCJjb2duaXRvOmdyb3VwcyI6WyJjb2xhYm9yYWRvcmVzX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfWE1aUWRxa0dqIiwiY29nbml0bzp1c2VybmFtZSI6ImIyY2U1YjJhLTYwOWMtNGU3OS05ZWE5LTJmNzRjZmY0Mzg4OSIsImNvZ25pdG86cm9sZXMiOlsiYXJuOmF3czppYW06Ojg5ODY3MDIzMjgwNzpyb2xlXC9jb250ZW50b2gtZGV2LXVzLWVhc3QtMS1sYW1iZGFSb2xlIl0sImF1ZCI6IjVhYzh0cGdzNmdic3ExM2ZydnJwaWVlcDQwIiwiZXZlbnRfaWQiOiJmZmQxNTNmNS03OWNmLTQ3NDMtYTU3OC03ZjVkZjVkZDM5OTgiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY1NjU1MDEwMywibmFtZSI6IkNvbGFib3JhZG9yIiwicGhvbmVfbnVtYmVyIjoiKzUyMTExMSIsImV4cCI6MTY1NjU1MzcwMywiaWF0IjoxNjU2NTUwMTAzLCJlbWFpbCI6ImF6YXJhdGVAY29udGVudG9oLmNvbSJ9.SaFbPPfYv4svBl4bPnFz_4xuWlrWC_keXT8XebJyOwwvfSVuKLtpdd_Qa8a6hB3QrrVJSEKLRo2O9vpXDgATNUO0B8F7aQpCQBvctkNGUac3Im3Z8wXuMq3kN8Z8nAnnfW2eVzsgsFHAzOM__VB7LO0U_oVhFDyWGg0V5dqJQX1eWenBL1vw9VxdCXCz3G7A_uRwiDRixupOJVPfW_MTMYgNkQgun4jvrCbQCwS7V_LqkOfqdBWRCHoj5SNn5UnbFQqSv3qh_Caoq4L7Snf9kPHJhpsAVVz7_EBlPf68A3WKqzMFgS7lfAQoNRDCtPGVJBXgKzR2db-iL6noVWUrNA
13
+ // id: 52 rol: 4
14
+ // token especialista textos: eyJraWQiOiJkQWJkZCtlclwvTlwveVRQUWNvUlVyOCtrNUd2M1hMM2N1MWUzQ09zWExVRnc9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJjYTFkMjRhYi1lOTkyLTRjMTktYjRlMS0yZmU2ZjcyMGMxNmIiLCJjb2duaXRvOmdyb3VwcyI6WyJjb2xhYm9yYWRvcmVzX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfWE1aUWRxa0dqIiwiY29nbml0bzp1c2VybmFtZSI6ImNhMWQyNGFiLWU5OTItNGMxOS1iNGUxLTJmZTZmNzIwYzE2YiIsImNvZ25pdG86cm9sZXMiOlsiYXJuOmF3czppYW06Ojg5ODY3MDIzMjgwNzpyb2xlXC9jb250ZW50b2gtZGV2LXVzLWVhc3QtMS1sYW1iZGFSb2xlIl0sImF1ZCI6IjVhYzh0cGdzNmdic3ExM2ZydnJwaWVlcDQwIiwiZXZlbnRfaWQiOiJiN2RkYzgxYi0wNGJjLTQzMjYtOTBlYi05ZTg5ZDg0ZjQzNjAiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY1NjYwNDkxMywibmFtZSI6IkNvbGFib3JhZG9yIiwicGhvbmVfbnVtYmVyIjoiKzUyMTExMSIsImV4cCI6MTY1NjYwODUxMywiaWF0IjoxNjU2NjA0OTEzLCJlbWFpbCI6InJsZWdvcnJldGFAY29udGVudG9oLmNvbSJ9.g0TAy9GCTRdcj1ueSuIJIOjNFnZdyeul1vPd_Z47OKl3VrWYNL3SRuUO3AqYsm1M3dFzh4ll1pP3NN_IQAlUdr2TKHN-RTYksCeTq5eWcUpo6tLDBe3YoPTB-FpTrJz1uFQIhfrILt_xMC85SP7Eap-z0IWgNvFiYtsy55WnWVHRkWuDrbQlzJTFFpS2D4FPSJsCZI3TLN7eaNW0TZDaqKIcnLYo7bOJ3H46-FBVtbtwfFjrzOCcfwVzl9zo6GlKCDUmXrHS1tbrvpBdTHBVeMO7Thpd__I0APWyRHe4F3R7uDI3lrCyZAF4yOHQQ3AFCi3JoMrX9YxQ0GHHaMcLPQ
15
+ // id: 54 rol: 7
16
+ // token coordinador images: eyJraWQiOiJkQWJkZCtlclwvTlwveVRQUWNvUlVyOCtrNUd2M1hMM2N1MWUzQ09zWExVRnc9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJjMTA2ZTE0MS1lMjIxLTQ5ZTgtYTM4Mi1jZTk5Mzg1YzZkODgiLCJjb2duaXRvOmdyb3VwcyI6WyJjb2xhYm9yYWRvcmVzX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfWE1aUWRxa0dqIiwiY29nbml0bzp1c2VybmFtZSI6ImMxMDZlMTQxLWUyMjEtNDllOC1hMzgyLWNlOTkzODVjNmQ4OCIsImNvZ25pdG86cm9sZXMiOlsiYXJuOmF3czppYW06Ojg5ODY3MDIzMjgwNzpyb2xlXC9jb250ZW50b2gtZGV2LXVzLWVhc3QtMS1sYW1iZGFSb2xlIl0sImF1ZCI6IjVhYzh0cGdzNmdic3ExM2ZydnJwaWVlcDQwIiwiZXZlbnRfaWQiOiI3YjZmY2JlZi1lNzlmLTQyNzEtYWQyOC1lMzc1Y2UzZDI5ZTQiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY1NjYwNDMzOCwibmFtZSI6IkNvbGFib3JhZG9yIiwicGhvbmVfbnVtYmVyIjoiKzUyMTExMSIsImV4cCI6MTY1NjYwNzkzOCwiaWF0IjoxNjU2NjA0MzM4LCJlbWFpbCI6ImFyb2phc0Bjb250ZW50b2guY29tIn0.VOCiXnUzs95DPdzaKIj6MN1rDii9_HVf9PYi4ygLqIZUzzwYhBerjHlBynA4pcoz_ltLylVEAO6m1vEAMO8bKxNHG_voA7r1K_8yxyyOJOCC3760Meo60dAuOuV0bPNe1V_w5kuOCu2qB33OogE4_S4GKv5qeN14jkQxKN728aIlcVFLU-_0WMb7Lx1k1T7DQ1i91G7OzyGYCT1jENpJxwrlWWddu4U7eMi0v_v1wEgLoozwsGlqHW4kBraeWWC1vidYrRjjyoDaF27QAd5DcIxj2EuoLRVVrYDcnlondc7XyX8-crJwYQhruy3NHMajxyLaXPQ_vFEojKG9wgJMjQ
17
+ // id: 53 rol: 5
18
+ // token auditor: eyJraWQiOiJkQWJkZCtlclwvTlwveVRQUWNvUlVyOCtrNUd2M1hMM2N1MWUzQ09zWExVRnc9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiI5YTIxMzEyOC02NDgyLTRjMTYtYTRiNi02ZTY0ZjIyNWIxYmQiLCJjb2duaXRvOmdyb3VwcyI6WyJjb2xhYm9yYWRvcmVzX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfWE1aUWRxa0dqIiwiY29nbml0bzp1c2VybmFtZSI6IjlhMjEzMTI4LTY0ODItNGMxNi1hNGI2LTZlNjRmMjI1YjFiZCIsImNvZ25pdG86cm9sZXMiOlsiYXJuOmF3czppYW06Ojg5ODY3MDIzMjgwNzpyb2xlXC9jb250ZW50b2gtZGV2LXVzLWVhc3QtMS1sYW1iZGFSb2xlIl0sImF1ZCI6IjVhYzh0cGdzNmdic3ExM2ZydnJwaWVlcDQwIiwiZXZlbnRfaWQiOiIxZDFhY2ZkYy00M2Y2LTQwZGUtOWQ0NS04Y2NmYmIxNGU5ODYiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY1NjYwNTI5NywibmFtZSI6IkNvbGFib3JhZG9yIiwicGhvbmVfbnVtYmVyIjoiKzUyMTExMSIsImV4cCI6MTY1NjYwODg5NywiaWF0IjoxNjU2NjA1Mjk3LCJlbWFpbCI6ImlzbWFlbDk3bG9wZXpAZ21haWwuY29tIn0.NFeT4ehU-626Y5h4mXmdRLFRzvwWvDyOaWtQo4moq10nz-C5UQS_AbcKg9M8hZunUi6Xes3KNigXrRRW8NlajYDWzfzw-Y2H1TWAaPU6pe1Nnup0oxpgn6fLRcEKoayeJaSrQM1Fpq9nNCFFelGggac1xUPJ57nhVSeHLRNacHHASKyHXhAAheKqJBXc-cOmqAiyqlrNlwAQqziu5KEE63zSWh34e-Q4aG189YkD3kNwC3x4tscyxOonF5xQl6pw9TgJDxLgWuPNGpz83e6tIzzUib9GPtkmOzTjsV3hz5FTLOnGpmlhqQ2BvY66W30UdvRLAbFj_qBR55TyJGc-XQ
19
+ // id: 37 rol: 6
12
20
  RetailerProductEditionDefault.args = {
13
21
  tabsSections: {
14
22
  Descripción: true,
@@ -16,45 +24,93 @@ RetailerProductEditionDefault.args = {
16
24
  Imágenes: false,
17
25
  },
18
26
  token:
19
- "eyJraWQiOiJkQWJkZCtlclwvTlwveVRQUWNvUlVyOCtrNUd2M1hMM2N1MWUzQ09zWExVRnc9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJjOTRhNzMwNS05MzY1LTQ2ZmYtYTQyMy00YjRiYzNiOGIxODAiLCJjb2duaXRvOmdyb3VwcyI6WyJjb2xhYm9yYWRvcmVzX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfWE1aUWRxa0dqIiwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjp0cnVlLCJjb2duaXRvOnVzZXJuYW1lIjoiYzk0YTczMDUtOTM2NS00NmZmLWE0MjMtNGI0YmMzYjhiMTgwIiwiY29nbml0bzpyb2xlcyI6WyJhcm46YXdzOmlhbTo6ODk4NjcwMjMyODA3OnJvbGVcL2NvbnRlbnRvaC1kZXYtdXMtZWFzdC0xLWxhbWJkYVJvbGUiXSwiYXVkIjoiNWFjOHRwZ3M2Z2JzcTEzZnJ2cnBpZWVwNDAiLCJldmVudF9pZCI6ImExY2QwOGQ3LTM0MTgtNGI0ZC1hODNmLTJlOWE0N2E2ZTQzYSIsInRva2VuX3VzZSI6ImlkIiwiYXV0aF90aW1lIjoxNjU2Mzc1MzQ5LCJuYW1lIjoiQ29sYWJvcmFkb3IiLCJwaG9uZV9udW1iZXIiOiIrNTIxMTExIiwiZXhwIjoxNjU2Mzc4OTQ5LCJpYXQiOjE2NTYzNzUzNDksImVtYWlsIjoic2FsbWVyb24uNUBob3RtYWlsLmNvbSJ9.AXD7CR-3bJz6vIdBBNB_3xLfaTvlFjHi-cwKdN5qCUSY4msnf1a1RhMEThL3wt7fXi15dy5Fy5b_7zgkWc_NY35Otu1ifQNmSxemncx5qFsNsBH6OvIaZrhiw7XXkfQF20w22f4o8VFW1u0cWudFBYYm6tXlKVEetw-NEu94Mnip0BtQQUU6rFjz5hQM0gWYsvOMmSX3JKQWl4thirzTOqJxrKebFeWnUMs5D3hlFpKeBSKodgB6lLw2522SJmxWXmGCaDOVSMUP9LqB9PsboSOBfSeQpkbIZqd9iNWbrFCusGhnoRrQABucqFwlQ6KPHYTPaOOux-X3pf6i5woX4g",
27
+ "eyJraWQiOiJkQWJkZCtlclwvTlwveVRQUWNvUlVyOCtrNUd2M1hMM2N1MWUzQ09zWExVRnc9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiI3MTNhNzQ1Ny1mOTQzLTRiYzktOGViMC04NmI0MWY1YmQ0ZjgiLCJjb2duaXRvOmdyb3VwcyI6WyJjb2xhYm9yYWRvcmVzX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfWE1aUWRxa0dqIiwiY29nbml0bzp1c2VybmFtZSI6IjcxM2E3NDU3LWY5NDMtNGJjOS04ZWIwLTg2YjQxZjViZDRmOCIsImNvZ25pdG86cm9sZXMiOlsiYXJuOmF3czppYW06Ojg5ODY3MDIzMjgwNzpyb2xlXC9jb250ZW50b2gtZGV2LXVzLWVhc3QtMS1sYW1iZGFSb2xlIl0sImF1ZCI6IjVhYzh0cGdzNmdic3ExM2ZydnJwaWVlcDQwIiwiZXZlbnRfaWQiOiI3ZTYxNmNhNi0yYmEwLTQzOWEtOTRjOS0yYTVjZDZlOWU1NjYiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY1NzA0Njk0NCwibmFtZSI6IkNvbGFib3JhZG9yIiwicGhvbmVfbnVtYmVyIjoiKzUyMTExMSIsImV4cCI6MTY1NzA1MDU0NCwiaWF0IjoxNjU3MDQ2OTQ0LCJlbWFpbCI6ImhjYXJyaWxsb0Bjb250ZW50b2guY29tIn0.btw_69CgSyAKV2UEUqxGTOfVdvoDlGLIpmw0SMrI59HcpCIMqwpfVKd0ZphiwARLhGGZRYC6rgzx6BS1XTs850UX6L2148A8hwt9toInXcTuhC0Wl2h7kJwZFh-KEnS2pFW88FExnPtTqfnbTyc-L_jyWDPnY39vFU0EdMibcSz1jlspDBNOGUXDvV0TtT97KzU1808eK9h7S_YiCiALLofN_C7veQ0sMfvbc155iic0Izl43otMbcCwim7FlX-WsuJHVciYjH36tv-9YHK1PprtLzybTSm1ih0poB3rXlNCcxoyjNfRJFCq1G6xlOsNCvKFl8GwhKNXGaGT_KK5MA",
20
28
  productSelected: {
29
+ services: {
30
+ datasheets: 0,
31
+ descriptions: 0,
32
+ images: 1,
33
+ },
34
+ orderId: 116,
35
+ status: "PA",
36
+ datasheet_status: null,
37
+ prio: "none",
38
+ version: 2,
39
+ description_status: null,
40
+ images_status: null,
41
+ article: {
42
+ id_article: 76155,
43
+ id_category: "14",
44
+ name: "pan integral",
45
+ upc: "34243",
46
+ timestamp: "2022-07-13T16:51:20.000Z",
47
+ id_user: 28,
48
+ status: "NULL",
49
+ active: 1,
50
+ company_id: 1,
51
+ company_name: "COMPANY DEV",
52
+ country: "México",
53
+ id_order: 116,
54
+ id_datasheet_especialist: 54,
55
+ id_datasheet_facilitator: 52,
56
+ id_description_especialist: 54,
57
+ id_description_facilitator: 52,
58
+ id_images_especialist: 55,
59
+ id_images_facilitator: 53,
60
+ id_auditor: 30,
61
+ id_recepcionist: null,
62
+ category: "ABARROTES|ABARROTES SECOS|PAN DE CAJA",
63
+ missingAttributes: 0,
64
+ missingDescriptions: 0,
65
+ missingImages: 0,
66
+ },
67
+ retailers: [
68
+ {
69
+ id: 65,
70
+ name: "Súper Aki",
71
+ },
72
+ ],
73
+ country: "México",
74
+ upc: "34243",
75
+ },
76
+ location: {
21
77
  services: {
22
78
  datasheets: 1,
23
79
  descriptions: 1,
24
80
  images: 1,
25
81
  },
26
- orderId: 64,
27
- status: "AF",
28
- datasheet_status: "AF",
82
+ orderId: 89,
83
+ status: "AC",
84
+ datasheet_status: "AC",
29
85
  prio: "none",
30
- version: 7,
31
- description_status: "AF",
32
- images_status: "AF",
86
+ version: 3,
87
+ description_status: "AC",
88
+ images_status: "AC",
33
89
  article: {
34
- id_article: 35707,
35
- id_category: "41",
36
- name: "chetos",
37
- upc: "1010101010",
38
- timestamp: "2022-06-16T18:12:42.000Z",
90
+ id_article: 55157,
91
+ id_category: "4",
92
+ name: "testing",
93
+ upc: "807526",
94
+ timestamp: "2022-06-23T18:28:29.000Z",
39
95
  id_user: 28,
40
96
  status: "NULL",
41
97
  active: 1,
42
98
  company_id: 1,
43
99
  company_name: "COMPANY DEV",
44
100
  country: "México",
45
- id_order: 64,
101
+ id_order: 89,
46
102
  id_datasheet_especialist: 54,
47
103
  id_datasheet_facilitator: 52,
48
104
  id_description_especialist: 54,
49
105
  id_description_facilitator: 52,
50
106
  id_images_especialist: 55,
51
107
  id_images_facilitator: 53,
52
- id_auditor: 30,
108
+ id_auditor: 37,
53
109
  id_recepcionist: null,
54
- category: "ABARROTES|BOTANAS, GOLOSINAS Y CHOCOLATES|BOTANAS",
55
- missingAttributes: null,
56
- missingDescriptions: null,
57
- missingImages: null,
110
+ category: "ABARROTES|ABARROTES SECOS|ALIMENTOS DESHIDRATADOS",
111
+ missingAttributes: 17,
112
+ missingDescriptions: 4,
113
+ missingImages: 3,
58
114
  },
59
115
  retailers: [
60
116
  {
@@ -64,19 +120,9 @@ RetailerProductEditionDefault.args = {
64
120
  id_region: 1,
65
121
  active: 1,
66
122
  },
67
- {
68
- id: 8,
69
- name: "Fragua",
70
- country: "México",
71
- id_region: 1,
72
- active: 1,
73
- },
74
123
  ],
75
124
  country: "México",
76
- upc: "1010101010",
77
- },
78
- location: {
79
- product: { articleId: 109485, versionId: 3 },
125
+ upc: "807526",
80
126
  },
81
127
  user: {
82
128
  id_user: 30,
@@ -109,6 +155,6 @@ RetailerProductEditionDefault.args = {
109
155
  products_limit: "3",
110
156
  type: "PyMES",
111
157
  },
112
- src: "https://content-management-profile.s3.amazonaws.com/id-30/30.png?1656375350443",
158
+ src: "https://content-management-profile.s3.amazonaws.com/id-30/30.png?1657751241168",
113
159
  },
114
- };
160
+ };
@@ -29,7 +29,6 @@ import { GenericModal } from "../../atoms/GenericModal";
29
29
  import { ScreenHeader } from "../../atoms/ScreenHeader";
30
30
  import { Loading } from "../../atoms/Loading";
31
31
  import succes from "../../../assets/images/genericModal/genericModalCheck.svg";
32
- import { getNewStatus } from "../../../global-files/data";
33
32
  import errorModal from "../../../assets/images/genericModal/errorModal.svg";
34
33
 
35
34
  const reducerImages = (state, action) => {
@@ -182,11 +181,8 @@ export const RetailerProductEdition = ({
182
181
  setServices(services);
183
182
  getServices();
184
183
 
185
- //setActiveRetailer(product?.retailers[0]);
186
- setImages({
187
- action: "init",
188
- init: services[2],
189
- });
184
+ // setActiveRetailer(product?.retailers[0]);
185
+ setImages({ action: "init", init: services[2] });
190
186
  if (services[2]?.values?.length > 0) setActiveImage(0);
191
187
 
192
188
  getPercentage({ data: [product] }).then((res) => setPercentages(res));
@@ -204,24 +200,22 @@ export const RetailerProductEdition = ({
204
200
  );
205
201
  const parsedResponse = JSON.parse(servicesResponse?.data?.body).data;
206
202
 
207
- let retailers = product.retailers || product.retailersAvailable;
208
- let active = retailers?.filter((retailer) =>
209
- parsedResponse?.map((srv) => srv.id_retailer).includes(retailer.id)
210
- )[0];
203
+ const retailers = product.retailers || product.retailersAvailable;
204
+ const retailerResponse = parsedResponse?.map((srv) => srv.id_retailer);
205
+ const active = retailers?.find((retailer) =>
206
+ retailerResponse.includes(retailer.id)
207
+ );
211
208
  !activeRetailer.id && setActiveRetailer(active ? active : retailers[0]);
212
209
  setServicesData(parsedResponse);
213
210
  };
214
211
 
215
212
  const translateConcept = (concept) => {
216
- let translation = "";
217
- if (concept === "datasheet") {
218
- translation = "Ficha técnica";
219
- } else if (concept === "description") {
220
- translation = "Descripción";
221
- } else if (concept === "images") {
222
- translation = "Imágenes";
223
- }
224
- return translation;
213
+ const translation = {
214
+ datasheet: "Ficha técnica",
215
+ description: "Descripción",
216
+ images: "Imágenes",
217
+ };
218
+ return translation[concept];
225
219
  };
226
220
 
227
221
  const getComments = async (tab = "Descripción") => {
@@ -257,14 +251,14 @@ export const RetailerProductEdition = ({
257
251
  switch (user.id_role) {
258
252
  case 7:
259
253
  case 8:
260
- arr = ["IN_PROGRESS", "RF", "RA"];
254
+ arr = ["CA", "RC", "RA"];
261
255
  break;
262
256
  case 4:
263
257
  case 5:
264
- arr = ["RF", "AF", "AA", "AP", "AC"];
258
+ arr = ["RC", "AC", "AA", "AP", "ACA"];
265
259
  break;
266
260
  case 6:
267
- arr = ["RP", "RC", "AF", "RA"];
261
+ arr = ["RP", "RCA", "AC", "RA"];
268
262
  break;
269
263
  default:
270
264
  arr = [];
@@ -390,13 +384,14 @@ export const RetailerProductEdition = ({
390
384
  const saveDescriptions = async () => {
391
385
  setLoading(true);
392
386
  const productTemp = product;
387
+ const articleId = product?.article?.id_article;
393
388
  const dataObject = {
394
- articleId: product?.article?.id_article,
389
+ articleId,
395
390
  articleData: updatedDescriptions,
396
391
  };
397
392
  if (product?.orderId) dataObject["orderId"] = product?.orderId;
398
393
  try {
399
- await axios.put(
394
+ const res = await axios.put(
400
395
  `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?description=true&version=${version}`,
401
396
  dataObject,
402
397
  {
@@ -405,14 +400,16 @@ export const RetailerProductEdition = ({
405
400
  },
406
401
  }
407
402
  );
408
- if (productTemp.status === "ASSIGNED") {
409
- productTemp.status = "IN_PROGRESS";
403
+ if (res.data.statusCode === 200) {
404
+ const { newStatus, newArticleStatus } = JSON.parse(res.data.body);
405
+ if (newArticleStatus) productTemp.status = newArticleStatus[articleId];
406
+ if (newStatus) productTemp.description_status = newStatus;
410
407
  setProduct(productTemp);
411
408
  sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
412
- }
413
409
 
414
- setMessage("Descripciones guardadas con éxito");
415
- loadData();
410
+ setMessage("Descripciones guardadas con éxito");
411
+ await loadData();
412
+ }
416
413
  } catch (error) {
417
414
  console.log(error);
418
415
  }
@@ -421,13 +418,14 @@ export const RetailerProductEdition = ({
421
418
  const saveDatasheets = async () => {
422
419
  setLoading(true);
423
420
  const productTemp = product;
421
+ const articleId = product?.article?.id_article;
424
422
  const dataObject = {
425
- articleId: product?.article?.id_article,
423
+ articleId,
426
424
  articleData: updatedDatasheets,
427
425
  };
428
426
  if (product?.orderId) dataObject["orderId"] = product?.orderId;
429
427
  try {
430
- await axios.put(
428
+ const res = await axios.put(
431
429
  `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?datasheet=true&version=${version}`,
432
430
  dataObject,
433
431
  {
@@ -436,13 +434,16 @@ export const RetailerProductEdition = ({
436
434
  },
437
435
  }
438
436
  );
439
- setMessage("Fichas técnicas guardadas");
440
- if (productTemp.status === "ASSIGNED") {
441
- productTemp.status = "IN_PROGRESS";
437
+ if (res.data.statusCode === 200) {
438
+ const { newStatus, newArticleStatus } = JSON.parse(res.data.body);
439
+ if (newArticleStatus) productTemp.status = newArticleStatus[articleId];
440
+ if (newStatus) productTemp.datasheet_status = newStatus;
442
441
  setProduct(productTemp);
443
442
  sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
443
+
444
+ setMessage("Fichas técnicas guardadas");
445
+ await loadData();
444
446
  }
445
- loadData();
446
447
  } catch (error) {
447
448
  console.log(error);
448
449
  }
@@ -526,15 +527,6 @@ export const RetailerProductEdition = ({
526
527
  } else {
527
528
  setImagesUploaded(true);
528
529
  }
529
- let productTemp = product;
530
- if (productTemp.status === "ASSIGNED") {
531
- productTemp.status = "IN_PROGRESS";
532
- setProduct(productTemp);
533
- sessionStorage.setItem(
534
- "productSelected",
535
- JSON.stringify(productTemp)
536
- );
537
- }
538
530
  } catch (err) {
539
531
  console.log(err);
540
532
  // setMainLoading(false);
@@ -559,7 +551,7 @@ export const RetailerProductEdition = ({
559
551
  return e;
560
552
  });
561
553
  try {
562
- await axios.put(
554
+ const res = await axios.put(
563
555
  `${process.env.REACT_APP_ARTICLE_DATA_ENDPOINT}?image=true&version=${version}`,
564
556
  dataImages,
565
557
  {
@@ -568,9 +560,21 @@ export const RetailerProductEdition = ({
568
560
  },
569
561
  }
570
562
  );
571
- setMessage("Imágenes guardadas con éxito");
572
- sessionStorage.removeItem("imagesList");
573
- loadData();
563
+ if (res.data.statusCode === 200) {
564
+ let productTemp = product;
565
+ const { newStatus, newArticleStatus } = JSON.parse(res.data.body);
566
+ if (newArticleStatus)
567
+ productTemp.status = newArticleStatus[articleId];
568
+ if (newStatus) productTemp.images_status = newStatus;
569
+ setProduct(productTemp);
570
+ sessionStorage.setItem(
571
+ "productSelected",
572
+ JSON.stringify(productTemp)
573
+ );
574
+ setMessage("Imágenes guardadas con éxito");
575
+ sessionStorage.removeItem("imagesList");
576
+ await loadData();
577
+ }
574
578
  } catch (error) {
575
579
  console.log(error);
576
580
  }
@@ -579,24 +583,23 @@ export const RetailerProductEdition = ({
579
583
 
580
584
  const evaluationFinished = (userId, tab, statusArray) => {
581
585
  const srv = servicesData.filter((serv) => serv.service === getConcept(tab));
582
- const [srvActive] = srv.filter(
583
- (serv) => serv.id_retailer === activeRetailer?.id
586
+ const srvActive = srv
587
+ .find((serv) => serv.id_retailer === activeRetailer?.id)
588
+ ?.status?.replace(/.*\//, "");
589
+ const currStatus = product[`${getConcept(tab)}_status`]?.replace(
590
+ /.*\//,
591
+ ""
584
592
  );
585
- const unvalidated =
586
- product[`${getConcept(tab)}_status`] === "QF" ||
587
- product[`${getConcept(tab)}_status`] === "IN_PROGRESS";
593
+ const unvalidated = ["IE", "CA"].includes(currStatus);
588
594
 
589
- const auditorUnvalidated = !["RA", "AA", "AC", "AP"].includes(
590
- product[`${getConcept(tab)}_status`]
591
- );
595
+ const auditorUnvalidated = !["RA", "AA", "ACA", "AP"].includes(currStatus);
592
596
 
593
597
  switch (userId) {
594
598
  case 7:
595
599
  case 8:
596
600
  return (
597
- (["RA", "RF"].includes(product?.status) && //"IN_PROGRESS", "RF", "RA"
598
- statusArray.includes(srvActive?.status)) ||
599
- (statusArray.includes(product.status) &&
601
+ statusArray.includes(srvActive) &&
602
+ (["RA", "RC"].includes(product?.status) ||
600
603
  srv.filter((serv) => statusArray.includes(serv.status)).length ===
601
604
  srv.length)
602
605
  );
@@ -604,14 +607,16 @@ export const RetailerProductEdition = ({
604
607
  case 5:
605
608
  return (
606
609
  unvalidated &&
607
- ["IN_PROGRESS", "QF"].includes(product.status) && //"RF", "AF", "AA", "AP", "AC
610
+ ["CA", "IE"].includes(product.status) && // "RC", "AC", "AA", "AP", "ACA"
608
611
  srv.filter((serv) => statusArray.includes(serv.status)).length ===
609
612
  srv.length
610
613
  );
611
614
  case 6:
612
615
  return (
613
- statusArray.includes(product.status) && //RP, RC, AF, RA true
614
- srv.every((serv) => ["RA", "AA", "AP", "AC"].includes(serv.status)) &&
616
+ statusArray.includes(product.status) && // RP, RCA, AC, RA true
617
+ srv.every((serv) =>
618
+ ["RA", "AA", "AP", "ACA"].includes(serv.status)
619
+ ) &&
615
620
  auditorUnvalidated
616
621
  );
617
622
  default:
@@ -633,20 +638,20 @@ export const RetailerProductEdition = ({
633
638
  const approveRejectButtons = (action) => {
634
639
  let concept = getConcept(action || activeTab);
635
640
 
636
- const [retailerStatus] = servicesData.filter(
637
- (srv) => srv.id_retailer === activeRetailer?.id && srv.service === concept
638
- );
639
-
640
- return (
641
- (retailerStatus?.status === "QF" &&
642
- (user.id_role === 1 || user.id_role === 4 || user.id_role === 5)) ||
643
- (retailerStatus?.status === "AF" && //sessionStorage product
644
- (user.id_role === 1 || user.id_role === 6)) ||
645
- (retailerStatus?.status === "RP" &&
646
- (user.id_role === 1 || user.id_role === 6)) ||
647
- (retailerStatus?.status === "RC" &&
648
- (user.id_role === 1 || user.id_role === 6))
649
- );
641
+ const retailerStatus = servicesData
642
+ .find(
643
+ (srv) =>
644
+ srv.id_retailer === activeRetailer?.id && srv.service === concept
645
+ )
646
+ ?.status?.replace(/.*\//, "");
647
+
648
+ //sessionStorage product
649
+ const adminFacilitatorCanEvaluate =
650
+ retailerStatus === "IE" && [1, 4, 5].includes(user.id_role);
651
+ const adminAuditorCanEvaluate =
652
+ ["AC", "RP", "RCA"].includes(retailerStatus) &&
653
+ [1, 6].includes(user.id_role);
654
+ return adminFacilitatorCanEvaluate || adminAuditorCanEvaluate;
650
655
  };
651
656
 
652
657
  const getSectionIcon = () => {
@@ -670,92 +675,57 @@ export const RetailerProductEdition = ({
670
675
  try {
671
676
  let concept = getConcept(activeTab);
672
677
 
673
- let productTemp = { ...product };
674
- let evalStatus = product[`${concept}_status`];
675
-
676
- let data = {};
678
+ const productTemp = { ...product };
679
+ const evalStatus = retailerStatus;
680
+ const articleId = product.article.id_article;
681
+ const orderId = product.orderId;
682
+
683
+ let data = {
684
+ articleId,
685
+ orderId,
686
+ concept,
687
+ evalStatus,
688
+ retailerId: activeRetailer.id,
689
+ };
690
+ let res;
677
691
  if (result) {
678
- data = {
679
- articleId: product.article.id_article,
680
- orderId: product.orderId,
681
- concept: concept,
682
- result: result,
683
- evalStatus: evalStatus,
684
- retailerId: activeRetailer.id,
685
- };
686
-
687
- await axios.put(`${process.env.REACT_APP_EVALUATION_ENDPOINT}`, data, {
688
- headers: {
689
- Authorization: token,
690
- },
691
- });
692
+ data.result = result;
693
+ res = await axios.put(
694
+ `${process.env.REACT_APP_EVALUATION_ENDPOINT}`,
695
+ data,
696
+ {
697
+ headers: {
698
+ Authorization: token,
699
+ },
700
+ }
701
+ );
692
702
  getServices();
693
703
  } else {
694
- const specialistDone =
695
- evalStatus === "RF" ||
696
- evalStatus === "RA" ||
697
- evalStatus === "IN_PROGRESS";
704
+ const specialistDone = ["RC", "RA", "CA"].includes(evalStatus);
698
705
 
706
+ let message;
699
707
  if (specialistDone) {
700
- setMessage(`${activeTab} enviada a facilitador`);
701
- getSectionIcon();
702
- } else if (evalStatus === "QF") {
703
- setMessage("Evaluación enviada");
708
+ message = `${activeTab} enviada a facilitador`;
704
709
  getSectionIcon();
705
- } else if (evalStatus === "AF") {
706
- setMessage("Evaluación enviada");
710
+ } else if (["IE", "AC", "RP", "RCA"].includes(evalStatus)) {
711
+ message = "Evaluación enviada";
707
712
  getSectionIcon();
708
- } else if (evalStatus === "RP") {
709
- setMessage("Evaluación enviada");
710
- getSectionIcon();
711
- } else if (evalStatus === "RC") {
712
- setMessage("Evaluación enviada");
713
- getSectionIcon();
714
- }
715
- let statusArr = [];
716
- servicesData.forEach((srv) => {
717
- srv.service === concept && statusArr.push(srv.status);
718
- });
719
-
720
- productTemp[`${concept}_status`] = getNewStatus(statusArr);
721
-
722
- let newStatus = getNewStatus([
723
- productTemp.datasheet_status,
724
- productTemp.description_status,
725
- productTemp.images_status,
726
- ]);
727
-
728
- productTemp.status = newStatus;
729
-
730
- data = {
731
- articleId: product.article.id_article,
732
- orderId: product.orderId,
733
- concept: concept,
734
- evalStatus: evalStatus,
735
- retailerId: activeRetailer.id,
736
- };
737
-
738
- switch (user.id_role) {
739
- case 7:
740
- case 8:
741
- data.especialist = true;
742
- break;
743
- case 4:
744
- case 5:
745
- data.facilitator = true;
746
- break;
747
- default:
748
- break;
749
713
  }
750
- await axios.put(`${process.env.REACT_APP_SEND_EVAL}`, data, {
714
+ res = await axios.put(`${process.env.REACT_APP_SEND_EVAL}`, data, {
751
715
  headers: {
752
716
  Authorization: token,
753
717
  },
754
718
  });
755
719
  }
756
- loadData();
757
- sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
758
- setProduct(productTemp);
720
+ if (res.data.statusCode === 200) {
721
+ const { newStatus, newOrderStatus } = JSON.parse(res.data.body);
722
+ if (newOrderStatus) productTemp.status = newOrderStatus[orderId];
723
+ productTemp[`${concept}_status`] = newStatus;
724
+ await loadData();
725
+ if (message) setMessage(message);
726
+ sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
727
+ setProduct(productTemp);
728
+ }
759
729
  } catch (error) {
760
730
  console.log(error);
761
731
  }
@@ -864,7 +834,7 @@ export const RetailerProductEdition = ({
864
834
  (input) =>
865
835
  input.required &&
866
836
  (!input.value ||
867
- input.value.replace(/(<\/?p>)|(<\/?strong>)|(<br>)/gm, "") ===
837
+ input.value?.replace(/(<\/?p>)|(<\/?strong>)|(<br>)/gm, "") ===
868
838
  "") &&
869
839
  desInputsRequired++
870
840
  );
@@ -941,12 +911,12 @@ export const RetailerProductEdition = ({
941
911
  },
942
912
  ],
943
913
  concept: concept,
944
- [`${assignationType}Id`]: assignationId,
914
+ userId: assignationId,
945
915
  };
946
- axios({
916
+ await axios({
947
917
  method: "post",
948
918
  url: process.env.REACT_APP_ASSIGNATIONS_ENDPOINT,
949
- data: data,
919
+ data,
950
920
  headers: {
951
921
  Authorization: token,
952
922
  },
@@ -1135,7 +1105,7 @@ export const RetailerProductEdition = ({
1135
1105
  sessionStorage.setItem("productSelected", JSON.stringify(productTemp));
1136
1106
  setProduct(productTemp);
1137
1107
 
1138
- loadData();
1108
+ await loadData();
1139
1109
  } catch (error) {
1140
1110
  console.log(error);
1141
1111
  }
@@ -1213,7 +1183,7 @@ export const RetailerProductEdition = ({
1213
1183
  showApproveRejectAll={
1214
1184
  isAuditor &&
1215
1185
  servicesData.every((serv) =>
1216
- ["RA", "AA", "AP", "AC", "AF"].includes(serv.status)
1186
+ ["RA", "AA", "AP", "ACA", "AC"].includes(serv.status)
1217
1187
  ) &&
1218
1188
  approveRejectButtons() &&
1219
1189
  (auditorAssigned() || userAssigned())
@@ -1256,6 +1226,7 @@ export const RetailerProductEdition = ({
1256
1226
  }}
1257
1227
  />
1258
1228
  <FullTabsMenu
1229
+ canAssign={![7, 8].includes(user.id_role)}
1259
1230
  tabsSections={tabsSections}
1260
1231
  status={retailerStatus}
1261
1232
  activeTab={activeTab}
@@ -1406,16 +1377,21 @@ export const RetailerProductEdition = ({
1406
1377
  />
1407
1378
  </div>
1408
1379
  )}
1409
- <Button
1410
- buttonType={
1411
- evaluationFinished(user.id_role, activeTab, statusArray) &&
1412
- requiredNull[activeTab] === 0
1413
- ? "general-green-button"
1414
- : "general-button-disabled"
1415
- }
1416
- label={"Enviar evaluación"}
1417
- onClick={() => sendToFacilitator()}
1418
- />
1380
+ {[7, 8].includes(user.id_role) && (
1381
+ <Button
1382
+ buttonType={
1383
+ evaluationFinished(
1384
+ user.id_role,
1385
+ activeTab,
1386
+ statusArray
1387
+ ) && requiredNull[activeTab] === 0
1388
+ ? "general-green-button"
1389
+ : "general-button-disabled"
1390
+ }
1391
+ label={"Enviar evaluación"}
1392
+ onClick={() => sendToFacilitator()}
1393
+ />
1394
+ )}
1419
1395
  </div>
1420
1396
  )}
1421
1397
  </div>
@@ -20,7 +20,7 @@ export const Container = styled.div`
20
20
  }
21
21
 
22
22
  .product-information {
23
- width: 100%;
23
+ width: 70%;
24
24
  display: flex;
25
25
  flex-direction: column;
26
26