@snabcentr/client-core 3.20.0 → 3.21.0-profstroy

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 (86) hide show
  1. package/catalog/dto/sc-product.d.ts +7 -0
  2. package/catalog/services/sc-catalog-redirect.service.d.ts +1 -1
  3. package/config/sc-i-update-interval.d.ts +12 -0
  4. package/esm2022/auth/services/sc-auth.service.mjs +3 -2
  5. package/esm2022/catalog/classes/sc-catalog-item.mjs +2 -2
  6. package/esm2022/catalog/dto/sc-product.mjs +13 -1
  7. package/esm2022/catalog/services/sc-catalog-redirect.service.mjs +3 -3
  8. package/esm2022/config/sc-i-update-interval.mjs +1 -1
  9. package/esm2022/helpers/index.mjs +2 -1
  10. package/esm2022/helpers/sc-date-helper.mjs +23 -0
  11. package/esm2022/helpers/sc-units-helper.mjs +3 -2
  12. package/esm2022/order/classes/index.mjs +3 -1
  13. package/esm2022/order/classes/sc-order-draft-actualization.mjs +46 -0
  14. package/esm2022/order/classes/sc-order-draft-short.mjs +7 -2
  15. package/esm2022/order/classes/sc-order-draft.mjs +15 -3
  16. package/esm2022/order/classes/sc-order-item.mjs +23 -1
  17. package/esm2022/order/classes/sc-order-short.mjs +3 -1
  18. package/esm2022/order/classes/sc-profstroy-order-item.mjs +88 -0
  19. package/esm2022/order/enums/index.mjs +2 -1
  20. package/esm2022/order/enums/sc-order-draft-actualization-status.mjs +24 -0
  21. package/esm2022/order/internal/index.mjs +6 -1
  22. package/esm2022/order/internal/sc-i-new-profstroy-order-draft-request.mjs +2 -0
  23. package/esm2022/order/internal/sc-i-order-draft-actualization.mjs +2 -0
  24. package/esm2022/order/internal/sc-i-order-draft-file.mjs +2 -0
  25. package/esm2022/order/internal/sc-i-order-draft-short.mjs +1 -1
  26. package/esm2022/order/internal/sc-i-order-draft.mjs +1 -1
  27. package/esm2022/order/internal/sc-i-order-short.mjs +1 -1
  28. package/esm2022/order/internal/sc-i-profstroy-order-item.mjs +2 -0
  29. package/esm2022/order/internal/sc-i-profstroy-product-stub.mjs +2 -0
  30. package/esm2022/order/services/sc-order-drafts.service.mjs +122 -11
  31. package/esm2022/public-api.mjs +2 -1
  32. package/esm2022/ssr-cache/classes/index.mjs +2 -0
  33. package/esm2022/ssr-cache/classes/sc-ssr-response-cache.mjs +100 -0
  34. package/esm2022/ssr-cache/index.mjs +6 -0
  35. package/esm2022/ssr-cache/interfaces/index.mjs +3 -0
  36. package/esm2022/ssr-cache/interfaces/sc-i-ssr-response-cache-settings.mjs +2 -0
  37. package/esm2022/ssr-cache/interfaces/sc-i-ssr-response-cache-stats.mjs +2 -0
  38. package/esm2022/ssr-cache/internal/is-ssr-response-cacheable.mjs +25 -0
  39. package/esm2022/ssr-cache/internal/sc-i-ssr-cached-response.mjs +2 -0
  40. package/esm2022/ssr-cache/sc-ssr-response-cache.backend.mjs +71 -0
  41. package/esm2022/ssr-cache/sc-ssr-response-cache.providers.mjs +12 -0
  42. package/esm2022/ssr-cache/tokens/index.mjs +3 -0
  43. package/esm2022/ssr-cache/tokens/sc-ssr-response-cache-settings.mjs +8 -0
  44. package/esm2022/ssr-cache/tokens/sc-ssr-response-cache.mjs +13 -0
  45. package/esm2022/user-metrika/enums/sc-user-metrika-goals-enum.mjs +19 -1
  46. package/fesm2022/snabcentr-client-core.mjs +625 -57
  47. package/fesm2022/snabcentr-client-core.mjs.map +1 -1
  48. package/helpers/index.d.ts +1 -0
  49. package/helpers/sc-date-helper.d.ts +12 -0
  50. package/helpers/sc-units-helper.d.ts +1 -1
  51. package/order/classes/index.d.ts +2 -0
  52. package/order/classes/sc-order-draft-actualization.d.ts +47 -0
  53. package/order/classes/sc-order-draft-short.d.ts +16 -2
  54. package/order/classes/sc-order-draft.d.ts +16 -2
  55. package/order/classes/sc-order-item.d.ts +12 -0
  56. package/order/classes/sc-order-short.d.ts +4 -0
  57. package/order/classes/sc-profstroy-order-item.d.ts +73 -0
  58. package/order/enums/index.d.ts +1 -0
  59. package/order/enums/sc-order-draft-actualization-status.d.ts +21 -0
  60. package/order/internal/index.d.ts +5 -0
  61. package/order/internal/sc-i-new-profstroy-order-draft-request.d.ts +14 -0
  62. package/order/internal/sc-i-order-draft-actualization.d.ts +22 -0
  63. package/order/internal/sc-i-order-draft-file.d.ts +13 -0
  64. package/order/internal/sc-i-order-draft-short.d.ts +15 -0
  65. package/order/internal/sc-i-order-draft.d.ts +2 -1
  66. package/order/internal/sc-i-order-short.d.ts +4 -0
  67. package/order/internal/sc-i-profstroy-order-item.d.ts +28 -0
  68. package/order/internal/sc-i-profstroy-product-stub.d.ts +13 -0
  69. package/order/services/sc-order-drafts.service.d.ts +63 -1
  70. package/package.json +1 -1
  71. package/public-api.d.ts +1 -0
  72. package/release_notes.tmp +2 -4
  73. package/ssr-cache/classes/index.d.ts +1 -0
  74. package/ssr-cache/classes/sc-ssr-response-cache.d.ts +59 -0
  75. package/ssr-cache/index.d.ts +5 -0
  76. package/ssr-cache/interfaces/index.d.ts +2 -0
  77. package/ssr-cache/interfaces/sc-i-ssr-response-cache-settings.d.ts +17 -0
  78. package/ssr-cache/interfaces/sc-i-ssr-response-cache-stats.d.ts +17 -0
  79. package/ssr-cache/internal/is-ssr-response-cacheable.d.ts +14 -0
  80. package/ssr-cache/internal/sc-i-ssr-cached-response.d.ts +16 -0
  81. package/ssr-cache/sc-ssr-response-cache.backend.d.ts +42 -0
  82. package/ssr-cache/sc-ssr-response-cache.providers.d.ts +6 -0
  83. package/ssr-cache/tokens/index.d.ts +2 -0
  84. package/ssr-cache/tokens/sc-ssr-response-cache-settings.d.ts +6 -0
  85. package/ssr-cache/tokens/sc-ssr-response-cache.d.ts +6 -0
  86. package/user-metrika/enums/sc-user-metrika-goals-enum.d.ts +18 -0
