@snabcentr/client-core 2.65.2 → 2.66.0

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 (151) hide show
  1. package/banners/dto/sc-banner.d.ts +2 -2
  2. package/cart/classes/index.d.ts +1 -0
  3. package/cart/{dto → classes}/sc-cart.d.ts +7 -7
  4. package/cart/classes/sc-sum.d.ts +1 -1
  5. package/cart/index.d.ts +0 -1
  6. package/cart/internal/index.d.ts +1 -2
  7. package/cart/internal/{sc-i-cart-dto.d.ts → sc-i-cart.d.ts} +4 -6
  8. package/cart/services/sc-cart.service.d.ts +32 -30
  9. package/catalog/classes/sc-cached-item.d.ts +25 -5
  10. package/catalog/dto/sc-product.d.ts +2 -2
  11. package/catalog/interfaces/sc-i-category-product-params.d.ts +2 -10
  12. package/catalog/interfaces/sc-property-filters.d.ts +2 -4
  13. package/esm2022/banners/dto/sc-banner.mjs +12 -12
  14. package/esm2022/cart/classes/index.mjs +2 -1
  15. package/esm2022/cart/classes/sc-cart.mjs +18 -0
  16. package/esm2022/cart/classes/sc-sum.mjs +2 -2
  17. package/esm2022/cart/index.mjs +1 -2
  18. package/esm2022/cart/internal/index.mjs +2 -3
  19. package/esm2022/cart/internal/sc-i-cart.mjs +2 -0
  20. package/esm2022/cart/services/sc-cart.service.mjs +50 -52
  21. package/esm2022/catalog/classes/sc-cached-item.mjs +31 -6
  22. package/esm2022/catalog/dto/sc-product.mjs +1 -1
  23. package/esm2022/catalog/interfaces/sc-i-category-product-params.mjs +1 -1
  24. package/esm2022/catalog/interfaces/sc-property-filters.mjs +1 -1
  25. package/esm2022/catalog/services/sc-catalog.service.mjs +6 -6
  26. package/esm2022/catalog/services/sc-recommendation.service.mjs +8 -7
  27. package/esm2022/contragent/services/sc-contragent.service.mjs +3 -3
  28. package/esm2022/delivery-address/services/sc-delivery-address.service.mjs +4 -2
  29. package/esm2022/order/classes/index.mjs +11 -0
  30. package/esm2022/order/classes/sc-delivery-cost.mjs +19 -0
  31. package/esm2022/order/classes/sc-order-base.mjs +28 -0
  32. package/esm2022/order/classes/sc-order-delivery.mjs +2 -0
  33. package/esm2022/order/classes/sc-order-draft-short.mjs +17 -0
  34. package/esm2022/order/classes/sc-order-draft.mjs +59 -0
  35. package/esm2022/order/classes/sc-order-history.mjs +2 -0
  36. package/esm2022/order/classes/sc-order-item.mjs +60 -0
  37. package/esm2022/order/classes/sc-order-payment.mjs +2 -0
  38. package/esm2022/order/classes/sc-order-short.mjs +30 -0
  39. package/esm2022/order/classes/sc-order.mjs +100 -0
  40. package/esm2022/order/enums/index.mjs +2 -1
  41. package/esm2022/order/enums/sc-order-draft-type.mjs +16 -0
  42. package/esm2022/order/index.mjs +5 -3
  43. package/esm2022/order/internal/index.mjs +14 -3
  44. package/esm2022/order/internal/sc-i-delivery-cost-dto.mjs +1 -1
  45. package/esm2022/order/internal/sc-i-new-order-draft-request.mjs +2 -0
  46. package/esm2022/order/internal/sc-i-new-order-item-base.mjs +2 -0
  47. package/esm2022/order/internal/sc-i-new-order-item-measured.mjs +2 -0
  48. package/esm2022/order/internal/sc-i-new-order.mjs +2 -0
  49. package/esm2022/order/internal/sc-i-order-base.mjs +2 -0
  50. package/esm2022/order/internal/sc-i-order-draft-list-params.mjs +2 -0
  51. package/esm2022/order/internal/sc-i-order-draft-short.mjs +2 -0
  52. package/esm2022/order/internal/sc-i-order-draft.mjs +2 -0
  53. package/esm2022/order/internal/sc-i-order-item.mjs +2 -0
  54. package/esm2022/order/internal/sc-i-order-loader.mjs +2 -0
  55. package/esm2022/order/internal/sc-i-order-short.mjs +2 -0
  56. package/esm2022/order/internal/sc-i-order.mjs +2 -0
  57. package/esm2022/order/internal/sc-i-update-order-order-request.mjs +2 -0
  58. package/esm2022/order/services/index.mjs +3 -0
  59. package/esm2022/order/services/sc-order-drafts.service.mjs +195 -0
  60. package/esm2022/order/services/sc-orders.service.mjs +33 -54
  61. package/esm2022/order/tokens/index.mjs +2 -0
  62. package/esm2022/order/tokens/sc-order-loader.token.mjs +25 -0
  63. package/esm2022/pagination/dto/index.mjs +3 -1
  64. package/esm2022/pagination/dto/sc-i-range-filter.mjs +2 -0
  65. package/esm2022/pagination/dto/sc-i-sort-order.mjs +2 -0
  66. package/esm2022/reclamation/interfaces/sc-i-pagination-params.mjs +1 -1
  67. package/esm2022/references/enums/sc-order-state-status.mjs +1 -5
  68. package/esm2022/seo/classes/schema-org-factory.mjs +41 -2
  69. package/esm2022/seo/interfaces/index.mjs +2 -2
  70. package/esm2022/seo/interfaces/sc-i-breadcrumb-item.mjs +12 -0
  71. package/esm2022/seo/services/sc-seo.service.mjs +11 -2
  72. package/esm2022/ui/services/sc-ui.service.mjs +1 -1
  73. package/esm2022/user/dto/sc-user-metadata.mjs +1 -1
  74. package/esm2022/user-metrika/enums/sc-user-metrika-goals-enum.mjs +19 -1
  75. package/fesm2022/snabcentr-client-core.mjs +1093 -768
  76. package/fesm2022/snabcentr-client-core.mjs.map +1 -1
  77. package/order/{dto → classes}/index.d.ts +5 -3
  78. package/order/{dto → classes}/sc-delivery-cost.d.ts +2 -2
  79. package/order/classes/sc-order-base.d.ts +32 -0
  80. package/order/classes/sc-order-draft-short.d.ts +22 -0
  81. package/order/classes/sc-order-draft.d.ts +63 -0
  82. package/order/{dto → classes}/sc-order-history.d.ts +1 -1
  83. package/order/classes/sc-order-item.d.ts +98 -0
  84. package/order/{dto → classes}/sc-order-payment.d.ts +1 -1
  85. package/order/classes/sc-order-short.d.ts +44 -0
  86. package/order/classes/sc-order.d.ts +102 -0
  87. package/order/enums/index.d.ts +1 -0
  88. package/order/enums/sc-order-draft-type.d.ts +13 -0
  89. package/order/index.d.ts +4 -2
  90. package/order/internal/index.d.ts +13 -2
  91. package/order/internal/sc-i-delivery-cost-dto.d.ts +1 -1
  92. package/order/internal/sc-i-new-order-draft-request.d.ts +13 -0
  93. package/{cart/dto/sc-i-new-cart-item-base.d.ts → order/internal/sc-i-new-order-item-base.d.ts} +2 -2
  94. package/order/internal/sc-i-new-order-item-measured.d.ts +10 -0
  95. package/order/{dto → internal}/sc-i-new-order.d.ts +1 -5
  96. package/order/internal/sc-i-order-base.d.ts +25 -0
  97. package/order/internal/sc-i-order-draft-list-params.d.ts +32 -0
  98. package/order/internal/sc-i-order-draft-short.d.ts +15 -0
  99. package/order/internal/sc-i-order-draft.d.ts +43 -0
  100. package/{cart/dto/sc-cart-item.d.ts → order/internal/sc-i-order-item.d.ts} +6 -13
  101. package/order/internal/sc-i-order-loader.d.ts +51 -0
  102. package/order/internal/{sc-i-order-short-dto.d.ts → sc-i-order-short.d.ts} +14 -16
  103. package/order/{dto/sc-order.d.ts → internal/sc-i-order.d.ts} +15 -67
  104. package/order/internal/sc-i-update-order-order-request.d.ts +9 -0
  105. package/order/services/index.d.ts +2 -0
  106. package/order/services/sc-order-drafts.service.d.ts +118 -0
  107. package/order/services/sc-orders.service.d.ts +19 -20
  108. package/order/tokens/index.d.ts +1 -0
  109. package/order/tokens/sc-order-loader.token.d.ts +26 -0
  110. package/package.json +1 -1
  111. package/pagination/dto/index.d.ts +2 -0
  112. package/pagination/dto/sc-i-range-filter.d.ts +15 -0
  113. package/pagination/dto/sc-i-sort-order.d.ts +15 -0
  114. package/reclamation/interfaces/sc-i-pagination-params.d.ts +3 -21
  115. package/references/enums/sc-order-state-status.d.ts +0 -4
  116. package/seo/classes/schema-org-factory.d.ts +9 -2
  117. package/seo/interfaces/index.d.ts +1 -1
  118. package/seo/interfaces/sc-i-breadcrumb-item.d.ts +25 -0
  119. package/seo/services/sc-seo.service.d.ts +1 -1
  120. package/ui/services/sc-ui.service.d.ts +1 -1
  121. package/user/dto/sc-user-metadata.d.ts +1 -1
  122. package/user-metrika/enums/sc-user-metrika-goals-enum.d.ts +18 -0
  123. package/cart/dto/index.d.ts +0 -5
  124. package/cart/dto/sc-i-new-cart-item-measured.d.ts +0 -10
  125. package/cart/dto/sc-i-sales-direction-cart.d.ts +0 -37
  126. package/cart/internal/sc-i-cart-item-dto.d.ts +0 -73
  127. package/esm2022/cart/dto/index.mjs +0 -6
  128. package/esm2022/cart/dto/sc-cart-item.mjs +0 -60
  129. package/esm2022/cart/dto/sc-cart.mjs +0 -18
  130. package/esm2022/cart/dto/sc-i-new-cart-item-base.mjs +0 -2
  131. package/esm2022/cart/dto/sc-i-new-cart-item-measured.mjs +0 -2
  132. package/esm2022/cart/dto/sc-i-sales-direction-cart.mjs +0 -21
  133. package/esm2022/cart/internal/sc-i-cart-dto.mjs +0 -2
  134. package/esm2022/cart/internal/sc-i-cart-item-dto.mjs +0 -2
  135. package/esm2022/order/dto/index.mjs +0 -9
  136. package/esm2022/order/dto/sc-delivery-cost.mjs +0 -19
  137. package/esm2022/order/dto/sc-i-new-order-from-draft.mjs +0 -2
  138. package/esm2022/order/dto/sc-i-new-order.mjs +0 -2
  139. package/esm2022/order/dto/sc-order-delivery.mjs +0 -2
  140. package/esm2022/order/dto/sc-order-history.mjs +0 -2
  141. package/esm2022/order/dto/sc-order-payment.mjs +0 -2
  142. package/esm2022/order/dto/sc-order-short.mjs +0 -46
  143. package/esm2022/order/dto/sc-order.mjs +0 -134
  144. package/esm2022/order/internal/sc-i-order-dto.mjs +0 -2
  145. package/esm2022/order/internal/sc-i-order-short-dto.mjs +0 -2
  146. package/esm2022/seo/interfaces/sc-i-schema-org-breadcrumb-list.mjs +0 -2
  147. package/order/dto/sc-i-new-order-from-draft.d.ts +0 -10
  148. package/order/dto/sc-order-short.d.ts +0 -65
  149. package/order/internal/sc-i-order-dto.d.ts +0 -94
  150. package/seo/interfaces/sc-i-schema-org-breadcrumb-list.d.ts +0 -34
  151. /package/order/{dto → classes}/sc-order-delivery.d.ts +0 -0
