contentoh-components-library 21.3.58 → 21.3.60
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.
- package/.env.development +2 -0
- package/dist/components/molecules/CarouselImagesLogin/index.js +1 -1
- package/dist/components/molecules/HeaderTop/index.js +68 -11
- package/dist/components/organisms/Chat/Chat.stories.js +21 -1
- package/dist/components/organisms/Chat/ContainerItems/index.js +19 -3
- package/dist/components/organisms/Chat/ContainerItems/styles.js +1 -1
- package/dist/components/organisms/Chat/ContentChat/index.js +343 -191
- package/dist/components/organisms/Chat/Footer/index.js +48 -39
- package/dist/components/organisms/Chat/index.js +48 -3
- package/dist/components/organisms/FullProductNameHeader/index.js +2 -2
- package/dist/components/organisms/SideModal/SideModal.stories.js +42 -0
- package/dist/components/organisms/SideModal/index.js +61 -0
- package/dist/components/organisms/SideModal/styles.js +18 -0
- package/dist/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +172 -127
- package/dist/components/pages/ProviderProductEdition/index.js +188 -129
- package/dist/components/pages/ProviderProductEdition/styles.js +1 -1
- package/dist/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +61 -71
- package/dist/components/pages/RetailerProductEdition/index.js +267 -274
- package/dist/components/pages/RetailerProductEdition/styles.js +1 -1
- package/dist/components/pages/RetailerProductEdition/utils.js +61 -2
- package/package.json +1 -1
- package/src/components/molecules/CarouselImagesLogin/index.js +1 -1
- package/src/components/molecules/HeaderTop/index.js +52 -6
- package/src/components/organisms/Chat/Chat.stories.js +21 -0
- package/src/components/organisms/Chat/ContainerItems/index.js +18 -2
- package/src/components/organisms/Chat/ContainerItems/styles.js +10 -2
- package/src/components/organisms/Chat/ContentChat/index.js +81 -6
- package/src/components/organisms/Chat/Footer/index.js +11 -0
- package/src/components/organisms/Chat/index.js +47 -3
- package/src/components/organisms/FullProductNameHeader/index.js +1 -1
- package/src/components/organisms/SideModal/SideModal.stories.js +23 -0
- package/src/components/organisms/SideModal/index.js +41 -0
- package/src/components/organisms/SideModal/styles.js +21 -0
- package/src/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +177 -130
- package/src/components/pages/ProviderProductEdition/index.js +105 -55
- package/src/components/pages/ProviderProductEdition/styles.js +5 -1
- package/src/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +6 -23
- package/src/components/pages/RetailerProductEdition/index.js +111 -135
- package/src/components/pages/RetailerProductEdition/styles.js +4 -0
- package/src/components/pages/RetailerProductEdition/utils.js +37 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import styled from "styled-components";
|
|
2
|
+
|
|
3
|
+
export const Container = styled.div`
|
|
4
|
+
width: 100vw;
|
|
5
|
+
height: 100vh;
|
|
6
|
+
position: fixed;
|
|
7
|
+
z-index: 9999999;
|
|
8
|
+
background-color: transparent;
|
|
9
|
+
|
|
10
|
+
.modal-container {
|
|
11
|
+
width: 600px;
|
|
12
|
+
height: 100%;
|
|
13
|
+
position: absolute;
|
|
14
|
+
right: -600px;
|
|
15
|
+
background-color: #fff;
|
|
16
|
+
|
|
17
|
+
&.shown {
|
|
18
|
+
right: 0;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
`;
|
|
@@ -16,120 +16,194 @@ ProviderProductEditionDefault.args = {
|
|
|
16
16
|
Imágenes: false,
|
|
17
17
|
},
|
|
18
18
|
token:
|
|
19
|
-
"eyJraWQiOiJkQWJkZCtlclwvTlwveVRQUWNvUlVyOCtrNUd2M1hMM2N1MWUzQ09zWExVRnc9IiwiYWxnIjoiUlMyNTYifQ.
|
|
19
|
+
"eyJraWQiOiJkQWJkZCtlclwvTlwveVRQUWNvUlVyOCtrNUd2M1hMM2N1MWUzQ09zWExVRnc9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJmNTkyN2Y4ZS1jYmY3LTQ5MjItOWUwOS1lNjllYzBiMjczMWEiLCJjb2duaXRvOmdyb3VwcyI6WyJ1c3VhcmlvX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfWE1aUWRxa0dqIiwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjpmYWxzZSwiY29nbml0bzp1c2VybmFtZSI6ImY1OTI3ZjhlLWNiZjctNDkyMi05ZTA5LWU2OWVjMGIyNzMxYSIsImNvZ25pdG86cm9sZXMiOlsiYXJuOmF3czppYW06Ojg5ODY3MDIzMjgwNzpyb2xlXC9jb250ZW50b2gtZGV2LXVzLWVhc3QtMS1sYW1iZGFSb2xlIl0sImF1ZCI6IjVhYzh0cGdzNmdic3ExM2ZydnJwaWVlcDQwIiwiZXZlbnRfaWQiOiIyM2Q1NTlmYi1jMzIwLTRhMjItYjJmNy1lOThhYTFhZGEyNmYiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTY4MzkyNjgyMSwibmFtZSI6IklzbWFlbCBMb3BleiIsInBob25lX251bWJlciI6Iis1MjMxMTEzNjYzMzYiLCJleHAiOjE2ODM5MzA0MjEsImlhdCI6MTY4MzkyNjgyMSwiZW1haWwiOiJpbG9wZXpAY29udGVudG9oLmNvbSJ9.TvCoaKoctj5mypXWMz3NyV1Vm1ToBV0vJmpVyZSQw4-ikTChkxcZ5tFYvqhk1GdvNCFttfSQIqM-14dAYYBc28YwwKP86gqOuzB1fG41rN5x1Yx3tkJq6hiVRgiBbSHWtThA9c8VnxNQbrJiaRTvvkDiM5KNTEst1oxQHL5Ct9_iKQMJMRFie7Xv0xnyS0qZ6QHK4Q2A9OHsnDkAuumALZJcE19Zh6VgSitgWrZiz3x5Text4Q-U-R48NUAzUFirAzYZzJN_fCme5pGf1AnUaZjeUjPsmrV5TBVzPEYwXO0KG8lYjL8id80D7tbGs28ZIK6B4rf3-eqI_ngmBB4CjQ",
|
|
20
20
|
articleId: 238,
|
|
21
21
|
category: 846,
|
|
22
22
|
version: 2,
|
|
23
23
|
productSelected: {
|
|
24
|
-
orderId:
|
|
25
|
-
|
|
26
|
-
datasheet_status: "
|
|
27
|
-
description_status: "FAP",
|
|
28
|
-
images_status: "FAP",
|
|
24
|
+
orderId: 15142,
|
|
25
|
+
status: "AA",
|
|
26
|
+
datasheet_status: "AA",
|
|
29
27
|
prio: "none",
|
|
30
28
|
version: 3,
|
|
31
|
-
|
|
29
|
+
description_status: "AA",
|
|
30
|
+
images_status: "AA",
|
|
31
|
+
brand: "Garnier",
|
|
32
|
+
retailerOrder: 0,
|
|
33
|
+
missing: {
|
|
34
|
+
datasheet: null,
|
|
35
|
+
descriptions: null,
|
|
36
|
+
images: null,
|
|
37
|
+
},
|
|
38
|
+
services: {
|
|
39
|
+
datasheets: 1,
|
|
40
|
+
descriptions: 1,
|
|
41
|
+
images: 1,
|
|
42
|
+
},
|
|
32
43
|
article: {
|
|
33
|
-
category:
|
|
34
|
-
|
|
35
|
-
|
|
44
|
+
category:
|
|
45
|
+
"Salud y Belleza|Cuidado del Cabello|Shampoos y Acondicionadores",
|
|
46
|
+
company_name: "GRUPO BRAHMA",
|
|
36
47
|
country: "México",
|
|
37
|
-
id_category: "
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
48
|
+
id_category: "697",
|
|
49
|
+
id_datasheet_especialist: 54,
|
|
50
|
+
id_datasheet_facilitator: 52,
|
|
51
|
+
id_description_especialist: 54,
|
|
52
|
+
id_description_facilitator: 52,
|
|
53
|
+
id_images_especialist: 55,
|
|
54
|
+
id_images_facilitator: 53,
|
|
55
|
+
id_order: 15142,
|
|
56
|
+
id_article: 39270,
|
|
57
|
+
id_auditor: 37,
|
|
58
|
+
name: "Acondicionador Garnier Fructis 650 ml",
|
|
59
|
+
timestamp: "2023-03-27T18:37:48.000Z",
|
|
60
|
+
upc: "750955287656712",
|
|
41
61
|
},
|
|
42
62
|
retailers: [
|
|
43
63
|
{
|
|
44
|
-
id:
|
|
45
|
-
name: "
|
|
64
|
+
id: 12,
|
|
65
|
+
name: "La Comer",
|
|
46
66
|
},
|
|
47
67
|
{
|
|
48
|
-
id:
|
|
49
|
-
name: "
|
|
68
|
+
id: 29,
|
|
69
|
+
name: "Farmacias del Ahorro",
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
id: 63,
|
|
73
|
+
name: "DAX",
|
|
50
74
|
},
|
|
51
75
|
],
|
|
52
|
-
services: {
|
|
53
|
-
datasheets: 1,
|
|
54
|
-
descriptions: 1,
|
|
55
|
-
images: 1,
|
|
56
|
-
},
|
|
57
76
|
statusByRetailer: {
|
|
58
|
-
|
|
59
|
-
datasheet: "
|
|
60
|
-
description: "
|
|
61
|
-
images: "
|
|
77
|
+
12: {
|
|
78
|
+
datasheet: "AA",
|
|
79
|
+
description: "AA",
|
|
80
|
+
images: "AA",
|
|
81
|
+
},
|
|
82
|
+
29: {
|
|
83
|
+
datasheet: "AA",
|
|
84
|
+
description: "AA",
|
|
85
|
+
images: "AA",
|
|
86
|
+
},
|
|
87
|
+
63: {
|
|
88
|
+
datasheet: "AA",
|
|
89
|
+
description: "AA",
|
|
90
|
+
images: "AA",
|
|
62
91
|
},
|
|
63
92
|
},
|
|
64
|
-
|
|
65
|
-
id_article: 39336,
|
|
93
|
+
checked: false,
|
|
66
94
|
retailersAvailable: [
|
|
67
95
|
{
|
|
68
|
-
id:
|
|
69
|
-
name: "
|
|
96
|
+
id: 12,
|
|
97
|
+
name: "La Comer",
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
id: 29,
|
|
101
|
+
name: "Farmacias del Ahorro",
|
|
70
102
|
},
|
|
71
103
|
{
|
|
72
|
-
id:
|
|
73
|
-
name: "
|
|
104
|
+
id: 63,
|
|
105
|
+
name: "DAX",
|
|
74
106
|
},
|
|
75
107
|
],
|
|
108
|
+
categoryName:
|
|
109
|
+
"Salud y Belleza|Cuidado del Cabello|Shampoos y Acondicionadores",
|
|
110
|
+
upc: "750955287656712",
|
|
111
|
+
id_article: 39270,
|
|
112
|
+
id_order: 15142,
|
|
76
113
|
},
|
|
77
114
|
productToEdit: {
|
|
78
|
-
ArticleId:
|
|
79
|
-
idCategory: "
|
|
115
|
+
ArticleId: 39270,
|
|
116
|
+
idCategory: "697",
|
|
80
117
|
product: {
|
|
81
|
-
orderId:
|
|
82
|
-
|
|
83
|
-
datasheet_status: "
|
|
84
|
-
description_status: "FAP",
|
|
85
|
-
images_status: "FAP",
|
|
118
|
+
orderId: 15142,
|
|
119
|
+
status: "AA",
|
|
120
|
+
datasheet_status: "AA",
|
|
86
121
|
prio: "none",
|
|
87
122
|
version: 3,
|
|
88
|
-
|
|
123
|
+
description_status: "AA",
|
|
124
|
+
images_status: "AA",
|
|
125
|
+
brand: "Garnier",
|
|
126
|
+
retailerOrder: 0,
|
|
127
|
+
missing: {
|
|
128
|
+
datasheet: null,
|
|
129
|
+
descriptions: null,
|
|
130
|
+
images: null,
|
|
131
|
+
},
|
|
132
|
+
services: {
|
|
133
|
+
datasheets: 1,
|
|
134
|
+
descriptions: 1,
|
|
135
|
+
images: 1,
|
|
136
|
+
},
|
|
89
137
|
article: {
|
|
90
|
-
category:
|
|
91
|
-
|
|
92
|
-
|
|
138
|
+
category:
|
|
139
|
+
"Salud y Belleza|Cuidado del Cabello|Shampoos y Acondicionadores",
|
|
140
|
+
company_name: "GRUPO BRAHMA",
|
|
93
141
|
country: "México",
|
|
94
|
-
id_category: "
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
142
|
+
id_category: "697",
|
|
143
|
+
id_datasheet_especialist: 54,
|
|
144
|
+
id_datasheet_facilitator: 52,
|
|
145
|
+
id_description_especialist: 54,
|
|
146
|
+
id_description_facilitator: 52,
|
|
147
|
+
id_images_especialist: 55,
|
|
148
|
+
id_images_facilitator: 53,
|
|
149
|
+
id_order: 15142,
|
|
150
|
+
id_article: 39270,
|
|
151
|
+
id_auditor: 37,
|
|
152
|
+
name: "Acondicionador Garnier Fructis 650 ml",
|
|
153
|
+
timestamp: "2023-03-27T18:37:48.000Z",
|
|
154
|
+
upc: "750955287656712",
|
|
98
155
|
},
|
|
99
156
|
retailers: [
|
|
100
157
|
{
|
|
101
|
-
id:
|
|
102
|
-
name: "
|
|
158
|
+
id: 12,
|
|
159
|
+
name: "La Comer",
|
|
103
160
|
},
|
|
104
161
|
{
|
|
105
|
-
id:
|
|
106
|
-
name: "
|
|
162
|
+
id: 29,
|
|
163
|
+
name: "Farmacias del Ahorro",
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
id: 63,
|
|
167
|
+
name: "DAX",
|
|
107
168
|
},
|
|
108
169
|
],
|
|
109
|
-
services: {
|
|
110
|
-
datasheets: 1,
|
|
111
|
-
descriptions: 1,
|
|
112
|
-
images: 1,
|
|
113
|
-
},
|
|
114
170
|
statusByRetailer: {
|
|
115
|
-
|
|
116
|
-
datasheet: "
|
|
117
|
-
description: "
|
|
118
|
-
images: "
|
|
171
|
+
12: {
|
|
172
|
+
datasheet: "AA",
|
|
173
|
+
description: "AA",
|
|
174
|
+
images: "AA",
|
|
175
|
+
},
|
|
176
|
+
29: {
|
|
177
|
+
datasheet: "AA",
|
|
178
|
+
description: "AA",
|
|
179
|
+
images: "AA",
|
|
180
|
+
},
|
|
181
|
+
63: {
|
|
182
|
+
datasheet: "AA",
|
|
183
|
+
description: "AA",
|
|
184
|
+
images: "AA",
|
|
119
185
|
},
|
|
120
186
|
},
|
|
121
|
-
|
|
122
|
-
id_article: 39336,
|
|
187
|
+
checked: false,
|
|
123
188
|
retailersAvailable: [
|
|
124
189
|
{
|
|
125
|
-
id:
|
|
126
|
-
name: "
|
|
190
|
+
id: 12,
|
|
191
|
+
name: "La Comer",
|
|
127
192
|
},
|
|
128
193
|
{
|
|
129
|
-
id:
|
|
130
|
-
name: "
|
|
194
|
+
id: 29,
|
|
195
|
+
name: "Farmacias del Ahorro",
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
id: 63,
|
|
199
|
+
name: "DAX",
|
|
131
200
|
},
|
|
132
201
|
],
|
|
202
|
+
categoryName:
|
|
203
|
+
"Salud y Belleza|Cuidado del Cabello|Shampoos y Acondicionadores",
|
|
204
|
+
upc: "750955287656712",
|
|
205
|
+
id_article: 39270,
|
|
206
|
+
id_order: 15142,
|
|
133
207
|
},
|
|
134
208
|
},
|
|
135
209
|
location: {
|
|
@@ -138,90 +212,63 @@ ProviderProductEditionDefault.args = {
|
|
|
138
212
|
hash: "",
|
|
139
213
|
state: {
|
|
140
214
|
withChat: true,
|
|
215
|
+
chatType: "product_status",
|
|
216
|
+
origin: "RequestWithContentoh",
|
|
141
217
|
},
|
|
142
218
|
key: "24vwut",
|
|
143
219
|
},
|
|
144
220
|
user: {
|
|
145
|
-
id_user:
|
|
146
|
-
name: "
|
|
147
|
-
last_name: "
|
|
148
|
-
email: "
|
|
149
|
-
position: "
|
|
221
|
+
id_user: 28,
|
|
222
|
+
name: "Ismael",
|
|
223
|
+
last_name: "López",
|
|
224
|
+
email: "ilopez@contentoh.com",
|
|
225
|
+
position: "Test States",
|
|
150
226
|
telephone: "+523111366336",
|
|
151
227
|
country: "México",
|
|
152
|
-
id_company:
|
|
153
|
-
id_cognito: "
|
|
228
|
+
id_company: 1,
|
|
229
|
+
id_cognito: "f5927f8e-cbf7-4922-9e09-e69ec0b2731a",
|
|
154
230
|
birth_Date: null,
|
|
155
231
|
about_me: "",
|
|
156
232
|
zip_code: "",
|
|
157
233
|
address: "",
|
|
158
234
|
job: "",
|
|
159
|
-
id_stripe: "",
|
|
235
|
+
id_stripe: "cus_KuEt6R6vwmN09f",
|
|
160
236
|
id_role: 0,
|
|
161
237
|
active: 1,
|
|
162
|
-
is_retailer:
|
|
163
|
-
email_notify:
|
|
164
|
-
is_user_tech:
|
|
238
|
+
is_retailer: 0,
|
|
239
|
+
email_notify: 1,
|
|
240
|
+
is_user_tech: "ADMIN-AS",
|
|
165
241
|
membership: {
|
|
166
|
-
id:
|
|
167
|
-
start_date: "2022-
|
|
168
|
-
end_date: "2023-
|
|
169
|
-
planID:
|
|
170
|
-
plan: "
|
|
242
|
+
id: 76,
|
|
243
|
+
start_date: "2022-01-18T17:25:35.000Z",
|
|
244
|
+
end_date: "2023-01-18T17:25:35.000Z",
|
|
245
|
+
planID: 8,
|
|
246
|
+
plan: "prod_KtlhECVSFG2iro",
|
|
171
247
|
name: "Plan Pro",
|
|
172
|
-
user_limit: "
|
|
173
|
-
products_limit: "
|
|
174
|
-
type: "
|
|
248
|
+
user_limit: "20",
|
|
249
|
+
products_limit: "5000",
|
|
250
|
+
type: "Enterprise",
|
|
175
251
|
},
|
|
176
|
-
src: "https://content-management-profile.s3.amazonaws.com/id-
|
|
252
|
+
src: "https://content-management-profile.s3.amazonaws.com/id-28/28.png?1683926822779",
|
|
177
253
|
},
|
|
178
254
|
company: {
|
|
179
|
-
id_company:
|
|
180
|
-
trade_name: "
|
|
181
|
-
company_name: "
|
|
182
|
-
rfc: "
|
|
183
|
-
adress: "
|
|
184
|
-
about_company:
|
|
185
|
-
telephone:
|
|
186
|
-
web_site:
|
|
187
|
-
zip_code:
|
|
255
|
+
id_company: 1,
|
|
256
|
+
trade_name: "GRUPO BRAHMA",
|
|
257
|
+
company_name: "GRUPO BRAHMA",
|
|
258
|
+
rfc: "XAXX010101000",
|
|
259
|
+
adress: "AA",
|
|
260
|
+
about_company: "",
|
|
261
|
+
telephone: "",
|
|
262
|
+
web_site: "",
|
|
263
|
+
zip_code: "",
|
|
188
264
|
email: null,
|
|
189
|
-
social_link:
|
|
190
|
-
is_retailer:
|
|
191
|
-
financedRetailers: [
|
|
192
|
-
{
|
|
193
|
-
id: 68,
|
|
194
|
-
name: "The Home Depot Dropship",
|
|
195
|
-
country: "México",
|
|
196
|
-
id_region: 1,
|
|
197
|
-
active: 1,
|
|
198
|
-
},
|
|
199
|
-
],
|
|
265
|
+
social_link: "",
|
|
266
|
+
is_retailer: 0,
|
|
200
267
|
retailers: [
|
|
201
268
|
{
|
|
202
|
-
id:
|
|
203
|
-
name:
|
|
204
|
-
country:
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
id: 60,
|
|
208
|
-
name: "The Home Depot Resizing",
|
|
209
|
-
country: "México",
|
|
210
|
-
},
|
|
211
|
-
{
|
|
212
|
-
id: 61,
|
|
213
|
-
name: "Home Depot TAB",
|
|
214
|
-
country: "México",
|
|
215
|
-
},
|
|
216
|
-
{
|
|
217
|
-
id: 68,
|
|
218
|
-
name: "The Home Depot Dropship",
|
|
219
|
-
country: "México",
|
|
220
|
-
},
|
|
221
|
-
{
|
|
222
|
-
id: 58,
|
|
223
|
-
name: "The Home Depot Golden",
|
|
224
|
-
country: "México",
|
|
269
|
+
id: null,
|
|
270
|
+
name: null,
|
|
271
|
+
country: null,
|
|
225
272
|
},
|
|
226
273
|
],
|
|
227
274
|
},
|
|
@@ -39,6 +39,9 @@ import Slide1_4 from "../../../assets/images/sliderToolTip/slide4.svg";
|
|
|
39
39
|
import Slide1_5 from "../../../assets/images/sliderToolTip/slide5.svg";
|
|
40
40
|
import { VersionSelector } from "../../organisms/VersionSelector";
|
|
41
41
|
import { useCloseModal } from "../../../global-files/customHooks";
|
|
42
|
+
import { createMessage, sendMessage } from "../RetailerProductEdition/utils";
|
|
43
|
+
import { Modal } from "../../organisms/Modal";
|
|
44
|
+
import { ButtonV2 } from "../../atoms/ButtonV2";
|
|
42
45
|
|
|
43
46
|
const reducerImages = (state, action) => {
|
|
44
47
|
let { values, attrForImgs, inputsByRetailer } = state;
|
|
@@ -214,6 +217,7 @@ export const ProviderProductEdition = ({
|
|
|
214
217
|
const isRetailer = user?.is_retailer;
|
|
215
218
|
const [loading, setLoading] = useState(true);
|
|
216
219
|
const [validatedAll, setValidatedAll] = useState(false);
|
|
220
|
+
const [showRejectModal, setShowRejectModal] = useState(false);
|
|
217
221
|
|
|
218
222
|
const originProp = location?.state?.origin;
|
|
219
223
|
const [origin, setOrigin] = useState({
|
|
@@ -343,28 +347,6 @@ export const ProviderProductEdition = ({
|
|
|
343
347
|
(type) => {
|
|
344
348
|
const formatter = new Intl.ListFormat("es", { type: "conjunction" });
|
|
345
349
|
switch (type) {
|
|
346
|
-
case "error":
|
|
347
|
-
setGlobalModal({
|
|
348
|
-
message: `${activeTab} rechazada`,
|
|
349
|
-
detail: "Agrega tu comentarios para enviar el rechazo",
|
|
350
|
-
img: errorModal,
|
|
351
|
-
textArea: true,
|
|
352
|
-
button1: {
|
|
353
|
-
name: "Enviar",
|
|
354
|
-
action: (e) => {
|
|
355
|
-
const textArea = document.querySelector("#area");
|
|
356
|
-
if (textArea.value) {
|
|
357
|
-
textArea.style.border = "none";
|
|
358
|
-
createComment(e, textArea.value);
|
|
359
|
-
showGlobalModal("commentsSent");
|
|
360
|
-
validatedAll ? validateAll("R") : sendEvaluation("R");
|
|
361
|
-
} else {
|
|
362
|
-
textArea.style.border = "2px solid red";
|
|
363
|
-
}
|
|
364
|
-
},
|
|
365
|
-
},
|
|
366
|
-
});
|
|
367
|
-
break;
|
|
368
350
|
case "generic":
|
|
369
351
|
setGlobalModal(dataGenericModal);
|
|
370
352
|
break;
|
|
@@ -516,7 +498,9 @@ export const ProviderProductEdition = ({
|
|
|
516
498
|
);
|
|
517
499
|
setServicesData(parsedResponse);
|
|
518
500
|
}
|
|
519
|
-
|
|
501
|
+
retailers &&
|
|
502
|
+
!activeRetailer.id &&
|
|
503
|
+
setActiveRetailer(active ? active : retailers[0]);
|
|
520
504
|
};
|
|
521
505
|
|
|
522
506
|
const isRevision = () => {
|
|
@@ -592,7 +576,7 @@ export const ProviderProductEdition = ({
|
|
|
592
576
|
});
|
|
593
577
|
}
|
|
594
578
|
setProduct(productTemp);
|
|
595
|
-
setActivePercentage(retailers[0]?.percentage);
|
|
579
|
+
retailers && setActivePercentage(retailers[0]?.percentage);
|
|
596
580
|
}, [percentages]);
|
|
597
581
|
|
|
598
582
|
const loadInputs = () => {
|
|
@@ -833,32 +817,19 @@ export const ProviderProductEdition = ({
|
|
|
833
817
|
}
|
|
834
818
|
};
|
|
835
819
|
|
|
836
|
-
const createComment = async (
|
|
837
|
-
let concept = "";
|
|
838
|
-
switch (activeTab) {
|
|
839
|
-
case "Ficha técnica":
|
|
840
|
-
concept = "datasheet";
|
|
841
|
-
break;
|
|
842
|
-
case "Imágenes":
|
|
843
|
-
concept = "images";
|
|
844
|
-
break;
|
|
845
|
-
|
|
846
|
-
default:
|
|
847
|
-
concept = "description";
|
|
848
|
-
break;
|
|
849
|
-
}
|
|
820
|
+
const createComment = async (messages = [], retailerId) => {
|
|
850
821
|
const data = {
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
await axios.post(`${process.env.REACT_APP_COMMENTS_ENDPOINT}`, data, {
|
|
858
|
-
headers: {
|
|
859
|
-
Authorization: token,
|
|
822
|
+
paramsBody: {
|
|
823
|
+
id: product.article.id_article || productEdit.ArticleId,
|
|
824
|
+
version: version,
|
|
825
|
+
items: messages,
|
|
826
|
+
retailerId: retailerId,
|
|
827
|
+
status: product.status || productEdit.product.status,
|
|
860
828
|
},
|
|
861
|
-
|
|
829
|
+
paramsHeader: { Authorization: token },
|
|
830
|
+
};
|
|
831
|
+
setMessage("");
|
|
832
|
+
return sendMessage(data);
|
|
862
833
|
};
|
|
863
834
|
|
|
864
835
|
useEffect(() => {
|
|
@@ -1058,6 +1029,27 @@ export const ProviderProductEdition = ({
|
|
|
1058
1029
|
const { newArticleStatus, newServiceStatus, newStatus } = JSON.parse(
|
|
1059
1030
|
res.data.body
|
|
1060
1031
|
);
|
|
1032
|
+
|
|
1033
|
+
const message = createMessage(
|
|
1034
|
+
product.retailers || product.retailersAvailable,
|
|
1035
|
+
activeRetailer.id,
|
|
1036
|
+
product[sectionStatusKey],
|
|
1037
|
+
newStatus,
|
|
1038
|
+
activeTab
|
|
1039
|
+
);
|
|
1040
|
+
|
|
1041
|
+
const messageData = {
|
|
1042
|
+
paramsBody: {
|
|
1043
|
+
id: product.article.id_article || productEdit.ArticleId,
|
|
1044
|
+
version: version,
|
|
1045
|
+
items: [{ type: "status", value: message }],
|
|
1046
|
+
retailerId: activeRetailer.id,
|
|
1047
|
+
status: product.status || productEdit.product.status,
|
|
1048
|
+
},
|
|
1049
|
+
paramsHeader: { Authorization: token },
|
|
1050
|
+
};
|
|
1051
|
+
await sendMessage(messageData);
|
|
1052
|
+
|
|
1061
1053
|
if (newArticleStatus) productTemp.status = newArticleStatus[articleId];
|
|
1062
1054
|
const retailerStatusCopy = { ...retailerStatus };
|
|
1063
1055
|
retailerStatusCopy[activeRetailer.id][concept] = newStatus;
|
|
@@ -1089,6 +1081,7 @@ export const ProviderProductEdition = ({
|
|
|
1089
1081
|
result,
|
|
1090
1082
|
isAproved: result === "A",
|
|
1091
1083
|
};
|
|
1084
|
+
const messages = [];
|
|
1092
1085
|
servicesData?.forEach((ret) => {
|
|
1093
1086
|
const { service, id_retailer } = ret;
|
|
1094
1087
|
let data = {};
|
|
@@ -1105,6 +1098,18 @@ export const ProviderProductEdition = ({
|
|
|
1105
1098
|
},
|
|
1106
1099
|
})
|
|
1107
1100
|
);
|
|
1101
|
+
if (product[`${ret.service}_status`] !== "NS") {
|
|
1102
|
+
const message = createMessage(
|
|
1103
|
+
product.retailers,
|
|
1104
|
+
ret.id_retailer,
|
|
1105
|
+
product[`${ret.service}_status`],
|
|
1106
|
+
`${result}A`,
|
|
1107
|
+
ret.service
|
|
1108
|
+
);
|
|
1109
|
+
messages.push(
|
|
1110
|
+
createComment([{ type: "status", value: message }], ret.id_retailer)
|
|
1111
|
+
);
|
|
1112
|
+
}
|
|
1108
1113
|
});
|
|
1109
1114
|
await Promise.all(evaluationArray);
|
|
1110
1115
|
const userType = user.is_retailer === 1 ? "CA" : "P";
|
|
@@ -1144,6 +1149,7 @@ export const ProviderProductEdition = ({
|
|
|
1144
1149
|
product: productTemp,
|
|
1145
1150
|
})
|
|
1146
1151
|
);
|
|
1152
|
+
await Promise.all(messages);
|
|
1147
1153
|
|
|
1148
1154
|
await loadData();
|
|
1149
1155
|
} catch (error) {
|
|
@@ -1271,8 +1277,7 @@ export const ProviderProductEdition = ({
|
|
|
1271
1277
|
return;
|
|
1272
1278
|
} else if (user.is_retailer) {
|
|
1273
1279
|
if (product.id_order || product.orderId) {
|
|
1274
|
-
|
|
1275
|
-
showGlobalModal("error");
|
|
1280
|
+
sendEvaluation("R");
|
|
1276
1281
|
} else {
|
|
1277
1282
|
setDataGenericModal((prev) => ({
|
|
1278
1283
|
...prev,
|
|
@@ -1284,8 +1289,7 @@ export const ProviderProductEdition = ({
|
|
|
1284
1289
|
showGlobalModal("generic");
|
|
1285
1290
|
}
|
|
1286
1291
|
} else {
|
|
1287
|
-
|
|
1288
|
-
showGlobalModal("error");
|
|
1292
|
+
sendEvaluation("R");
|
|
1289
1293
|
}
|
|
1290
1294
|
}
|
|
1291
1295
|
};
|
|
@@ -1294,6 +1298,7 @@ export const ProviderProductEdition = ({
|
|
|
1294
1298
|
<HeaderTop
|
|
1295
1299
|
setHeaderTop={setHeaderTop}
|
|
1296
1300
|
withChat={location?.state?.withChat}
|
|
1301
|
+
chatType={location?.state?.chatType}
|
|
1297
1302
|
productSelected={productSelected}
|
|
1298
1303
|
token={token}
|
|
1299
1304
|
activeRetailer={activeRetailer}
|
|
@@ -1372,7 +1377,7 @@ export const ProviderProductEdition = ({
|
|
|
1372
1377
|
} else if (user.is_retailer) {
|
|
1373
1378
|
if (product.id_order || product.orderId) {
|
|
1374
1379
|
setValidatedAll(true);
|
|
1375
|
-
|
|
1380
|
+
setShowRejectModal(true);
|
|
1376
1381
|
} else {
|
|
1377
1382
|
setDataGenericModal((prev) => ({
|
|
1378
1383
|
...prev,
|
|
@@ -1384,12 +1389,14 @@ export const ProviderProductEdition = ({
|
|
|
1384
1389
|
showGlobalModal("generic");
|
|
1385
1390
|
}
|
|
1386
1391
|
} else {
|
|
1392
|
+
setShowRejectModal(true);
|
|
1387
1393
|
setValidatedAll(true);
|
|
1388
|
-
showGlobalModal("error");
|
|
1389
1394
|
}
|
|
1390
1395
|
}}
|
|
1391
1396
|
approve={() => sendToEvaluation("A")}
|
|
1392
|
-
reject={() =>
|
|
1397
|
+
reject={() => {
|
|
1398
|
+
setShowRejectModal(true);
|
|
1399
|
+
}}
|
|
1393
1400
|
/>
|
|
1394
1401
|
<FullTabsMenu
|
|
1395
1402
|
tabsSections={tabsSections}
|
|
@@ -1624,6 +1631,49 @@ export const ProviderProductEdition = ({
|
|
|
1624
1631
|
jwt={token}
|
|
1625
1632
|
/>
|
|
1626
1633
|
)}
|
|
1634
|
+
{showRejectModal && (
|
|
1635
|
+
<Modal
|
|
1636
|
+
title={"Agregar mensaje de rechazo"}
|
|
1637
|
+
show={showRejectModal}
|
|
1638
|
+
customComponent={
|
|
1639
|
+
<TagAndInput
|
|
1640
|
+
label={"Caja de Comentario"}
|
|
1641
|
+
inputType={"textarea"}
|
|
1642
|
+
inputId={"modal-message-box"}
|
|
1643
|
+
index={0}
|
|
1644
|
+
color={"white"}
|
|
1645
|
+
/>
|
|
1646
|
+
}
|
|
1647
|
+
buttons={[
|
|
1648
|
+
<ButtonV2
|
|
1649
|
+
key={"btn-Cancelar"}
|
|
1650
|
+
type={"white"}
|
|
1651
|
+
label={"Cancelar"}
|
|
1652
|
+
size={12}
|
|
1653
|
+
onClick={() => {
|
|
1654
|
+
setShowRejectModal(false);
|
|
1655
|
+
}}
|
|
1656
|
+
/>,
|
|
1657
|
+
<ButtonV2
|
|
1658
|
+
key={"btn-Aceptar"}
|
|
1659
|
+
type={"pink"}
|
|
1660
|
+
label={"Aceptar"}
|
|
1661
|
+
size={12}
|
|
1662
|
+
onClick={async () => {
|
|
1663
|
+
const body = document.querySelector(
|
|
1664
|
+
"#modal-message-box .ql-container .ql-editor > p"
|
|
1665
|
+
).innerHTML;
|
|
1666
|
+
const messages = [
|
|
1667
|
+
{ type: "message", value: body?.replace(/<.*?\/?>/gm, "") },
|
|
1668
|
+
];
|
|
1669
|
+
await createComment(messages, activeRetailer.id);
|
|
1670
|
+
validatedAll ? validateAll("R") : sendToEvaluation("R");
|
|
1671
|
+
setShowRejectModal(false);
|
|
1672
|
+
}}
|
|
1673
|
+
/>,
|
|
1674
|
+
]}
|
|
1675
|
+
/>
|
|
1676
|
+
)}
|
|
1627
1677
|
</Container>
|
|
1628
1678
|
);
|
|
1629
1679
|
};
|