@@ -1,3 +1,4 @@
1
1
  export * from './sc-image-helper';
2
2
  export * from './sc-units-helper';
3
3
  export * from './sc-get-current-route';
4
+ export * from './sc-date-helper';
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Класс-помощник для работы с датами.
3
+ */
4
+ export declare class ScDateHelper {
5
+ /**
6
+ * Возвращает дату, полученную из строки в указанном формате, или `undefined`, если значение отсутствует или не является датой.
7
+ *
8
+ * @param value Дата строкой или готовый объект даты.
9
+ * @param format Формат даты строкой (например, {@link ScIDateFormat.api}).
10
+ */
11
+ static parse(value: string | Date | null | undefined, format: string): Date | undefined;
12
+ }
@@ -1,4 +1,4 @@
1
- import { ScProduct } from '../catalog/dto/sc-product';
1
+ import type { ScProduct } from '../catalog/dto/sc-product';
2
2
  /**
3
3
  * Класс-помощник для работы со значениями единиц измерения товара.
4
4
  */
@@ -1,6 +1,7 @@
1
1
  export * from './sc-delivery-cost';
2
2
  export * from './sc-order-base';
3
3
  export * from './sc-order-draft';
4
+ export * from './sc-order-draft-actualization';
4
5
  export * from './sc-order-draft-short';
5
6
  export * from './sc-order-delivery';
6
7
  export * from './sc-order-history-user';
@@ -8,4 +9,5 @@ export * from './sc-i-order-history';
8
9
  export * from './sc-order-item';
9
10
  export * from './sc-order-payment';
10
11
  export * from './sc-order-short';
