contentoh-components-library 21.2.7 → 21.2.8

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 (51) hide show
  1. package/.env.development +3 -1
  2. package/.env.production +3 -1
  3. package/dist/components/atoms/FeatureTag/styles.js +1 -1
  4. package/dist/components/atoms/Graphic/Graphic.stories.js +9 -1
  5. package/dist/components/atoms/Graphic/index.js +4 -9
  6. package/dist/components/atoms/Graphic/styles.js +1 -1
  7. package/dist/components/atoms/MetricCard/MetricCard.stories.js +31 -0
  8. package/dist/components/atoms/MetricCard/index.js +24 -0
  9. package/dist/components/atoms/MetricCard/styles.js +20 -0
  10. package/dist/components/atoms/MetricSelect/MetricSelect.stories.js +46 -0
  11. package/dist/components/atoms/MetricSelect/index.js +37 -0
  12. package/dist/components/atoms/MetricSelect/styles.js +20 -0
  13. package/dist/components/organisms/Calendar/Calendar.stories.js +28 -0
  14. package/dist/components/organisms/Calendar/index.js +33 -0
  15. package/dist/components/organisms/Calendar/styles.js +20 -0
  16. package/dist/components/organisms/DashboardMetric/DashboardMetric.stories.js +45 -0
  17. package/dist/components/organisms/DashboardMetric/index.js +168 -0
  18. package/dist/components/organisms/DashboardMetric/styles.js +20 -0
  19. package/dist/components/organisms/FullProductNameHeader/index.js +1 -1
  20. package/dist/components/pages/Dashboard/Dashboard.stories.js +28 -0
  21. package/dist/components/pages/Dashboard/index.js +292 -0
  22. package/dist/components/pages/Dashboard/styles.js +18 -0
  23. package/dist/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +73 -121
  24. package/dist/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +55 -55
  25. package/dist/components/pages/RetailerProductEdition/index.js +3 -3
  26. package/dist/index.js +13 -0
  27. package/package.json +2 -1
  28. package/src/components/atoms/FeatureTag/styles.js +6 -0
  29. package/src/components/atoms/Graphic/Graphic.stories.js +8 -0
  30. package/src/components/atoms/Graphic/index.js +3 -9
  31. package/src/components/atoms/Graphic/styles.js +1 -2
  32. package/src/components/atoms/MetricCard/MetricCard.stories.js +14 -0
  33. package/src/components/atoms/MetricCard/index.js +10 -0
  34. package/src/components/atoms/MetricCard/styles.js +30 -0
  35. package/src/components/atoms/MetricSelect/MetricSelect.stories.js +37 -0
  36. package/src/components/atoms/MetricSelect/index.js +22 -0
  37. package/src/components/atoms/MetricSelect/styles.js +20 -0
  38. package/src/components/organisms/Calendar/Calendar.stories.js +10 -0
  39. package/src/components/organisms/Calendar/index.js +17 -0
  40. package/src/components/organisms/Calendar/styles.js +851 -0
  41. package/src/components/organisms/DashboardMetric/DashboardMetric.stories.js +28 -0
  42. package/src/components/organisms/DashboardMetric/index.js +128 -0
  43. package/src/components/organisms/DashboardMetric/styles.js +60 -0
  44. package/src/components/organisms/FullProductNameHeader/index.js +1 -1
  45. package/src/components/pages/Dashboard/Dashboard.stories.js +10 -0
  46. package/src/components/pages/Dashboard/index.js +146 -0
  47. package/src/components/pages/Dashboard/styles.js +24 -0
  48. package/src/components/pages/ProviderProductEdition/ProviderProductEdition.stories.js +80 -146
  49. package/src/components/pages/RetailerProductEdition/RetailerProductEdition.stories.js +58 -58
  50. package/src/components/pages/RetailerProductEdition/index.js +3 -2
  51. package/src/index.js +1 -0