@@ -1,18 +1,17 @@
1
- import { ScProduct } from '../../catalog/dto/sc-product';
1
+ import { ScIProduct } from '../../catalog/interfaces/sc-i-product';
2
2
  import { ScIConfiguratorSearchProductBase } from '../../configurator/dto/sc-i-configurator-search-product-base';
3
- import { ScICartItemDTO } from '../internal/sc-i-cart-item-dto';
4
3
  /**
5
- * Единичная позиция товара/услуги в корзине.
4
+ * Данные о единичной позиции товара/услуги в заказе.
6
5
  */
7
- export declare class ScCartItem {
6
+ export interface ScIOrderItem {
8
7
  /**
9
- * Идентификатор позиции товара в корзине.
8
+ * Идентификатор позиции.
10
9
  */
11
10
  id: string;
12
11
  /**
13
- * Данные о товаре.
12
+ * Данные о товаре. Равен `null` если товар отсутствует.
14
13
  */
15
- product: ScProduct;
14
+ product: ScIProduct | null;
16
15
  /**
17
16
  * Количество товара/услуги.
18
17
  */
@@ -69,12 +68,6 @@ export declare class ScCartItem {
69
68
  * Параметры введенные в конфигуратор, при добавлении позиции в корзину.
70
69
  */
71
70
  configuratorParams?: ScIConfiguratorSearchProductBase;
72
- /**
73
- * Инициализирует экземпляр класса {@link ScCartItem}.
74
- *
75
- * @param cartItemDTO DTO единичной позиции товара/услуги в корзине.
76
- */
77
- constructor(cartItemDTO: ScICartItemDTO);
78
71
  /**
79
72
  * Возвращает стоимость единицы товара (включая валюту). Если стоимость отсутствует, то вернёт '-'.
80
73
  */
@@ -0,0 +1,51 @@
1
+ import { Observable } from 'rxjs';
2
+ import { ScOrderItem } from '../classes/sc-order-item';
3
+ import { ScOrderLoading } from '../tokens/sc-order-loader.token';
4
+ import { ScINewOrderItemBase } from './sc-i-new-order-item-base';
5
+ /**
6
+ * Данные о загрузчике списка товаров заказа (корзина / заказ / черновик).
7
+ *
8
+ * @template TItem Тип элемента списка ({@link ScOrderItem} — единичная позиция в корзине/заказе/черновике).
9
+ * @template TContext Тип полной сущности заказа (корзина / заказ / черновик) для get$().
10
+ */
11
+ export interface ScIOrderLoader<TItem extends ScOrderItem = ScOrderItem, TContext = unknown> {
12
+ /**
13
+ * Возвращает полную информацию о заказе (корзине / черновике).
14
+ *
15
+ * @param id Опциональный идентификатор заказа (корзины / черновика).
16
+ */
17
+ get$(id?: number): Observable<TContext | ScOrderLoading>;
18
+ /**
19
+ * Возвращает список элементов заказа (корзины / черновика).
20
+ *
21
+ * @param id Опциональный идентификатор заказа (корзины / черновика).
22
+ */
23
+ getItems$(id?: number): Observable<TItem[] | ScOrderLoading>;
24
+ }
25
+ /**
26
+ * Данные о загрузчике заказа с редактированием и удалением позиций.
27
+ */
28
+ export interface ScIOrderEditorLoader<TItem extends ScOrderItem = ScOrderItem, TContext = unknown> extends ScIOrderLoader<TItem, TContext> {
29
+ /**
30
+ * Добавляет продукт в заказ (корзину / черновик).
31
+ *
32
+ * @param data Данные добавляемого продукта ({@link ScINewOrderItemBase}).
33
+ * @param contextId Опциональный идентификатор контекста (например, идентификатор черновика/предложения).
34
+ */
35
+ addProduct$(data: ScINewOrderItemBase, contextId?: number): Observable<TContext | ScOrderLoading>;
36
+ /**
37
+ * Изменяет продукт в заказе (корзине / черновике).
38
+ *
39
+ * @param id Идентификатор позиции.
40
+ * @param patch Частичные данные для обновления.
41
+ * @param contextId Опциональный идентификатор контекста (например, идентификатор черновика/предложения).
42
+ */
43
+ updateProduct$(id: string, patch: Omit<ScINewOrderItemBase, 'productId'>, contextId?: number): Observable<TContext | ScOrderLoading>;
44
+ /**
45
+ * Удаляет продукт из заказа (корзины / черновика).
46
+ *
47
+ * @param item Удаляемая позиция.
48
+ * @param contextId Опциональный идентификатор контекста (например, идентификатор черновика/предложения).
49
+ */
50
+ deleteProduct$(item: TItem, contextId?: number): Observable<TContext | ScOrderLoading>;
51
+ }
@@ -1,20 +1,12 @@
1
1
  import { ScOrderStateStatus } from '../../references';
2
- import { ScIOrderPayment } from '../dto/sc-order-payment';
3
- import { ScDeliveryType } from '../enums';
2
+ import { ScIOrderDelivery } from '../classes/sc-order-delivery';
3
+ import { ScIOrderPayment } from '../classes/sc-order-payment';
4
+ import { ScOrderShort } from '../classes/sc-order-short';
5
+ import { ScIOrderBase } from './sc-i-order-base';
4
6
  /**
5
- * DTO модель данных краткой информации о заказе.
6
- *
7
- * @internal
7
+ * Данные о кратком заказе.
8
8
  */
9
- export interface ScIOrderShortDTO {
10
- /**
11
- * Идентификатор записи заказа.
12
- */
13
- id: number;
14
- /**
15
- * Дата и время создания заказа.
16
- */
17
- createdAt: string;
9
+ export interface ScIOrderShort extends ScIOrderBase {
18
10
  /**
19
11
  * Идентификатор статуса.
20
12
  */
@@ -28,9 +20,9 @@ export interface ScIOrderShortDTO {
28
20
  */
29
21
  payment: ScIOrderPayment;
30
22
  /**
31
- * Тип доставки.
23
+ * Данные о доставке заказа.
32
24
  */
33
- deliveryType: ScDeliveryType;
25
+ delivery: ScIOrderDelivery;
34
26
  /**
35
27
  * Сумма заказа.
36
28
  */
@@ -43,4 +35,10 @@ export interface ScIOrderShortDTO {
43
35
  * Штрих-код заказа.
44
36
  */
45
37
  barcode?: number;
38
+ /**
39
+ * Обновляет данные заказа.
40
+ *
41
+ * @param order Краткая информация о заказе.
42
+ */
43
+ updateData(order: ScOrderShort): void;
46
44
  }
@@ -1,44 +1,18 @@
1
- import { ScCartItem } from '../../cart/dto/sc-cart-item';
2
1
  import { ScContragent } from '../../contragent/dto/sc-contragent';
3
- import { ScOrderStateStatus } from '../../references/enums/sc-order-state-status';
2
+ import { ScIOrderDelivery } from '../classes/sc-order-delivery';
3
+ import { ScIOrderHistory } from '../classes/sc-order-history';
4
+ import { ScOrderShort } from '../classes/sc-order-short';
4
5
  import { ScDeliveryType, ScPaymentType } from '../enums';
5
- import { ScIOrderDTO } from '../internal/sc-i-order-dto';
6
- import { ScIOrderDelivery } from './sc-order-delivery';
7
- import { ScIOrderHistory } from './sc-order-history';
8
- import { ScIOrderPayment } from './sc-order-payment';
9
- import { ScOrderShort } from './sc-order-short';
6
+ import { ScIOrderItem } from './sc-i-order-item';
7
+ import { ScIOrderShort } from './sc-i-order-short';
10
8
  /**
11
- * Полная информация о заказе.
9
+ * Данные о заказе.
12
10
  */
13
- export declare class ScOrder {
14
- /**
15
- * Идентификатор записи заказа.
16
- */
17
- id: number;
18
- /**
19
- * Дата и время создания заказа.
20
- */
21
- createdAt: string;
22
- /**
23
- * Идентификатор статуса.
24
- */
25
- status: ScOrderStateStatus;
26
- /**
27
- * Направление продаж.
28
- */
29
- direction: number;
30
- /**
31
- * Данные об оплате заказа.
32
- */
33
- payment: ScIOrderPayment;
34
- /**
35
- * Сумма заказа.
36
- */
37
- sum: number;
11
+ export interface ScIOrder extends ScIOrderShort {
38
12
  /**
39
13
  * Список продуктов заказа.
40
14
  */
41
- products?: ScCartItem[];
15
+ products: ScIOrderItem[];
42
16
  /**
43
17
  * Список записей истории изменения статусов заказа.
44
18
  */
@@ -84,60 +58,34 @@ export declare class ScOrder {
84
58
  */
85
59
  email: string;
86
60
  };
87
- /**
88
- * Номер документа в учетной системе клиента.
89
- */
90
- numberDoc?: number;
91
- /**
92
- * Штрих-код заказа.
93
- */
94
- barcode?: number;
95
61
  /**
96
62
  * Дата последнего обновления статуса и информации об оплате.
97
63
  */
98
64
  lastUpdateDate: Date;
99
- /**
100
- * Инициализирует экземпляр класса {@link ScOrder}.
101
- *
102
- * @param orderDTO DTO полная информация о заказе.
103
- */
104
- constructor(orderDTO: ScIOrderDTO);
105
65
  /**
106
66
  * Тип оплаты.
107
67
  */
108
- get paymentType(): ScPaymentType;
68
+ readonly paymentType: ScPaymentType;
109
69
  /**
110
70
  * Тип доставки.
111
71
  */
112
- get deliveryType(): ScDeliveryType;
72
+ readonly deliveryType: ScDeliveryType;
113
73
  /**
114
74
  * Признак, что заказ можно оплатить online.
115
75
  */
116
- get isPayable(): boolean;
117
- /**
118
- * Признак черновика заказа.
119
- */
120
- get isDraft(): boolean;
76
+ readonly isPayable: boolean;
121
77
  /**
122
78
  * Признак, что заказ будет подлежать online-оплате.
123
79
  */
124
- get isPayableSoon(): boolean;
80
+ readonly isPayableSoon: boolean;
125
81
  /**
126
82
  * Признак, что заказ завершён.
127
83
  */
128
- get isCompleted(): boolean;
84
+ readonly isCompleted: boolean;
129
85
  /**
130
86
  * Признак нового заказа.
131
87
  */
132
- get isNew(): boolean;
133
- /**
134
- * Возвращает сумму заказа в виде строки. Если стоимость отсутствует, то вернёт '-'.
135
- */
136
- getSumStr(): string;
137
- /**
138
- * Возвращает сообщение о необходимости уточнить сумму заказа или пустую строку.
139
- */
140
- getSumMessage(): string;
88
+ readonly isNew: boolean;
141
89
  /**
142
90
  * Возвращает признак того, что срок жизни информации о заказе не истёк.
143
91
  *
@@ -149,7 +97,7 @@ export declare class ScOrder {
149
97
  *
150
98
  * @param order Полная информация о заказе.
151
99
  */
152
- updateData(order: ScOrder): void;
100
+ updateData(order: ScOrderShort): void;
153
101
  /**
154
102
  * Обновляет данные полного заказа данными краткой информации о заказе. Не обновляете дату последнего обновления.
155
103
  *
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Данные о запросе на обновление коммерческого предложения/черновика заказа.
3
+ */
4
+ export interface ScIUpdateOrderDraftRequest {
5
+ /**
6
+ * Название коммерческого предложения/черновика.
7
+ */
8
+ name?: string;
9
+ }
@@ -0,0 +1,2 @@
1
+ export * from './sc-order-drafts.service';
2
+ export * from './sc-orders.service';
@@ -0,0 +1,118 @@
1
+ import { HttpParams } from '@angular/common/http';
2
+ import { Observable } from 'rxjs';
3
+ import { ScIPaginate } from '../../pagination';
4
+ import { ScOrderDraft, ScOrderDraftShort, ScOrderShort } from '../classes';
5
+ import { ScOrderItem } from '../classes/sc-order-item';
6
+ import { ScIOrderEditorLoader } from '../internal';
7
+ import { ScINewOrder } from '../internal/sc-i-new-order';
8
+ import { ScINewOrderDraftRequest } from '../internal/sc-i-new-order-draft-request';
9
+ import { ScINewOrderItemBase } from '../internal/sc-i-new-order-item-base';
10
+ import { ScIUpdateOrderDraftRequest } from '../internal/sc-i-update-order-order-request';
11
+ import { ScOrderLoading } from '../tokens/sc-order-loader.token';
12
+ import * as i0 from "@angular/core";
13
+ /**
14
+ * Данные о сервисе коммерческих предложений и черновиков заказов.
15
+ */
16
+ export declare class ScOrderDraftsService implements ScIOrderEditorLoader<ScOrderItem, ScOrderDraft> {
17
+ /**
18
+ * HTTP-клиент.
19
+ */
20
+ private readonly http;
21
+ /**
22
+ * Список ссылок приложения.
23
+ */
24
+ private readonly urls;
25
+ /**
26
+ * {@link Observable} данных о текущем пользователе.
27
+ */
28
+ private readonly user$;
29
+ /**
30
+ * Интервалы обновления данных.
31
+ */
32
+ private readonly updateInterval;
33
+ /**
34
+ * Сервис для работы с корзиной.
35
+ */
36
+ private readonly cartService;
37
+ /**
38
+ * Сервис для сбора метрик о действиях пользователей.
39
+ */
40
+ private readonly userMetrikaService;
41
+ /**
42
+ * Коллекция пар ключ-значение для кэшированных коммерческих предложений/черновиков пользователя.
43
+ */
44
+ private readonly offerMap;
45
+ /**
46
+ * Инициализирует экземпляр класса {@link ScOrderDraftsService}.
47
+ */
48
+ constructor();
49
+ /**
50
+ * Возвращает список коммерческих предложений/черновиков с пагинацией.
51
+ *
52
+ * @param params Параметры запроса получения списка.
53
+ */
54
+ getList$(params: HttpParams): Observable<ScIPaginate<ScOrderDraftShort>>;
55
+ /**
56
+ * Создаёт новое коммерческое предложение/черновик заказа.
57
+ *
58
+ * @param data Данные для создания.
59
+ */
60
+ create$(data: ScINewOrderDraftRequest): Observable<ScOrderDraft>;
61
+ /**
62
+ * Возвращает полную информацию о коммерческом предложении/черновике.
63
+ *
64
+ * @param draftId Идентификатор записи.
65
+ * @param cacheable Признак возможности получения из кэшированных данных.
66
+ */
67
+ get$(draftId: number, cacheable?: boolean): Observable<ScOrderDraft | ScOrderLoading>;
68
+ /**
69
+ * Возвращает список элементов коммерческого предложения/черновика.
70
+ *
71
+ * @param id Идентификатор коммерческого предложения/черновика.
72
+ */
73
+ getItems$(id: number): Observable<ScOrderItem[] | ScOrderLoading>;
74
+ /**
75
+ * Обновляет данные коммерческого предложения/черновика.
76
+ *
77
+ * @param draftId Идентификатор записи.
78
+ * @param patch Данные для обновления.
79
+ */
80
+ update$(draftId: number, patch: ScIUpdateOrderDraftRequest): Observable<ScOrderDraft>;
81
+ /**
82
+ * Удаляет коммерческое предложение/черновик.
83
+ *
84
+ * @param offerId Идентификатор записи.
85
+ */
86
+ delete$(offerId: number): Observable<undefined>;
87
+ /**
88
+ * Создаёт заказ на основе коммерческого предложения/черновика.
89
+ *
90
+ * @param offerId Идентификатор записи.
91
+ * @param data Данные заказа.
92
+ */
93
+ createOrder$(offerId: number, data: ScINewOrder): Observable<ScOrderShort[]>;
94
+ /**
95
+ * Добавляет продукт в коммерческое предложение/черновик.
96
+ *
97
+ * @param productData Данные продукта для добавления.
98
+ * @param offerId Идентификатор коммерческого предложения/черновика.
99
+ */
100
+ addProduct$(productData: ScINewOrderItemBase, offerId: number): Observable<ScOrderDraft>;
101
+ /**
102
+ * Изменяет продукт в коммерческом предложении/черновике.
103
+ *
104
+ * @param productId Идентификатор продукта в корзине.
105
+ * @param patch Частичные данные для обновления.
106
+ * @param offerId Идентификатор коммерческого предложения/черновика.
107
+ */
108
+ updateProduct$(productId: string, patch: Omit<ScINewOrderItemBase, 'productId'>, offerId: number): Observable<ScOrderDraft>;
109
+ /**
110
+ * Удаляет продукт из коммерческого предложения/черновика.
111
+ *
112
+ * @param item Удаляемая позиция.
113
+ * @param offerId Идентификатор коммерческого предложения/черновика.
114
+ */
115
+ deleteProduct$(item: ScOrderItem, offerId: number): Observable<ScOrderDraft>;
116
+ static ɵfac: i0.ɵɵFactoryDeclaration<ScOrderDraftsService, never>;
117
+ static ɵprov: i0.ɵɵInjectableDeclaration<ScOrderDraftsService>;
118
+ }
@@ -1,13 +1,18 @@
1
1
  import { HttpParams } from '@angular/common/http';
2
2
  import { Observable } from 'rxjs';
3
- import { ScCart } from '../../cart';
4
3
  import { ScIPaginate } from '../../pagination';
5
- import { ScDeliveryCost, ScINewOrder, ScINewOrderFromDraft, ScOrder, ScOrderShort } from '../dto';
4
+ import { ScDeliveryCost } from '../classes/sc-delivery-cost';
5
+ import { ScOrder } from '../classes/sc-order';
6
+ import { ScOrderItem } from '../classes/sc-order-item';
7
+ import { ScOrderShort } from '../classes/sc-order-short';
8
+ import { ScINewOrder } from '../internal';
9
+ import { ScIOrderLoader } from '../internal/sc-i-order-loader';
10
+ import { ScOrderLoading } from '../tokens/sc-order-loader.token';
6
11
  import * as i0 from "@angular/core";
7
12
  /**
8
- * Сервис для работы с заказами.
13
+ * Данные о сервисе заказов.
9
14
  */
10
- export declare class ScOrdersService {
15
+ export declare class ScOrdersService implements ScIOrderLoader<ScOrderItem, ScOrder> {
11
16
  /**
12
17
  * HTTP-клиент.
13
18
  */
@@ -39,7 +44,7 @@ export declare class ScOrdersService {
39
44
  /**
40
45
  * Коллекция пар ключ-значение для заказов пользователя.
41
46
  */
42
- private readonly idOrderMap;
47
+ private readonly orderMap;
43
48
  /**
44
49
  * Формат дат.
45
50
  */
@@ -79,32 +84,26 @@ export declare class ScOrdersService {
79
84
  * @param orderId Идентификатор заказа.
80
85
  * @param cacheable Признак возможности получения заказа из кэшированных данных.
81
86
  */
82
- getOrder$(orderId: number, cacheable?: boolean): Observable<ScOrder>;
87
+ get$(orderId: number, cacheable?: boolean): Observable<ScOrder | ScOrderLoading>;
88
+ /**
89
+ * Возвращает список элементов заказа.
90
+ *
91
+ * @param id Идентификатор заказа.
92
+ * @param cacheable Признак возможности получения списка элементов заказа из кэшированных данных.
93
+ */
94
+ getItems$(id: number, cacheable?: boolean): Observable<ScOrderItem[] | ScOrderLoading>;
83
95
  /**
84
96
  * Копирует товары заказа в корзину текущего пользователя.
85
97
  *
86
98
  * @param orderId Идентификатор заказа.
87
99
  */
88
- clone$(orderId: number): Observable<ScCart>;
100
+ clone$(orderId: number): Observable<undefined>;
89
101
  /**
90
102
  * Отменяет заказ.
91
103
  *
92
104
  * @param orderId Идентификатор заказа.
93
105
  */
94
106
  cancel$(orderId: number): Observable<undefined>;
95
- /**
96
- * Создаёт запрос нового заказа из заказа черновика.
97
- *
98
- * @param orderId Идентификатор заказа черновика.
99
- * @param newOrder Данные нового заказа.
100
- */
101
- createOrderByDraft$(orderId: number, newOrder: ScINewOrderFromDraft): Observable<ScOrderShort[]>;
102
- /**
103
- * Создаёт запрос на удаление заказа черновика.
104
- *
105
- * @param orderId Идентификатор заказа черновика.
106
- */
107
- deleteDraftOrder$(orderId: number): Observable<undefined>;
108
107
  /**
109
108
  * Возвращает информацию о стоимости доставки.
110
109
  *
@@ -0,0 +1 @@
1
+ export * from './sc-order-loader.token';
@@ -0,0 +1,26 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { ScIOrderLoader } from '../internal/sc-i-order-loader';
3
+ /**
4
+ * Плейсхолдер загрузки данных заказа (корзины / черновика).
5
+ */
6
+ export declare const loadingPlaceholder: {};
7
+ /**
8
+ * Тип плейсхолдера загрузки данных заказа (корзины / черновика).
9
+ */
10
+ export type ScOrderLoading = typeof loadingPlaceholder;
11
+ /**
12
+ * Проверяет, что объект заказа (корзины / черновика) загружен, а не является плейсхолдером загрузки.
13
+ *
14
+ * @param value Значение (загруженные данные или плейсхолдер загрузки).
15
+ */
16
+ export declare function scOrderIsLoaded<T>(value?: T | ScOrderLoading | null): value is T;
17
+ /**
18
+ * Токен инъекции сервиса списка товаров заказа.
19
+ * Предоставляется в корне компонента корзины, заказа или черновика — в зависимости от контекста
20
+ * внедряется соответствующая реализация (корзина, заказ, черновик = заказ).
21
+ */
22
+ export declare const SC_ORDER_LOADER: InjectionToken<ScIOrderLoader<import("@snabcentr/client-core").ScOrderItem, unknown>>;
23
+ /**
24
+ * Плейсхолдер загрузки данных заказа (корзины / черновика).
25
+ */
26
+ export declare const SC_ORDER_LOADING: InjectionToken<{}>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snabcentr/client-core",
3
- "version": "2.65.2",
3
+ "version": "2.66.0",
4
4
  "author": "Snabcentr Ltd.",
5
5
  "repository": "https://gitlab.snabcentr.met/web/angular/snabcentr-client-core-lib",
6
6
  "license": "Commercial",
@@ -2,3 +2,5 @@ export * from './sc-i-paginate';
2
2
  export * from './sc-i-pagination-links';
3
3
  export * from './sc-i-pagination-meta';
4
4
  export * from './sc-i-pagination-params';
5
+ export * from './sc-i-range-filter';
6
+ export * from './sc-i-sort-order';
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Интерфейс для фильтрации по диапазону значений.
3
+ *
4
+ * @template T Тип значений диапазона (string, number и т.д.).
5
+ */
6
+ export interface ScIRangeFilter<T = string | number> {
7
+ /**
8
+ * Начальное значение диапазона (больше или равно).
9
+ */
10
+ from?: T;
11
+ /**
12
+ * Конечное значение диапазона (меньше или равно).
13
+ */
14
+ to?: T;
15
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Интерфейс параметров сортировки.
3
+ *
4
+ * @template TField Тип поля для сортировки.
5
+ */
6
+ export interface ScISortOrder<TField = string> {
7
+ /**
8
+ * Поле для сортировки.
9
+ */
10
+ field: TField;
11
+ /**
12
+ * Направление сортировки.
13
+ */
14
+ direction?: 'asc' | 'desc';
15
+ }
@@ -1,4 +1,4 @@
1
- import { ScIPaginationParams } from '../../pagination';
1
+ import { ScIPaginationParams, ScIRangeFilter, ScISortOrder } from '../../pagination';
2
2
  /**
3
3
  * Модель данных параметров запроса с пагинацией для рекламаций.
4
4
  */
@@ -6,16 +6,7 @@ export interface ScIReclamationPaginationParams extends ScIPaginationParams {
6
6
  /**
7
7
  * Параметры сортировки.
8
8
  */
9
- order?: {
10
- /**
11
- * Направление сортировки.
12
- */
13
- direction: string;
14
- /**
15
- * Поле сортировки.
16
- */
17
- field: string;
18
- };
9
+ order?: ScISortOrder;
19
10
  /**
20
11
  * Параметры фильтрации.
21
12
  */
@@ -23,16 +14,7 @@ export interface ScIReclamationPaginationParams extends ScIPaginationParams {
23
14
  /**
24
15
  * Сортировка по дате создания.
25
16
  */
26
- created?: {
27
- /**
28
- * От.
29
- */
30
- from?: string;
31
- /**
32
- * До.
33
- */
34
- to?: string;
35
- };
17
+ created?: ScIRangeFilter<string>;
36
18
  /**
37
19
  * Статус рекламации.
38
20
  */
@@ -3,10 +3,6 @@
3
3
  * Ключами являются символьные обозначения (slug) статусов заказа, из запроса {@link ScReferencesService.statuses}
4
4
  */
5
5
  export declare enum ScOrderStateStatus {
6
- /**
7
- * Черновик.
8
- */
9
- draft = 0,
10
6
  /**
11
7
  * Принято в обработку.
12
8
  */
@@ -2,7 +2,7 @@ import { CollectionPage, Product, WithContext } from 'schema-dts';
2
2
  import { ScICategory } from '../../catalog/interfaces/sc-i-category';
3
3
  import { ScIProduct } from '../../catalog/interfaces/sc-i-product';
4
4
  import { ScIVirtualCategory } from '../../catalog/interfaces/sc-i-virtual-category';
5
- import { ScISchemaOrgBreadcrumbList } from '../interfaces/sc-i-schema-org-breadcrumb-list';
5
+ import { ScIBreadcrumbItem } from '../interfaces';
6
6
  import * as i0 from "@angular/core";
7
7
  /**
8
8
  * Механизмы генерации схем данных Schema.org.
@@ -40,7 +40,7 @@ export declare class SchemaOrgFactory {
40
40
  * @param productPath Url путь к товару. В пути должен присутствовать шаблон ':id', обозначающий идентификатор товара для подстановки.
41
41
  * @param breadcrumbs Данные о хлебных крошках для категории.
42
42
  */
43
- generateForCategoryItem(category: ScICategory | ScIVirtualCategory, products: ScIProduct[], categoryPath: string, productPath: string, breadcrumbs: ScISchemaOrgBreadcrumbList): WithContext<CollectionPage>;
43
+ generateForCategoryItem(category: ScICategory | ScIVirtualCategory, products: ScIProduct[], categoryPath: string, productPath: string, breadcrumbs: ScIBreadcrumbItem[]): WithContext<CollectionPage>;
44
44
  /**
45
45
  * Нормализует дату окончания цены в формат Schema.org (YYYY-MM-DD).
46
46
  *
@@ -83,6 +83,13 @@ export declare class SchemaOrgFactory {
83
83
  * @param productPath Url путь к товару. В пути должен присутствовать шаблон ':id', обозначающий идентификатор товара для подстановки.
84
84
  */
85
85
  private createCategoryMainEntity;
86
+ /**
87
+ * Преобразует массив LinkData в BreadcrumbList для каталога.
88
+ *
89
+ * @param breadcrumbs Массив хлебных крошек.
90
+ * @param categoryPath Url путь к категориям товаров. В пути должен присутствовать шаблон ':id', обозначающий идентификатор категории для подстановки.
91
+ */
92
+ private createCatalogBreadcrumbsList;
86
93
  static ɵfac: i0.ɵɵFactoryDeclaration<SchemaOrgFactory, never>;
87
94
  static ɵprov: i0.ɵɵInjectableDeclaration<SchemaOrgFactory>;
88
95
  }
@@ -1,4 +1,4 @@
1
- export * from './sc-i-schema-org-breadcrumb-list';
1
+ export * from './sc-i-breadcrumb-item';
2
2
  export * from './sc-i-default-page-meta';
3
3
  export * from './sc-i-seo';
4
4
  export * from './sc-i-seo-resource';