12
+ export * from './sc-profstroy-order-item';
11
13
  export * from './sc-order';
@@ -0,0 +1,47 @@
1
+ import { ScOrderDraftActualizationStatus } from '../enums/sc-order-draft-actualization-status';
2
+ import { ScIOrderDraftActualization } from '../internal/sc-i-order-draft-actualization';
3
+ /**
4
+ * Данные об актуализации черновика Профстрой.
5
+ */
6
+ export declare class ScOrderDraftActualization {
7
+ /**
8
+ * Статус актуализации.
9
+ */
10
+ status: ScOrderDraftActualizationStatus;
11
+ /**
12
+ * Дата и время последней успешной актуализации.
13
+ */
14
+ actualizedAt?: Date;
15
+ /**
16
+ * Дата и время, до которых данные актуализации считаются актуальными.
17
+ */
18
+ expiresAt?: Date;
19
+ /**
20
+ * Текст ошибки последней обработки.
21
+ */
22
+ error?: string;
23
+ /**
24
+ * Инициализирует экземпляр класса {@link ScOrderDraftActualization}.
25
+ *
26
+ * @param data Данные от API или готовый экземпляр актуализации.
27
+ * @param apiDateFormat Формат дат в данных API.
28
+ */
29
+ constructor(data: ScIOrderDraftActualization | ScOrderDraftActualization | null | undefined, apiDateFormat: string);
30
+ /**
31
+ * Признак, что выполняется обработка.
32
+ */
33
+ get isProcessing(): boolean;
34
+ /**
35
+ * Возвращает признак, что данные актуализации устарели на указанный момент: актуализация не завершена успешно или истёк срок её действия.
36
+ * Момент, равный сроку действия, ещё допустим. Если срок не известен, данные считаются актуальными.
37
+ *
38
+ * @param now Момент проверки.
39
+ */
40
+ isOutdatedAt(now: Date): boolean;
41
+ /**
42
+ * Возвращает признак, что на указанный момент из черновика можно оформить заказ.
43
+ *
44
+ * @param now Момент проверки.
45
+ */
46
+ isOrderAllowedAt(now: Date): boolean;
47
+ }
@@ -1,6 +1,7 @@
1
1
  import { ScOrderDraftType } from '../enums/sc-order-draft-type';
2
- import { ScIOrderDraftShort } from '../internal';
2
+ import { ScIOrderDraftFile, ScIOrderDraftShort } from '../internal';
3
3
  import { ScOrderBase } from './sc-order-base';
4
+ import { ScOrderDraftActualization } from './sc-order-draft-actualization';
4
5
  /**
5
6
  * Данные о кратком коммерческом предложении/черновике заказа.
6
7
  */
@@ -13,10 +14,23 @@ export declare class ScOrderDraftShort extends ScOrderBase implements ScIOrderDr
13
14
  * @inheritDoc
14
15
  */
15
16
  type: ScOrderDraftType;
17
+ /**
18
+ * Признак черновика, созданного из файла программы «Профстрой».
19
+ */
20
+ isProfstroy: boolean;
21
+ /**
22
+ * Данные об актуализации черновика Профстрой.
23
+ */
24
+ actualization?: ScOrderDraftActualization;
25
+ /**
26
+ * Данные об исходном файле черновика Профстрой.
27
+ */
28
+ file?: ScIOrderDraftFile;
16
29
  /**
17
30
  * Инициализирует экземпляр класса {@link ScOrderDraftShort}.
18
31
  *
19
32
  * @param data Данные для первоначальной инициализации.
33
+ * @param apiDateFormat Формат дат в данных API.
20
34
  */
21
- constructor(data: ScIOrderDraftShort);
35
+ constructor(data: ScIOrderDraftShort, apiDateFormat: string);
22
36
  }
@@ -1,5 +1,6 @@
1
1
  import { ScOrderDraftType } from '../enums/sc-order-draft-type';
2
- import { ScIOrderDraft } from '../internal';
2
+ import { ScIOrderDraft, ScIOrderDraftFile } from '../internal';
3
+ import { ScOrderDraftActualization } from './sc-order-draft-actualization';
3
4
  import { ScOrderDraftShort } from './sc-order-draft-short';
4
5
  import { ScOrderItem } from './sc-order-item';
5
6
  /**
@@ -30,6 +31,18 @@ export declare class ScOrderDraft implements ScIOrderDraft {
30
31
  * @inheritDoc
31
32
  */