@@ -72,7 +72,7 @@ var FullProductNameHeader = function FullProductNameHeader(_ref) {
72
72
  feature: "Prov",
73
73
  value: headerData === null || headerData === void 0 ? void 0 : (_headerData$article4 = headerData.article) === null || _headerData$article4 === void 0 ? void 0 : _headerData$article4.company_name
74
74
  }, {
75
- feature: "UPC",
75
+ feature: "SKU",
76
76
  value: (headerData === null || headerData === void 0 ? void 0 : (_headerData$article5 = headerData.article) === null || _headerData$article5 === void 0 ? void 0 : _headerData$article5.upc) || (headerData === null || headerData === void 0 ? void 0 : headerData.upc)
77
77
  }]
78
78
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_AvatarAndValidation.AvatarAndValidation, {
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = exports.DashboardDeafult = void 0;
9
+
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
11
+
12
+ var _ = require(".");
13
+
14
+ var _jsxRuntime = require("react/jsx-runtime");
15
+
16
+ var _default = {
17
+ title: "Components/pages/Dashboard",
18
+ component: _.Dashboard
19
+ };
20
+ exports.default = _default;
21
+
22
+ var Template = function Template(args) {
23
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Dashboard, (0, _objectSpread2.default)({}, args));
24
+ };
25
+
26
+ var DashboardDeafult = Template.bind({});
27
+ exports.DashboardDeafult = DashboardDeafult;
28
+ DashboardDeafult.args = {};
@@ -0,0 +1,292 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.Dashboard = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
15
+
16
+ var _styles = require("./styles");
17
+
18
+ var _MetricCard = require("../../atoms/MetricCard");
19
+
20
+ var _DashboardMetric = require("../../organisms/DashboardMetric");
21
+
22
+ var _react = require("react");
23
+
24
+ var _Loading = require("../../atoms/Loading");
25
+
26
+ var _axios = _interopRequireDefault(require("axios"));
27
+
28
+ var _jsxRuntime = require("react/jsx-runtime");
29
+
30
+ var Dashboard = function Dashboard() {
31
+ var _useState = (0, _react.useState)([]),
32
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
33
+ metricsData = _useState2[0],
34
+ setMetricsData = _useState2[1];
35
+
36
+ var _useState3 = (0, _react.useState)({}),
37
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
38
+ productsByStatus = _useState4[0],
39
+ setProductsByStatus = _useState4[1];
40
+
41
+ var _useState5 = (0, _react.useState)([]),
42
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
43
+ requiredProducts = _useState6[0],
44
+ setRequiredProducts = _useState6[1];
45
+
46
+ var _useState7 = (0, _react.useState)({
47
+ retailerId: null,
48
+ startDate: null,
49
+ endDate: null
50
+ }),
51
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
52
+ orderByStatus = _useState8[0],
53
+ setOrderByStatus = _useState8[1];
54
+
55
+ var _useState9 = (0, _react.useState)({
56
+ retailerId: null,
57
+ startDate: null,
58
+ endDate: null
59
+ }),
60
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
61
+ orderByRequired = _useState10[0],
62
+ setOrderByRequired = _useState10[1];
63
+
64
+ var _useState11 = (0, _react.useState)({}),
65
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
66
+ retailers = _useState12[0],
67
+ setRetailers = _useState12[1];
68
+
69
+ var _useState13 = (0, _react.useState)(true),
70
+ _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
71
+ loading = _useState14[0],
72
+ setLoading = _useState14[1];
73
+
74
+ var loadProductVersions = /*#__PURE__*/function () {
75
+ var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(queryObject) {
76
+ var byStatus,
77
+ retailerId,
78
+ startDate,
79
+ endDate,
80
+ query,
81
+ endpoint,
82
+ response,
83
+ _args = arguments;
84
+ return _regenerator.default.wrap(function _callee$(_context) {
85
+ while (1) {
86
+ switch (_context.prev = _context.next) {
87
+ case 0:
88
+ byStatus = _args.length > 1 && _args[1] !== undefined ? _args[1] : false;
89
+ retailerId = queryObject.retailerId, startDate = queryObject.startDate, endDate = queryObject.endDate;
90
+ query = "retailerId=".concat(retailerId, "&startDate=").concat(startDate, "&endDate=").concat(endDate);
91
+ endpoint = byStatus ? process.env.REACT_APP_READ_ORDERS_BY_STATUS : process.env.REACT_APP_READ_REQUIRED_ORDERS;
92
+ _context.prev = 4;
93
+ _context.next = 7;
94
+ return _axios.default.get("".concat(endpoint, "?").concat(query));
95
+
96
+ case 7:
97
+ response = _context.sent;
98
+ return _context.abrupt("return", JSON.parse(response.data.body));
99
+
100
+ case 11:
101
+ _context.prev = 11;
102
+ _context.t0 = _context["catch"](4);
103
+ console.log(_context.t0);
104
+
105
+ case 14:
106
+ case "end":
107
+ return _context.stop();
108
+ }
109
+ }
110
+ }, _callee, null, [[4, 11]]);
111
+ }));
112
+
113
+ return function loadProductVersions(_x) {
114
+ return _ref.apply(this, arguments);
115
+ };
116
+ }();
117
+
118
+ var getRetailers = /*#__PURE__*/function () {
119
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
120
+ var retailersResponse, parsed, retailers;
121
+ return _regenerator.default.wrap(function _callee2$(_context2) {
122
+ while (1) {
123
+ switch (_context2.prev = _context2.next) {
124
+ case 0:
125
+ _context2.next = 2;
126
+ return _axios.default.get("".concat(process.env.REACT_APP_RETAILER_ENDPOINT), {
127
+ headers: {
128
+ Authorization: sessionStorage.getItem("jwt")
129
+ }
130
+ });
131
+
132
+ case 2:
133
+ retailersResponse = _context2.sent;
134
+ parsed = JSON.parse(retailersResponse.data.body).data;
135
+ retailers = Object.keys(parsed).map(function (key) {
136
+ if (key.includes('The Home Depot')) return parsed[key];
137
+ }).filter(function (f) {
138
+ return f;
139
+ });
140
+ setRetailers(retailers);
141
+
142
+ case 6:
143
+ case "end":
144
+ return _context2.stop();
145
+ }
146
+ }
147
+ }, _callee2);
148
+ }));
149
+
150
+ return function getRetailers() {
151
+ return _ref2.apply(this, arguments);
152
+ };
153
+ }();
154
+
155
+ var loadProductsByStatus = /*#__PURE__*/function () {
156
+ var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(orderByStatus) {
157
+ var _yield$loadProductVer, orders, fullData, total, R, ACA, PA, inProcess;
158
+
159
+ return _regenerator.default.wrap(function _callee3$(_context3) {
160
+ while (1) {
161
+ switch (_context3.prev = _context3.next) {
162
+ case 0:
163
+ _context3.next = 2;
164
+ return loadProductVersions(orderByStatus, true);
165
+
166
+ case 2:
167
+ _yield$loadProductVer = _context3.sent;
168
+ orders = _yield$loadProductVer.orders;
169
+ fullData = _yield$loadProductVer.fullData;
170
+ total = fullData.total, R = fullData.R, ACA = fullData.ACA, PA = fullData.PA;
171
+ inProcess = Object.keys(fullData).reduce(function (prev, curr) {
172
+ return !['total', 'ACA', 'PA', 'R'].includes(curr) ? prev + fullData[curr] : prev;
173
+ }, 0);
174
+ setMetricsData([{
175
+ label: "Productos totales",
176
+ value: total
177
+ }, {
178
+ label: "Productos sin asignar",
179
+ value: PA + R
180
+ }, {
181
+ label: "Productos en proceso",
182
+ value: inProcess
183
+ }, {
184
+ label: "Productos terminados",
185
+ value: ACA
186
+ }]);
187
+ setProductsByStatus(orders);
188
+
189
+ case 9:
190
+ case "end":
191
+ return _context3.stop();
192
+ }
193
+ }
194
+ }, _callee3);
195
+ }));
196
+
197
+ return function loadProductsByStatus(_x2) {
198
+ return _ref3.apply(this, arguments);
199
+ };
200
+ }();
201
+
202
+ var loadRequiredProducts = /*#__PURE__*/function () {
203
+ var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(orderByRequired) {
204
+ var _yield$loadProductVer2, dates;
205
+
206
+ return _regenerator.default.wrap(function _callee4$(_context4) {
207
+ while (1) {
208
+ switch (_context4.prev = _context4.next) {
209
+ case 0:
210
+ _context4.next = 2;
211
+ return loadProductVersions(orderByRequired);
212
+
213
+ case 2:
214
+ _yield$loadProductVer2 = _context4.sent;
215
+ dates = _yield$loadProductVer2.dates;
216
+ setRequiredProducts(dates);
217
+
218
+ case 5:
219
+ case "end":
220
+ return _context4.stop();
221
+ }
222
+ }
223
+ }, _callee4);
224
+ }));
225
+
226
+ return function loadRequiredProducts(_x3) {
227
+ return _ref4.apply(this, arguments);
228
+ };
229
+ }();
230
+
231
+ (0, _react.useEffect)(function () {
232
+ var today = new Date();
233
+ var firstWeekDay = today.getDate() - today.getDay();
234
+ var startDate = "".concat(today.getFullYear(), "-").concat(today.getMonth() + 1, "-").concat(firstWeekDay);
235
+ var endDate = "".concat(today.getFullYear(), "-").concat(today.getMonth() + 1, "-").concat(today.getDate());
236
+ var queryObject = {
237
+ retailerId: "58",
238
+ startDate: startDate,
239
+ endDate: endDate
240
+ };
241
+ setOrderByStatus(queryObject);
242
+ setOrderByRequired(queryObject);
243
+ getRetailers();
244
+ loadProductsByStatus(queryObject);
245
+ loadRequiredProducts(queryObject);
246
+ }, []);
247
+ (0, _react.useEffect)(function () {
248
+ (orderByRequired === null || orderByRequired === void 0 ? void 0 : orderByRequired.retailerId) && (orderByStatus === null || orderByStatus === void 0 ? void 0 : orderByStatus.retailerId) && metricsData.length > 0 && setLoading(false);
249
+ }, [orderByRequired, orderByStatus, metricsData]);
250
+ return loading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Loading.Loading, {}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_styles.Container, {
251
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
252
+ className: "metric-cards",
253
+ children: metricsData.map(function (metric, index) {
254
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_MetricCard.MetricCard, {
255
+ label: metric.label,
256
+ number: metric.value
257
+ }, "".concat(index, "-").concat(metric.value));
258
+ })
259
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
260
+ className: "metrics-main-container",
261
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_DashboardMetric.DashboardMetric, {
262
+ label: "Productos por estatus",
263
+ description: "Revisa el avance individual de cada estatus, utiliza los filtros para encontrar información precisa.",
264
+ dataObject: productsByStatus,
265
+ retailerSelected: orderByStatus.retailerId,
266
+ retailers: retailers,
267
+ queryObject: orderByStatus,
268
+ setQueryObject: function setQueryObject(evt) {
269
+ loadProductsByStatus(evt);
270
+ setOrderByStatus(evt);
271
+ }
272
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_DashboardMetric.DashboardMetric, {
273
+ label: "Productos solicitados",
274
+ description: "Filtra los productos solicitados por fecha y alcance para revisar rápidamente el flujo de trabajo.",
275
+ dataObject: requiredProducts,
276
+ type: "line",
277
+ indexAxis: "x",
278
+ scale: "x",
279
+ displayScale: true,
280
+ retailers: retailers,
281
+ retailerSelected: orderByRequired.retailerId,
282
+ queryObject: orderByRequired,
283
+ setQueryObject: function setQueryObject(evt) {
284
+ loadRequiredProducts(evt);
285
+ setOrderByRequired(evt);
286
+ }
287
+ })]
288
+ })]
289
+ });
290
+ };
291
+
292
+ exports.Dashboard = Dashboard;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.Container = void 0;
9
+
10
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/taggedTemplateLiteral"));
11
+
12
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
13
+
14
+ var _templateObject;
15
+
16
+ var Container = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n padding: 30px;\n .metric-cards {\n display: flex;\n\n > * + * {\n margin-left: 10px;\n }\n\n & + * {\n margin-top: 10px;\n }\n }\n\n .metrics-main-container {\n display: flex;\n\n > * + * {\n margin-left: 10px;\n }\n }\n"])));
17
+
18
+ exports.Container = Container;
@@ -36,146 +36,98 @@ ProviderProductEditionDefault.args = {
36
36
  category: 846,
37
37
  version: 2,
38
38
  productSelected: {
39
- articleStatus: "ACA",
40
- version: 5,
41
- missing: {},
39
+ orderId: 2446,
40
+ article_status: "AP",
41
+ datasheet_status: "AP",
42
+ description_status: "AP",
43
+ images_status: "ACA",
44
+ prio: "none",
45
+ version: 2,
46
+ brand: null,
42
47
  article: {
43
- category: "Materiales de Construcción|Impermeabilizantes y Recubrimientos|Selladores",
44
- company_name: "SIKA MEXICANA S.A. DE C.V.",
45
- company_id: 383,
46
- id_category: "2249",
47
- id_article: 29457,
48
- name: "SIKA TECHO FRESCO SUPER 15",
49
- upc: "111187"
48
+ category: "Organizadores y Closets|Accesorios de Lavandería|Organizadores de Lavandería",
49
+ company_name: "WOMEX SA DE CV",
50
+ id_company: 424,
51
+ country: null,
52
+ id_category: "2522",
53
+ id_article: 78773,
54
+ name: "RACK PARA ROPA DOBLE NEGRO",
55
+ upc: "168462"
50
56
  },
51
- asignations: [],
52
57
  retailers: [{
53
58
  id: 58,
54
- name: "The Home Depot Golden",
55
- country: "México",
56
- id_region: 1,
57
- active: 1
58
- }, {
59
- id: 59,
60
- name: "The Home Depot Platinum",
61
- country: "México",
62
- id_region: 1,
63
- active: 1
64
- }, {
65
- id: 61,
66
- name: "Home Depot TAB",
67
- country: "México",
68
- id_region: 1,
69
- active: 1
59
+ name: "The Home Depot Golden"
70
60
  }],
71
- percentage: 33.35,
61
+ services: {
62
+ datasheets: 1,
63
+ descriptions: 1,
64
+ images: 1
65
+ },
66
+ statusByRetailer: {
67
+ 58: {
68
+ datasheet: "AP",
69
+ description: "AP",
70
+ images: "ACA"
71
+ }
72
+ },
73
+ retailersWithService: ["58"],
74
+ id_article: 78773,
72
75
  retailersAvailable: [{
73
76
  id: 58,
74
- name: "The Home Depot Golden",
75
- country: "México",
76
- id_region: 1,
77
- active: 1
78
- }, {
79
- id: 59,
80
- name: "The Home Depot Platinum",
81
- country: "México",
82
- id_region: 1,
83
- active: 1
84
- }, {
85
- id: 61,
86
- name: "Home Depot TAB",
87
- country: "México",
88
- id_region: 1,
89
- active: 1
90
- }],
91
- upc: "111187",
92
- name: "SIKA TECHO FRESCO SUPER 15",
93
- categoryName: "Materiales de Construcción|Impermeabilizantes y Recubrimientos|Selladores",
94
- id_category: "2249",
95
- id_article: 29457,
96
- services: [{
97
- id_article: 29457,
98
- service: "datasheet",
99
- quantity: 1,
100
- price: 0,
101
- id_user: 1237,
102
- datasheet_common: null,
103
- discount: null
77
+ name: "The Home Depot Golden"
104
78
  }]
105
79
  },
106
80
  productToEdit: {
107
- idCategory: "2249",
108
- ArticleId: 29457,
109
- product: [{
110
- articleStatus: "ACA",
111
- version: 5,
112
- missing: {},
81
+ ArticleId: 78773,
82
+ idCategory: "2522",
83
+ product: {
84
+ orderId: 2446,
85
+ article_status: "AP",
86
+ datasheet_status: "AP",
87
+ description_status: "AP",
88
+ images_status: "ACA",
89
+ prio: "none",
90
+ version: 2,
91
+ brand: null,
113
92
  article: {
114
- category: "Materiales de Construcción|Impermeabilizantes y Recubrimientos|Selladores",
115
- company_name: "SIKA MEXICANA S.A. DE C.V.",
116
- company_id: 383,
117
- id_category: "2249",
118
- id_article: 29457,
119
- name: "SIKA TECHO FRESCO SUPER 15",
120
- upc: "111187"
93
+ category: "Organizadores y Closets|Accesorios de Lavandería|Organizadores de Lavandería",
94
+ company_name: "WOMEX SA DE CV",
95
+ id_company: 424,
96
+ country: null,
97
+ id_category: "2522",
98
+ id_article: 78773,
99
+ name: "RACK PARA ROPA DOBLE NEGRO",
100
+ upc: "168462"
121
101
  },
122
- asignations: [],
123
102
  retailers: [{
124
103
  id: 58,
125
- name: "The Home Depot Golden",
126
- country: "México",
127
- id_region: 1,
128
- active: 1
129
- }, {
130
- id: 59,
131
- name: "The Home Depot Platinum",
132
- country: "México",
133
- id_region: 1,
134
- active: 1
135
- }, {
136
- id: 61,
137
- name: "Home Depot TAB",
138
- country: "México",
139
- id_region: 1,
140
- active: 1
104
+ name: "The Home Depot Golden"
141
105
  }],
142
- percentage: 33.35,
106
+ services: {
107
+ datasheets: 1,
108
+ descriptions: 1,
109
+ images: 1
110
+ },
111
+ statusByRetailer: {
112
+ 58: {
113
+ datasheet: "AP",
114
+ description: "AP",
115
+ images: "ACA"
116
+ }
117
+ },
118
+ retailersWithService: ["58"],
119
+ id_article: 78773,
143
120
  retailersAvailable: [{
144
121
  id: 58,
145
- name: "The Home Depot Golden",
146
- country: "México",
147
- id_region: 1,
148
- active: 1
149
- }, {
150
- id: 59,
151
- name: "The Home Depot Platinum",
152
- country: "México",
153
- id_region: 1,
154
- active: 1
155
- }, {
156
- id: 61,
157
- name: "Home Depot TAB",
158
- country: "México",
159
- id_region: 1,
160
- active: 1
161
- }],
162
- upc: "111187",
163
- name: "SIKA TECHO FRESCO SUPER 15",
164
- categoryName: "Materiales de Construcción|Impermeabilizantes y Recubrimientos|Selladores",
165
- id_category: "2249",
166
- id_article: 29457,
167
- services: [{
168
- id_article: 29457,
169
- service: "datasheet",
170
- quantity: 1,
171
- price: 0,
172
- id_user: 1237,
173
- datasheet_common: null,
174
- discount: null
122
+ name: "The Home Depot Golden"
175
123
  }]
176
- }]
124
+ }
125
+ },
126
+ location: {
127
+ state: {
128
+ origin: "Contentoh"
129
+ }
177
130
  },
178
- location: {},
179
131
  user: {
180
132
  id_user: 1237,
181
133
  name: "The Home",