contentoh-components-library 21.5.95 → 21.5.97
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/dist/components/atoms/GeneralInput/index.js +6 -2
- package/dist/components/molecules/TabsMenu/index.js +11 -0
- package/dist/components/molecules/TagAndInput/index.js +3 -0
- package/dist/components/pages/ProviderProductEdition/index.js +94 -70
- package/dist/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +31 -100
- package/dist/components/pages/RetailerProductEdition/index.js +52 -32
- package/dist/contexts/AiProductEdition.js +23 -11
- package/package.json +1 -1
- package/src/components/atoms/GeneralInput/index.js +6 -2
- package/src/components/molecules/TabsMenu/index.js +11 -0
- package/src/components/molecules/TagAndInput/index.js +8 -0
- package/src/components/pages/ProviderProductEdition/index.js +157 -103
- package/src/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +32 -116
- package/src/components/pages/RetailerProductEdition/index.js +22 -3
- package/src/contexts/AiProductEdition.jsx +11 -3
|
@@ -143,8 +143,9 @@ const ProviderProductEditionView = ({
|
|
|
143
143
|
useEffect(() => {
|
|
144
144
|
const setProductData = () => {
|
|
145
145
|
try {
|
|
146
|
-
|
|
147
|
-
|
|
146
|
+
const product = productSelected
|
|
147
|
+
? productSelected
|
|
148
|
+
: JSON.parse(sessionStorage.getItem("productSelected"));
|
|
148
149
|
|
|
149
150
|
const productNormalized = normalizeProduct(product);
|
|
150
151
|
|
|
@@ -152,10 +153,35 @@ const ProviderProductEditionView = ({
|
|
|
152
153
|
type: "SET_PRODUCT",
|
|
153
154
|
payload: productNormalized,
|
|
154
155
|
});
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
156
|
+
if (
|
|
157
|
+
productNormalized.categoryRetailerInOrder.length > 0 &&
|
|
158
|
+
productNormalized.statusByRetailer
|
|
159
|
+
) {
|
|
160
|
+
dispatch({
|
|
161
|
+
type: "SET_ACTIVE_RETAILER",
|
|
162
|
+
payload: productNormalized.categoryRetailerInOrder[0],
|
|
163
|
+
});
|
|
164
|
+
const firstRetailerStatus =
|
|
165
|
+
productNormalized.statusByRetailer[
|
|
166
|
+
productNormalized.categoryRetailerInOrder[0].id_retailer
|
|
167
|
+
];
|
|
168
|
+
const initialTab = firstRetailerStatus.description
|
|
169
|
+
? "Descripción"
|
|
170
|
+
: firstRetailerStatus.datasheet
|
|
171
|
+
? "Ficha técnica"
|
|
172
|
+
: firstRetailerStatus.images
|
|
173
|
+
? "Imágenes"
|
|
174
|
+
: "Imágenes";
|
|
175
|
+
dispatch({
|
|
176
|
+
type: "SET_ACTIVE_TAB",
|
|
177
|
+
payload: initialTab,
|
|
178
|
+
});
|
|
179
|
+
} else {
|
|
180
|
+
dispatch({
|
|
181
|
+
type: "SET_ACTIVE_RETAILER",
|
|
182
|
+
payload: productNormalized.categoryRetailer[0],
|
|
183
|
+
});
|
|
184
|
+
}
|
|
159
185
|
} catch (error) {
|
|
160
186
|
console.log("Error setting product data: ", error);
|
|
161
187
|
}
|
|
@@ -199,7 +225,7 @@ const ProviderProductEditionView = ({
|
|
|
199
225
|
id_category,
|
|
200
226
|
version,
|
|
201
227
|
token,
|
|
202
|
-
id_retailer
|
|
228
|
+
id_retailer,
|
|
203
229
|
),
|
|
204
230
|
getPercentage({ data, headers }),
|
|
205
231
|
getServicesData({
|
|
@@ -213,14 +239,14 @@ const ProviderProductEditionView = ({
|
|
|
213
239
|
const percentages =
|
|
214
240
|
JSON.parse(percentageRes?.[0]?.body)?.[0]?.relations ?? [];
|
|
215
241
|
|
|
216
|
-
const orderMap =
|
|
217
|
-
.
|
|
218
|
-
.reduce((acc, item) => {
|
|
242
|
+
const orderMap =
|
|
243
|
+
services[2].inputsByRetailer ??
|
|
244
|
+
[].flat().reduce((acc, item) => {
|
|
219
245
|
acc[item.id_image] = item.order;
|
|
220
246
|
return acc;
|
|
221
247
|
}, {});
|
|
222
248
|
|
|
223
|
-
const orderedValues = [...services[2].values].sort((a, b) => {
|
|
249
|
+
const orderedValues = [...(services[2].values ?? [])].sort((a, b) => {
|
|
224
250
|
const orderA = orderMap[a.image_id] ?? Number.MAX_SAFE_INTEGER;
|
|
225
251
|
const orderB = orderMap[b.image_id] ?? Number.MAX_SAFE_INTEGER;
|
|
226
252
|
|
|
@@ -229,22 +255,26 @@ const ProviderProductEditionView = ({
|
|
|
229
255
|
|
|
230
256
|
//Cuando carguemos la información de los servicios, las actualizamos en el estado del producto
|
|
231
257
|
|
|
232
|
-
const updatedStatusByRetailer = servicesDataRes.reduce(
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
if(!acc[id_retailer]) acc[id_retailer] = {};
|
|
258
|
+
const updatedStatusByRetailer = servicesDataRes.reduce(
|
|
259
|
+
(acc, current, idx) => {
|
|
260
|
+
const { id_retailer, service, status } = current;
|
|
237
261
|
|
|
238
|
-
|
|
262
|
+
if (!acc[id_retailer]) acc[id_retailer] = {};
|
|
239
263
|
|
|
240
|
-
|
|
264
|
+
acc[id_retailer][service] = status;
|
|
241
265
|
|
|
242
|
-
|
|
266
|
+
return acc;
|
|
267
|
+
},
|
|
268
|
+
{},
|
|
269
|
+
);
|
|
243
270
|
|
|
244
|
-
dispatch({
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
271
|
+
dispatch({
|
|
272
|
+
type: "SET_PRODUCT",
|
|
273
|
+
payload: {
|
|
274
|
+
...state.product,
|
|
275
|
+
statusByRetailer: updatedStatusByRetailer,
|
|
276
|
+
},
|
|
277
|
+
});
|
|
248
278
|
|
|
249
279
|
dispatch({
|
|
250
280
|
type: "SET_SERVICES",
|
|
@@ -295,45 +325,49 @@ const ProviderProductEditionView = ({
|
|
|
295
325
|
const updateInputsActiveRetailer = () => {
|
|
296
326
|
if (!state.services) return;
|
|
297
327
|
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
328
|
+
if (state.services.datasheets) {
|
|
329
|
+
const retailerDatasheets =
|
|
330
|
+
state.services.datasheets[state.active_retailer.id_retailer];
|
|
331
|
+
const datasheetsActiveRetailer = {
|
|
332
|
+
...retailerDatasheets,
|
|
333
|
+
data: Object.values(retailerDatasheets.data),
|
|
334
|
+
};
|
|
335
|
+
dispatch({
|
|
336
|
+
type: "SET_DATASHEETS_INPUTS",
|
|
337
|
+
payload: [datasheetsActiveRetailer, state.services.datasheets.inputs],
|
|
338
|
+
});
|
|
339
|
+
}
|
|
309
340
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
(input) =>
|
|
314
|
-
input.id_retailer === state.active_retailer.id_retailer &&
|
|
315
|
-
input.id_image === value.image_id
|
|
316
|
-
)
|
|
341
|
+
if (state.services.descriptions) {
|
|
342
|
+
const descriptionsActiveRetailer = state.services.descriptions.filter(
|
|
343
|
+
(item) => item.id === state.active_retailer.id_retailer,
|
|
317
344
|
);
|
|
318
|
-
});
|
|
319
345
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
346
|
+
dispatch({
|
|
347
|
+
type: "SET_DESCRIPTIONS_INPUTS",
|
|
348
|
+
payload: descriptionsActiveRetailer,
|
|
349
|
+
});
|
|
350
|
+
}
|
|
324
351
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
352
|
+
if (state.services.images) {
|
|
353
|
+
const filteredValues = state.services.images.values.filter((value) => {
|
|
354
|
+
return state.services.images.inputsByRetailer.some((retailerInput) =>
|
|
355
|
+
retailerInput.some(
|
|
356
|
+
(input) =>
|
|
357
|
+
input.id_retailer === state.active_retailer.id_retailer &&
|
|
358
|
+
input.id_image === value.image_id,
|
|
359
|
+
),
|
|
360
|
+
);
|
|
361
|
+
});
|
|
329
362
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
363
|
+
dispatch({
|
|
364
|
+
type: "SET_IMAGES_VALUES",
|
|
365
|
+
payload: {
|
|
366
|
+
...state.services.images,
|
|
367
|
+
values: filteredValues,
|
|
368
|
+
},
|
|
369
|
+
});
|
|
370
|
+
}
|
|
337
371
|
};
|
|
338
372
|
|
|
339
373
|
updateInputsActiveRetailer();
|
|
@@ -343,38 +377,41 @@ const ProviderProductEditionView = ({
|
|
|
343
377
|
const canShowValidationButtons = () => {
|
|
344
378
|
if (!state.product?.statusByRetailer) return false;
|
|
345
379
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
status: currentStatus
|
|
353
|
-
|
|
380
|
+
try {
|
|
381
|
+
const currentService = getConceptByTab(state.active_tab);
|
|
382
|
+
// const currentStatus = state.product[`${currentService}_status`];
|
|
383
|
+
const currentRetailer = state.active_retailer.id_retailer;
|
|
384
|
+
|
|
385
|
+
//Información del servicio de la cadena seleccionada
|
|
386
|
+
const { status: currentStatus } = state.services_data.find(
|
|
387
|
+
(service) =>
|
|
388
|
+
service.service === currentService &&
|
|
389
|
+
service.id_retailer === currentRetailer,
|
|
390
|
+
);
|
|
354
391
|
|
|
355
|
-
|
|
356
|
-
|
|
392
|
+
const originTab = origin[state.active_tab];
|
|
393
|
+
const isRetailerUser = user?.is_retailer === 1;
|
|
357
394
|
|
|
358
|
-
|
|
359
|
-
|
|
395
|
+
const validStatuses = ["AA", "AP", "R", "CA", "RCA"];
|
|
396
|
+
if (!validStatuses.includes(currentStatus)) return false;
|
|
360
397
|
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
398
|
+
const validOrigins = [
|
|
399
|
+
"RequestWithContentoh",
|
|
400
|
+
"RequestWithoutContentoh",
|
|
401
|
+
"Contentoh",
|
|
402
|
+
];
|
|
366
403
|
|
|
367
|
-
|
|
404
|
+
if (!validOrigins.includes(originTab)) return false;
|
|
368
405
|
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
406
|
+
// Retailer: solo AP
|
|
407
|
+
if (isRetailerUser) {
|
|
408
|
+
return currentStatus === "AP";
|
|
409
|
+
}
|
|
373
410
|
|
|
374
|
-
|
|
375
|
-
|
|
411
|
+
// No retailer
|
|
412
|
+
const hasNoOrder = !state.product.id_order && !state.product.orderId;
|
|
376
413
|
|
|
377
|
-
|
|
414
|
+
const condition =
|
|
378
415
|
(
|
|
379
416
|
originTab === "RequestWithoutContentoh" && (
|
|
380
417
|
["R", "CA"].includes(currentStatus) || (currentStatus === "RCA" && hasNoOrder)
|
|
@@ -384,7 +421,10 @@ const ProviderProductEditionView = ({
|
|
|
384
421
|
["RequestWithContentoh", "Contentoh"].includes(originTab) && currentStatus === "AA"
|
|
385
422
|
)
|
|
386
423
|
|
|
387
|
-
|
|
424
|
+
return condition;
|
|
425
|
+
} catch (error) {
|
|
426
|
+
return false;
|
|
427
|
+
}
|
|
388
428
|
};
|
|
389
429
|
|
|
390
430
|
const canShowSaveButton = (version_status) => {
|
|
@@ -407,7 +447,7 @@ const ProviderProductEditionView = ({
|
|
|
407
447
|
const currentRetailer = state.active_retailer.id_retailer;
|
|
408
448
|
|
|
409
449
|
const currentStatus =
|
|
410
|
-
statusByRetailer[currentRetailer][currentService] || "
|
|
450
|
+
statusByRetailer[currentRetailer][currentService] || "N/S";
|
|
411
451
|
return currentStatus;
|
|
412
452
|
};
|
|
413
453
|
|
|
@@ -417,7 +457,7 @@ const ProviderProductEditionView = ({
|
|
|
417
457
|
name: e?.name,
|
|
418
458
|
required: e?.required,
|
|
419
459
|
active: state.images_values?.values?.some(
|
|
420
|
-
(value) => value?.image_id === e?.id
|
|
460
|
+
(value) => value?.image_id === e?.id,
|
|
421
461
|
),
|
|
422
462
|
}));
|
|
423
463
|
const imageType = state.images_values?.imageType?.map((e) => ({
|
|
@@ -428,7 +468,7 @@ const ProviderProductEditionView = ({
|
|
|
428
468
|
(e) => ({
|
|
429
469
|
value: e?.id,
|
|
430
470
|
name: e?.name,
|
|
431
|
-
})
|
|
471
|
+
}),
|
|
432
472
|
);
|
|
433
473
|
|
|
434
474
|
return state.images_values?.values?.map((image, index) => (
|
|
@@ -684,14 +724,13 @@ const ProviderProductEditionView = ({
|
|
|
684
724
|
headers: {
|
|
685
725
|
Authorization: token,
|
|
686
726
|
},
|
|
687
|
-
}
|
|
727
|
+
},
|
|
688
728
|
);
|
|
689
729
|
|
|
690
730
|
const newStatuses = JSON.parse(res.data.body);
|
|
691
731
|
const serviceStatus =
|
|
692
732
|
newStatuses.newServiceStatus[articleId][`${concept}Status`];
|
|
693
|
-
|
|
694
|
-
console.log({product: state.product, newStatuses, serviceStatus, servicesData: state.services_data});
|
|
733
|
+
|
|
695
734
|
|
|
696
735
|
// Actualizar el producto con los nuevos estados
|
|
697
736
|
const updatedProduct = {
|
|
@@ -705,9 +744,12 @@ const ProviderProductEditionView = ({
|
|
|
705
744
|
},
|
|
706
745
|
};
|
|
707
746
|
|
|
708
|
-
const updatedServicesData = state.services_data?.map(service => ({
|
|
747
|
+
const updatedServicesData = state.services_data?.map((service) => ({
|
|
709
748
|
...service,
|
|
710
|
-
status:
|
|
749
|
+
status:
|
|
750
|
+
service?.id_retailer === retailerId && service?.service === concept
|
|
751
|
+
? newStatuses?.newStatus ?? serviceStatus
|
|
752
|
+
: service?.status,
|
|
711
753
|
}));
|
|
712
754
|
|
|
713
755
|
dispatch({ type: "SET_SERVICES_DATA", payload: updatedServicesData });
|
|
@@ -1152,7 +1194,7 @@ const ProviderProductEditionView = ({
|
|
|
1152
1194
|
size={12}
|
|
1153
1195
|
onClick={async () => {
|
|
1154
1196
|
const elements = document.querySelectorAll(
|
|
1155
|
-
"#modal-message-box .ql-container .ql-editor > p"
|
|
1197
|
+
"#modal-message-box .ql-container .ql-editor > p",
|
|
1156
1198
|
);
|
|
1157
1199
|
|
|
1158
1200
|
if (!elements || elements.length === 0) {
|
|
@@ -1162,14 +1204,17 @@ const ProviderProductEditionView = ({
|
|
|
1162
1204
|
|
|
1163
1205
|
const isMessageEmpty = Array.from(elements).every((el) => {
|
|
1164
1206
|
const body = el.innerHTML;
|
|
1165
|
-
return
|
|
1207
|
+
return (
|
|
1208
|
+
!body || body.replace(/<.*?\/?>/gm, "").trim() === ""
|
|
1209
|
+
);
|
|
1166
1210
|
});
|
|
1167
1211
|
|
|
1168
1212
|
if (isMessageEmpty) {
|
|
1169
1213
|
const container = document.querySelector(
|
|
1170
|
-
".container-customComponent"
|
|
1214
|
+
".container-customComponent",
|
|
1171
1215
|
);
|
|
1172
|
-
const existingAlert =
|
|
1216
|
+
const existingAlert =
|
|
1217
|
+
container.querySelector(".alert-error");
|
|
1173
1218
|
|
|
1174
1219
|
if (!existingAlert) {
|
|
1175
1220
|
const alert = document.createElement("div");
|
|
@@ -1224,7 +1269,9 @@ const ProviderProductEditionView = ({
|
|
|
1224
1269
|
<div className="data-container">
|
|
1225
1270
|
<div className="image-data-panel">
|
|
1226
1271
|
<ImagePreviewer
|
|
1227
|
-
activeImage={
|
|
1272
|
+
activeImage={
|
|
1273
|
+
state.images_values.values[state.current_image] ?? {}
|
|
1274
|
+
}
|
|
1228
1275
|
imagesArray={state.images_values || []}
|
|
1229
1276
|
setActiveImage={handleOnChangeCurrentImage}
|
|
1230
1277
|
setShowModal={handleOnShowModalGalery}
|
|
@@ -1310,12 +1357,16 @@ const ProviderProductEditionView = ({
|
|
|
1310
1357
|
<InputGroup
|
|
1311
1358
|
activeSection={state.active_tab}
|
|
1312
1359
|
inputGroup={state.descriptions_inputs[0]}
|
|
1313
|
-
updatedDescriptions={
|
|
1360
|
+
updatedDescriptions={
|
|
1361
|
+
state.updated_descriptions_inputs
|
|
1362
|
+
}
|
|
1314
1363
|
articleId={state.product?.id_article}
|
|
1315
1364
|
version={state.product.version}
|
|
1316
1365
|
isShowbox={false}
|
|
1317
1366
|
dinamicHeight={true}
|
|
1318
|
-
setUpdatedDescriptions={
|
|
1367
|
+
setUpdatedDescriptions={
|
|
1368
|
+
handleOnSetUpdatedDescriptions
|
|
1369
|
+
}
|
|
1319
1370
|
updateApprovedInputs={handleOnUpdateApprovedInputs} // No se usa?
|
|
1320
1371
|
/>
|
|
1321
1372
|
) : (
|
|
@@ -1332,12 +1383,14 @@ const ProviderProductEditionView = ({
|
|
|
1332
1383
|
(dataGroup, index) => (
|
|
1333
1384
|
<InputGroup
|
|
1334
1385
|
index={index}
|
|
1335
|
-
key={
|
|
1386
|
+
key={
|
|
1387
|
+
index + "-" + state.active_retailer.retailer
|
|
1388
|
+
}
|
|
1336
1389
|
articleId={state.product.id_article}
|
|
1337
1390
|
version={state.version}
|
|
1338
1391
|
activeSection={state.active_tab}
|
|
1339
1392
|
inputGroup={dataGroup}
|
|
1340
|
-
dataInputs={state.datasheets_inputs[1]}
|
|
1393
|
+
dataInputs={state.datasheets_inputs[1] ?? []}
|
|
1341
1394
|
activeRetailer={
|
|
1342
1395
|
state.services.datasheets[
|
|
1343
1396
|
state.active_retailer.id_retailer
|
|
@@ -1362,7 +1415,7 @@ const ProviderProductEditionView = ({
|
|
|
1362
1415
|
handleOnUpdateApprovedInputs // No se usa?
|
|
1363
1416
|
}
|
|
1364
1417
|
/>
|
|
1365
|
-
)
|
|
1418
|
+
),
|
|
1366
1419
|
)}
|
|
1367
1420
|
</>
|
|
1368
1421
|
) : (
|
|
@@ -1440,7 +1493,8 @@ const ProviderProductEditionView = ({
|
|
|
1440
1493
|
textDecoration: "underline",
|
|
1441
1494
|
}}
|
|
1442
1495
|
>
|
|
1443
|
-
haz clic para abrir el explorador de
|
|
1496
|
+
haz clic para abrir el explorador de
|
|
1497
|
+
archivos
|
|
1444
1498
|
</span>
|
|
1445
1499
|
</p>
|
|
1446
1500
|
</div>
|
|
@@ -1467,7 +1521,7 @@ const ProviderProductEditionView = ({
|
|
|
1467
1521
|
export const ProviderProductEdition = (props) => {
|
|
1468
1522
|
return (
|
|
1469
1523
|
<ProviderProductEditionProvider>
|
|
1470
|
-
|
|
1524
|
+
<ProviderProductEditionView {...props} />
|
|
1471
1525
|
</ProviderProductEditionProvider>
|
|
1472
1526
|
);
|
|
1473
1527
|
};
|
|
@@ -18,107 +18,53 @@ RetailerProductEditionDefault.args = {
|
|
|
18
18
|
token:
|
|
19
19
|
"eyJraWQiOiJEV3owZnNieXg2MXNFcVduN3RCXC81bVhod3ZNbFZIOTgwUnZcL3RjT0lKdEk9IiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiI4ZDAxMDIxNC01YmZhLTQzYzMtOTZmYi1jNTU2ZGMwNTc3NGIiLCJjb2duaXRvOmdyb3VwcyI6WyJjb2xhYm9yYWRvcmVzX2NvbnRlbnRvaCJdLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiaXNzIjoiaHR0cHM6XC9cL2NvZ25pdG8taWRwLnVzLWVhc3QtMS5hbWF6b25hd3MuY29tXC91cy1lYXN0LTFfbFN6UVo0WjdSIiwiY29nbml0bzp1c2VybmFtZSI6IjhkMDEwMjE0LTViZmEtNDNjMy05NmZiLWM1NTZkYzA1Nzc0YiIsImF1ZCI6IjUyZDlza2tkY2c4cWpwODhvb2sxdXNlNm1rIiwiZXZlbnRfaWQiOiI1MDgwMTVmMy1mZGVkLTQ2ODUtYTIxNy1mYzgyMTg0ZWRmNGMiLCJ0b2tlbl91c2UiOiJpZCIsImF1dGhfdGltZSI6MTc2ODI1MzE3NywibmFtZSI6IkNvbGFib3JhZG9yIiwicGhvbmVfbnVtYmVyIjoiKzUyMTExMSIsImV4cCI6MTc2ODI1Njc3NywiaWF0IjoxNzY4MjUzMTc3LCJlbWFpbCI6ImthcmFmZTMyMThAbW9tMmtpZC5jb20ifQ.QiZiscuTvrur0g328Zmh2bI-kZyg7YO_T5jT63096JNuSxGnX9wpK87cVTV1dED4ruD-2NMsgLShUIMcklAg17FL6i5_vCuB1dSIDY0LaybvSpriFJaVVdMUIMGFi_1Q7bI9qqyXYkevcf-HO33vVPdU-_-4-u8YRd-QganUk35vPYPh9vFJWbC0Qtvv25ZR4L2xuRIXx4e7StlTvZXysnYL8A84jkK1zn6d77V-9GqQQW8exO6sBW7R6cGt55vnF80NIfG_9lAqCK0PcZH4o50aqrAVhtfV5edlEmXBHeGK5R3Sz5iTeKb51QF3TWVFZCYGvQJ7FShulUWHcm3X2Q",
|
|
20
20
|
productSelected: {
|
|
21
|
-
"articleId":
|
|
21
|
+
"articleId": 145188,
|
|
22
22
|
"services": {
|
|
23
23
|
"datasheets": 1,
|
|
24
24
|
"descriptions": 1,
|
|
25
25
|
"images": 1
|
|
26
26
|
},
|
|
27
|
-
"orderId":
|
|
27
|
+
"orderId": 10451,
|
|
28
28
|
"city": "CDMX, México",
|
|
29
|
-
"status": "
|
|
30
|
-
"datasheet_status": "
|
|
29
|
+
"status": "AS",
|
|
30
|
+
"datasheet_status": "AA",
|
|
31
31
|
"prio": "none",
|
|
32
32
|
"version": 3,
|
|
33
|
-
"description_status": "
|
|
34
|
-
"images_status": "
|
|
33
|
+
"description_status": "CA",
|
|
34
|
+
"images_status": "AA",
|
|
35
35
|
"statusByRetailer": [
|
|
36
36
|
{
|
|
37
|
-
"
|
|
37
|
+
"retailer_id": 2,
|
|
38
38
|
"service": "datasheet",
|
|
39
|
-
"
|
|
40
|
-
"task_user_group_id":
|
|
39
|
+
"status": "AA",
|
|
40
|
+
"task_user_group_id": 2
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
|
-
"
|
|
43
|
+
"retailer_id": 2,
|
|
44
44
|
"service": "description",
|
|
45
|
-
"
|
|
46
|
-
"task_user_group_id":
|
|
45
|
+
"status": "CA",
|
|
46
|
+
"task_user_group_id": 2
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
|
-
"
|
|
49
|
+
"retailer_id": 2,
|
|
50
50
|
"service": "images",
|
|
51
|
-
"
|
|
52
|
-
"task_user_group_id":
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
"status": "AC",
|
|
56
|
-
"service": "datasheet",
|
|
57
|
-
"retailer_id": 29,
|
|
58
|
-
"task_user_group_id": 4
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
"status": "AC",
|
|
62
|
-
"service": "description",
|
|
63
|
-
"retailer_id": 29,
|
|
64
|
-
"task_user_group_id": 4
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
"status": "AC",
|
|
68
|
-
"service": "images",
|
|
69
|
-
"retailer_id": 29,
|
|
70
|
-
"task_user_group_id": 4
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
"status": "AC",
|
|
74
|
-
"service": "datasheet",
|
|
75
|
-
"retailer_id": 36,
|
|
76
|
-
"task_user_group_id": 4
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
"status": "AC",
|
|
80
|
-
"service": "description",
|
|
81
|
-
"retailer_id": 36,
|
|
82
|
-
"task_user_group_id": 4
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
"status": "AC",
|
|
86
|
-
"service": "images",
|
|
87
|
-
"retailer_id": 36,
|
|
88
|
-
"task_user_group_id": 4
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
"status": "AC",
|
|
92
|
-
"service": "datasheet",
|
|
93
|
-
"retailer_id": 70,
|
|
94
|
-
"task_user_group_id": 4
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
"status": "AC",
|
|
98
|
-
"service": "description",
|
|
99
|
-
"retailer_id": 70,
|
|
100
|
-
"task_user_group_id": 4
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
"status": "AC",
|
|
104
|
-
"service": "images",
|
|
105
|
-
"retailer_id": 70,
|
|
106
|
-
"task_user_group_id": 4
|
|
51
|
+
"status": "AA",
|
|
52
|
+
"task_user_group_id": 2
|
|
107
53
|
}
|
|
108
54
|
],
|
|
109
55
|
"article": {
|
|
110
|
-
"id_article":
|
|
111
|
-
"id_category": "
|
|
112
|
-
"brand":
|
|
113
|
-
"name": "
|
|
114
|
-
"upc": "
|
|
115
|
-
"sku": "
|
|
116
|
-
"timestamp": "2026-
|
|
56
|
+
"id_article": 145188,
|
|
57
|
+
"id_category": "5739",
|
|
58
|
+
"brand": null,
|
|
59
|
+
"name": "Pantalla",
|
|
60
|
+
"upc": "91449",
|
|
61
|
+
"sku": "144",
|
|
62
|
+
"timestamp": "2026-04-24T16:09:39.000Z",
|
|
117
63
|
"active": 1,
|
|
118
64
|
"company_id": 291,
|
|
119
65
|
"company_name": "LATAM LOGISTICS",
|
|
120
66
|
"country": "México",
|
|
121
|
-
"id_order":
|
|
67
|
+
"id_order": 10451,
|
|
122
68
|
"id_datasheet_especialist": 426,
|
|
123
69
|
"id_datasheet_facilitator": null,
|
|
124
70
|
"id_description_especialist": 426,
|
|
@@ -127,55 +73,25 @@ RetailerProductEditionDefault.args = {
|
|
|
127
73
|
"id_images_facilitator": null,
|
|
128
74
|
"id_auditor": 425,
|
|
129
75
|
"id_recepcionist": null,
|
|
130
|
-
"category": "
|
|
76
|
+
"category": "Tecnología y Electrónica|Televisores|Pantallas",
|
|
131
77
|
"categoryRetailer": [
|
|
132
78
|
{
|
|
133
|
-
"id_category":
|
|
134
|
-
"id_retailer":
|
|
135
|
-
"category_name": "
|
|
136
|
-
"retailer_name": "
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
"id_category": 4216,
|
|
140
|
-
"id_retailer": 70,
|
|
141
|
-
"category_name": "Limpieza|Cuarto de Lavado|Cuarto de Lavado",
|
|
142
|
-
"retailer_name": "Bodega Aurrera"
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
"id_category": 4874,
|
|
146
|
-
"id_retailer": 36,
|
|
147
|
-
"category_name": "Productos de Higiene Personal|Productos de Higiene Personal|Productos de Higiene Personal",
|
|
148
|
-
"retailer_name": "Oxxo"
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
"id_category": 4941,
|
|
152
|
-
"id_retailer": 13,
|
|
153
|
-
"category_name": "Supermercado Soriana|Supermercado|Supermercado",
|
|
154
|
-
"retailer_name": "Soriana"
|
|
79
|
+
"id_category": 5739,
|
|
80
|
+
"id_retailer": 2,
|
|
81
|
+
"category_name": "Tecnología y Electrónica|Televisores|Pantallas",
|
|
82
|
+
"retailer_name": "Walmart Mercancías Generales"
|
|
155
83
|
}
|
|
156
84
|
]
|
|
157
85
|
},
|
|
158
86
|
"retailers": [
|
|
159
87
|
{
|
|
160
|
-
"id":
|
|
161
|
-
"name": "
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
"id": 29,
|
|
165
|
-
"name": "Farmacias del Ahorro"
|
|
166
|
-
},
|
|
167
|
-
{
|
|
168
|
-
"id": 36,
|
|
169
|
-
"name": "Oxxo"
|
|
170
|
-
},
|
|
171
|
-
{
|
|
172
|
-
"id": 70,
|
|
173
|
-
"name": "Bodega Aurrera"
|
|
88
|
+
"id": 2,
|
|
89
|
+
"name": "Walmart Mercancías Generales"
|
|
174
90
|
}
|
|
175
91
|
],
|
|
176
92
|
"country": "México",
|
|
177
|
-
"upc": "
|
|
178
|
-
|
|
93
|
+
"upc": "91449"
|
|
94
|
+
},
|
|
179
95
|
|
|
180
96
|
|
|
181
97
|
// location: {
|