32
33
  products: ScOrderItem[];
34
+ /**
35
+ * Признак черновика, созданного из файла программы «Профстрой».
36
+ */
37
+ isProfstroy: boolean;
38
+ /**
39
+ * Данные об актуализации черновика Профстрой.
40
+ */
41
+ actualization?: ScOrderDraftActualization;
42
+ /**
43
+ * Данные об исходном файле черновика Профстрой.
44
+ */
45
+ file?: ScIOrderDraftFile;
33
46
  /**
34
47
  * Дата последнего обновления данных.
35
48
  */
@@ -38,8 +51,9 @@ export declare class ScOrderDraft implements ScIOrderDraft {
38
51
  * Инициализирует экземпляр класса {@link ScOrderDraft}.
39
52
  *
40
53
  * @param data Данные для первоначальной инициализации.
54
+ * @param apiDateFormat Формат дат в данных API.
41
55
  */
42
- constructor(data: ScIOrderDraft);
56
+ constructor(data: ScIOrderDraft, apiDateFormat: string);
43
57
  /**
44
58
  * @inheritDoc
45
59
  */
@@ -75,6 +75,18 @@ export declare class ScOrderItem {
75
75
  * @param data Данные для первоначальной инициализации.
76
76
  */
77
77
  constructor(data: ScIOrderItem);
78
+ /**
79
+ * Признак, что позиция может попасть в заказ: товар есть в каталоге и предоставляется.
80
+ */
81
+ get isOrderable(): boolean;
82
+ /**
83
+ * Шаг изменения количества позиции.
84
+ */
85
+ get quantityStep(): number;
86
+ /**
87
+ * Возвращает причину, по которой позиция не может попасть в заказ, или пустую строку.
88
+ */
89
+ getUnavailableReason(): string;
78
90
  /**
79
91
  * @inheritDoc
80
92
  */
@@ -35,6 +35,10 @@ export declare class ScOrderShort extends ScOrderBase implements ScIOrderShort {
35
35
  * @inheritDoc
36
36
  */
37
37
  barcode?: number;
38
+ /**
39
+ * Признак заказа, созданного из черновика Профстрой.
40
+ */
41
+ isProfstroy: boolean;
38
42
  /**
39
43
  * Инициализирует экземпляр класса {@link ScOrderShort}.
40
44
  *
@@ -0,0 +1,73 @@
1
+ import { ScIProfstroyOrderItem } from '../internal/sc-i-profstroy-order-item';
2
+ import { ScOrderItem } from './sc-order-item';
3
+ /**
4
+ * Данные о позиции черновика Профстрой.
5
+ */
6
+ export declare class ScProfstroyOrderItem extends ScOrderItem {
7
+ /**
8
+ * Название группы для позиций без группы.
9
+ */
10
+ static readonly ungroupedName = "\u0411\u0435\u0437 \u0433\u0440\u0443\u043F\u043F\u044B";
11
+ /**
12
+ * Шаг количества позиции, для которой не найден товар каталога и кратность не известна.
13
+ */
14
+ static readonly stubQuantityStep = 0.001;
15
+ /**
16
+ * Тексты ошибок строк по их кодам.
17
+ */
18
+ private static readonly lineErrorTexts;
19
+ /**
20
+ * Возвращает признак, что вместо товара каталога пришла заглушка.
21
+ *
22
+ * @param product Данные о товаре.
23
+ */
24
+ private static isStub;
25
+ /**
26
+ * Возвращает название группы позиции для отображения. Позиции обычного черновика относятся к группе «Без группы».
27
+ *
28
+ * @param item Позиция черновика.
29
+ */
30
+ static getGroupTitle(item: ScOrderItem): string;
31
+ /**
32
+ * Название группы из файла.
33
+ */
34
+ groupName?: string;
35
+ /**
36
+ * Артикул поставщика из файла или из заглушки товара.
37
+ */
38
+ supplierSku?: string;
39
+ /**
40
+ * Признак строки из группы, которая не участвует в заказе.
41
+ */
42
+ isIgnored: boolean;
43
+ /**
44
+ * Ошибка строки, из-за которой она не попадёт в заказ.
45
+ */
46
+ lineError?: string;
47
+ /**
48
+ * Признак, что для позиции не найден товар каталога и вместо него заглушка с данными из файла.
49
+ */
50
+ readonly isProductStub: boolean;
51
+ /**
52
+ * Инициализирует экземпляр класса {@link ScProfstroyOrderItem}.
53
+ *
54
+ * @param data Данные от API или готовый экземпляр позиции.
55
+ */
56
+ constructor(data: ScIProfstroyOrderItem | ScProfstroyOrderItem);
57
+ /**
58
+ * Название группы для отображения: группа из файла или «Без группы».
59
+ */
60
+ get groupTitle(): string;
61
+ /**
62
+ * @inheritDoc
63
+ */
64
+ get isOrderable(): boolean;
65
+ /**
66
+ * @inheritDoc
67
+ */
68
+ get quantityStep(): number;
69
+ /**
70
+ * @inheritDoc
71
+ */
72
+ getUnavailableReason(): string;
73
+ }
@@ -1,3 +1,4 @@
1
1
  export * from './sc-delivery-type';
2
2
  export * from './sc-order-draft-type';
3
3
  export * from './sc-payment-type';
4
+ export * from './sc-order-draft-actualization-status';
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Перечисление статусов актуализации черновика Профстрой.
3
+ */
4
+ export declare enum ScOrderDraftActualizationStatus {
5
+ /**
6
+ * Выполняется обработка файла или обмен с 1С.
7
+ */
8
+ processing = "processing",
9
+ /**
10
+ * Последний обмен с 1С завершён успешно.
11
+ */
12
+ completed = "completed",
13
+ /**
14
+ * Обработка завершилась с ошибкой.
15
+ */
16
+ error = "error",
17
+ /**
18
+ * Состав черновика изменён после последней успешной актуализации.
19
+ */
20
+ needsActualization = "needs_actualization"
21
+ }
@@ -12,3 +12,8 @@ export * from './sc-i-order-item';
12
12
  export * from './sc-i-order-loader';
13
13
  export * from './sc-i-order-short';
14
14
  export * from './sc-i-update-order-order-request';
15
+ export * from './sc-i-order-draft-actualization';
16
+ export * from './sc-i-order-draft-file';
17
+ export * from './sc-i-profstroy-order-item';
18
+ export * from './sc-i-profstroy-product-stub';
19
+ export * from './sc-i-new-profstroy-order-draft-request';
@@ -0,0 +1,14 @@
1
+ import { ScUploadedFile } from '../../contacts/dto/sc-uploaded-file';
2
+ /**
3
+ * Данные запроса создания черновика заказа из файла программы «Профстрой».
4
+ */
5
+ export interface ScINewProfstroyOrderDraftRequest {
6
+ /**
7
+ * Файл выгрузки программы «Профстрой».
8
+ */
9
+ file: ScUploadedFile;
10
+ /**
11
+ * Название черновика.
12
+ */
13
+ name?: string;
14
+ }
@@ -0,0 +1,22 @@
1
+ import { ScOrderDraftActualizationStatus } from '../enums/sc-order-draft-actualization-status';
2
+ /**
3
+ * Данные об актуализации черновика Профстрой, получаемые от API.
4
+ */
5
+ export interface ScIOrderDraftActualization {
6
+ /**
7
+ * Статус актуализации.
8
+ */
9
+ status: ScOrderDraftActualizationStatus;
10
+ /**
11
+ * Дата и время последней успешной актуализации в формате `Y-m-d H:i:s`.
12
+ */
13
+ actualizedAt?: string | null;
14
+ /**
15
+ * Дата и время, до которых данные актуализации считаются актуальными, в формате `Y-m-d H:i:s`.
16
+ */
17
+ expiresAt?: string | null;
18
+ /**
19
+ * Текст ошибки последней обработки.
20
+ */
21
+ error?: string | null;
22
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Данные об исходном файле черновика Профстрой.
3
+ */
4
+ export interface ScIOrderDraftFile {
5
+ /**
6
+ * Относительный путь к файлу от корня портала.
7
+ */
8
+ url?: string;
9
+ /**
10
+ * Исходное название загруженного файла.
11
+ */
12
+ originalName?: string;
13
+ }
@@ -1,5 +1,8 @@
1
+ import { ScOrderDraftActualization } from '../classes/sc-order-draft-actualization';
1
2
  import { ScOrderDraftType } from '../enums';
2
3
  import { ScIOrderBase } from './sc-i-order-base';
4
+ import { ScIOrderDraftActualization } from './sc-i-order-draft-actualization';
5
+ import { ScIOrderDraftFile } from './sc-i-order-draft-file';
3
6
  /**
4
7
  * Данные о кратком коммерческом предложении/черновике заказа.
5
8
  */
@@ -12,4 +15,16 @@ export interface ScIOrderDraftShort extends ScIOrderBase {
12
15
  * Тип коммерческого предложения/черновика.
13
16
  */
14
17
  type: ScOrderDraftType;
18
+ /**
19
+ * Признак черновика, созданного из файла программы «Профстрой».
20
+ */
21
+ isProfstroy?: boolean;
22
+ /**
23
+ * Данные об актуализации черновика Профстрой.
24
+ */
25
+ actualization?: ScIOrderDraftActualization | ScOrderDraftActualization | null;
26
+ /**
27
+ * Данные об исходном файле черновика Профстрой.
28
+ */
29
+ file?: ScIOrderDraftFile | null;
15
30
  }
@@ -2,6 +2,7 @@ import { ScOrderDraft } from '../classes/sc-order-draft';
2
2
  import { ScOrderDraftShort } from '../classes/sc-order-draft-short';
3
3
  import { ScIOrderDraftShort } from './sc-i-order-draft-short';
4
4
  import { ScIOrderItem } from './sc-i-order-item';
5
+ import { ScIProfstroyOrderItem } from './sc-i-profstroy-order-item';
5
6
  /**
6
7
  * Данные о коммерческом предложении/черновике заказа.
7
8
  */
@@ -13,7 +14,7 @@ export interface ScIOrderDraft extends ScIOrderDraftShort {
13
14
  /**
14
15
  * Список продуктов коммерческого предложения/черновика.
15
16
  */
16
- products: ScIOrderItem[];
17
+ products: Array<ScIOrderItem | ScIProfstroyOrderItem>;
17
18
  /**
18
19
  * Возвращает сумму в виде строки. Если стоимость отсутствует, то вернёт '-'.
19
20
  */
@@ -39,6 +39,10 @@ export interface ScIOrderShort extends ScIOrderBase {
39
39
  * Штрих-код заказа.
40
40
  */
41
41
  barcode?: number;
42
+ /**
43
+ * Признак заказа, созданного из черновика Профстрой.
44
+ */
45
+ isProfstroy?: boolean;
42
46
  /**
43
47
  * Обновляет данные заказа.
44
48
  *
@@ -0,0 +1,28 @@
1
+ import { ScIProduct } from '../../catalog/interfaces/sc-i-product';
2
+ import { ScIOrderItem } from './sc-i-order-item';
3
+ import { ScIProfstroyProductStub } from './sc-i-profstroy-product-stub';
4
+ /**
5
+ * Данные о позиции черновика Профстрой.
6
+ */
7
+ export interface ScIProfstroyOrderItem extends Omit<ScIOrderItem, 'product'> {
8
+ /**
9
+ * Данные о товаре каталога или заглушка с названием и артикулом из файла.
10
+ */
11
+ product: ScIProduct | ScIProfstroyProductStub | null;
12
+ /**
13
+ * Название группы из файла.
14
+ */
15
+ groupName?: string | null;
16
+ /**
17
+ * Артикул поставщика из файла.
18
+ */
19
+ supplierSku?: string | null;
20
+ /**
21
+ * Признак строки из группы, которая не участвует в заказе.
22
+ */
23
+ isIgnored?: boolean;
24
+ /**
25
+ * Ошибка строки, из-за которой она не попадёт в заказ.
26
+ */
27
+ lineError?: string | null;
28
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Данные о позиции из файла Профстрой, для которой не найден товар каталога.
3
+ */
4
+ export interface ScIProfstroyProductStub {
5
+ /**
6
+ * Название позиции из файла.
7
+ */
8
+ name: string;
9
+ /**
10
+ * Артикул поставщика.
11
+ */
12
+ supplierSku?: string | null;
13
+ }
@@ -3,7 +3,7 @@ import { Observable } from 'rxjs';
3
3
  import { ScIPaginate } from '../../pagination';
4
4
  import { ScOrderDraft, ScOrderDraftShort, ScOrderShort } from '../classes';
5
5
  import { ScOrderItem } from '../classes/sc-order-item';
6
- import { ScIOrderEditorLoader } from '../internal';
6
+ import { ScINewProfstroyOrderDraftRequest, ScIOrderEditorLoader } from '../internal';
7
7
  import { ScINewOrder } from '../internal/sc-i-new-order';
8
8
  import { ScINewOrderDraftRequest } from '../internal/sc-i-new-order-draft-request';
9
9
  import { ScINewOrderItemBase } from '../internal/sc-i-new-order-item-base';
@@ -38,6 +38,18 @@ export declare class ScOrderDraftsService implements ScIOrderEditorLoader<ScOrde
38
38
  * Сервис для сбора метрик о действиях пользователей.
39
39
  */
40
40
  private readonly userMetrikaService;
41
+ /**
42
+ * Форматы дат.
43
+ */
44
+ private readonly dateFormats;
45
+ /**
46
+ * Сервис конвертации данных.
47
+ */
48
+ private readonly convertersService;
49
+ /**
50
+ * Объект документа.
51
+ */
52
+ private readonly document;
41
53
  /**
42
54
  * Коллекция пар ключ-значение для кэшированных коммерческих предложений/черновиков пользователя.
43
55
  */
@@ -52,6 +64,43 @@ export declare class ScOrderDraftsService implements ScIOrderEditorLoader<ScOrde
52
64
  * @param params Параметры запроса получения списка.
53
65
  */
54
66
  getList$(params: HttpParams): Observable<ScIPaginate<ScOrderDraftShort>>;
67
+ /**
68
+ * Возвращает краткие данные черновиков с указанными номерами. Используется для лёгкого опроса состояния актуализации без загрузки позиций.
69
+ *
70
+ * @param ids Номера черновиков.
71
+ */
72
+ getShortList$(ids: number[]): Observable<ScOrderDraftShort[]>;
73
+ /**
74
+ * Периодически запрашивает краткие данные черновиков с указанными номерами, пока есть подписка.
75
+ * Пока вкладка браузера скрыта, запросы не выполняются; новый запрос не начинается до завершения предыдущего.
76
+ *
77
+ * @param ids Номера черновиков.
78
+ */
79
+ watchShortList$(ids: number[]): Observable<ScOrderDraftShort[]>;
80
+ /**
81
+ * Периодически перезапрашивает страницу списка черновиков в фоне, пока есть подписка. Условия запросов как у {@link watchShortList$}.
82
+ *
83
+ * @param params Параметры запроса получения списка.
84
+ */
85
+ watchList$(params: HttpParams): Observable<ScOrderDraftShort[]>;
86
+ /**
87
+ * Создаёт черновик заказа из файла программы «Профстрой» и запускает его обработку.
88
+ *
89
+ * @param data Данные для создания.
90
+ */
91
+ createProfstroy$(data: ScINewProfstroyOrderDraftRequest): Observable<ScOrderDraft>;
92
+ /**
93
+ * Запускает актуализацию черновика Профстрой (повторный обмен с 1С по текущему составу).
94
+ *
95
+ * @param offerId Идентификатор черновика.
96
+ */
97
+ actualizeProfstroy$(offerId: number): Observable<ScOrderDraft>;
98
+ /**
99
+ * Запускает пересборку черновика Профстрой из ранее загруженного файла.
100
+ *
101
+ * @param offerId Идентификатор черновика.
102
+ */
103
+ reloadProfstroy$(offerId: number): Observable<ScOrderDraft>;
55
104
  /**
56
105
  * Создаёт новое коммерческое предложение/черновик заказа.
57
106
  *
@@ -65,6 +114,12 @@ export declare class ScOrderDraftsService implements ScIOrderEditorLoader<ScOrde
65
114
  * @param cacheable Признак возможности получения из кэшированных данных.
66
115
  */
67
116
  get$(draftId: number, cacheable?: boolean): Observable<ScOrderDraft | ScOrderLoading>;
117
+ /**
118
+ * Запрашивает полную информацию о черновике в обход кэша и обновляет кэш полученными данными.
119
+ *
120
+ * @param draftId Идентификатор записи.
121
+ */
122
+ fetch$(draftId: number): Observable<ScOrderDraft>;
68
123
  /**
69
124
  * Возвращает список элементов коммерческого предложения/черновика.
70
125
  *
@@ -91,6 +146,13 @@ export declare class ScOrderDraftsService implements ScIOrderEditorLoader<ScOrde
91
146
  * @param data Данные заказа.
92
147
  */
93
148
  createOrder$(offerId: number, data: ScINewOrder): Observable<ScOrderShort[]>;
149
+ /**
150
+ * Выполняет запрос с указанным интервалом, пока вкладка браузера видна. Новый запрос не начинается до завершения предыдущего, ошибки пропускаются.
151
+ *
152
+ * @param period Интервал запросов (ms).
153
+ * @param request Функция, возвращающая запрос.
154
+ */
155
+ private poll$;
94
156
  /**
95
157
  * Убирает заказанные позиции из кэша черновика локально (сервер сразу после заказа ещё может вернуть их в списке).
96
158
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snabcentr/client-core",
3
- "version": "3.20.0",
3
+ "version": "3.21.0-profstroy",
4
4
  "author": "Snabcentr Ltd.",
5
5
  "repository": "https://gitlab.snabcentr.met/web/angular/snabcentr-client-core-lib",
6
6
  "license": "Commercial",
package/public-api.d.ts CHANGED
@@ -27,6 +27,7 @@ export * from './reclamation';
27
27
  export * from './references';
28
28
  export * from './search';
29
29
  export * from './seo';
30
+ export * from './ssr-cache';
30
31
  export * from './suggestion';
31
32
  export * from './tokens';
32
33
  export * from './ui';
package/release_notes.tmp CHANGED
@@ -1,6 +1,4 @@
1
- ## 3.20.0 (2026-09-08)
1
+ ## 3.21.0-profstroy (2026-09-23)
2
2
 
3
- ### added (1 change)
4
-
5
- - [#13774: Добавлен временный (302) редирект на канонический адрес товара или категории](web_soft/libs/angular/snabcentr-client-core-lib@1d6a56422f20fdc1876d4bccb911dde4f1a77481) ([merge request](web_soft/libs/angular/snabcentr-client-core-lib!343))
3
+ No changes.
6
4
 
@@ -0,0 +1 @@
1
+ export * from './sc-ssr-response-cache';
@@ -0,0 +1,59 @@
1
+ import { HttpResponse } from '@angular/common/http';
2
+ import { ScISsrResponseCacheStats } from '../interfaces/sc-i-ssr-response-cache-stats';
3
+ /**
4
+ * Кэш ответов API, один на процесс: переживает пересоздание инжектора между SSR-рендерами.
5
+ * Одинаковые одновременные запросы склеиваются, при переполнении вытесняется самая давняя запись.
6
+ */
7
+ export declare class ScSsrResponseCache {
8
+ /**
9
+ * Максимальное количество записей в кэше.
10
+ */
11
+ private readonly maxEntries;
12
+ /**
13
+ * Закэшированные ответы по ключу запроса.
14
+ */
15
+ private readonly entries;
16
+ /**
17
+ * Выполняемые запросы по ключу запроса.
18
+ */
19
+ private readonly pending;
20
+ /**
21
+ * Количество запросов, отданных без обращения к API.
22
+ */
23
+ private hits;
24
+ /**
25
+ * Количество запросов, выполненных к API.
26
+ */
27
+ private misses;
28
+ /**
29
+ * Инициализирует экземпляр класса {@link ScSsrResponseCache}.
30
+ *
31
+ * @param maxEntries Максимальное количество записей в кэше.
32
+ */
33
+ constructor(maxEntries?: number);
34
+ /**
35
+ * Возвращает ответ из кэша, при отсутствии или устаревании загружает и кэширует. Ошибка загрузки не кэшируется.
36
+ *
37
+ * @param key Ключ запроса.
38
+ * @param lifeTime Время жизни ответа (мс).
39
+ * @param loader Функция загрузки ответа.
40
+ */
41
+ getOrLoad(key: string, lifeTime: number, loader: () => Promise<HttpResponse<unknown>>): Promise<HttpResponse<unknown>>;
42
+ /**
43
+ * Возвращает статистику работы кэша.
44
+ */
45
+ getStats(): ScISsrResponseCacheStats;
46
+ /**
47
+ * Возвращает актуальную запись или `null`.
48
+ *
49
+ * @param key Ключ запроса.
50
+ */
51
+ private get;
52
+ /**
53
+ * Сохраняет запись, при переполнении вытесняя самую давнюю.
54
+ *
55
+ * @param key Ключ запроса.
56
+ * @param entry Запись кэша.
57
+ */
58
+ private set;
59
+ }
@@ -0,0 +1,5 @@
1
+ export * from './classes';
2
+ export * from './interfaces';
3
+ export * from './tokens';
4
+ export * from './sc-ssr-response-cache.backend';
5
+ export * from './sc-ssr-response-cache.providers';