feat(marketplace): обогащение заказов реквизитами товара и ПВЗ
Заказ ссылается на предложение и ПВЗ по id и не нёс отображаемых реквизитов — карточки столов показывали сырой offer_id и служебный braname. Резолверы listMyOrders/listSupplierOrders/getOrder теперь обогащают DTO заказа: product_name и unit_of_measure из предложения (батч offerRepo.findByIds без N+1), delivery_point_address из детализации ПВЗ (kuRepo.findByCoopname). Поля nullable, best-effort: нет предложения/ПВЗ — остаются пустыми, клиент показывает запасной вид. Схема и zeus-клиент перегенерированы, orderSelector дополнен; offer-репо получил findByIds (+ моки в unit-тестах). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -8374,6 +8374,11 @@ type MarketplaceOrder {
|
||||
"""Имя пункта выдачи (ПВЗ), куда пайщик хочет получить заказ."""
|
||||
delivery_braname: String!
|
||||
|
||||
"""
|
||||
Адрес пункта выдачи — для отображения вместо служебного идентификатора ПВЗ.
|
||||
"""
|
||||
delivery_point_address: String
|
||||
|
||||
"""
|
||||
Учётная запись стороны кооператива, поставившей подпись вместе с заказчиком.
|
||||
"""
|
||||
@@ -8408,6 +8413,9 @@ type MarketplaceOrder {
|
||||
"""Цена за единицу товара на момент заказа."""
|
||||
price_per_unit: String!
|
||||
|
||||
"""Название товара из предложения — для отображения в карточке заказа."""
|
||||
product_name: String
|
||||
|
||||
"""Количество единиц товара в заказе."""
|
||||
quantity: Int!
|
||||
|
||||
@@ -8429,6 +8437,9 @@ type MarketplaceOrder {
|
||||
"""Общая сумма заказа."""
|
||||
total_cost: String!
|
||||
|
||||
"""Единица измерения товара из предложения (шт., кг, л, упак.)."""
|
||||
unit_of_measure: String
|
||||
|
||||
"""Когда запись о заказе последний раз изменялась."""
|
||||
updated_at: DateTime!
|
||||
|
||||
|
||||
+38
-1
@@ -107,12 +107,30 @@ export class MarketplaceOrderDTO {
|
||||
@Field(() => String, { description: 'Хеш предложения в блокчейне (snapshot на момент заказа).' })
|
||||
public readonly offer_hash!: string;
|
||||
|
||||
@Field(() => String, {
|
||||
nullable: true,
|
||||
description: 'Название товара из предложения — для отображения в карточке заказа.',
|
||||
})
|
||||
public readonly product_name!: string | null;
|
||||
|
||||
@Field(() => String, {
|
||||
nullable: true,
|
||||
description: 'Единица измерения товара из предложения (шт., кг, л, упак.).',
|
||||
})
|
||||
public readonly unit_of_measure!: string | null;
|
||||
|
||||
@Field(() => String, { description: 'Аккаунт поставщика.' })
|
||||
public readonly supplier_account!: string;
|
||||
|
||||
@Field(() => String, { description: 'Имя пункта выдачи (ПВЗ), куда пайщик хочет получить заказ.' })
|
||||
public readonly delivery_braname!: string;
|
||||
|
||||
@Field(() => String, {
|
||||
nullable: true,
|
||||
description: 'Адрес пункта выдачи — для отображения вместо служебного идентификатора ПВЗ.',
|
||||
})
|
||||
public readonly delivery_point_address!: string | null;
|
||||
|
||||
@Field(() => Int, { description: 'Количество единиц товара в заказе.' })
|
||||
public readonly quantity!: number;
|
||||
|
||||
@@ -312,7 +330,23 @@ export function toMarketplaceOrderCreateTxSnapshotDTO(
|
||||
return new MarketplaceOrderCreateTxSnapshotDTO(s);
|
||||
}
|
||||
|
||||
export function toMarketplaceOrderDTO(o: MarketplaceOrderDomainEntity): MarketplaceOrderDTO {
|
||||
/**
|
||||
* Отображаемые реквизиты, которыми резолвер обогащает заказ для UI: название
|
||||
* товара и единица измерения берутся из предложения, адрес — из детализации
|
||||
* ПВЗ. Не хранятся на самом заказе (заказ ссылается на предложение/ПВЗ по id),
|
||||
* поэтому подмешиваются в DTO на чтении. Best-effort: если предложение/ПВЗ не
|
||||
* найдены — поля остаются null, клиент показывает запасной вид.
|
||||
*/
|
||||
export interface MarketplaceOrderDisplayFields {
|
||||
product_name?: string | null;
|
||||
unit_of_measure?: string | null;
|
||||
delivery_point_address?: string | null;
|
||||
}
|
||||
|
||||
export function toMarketplaceOrderDTO(
|
||||
o: MarketplaceOrderDomainEntity,
|
||||
display?: MarketplaceOrderDisplayFields
|
||||
): MarketplaceOrderDTO {
|
||||
return new MarketplaceOrderDTO({
|
||||
id: o.id,
|
||||
coopname: o.coopname,
|
||||
@@ -320,8 +354,11 @@ export function toMarketplaceOrderDTO(o: MarketplaceOrderDomainEntity): Marketpl
|
||||
orderer_account: o.orderer_account,
|
||||
offer_id: o.offer_id,
|
||||
offer_hash: o.offer_hash,
|
||||
product_name: display?.product_name ?? null,
|
||||
unit_of_measure: display?.unit_of_measure ?? null,
|
||||
supplier_account: o.supplier_account,
|
||||
delivery_braname: o.delivery_braname,
|
||||
delivery_point_address: display?.delivery_point_address ?? null,
|
||||
quantity: o.quantity,
|
||||
price_per_unit: o.price_per_unit,
|
||||
total_cost: o.total_cost,
|
||||
|
||||
+2
-2
@@ -231,7 +231,7 @@ export class MarketplaceIssuanceResolver {
|
||||
coopname,
|
||||
data.delivery_braname
|
||||
);
|
||||
return orders.map(toMarketplaceOrderDTO);
|
||||
return orders.map((order) => toMarketplaceOrderDTO(order));
|
||||
}
|
||||
|
||||
@Query(() => [MarketplaceOrderDTO], {
|
||||
@@ -248,6 +248,6 @@ export class MarketplaceIssuanceResolver {
|
||||
config.coopname,
|
||||
member.username
|
||||
);
|
||||
return orders.map(toMarketplaceOrderDTO);
|
||||
return orders.map((order) => toMarketplaceOrderDTO(order));
|
||||
}
|
||||
}
|
||||
|
||||
+56
-3
@@ -19,6 +19,7 @@ import {
|
||||
MarketplaceOrderPaginationResultDTO,
|
||||
MarketplaceSupplierOrderActionResultDTO,
|
||||
toMarketplaceOrderDTO,
|
||||
type MarketplaceOrderDisplayFields,
|
||||
} from '../dto/marketplace-order.dto';
|
||||
import { toMarketplaceConsolidatedRequestDTO } from '../dto/marketplace-consolidated-request.dto';
|
||||
import {
|
||||
@@ -37,6 +38,14 @@ import {
|
||||
type MarketplaceOrderDomainRepository,
|
||||
type MarketplaceOrderListFilter,
|
||||
} from '../../domain/repositories/marketplace-order.repository';
|
||||
import {
|
||||
MARKETPLACE_OFFER_REPOSITORY,
|
||||
type MarketplaceOfferDomainRepository,
|
||||
} from '../../domain/repositories/marketplace-offer.repository';
|
||||
import {
|
||||
KU_DETAILS_DOMAIN_REPOSITORY,
|
||||
type KuDetailsDomainRepository,
|
||||
} from '../../domain/repositories/ku-details-domain.repository';
|
||||
import { canAccess } from '../access/marketplace-access-matrix';
|
||||
import type { MarketplaceRole } from '../membership/marketplace-roles.mapper';
|
||||
import type { MarketplaceOrderStatus } from '../../domain/entities/marketplace-order.types';
|
||||
@@ -78,7 +87,11 @@ export class MarketplaceOrderResolver {
|
||||
@Inject(MARKETPLACE_ORDER_SUPPLIER_ACTION_SERVICE)
|
||||
private readonly supplierActionService: MarketplaceOrderSupplierActionService,
|
||||
@Inject(MARKETPLACE_ORDER_REPOSITORY)
|
||||
private readonly orderRepo: MarketplaceOrderDomainRepository
|
||||
private readonly orderRepo: MarketplaceOrderDomainRepository,
|
||||
@Inject(MARKETPLACE_OFFER_REPOSITORY)
|
||||
private readonly offerRepo: MarketplaceOfferDomainRepository,
|
||||
@Inject(KU_DETAILS_DOMAIN_REPOSITORY)
|
||||
private readonly kuRepo: KuDetailsDomainRepository
|
||||
) {}
|
||||
|
||||
@Mutation(() => MarketplaceCreateOrderResultDTO, {
|
||||
@@ -302,7 +315,15 @@ export class MarketplaceOrderResolver {
|
||||
if (!canReadOwn && !canReadToSelf && !canReadAll) {
|
||||
throw new ForbiddenException('Нет прав на просмотр заказа.');
|
||||
}
|
||||
return toOrderDTO(order);
|
||||
const [offer, ku] = await Promise.all([
|
||||
this.offerRepo.findById(order.offer_id),
|
||||
this.kuRepo.findByCoreBraname(config.coopname, order.delivery_braname),
|
||||
]);
|
||||
return toOrderDTO(order, {
|
||||
product_name: offer?.product_name ?? null,
|
||||
unit_of_measure: offer?.unit_of_measure ?? null,
|
||||
delivery_point_address: ku?.addressFull ?? null,
|
||||
});
|
||||
}
|
||||
|
||||
private async runListQuery(
|
||||
@@ -315,11 +336,43 @@ export class MarketplaceOrderResolver {
|
||||
sortBy: options?.sortBy ?? 'updated_at',
|
||||
sortOrder: options?.sortOrder ?? 'DESC',
|
||||
});
|
||||
const displayByOrderId = await this.buildDisplayFields(result.items);
|
||||
const dto = new MarketplaceOrderPaginationResultDTO();
|
||||
dto.items = result.items.map(toOrderDTO);
|
||||
dto.items = result.items.map((o) => toOrderDTO(o, displayByOrderId.get(o.id)));
|
||||
dto.totalCount = result.totalCount;
|
||||
dto.totalPages = result.totalPages;
|
||||
dto.currentPage = result.currentPage;
|
||||
return dto;
|
||||
}
|
||||
|
||||
/**
|
||||
* Обогащение страницы заказов отображаемыми реквизитами товара и ПВЗ.
|
||||
* Offer'ы тянутся одним батчем по уникальным offer_id, детализация ПВЗ —
|
||||
* одной выборкой по кооперативу; оба маппятся в адреса/названия. Best-effort:
|
||||
* отсутствующее предложение/ПВЗ оставляет соответствующие поля пустыми.
|
||||
*/
|
||||
private async buildDisplayFields(
|
||||
orders: MarketplaceOrderDomainEntity[]
|
||||
): Promise<Map<string, MarketplaceOrderDisplayFields>> {
|
||||
const result = new Map<string, MarketplaceOrderDisplayFields>();
|
||||
if (orders.length === 0) return result;
|
||||
|
||||
const offerIds = [...new Set(orders.map((o) => o.offer_id))];
|
||||
const [offers, kuList] = await Promise.all([
|
||||
this.offerRepo.findByIds(offerIds),
|
||||
this.kuRepo.findByCoopname(config.coopname),
|
||||
]);
|
||||
const offerById = new Map(offers.map((offer) => [offer.id, offer]));
|
||||
const addressByBraname = new Map(kuList.map((ku) => [ku.coreBraname, ku.addressFull]));
|
||||
|
||||
for (const order of orders) {
|
||||
const offer = offerById.get(order.offer_id);
|
||||
result.set(order.id, {
|
||||
product_name: offer?.product_name ?? null,
|
||||
unit_of_measure: offer?.unit_of_measure ?? null,
|
||||
delivery_point_address: addressByBraname.get(order.delivery_braname) ?? null,
|
||||
});
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
+6
@@ -90,6 +90,12 @@ export interface OfferCountersDeltaResult {
|
||||
|
||||
export interface MarketplaceOfferDomainRepository {
|
||||
findById(id: string): Promise<MarketplaceOfferDomainEntity | null>;
|
||||
/**
|
||||
* Батч-выборка Offer'ов по набору id одним запросом. Используется для
|
||||
* обогащения списков заказов отображаемыми реквизитами товара
|
||||
* (название, единица измерения) без N+1.
|
||||
*/
|
||||
findByIds(ids: string[]): Promise<MarketplaceOfferDomainEntity[]>;
|
||||
list(
|
||||
filter: OfferListFilter,
|
||||
pagination: PaginationInputDomainInterface
|
||||
|
||||
+6
@@ -30,6 +30,12 @@ export class MarketplaceOfferRepositoryAdapter implements MarketplaceOfferDomain
|
||||
return row ? this.mapper.toDomain(row) : null;
|
||||
}
|
||||
|
||||
async findByIds(ids: string[]): Promise<MarketplaceOfferDomainEntity[]> {
|
||||
if (ids.length === 0) return [];
|
||||
const rows = await this.repo.find({ where: { id: In(ids) } });
|
||||
return rows.map((r) => this.mapper.toDomain(r));
|
||||
}
|
||||
|
||||
async list(
|
||||
filter: OfferListFilter,
|
||||
pagination: PaginationInputDomainInterface
|
||||
|
||||
@@ -75,6 +75,7 @@ function makeLog(overrides: Partial<MarketplaceModerationLogDomainEntity> = {}):
|
||||
function makeOfferRepo(): jest.Mocked<MarketplaceOfferDomainRepository> {
|
||||
return {
|
||||
findById: jest.fn(),
|
||||
findByIds: jest.fn(),
|
||||
list: jest.fn(),
|
||||
countByCategory: jest.fn(),
|
||||
countRecentCreatedBy: jest.fn(),
|
||||
|
||||
+1
@@ -63,6 +63,7 @@ function makeOffer(overrides: Partial<MarketplaceOfferDomainEntity> = {}): Marke
|
||||
function makeRepo(): jest.Mocked<MarketplaceOfferDomainRepository> {
|
||||
return {
|
||||
findById: jest.fn(),
|
||||
findByIds: jest.fn(),
|
||||
list: jest.fn(),
|
||||
countByCategory: jest.fn(),
|
||||
countRecentCreatedBy: jest.fn(),
|
||||
|
||||
@@ -65,6 +65,7 @@ function makeOffer(overrides: Partial<MarketplaceOfferDomainEntity> = {}): Marke
|
||||
function makeOfferRepo(): jest.Mocked<MarketplaceOfferDomainRepository> {
|
||||
return {
|
||||
findById: jest.fn(),
|
||||
findByIds: jest.fn(),
|
||||
list: jest.fn(),
|
||||
countByCategory: jest.fn(),
|
||||
countRecentCreatedBy: jest.fn(),
|
||||
|
||||
@@ -4192,6 +4192,7 @@ export const ReturnTypes: Record<string,any> = {
|
||||
cycle_id:"String",
|
||||
cycle_type:"MarketplaceOrderCycleType",
|
||||
delivery_braname:"String",
|
||||
delivery_point_address:"String",
|
||||
delivery_signer_account:"String",
|
||||
id:"String",
|
||||
issuance_fact:"MarketplaceOrderIssuanceFactSnapshot",
|
||||
@@ -4202,6 +4203,7 @@ export const ReturnTypes: Record<string,any> = {
|
||||
orderer_account:"String",
|
||||
orderer_signed_at:"DateTime",
|
||||
price_per_unit:"String",
|
||||
product_name:"String",
|
||||
quantity:"Int",
|
||||
received_at:"DateTime",
|
||||
signiss1_tx_hash:"String",
|
||||
@@ -4209,6 +4211,7 @@ export const ReturnTypes: Record<string,any> = {
|
||||
status:"MarketplaceOrderStatus",
|
||||
supplier_account:"String",
|
||||
total_cost:"String",
|
||||
unit_of_measure:"String",
|
||||
updated_at:"DateTime",
|
||||
warranty_period_secs:"Int",
|
||||
warranty_until:"DateTime"
|
||||
|
||||
@@ -7081,6 +7081,8 @@ export type ValueTypes = {
|
||||
cycle_type?:boolean | `@${string}`,
|
||||
/** Имя пункта выдачи (ПВЗ), куда пайщик хочет получить заказ. */
|
||||
delivery_braname?:boolean | `@${string}`,
|
||||
/** Адрес пункта выдачи — для отображения вместо служебного идентификатора ПВЗ. */
|
||||
delivery_point_address?:boolean | `@${string}`,
|
||||
/** Учётная запись стороны кооператива, поставившей подпись вместе с заказчиком. */
|
||||
delivery_signer_account?:boolean | `@${string}`,
|
||||
/** Идентификатор заказа. */
|
||||
@@ -7101,6 +7103,8 @@ export type ValueTypes = {
|
||||
orderer_signed_at?:boolean | `@${string}`,
|
||||
/** Цена за единицу товара на момент заказа. */
|
||||
price_per_unit?:boolean | `@${string}`,
|
||||
/** Название товара из предложения — для отображения в карточке заказа. */
|
||||
product_name?:boolean | `@${string}`,
|
||||
/** Количество единиц товара в заказе. */
|
||||
quantity?:boolean | `@${string}`,
|
||||
/** Когда пайщик получил заказ. */
|
||||
@@ -7115,6 +7119,8 @@ export type ValueTypes = {
|
||||
supplier_account?:boolean | `@${string}`,
|
||||
/** Общая сумма заказа. */
|
||||
total_cost?:boolean | `@${string}`,
|
||||
/** Единица измерения товара из предложения (шт., кг, л, упак.). */
|
||||
unit_of_measure?:boolean | `@${string}`,
|
||||
/** Когда запись о заказе последний раз изменялась. */
|
||||
updated_at?:boolean | `@${string}`,
|
||||
/** Срок гарантии в секундах с момента получения. */
|
||||
@@ -17111,6 +17117,8 @@ export type ResolverInputTypes = {
|
||||
cycle_type?:boolean | `@${string}`,
|
||||
/** Имя пункта выдачи (ПВЗ), куда пайщик хочет получить заказ. */
|
||||
delivery_braname?:boolean | `@${string}`,
|
||||
/** Адрес пункта выдачи — для отображения вместо служебного идентификатора ПВЗ. */
|
||||
delivery_point_address?:boolean | `@${string}`,
|
||||
/** Учётная запись стороны кооператива, поставившей подпись вместе с заказчиком. */
|
||||
delivery_signer_account?:boolean | `@${string}`,
|
||||
/** Идентификатор заказа. */
|
||||
@@ -17131,6 +17139,8 @@ export type ResolverInputTypes = {
|
||||
orderer_signed_at?:boolean | `@${string}`,
|
||||
/** Цена за единицу товара на момент заказа. */
|
||||
price_per_unit?:boolean | `@${string}`,
|
||||
/** Название товара из предложения — для отображения в карточке заказа. */
|
||||
product_name?:boolean | `@${string}`,
|
||||
/** Количество единиц товара в заказе. */
|
||||
quantity?:boolean | `@${string}`,
|
||||
/** Когда пайщик получил заказ. */
|
||||
@@ -17145,6 +17155,8 @@ export type ResolverInputTypes = {
|
||||
supplier_account?:boolean | `@${string}`,
|
||||
/** Общая сумма заказа. */
|
||||
total_cost?:boolean | `@${string}`,
|
||||
/** Единица измерения товара из предложения (шт., кг, л, упак.). */
|
||||
unit_of_measure?:boolean | `@${string}`,
|
||||
/** Когда запись о заказе последний раз изменялась. */
|
||||
updated_at?:boolean | `@${string}`,
|
||||
/** Срок гарантии в секундах с момента получения. */
|
||||
@@ -26816,6 +26828,8 @@ export type ModelTypes = {
|
||||
cycle_type: ModelTypes["MarketplaceOrderCycleType"],
|
||||
/** Имя пункта выдачи (ПВЗ), куда пайщик хочет получить заказ. */
|
||||
delivery_braname: string,
|
||||
/** Адрес пункта выдачи — для отображения вместо служебного идентификатора ПВЗ. */
|
||||
delivery_point_address?: string | undefined | null,
|
||||
/** Учётная запись стороны кооператива, поставившей подпись вместе с заказчиком. */
|
||||
delivery_signer_account?: string | undefined | null,
|
||||
/** Идентификатор заказа. */
|
||||
@@ -26836,6 +26850,8 @@ export type ModelTypes = {
|
||||
orderer_signed_at?: ModelTypes["DateTime"] | undefined | null,
|
||||
/** Цена за единицу товара на момент заказа. */
|
||||
price_per_unit: string,
|
||||
/** Название товара из предложения — для отображения в карточке заказа. */
|
||||
product_name?: string | undefined | null,
|
||||
/** Количество единиц товара в заказе. */
|
||||
quantity: number,
|
||||
/** Когда пайщик получил заказ. */
|
||||
@@ -26850,6 +26866,8 @@ export type ModelTypes = {
|
||||
supplier_account: string,
|
||||
/** Общая сумма заказа. */
|
||||
total_cost: string,
|
||||
/** Единица измерения товара из предложения (шт., кг, л, упак.). */
|
||||
unit_of_measure?: string | undefined | null,
|
||||
/** Когда запись о заказе последний раз изменялась. */
|
||||
updated_at: ModelTypes["DateTime"],
|
||||
/** Срок гарантии в секундах с момента получения. */
|
||||
@@ -37466,6 +37484,8 @@ export type GraphQLTypes = {
|
||||
cycle_type: GraphQLTypes["MarketplaceOrderCycleType"],
|
||||
/** Имя пункта выдачи (ПВЗ), куда пайщик хочет получить заказ. */
|
||||
delivery_braname: string,
|
||||
/** Адрес пункта выдачи — для отображения вместо служебного идентификатора ПВЗ. */
|
||||
delivery_point_address?: string | undefined | null,
|
||||
/** Учётная запись стороны кооператива, поставившей подпись вместе с заказчиком. */
|
||||
delivery_signer_account?: string | undefined | null,
|
||||
/** Идентификатор заказа. */
|
||||
@@ -37486,6 +37506,8 @@ export type GraphQLTypes = {
|
||||
orderer_signed_at?: GraphQLTypes["DateTime"] | undefined | null,
|
||||
/** Цена за единицу товара на момент заказа. */
|
||||
price_per_unit: string,
|
||||
/** Название товара из предложения — для отображения в карточке заказа. */
|
||||
product_name?: string | undefined | null,
|
||||
/** Количество единиц товара в заказе. */
|
||||
quantity: number,
|
||||
/** Когда пайщик получил заказ. */
|
||||
@@ -37500,6 +37522,8 @@ export type GraphQLTypes = {
|
||||
supplier_account: string,
|
||||
/** Общая сумма заказа. */
|
||||
total_cost: string,
|
||||
/** Единица измерения товара из предложения (шт., кг, л, упак.). */
|
||||
unit_of_measure?: string | undefined | null,
|
||||
/** Когда запись о заказе последний раз изменялась. */
|
||||
updated_at: GraphQLTypes["DateTime"],
|
||||
/** Срок гарантии в секундах с момента получения. */
|
||||
|
||||
@@ -36,8 +36,11 @@ const rawOrderSelector = {
|
||||
orderer_account: true,
|
||||
offer_id: true,
|
||||
offer_hash: true,
|
||||
product_name: true,
|
||||
unit_of_measure: true,
|
||||
supplier_account: true,
|
||||
delivery_braname: true,
|
||||
delivery_point_address: true,
|
||||
quantity: true,
|
||||
price_per_unit: true,
|
||||
total_cost: true,
|
||||
|
||||
@@ -4192,6 +4192,7 @@ export const ReturnTypes: Record<string,any> = {
|
||||
cycle_id:"String",
|
||||
cycle_type:"MarketplaceOrderCycleType",
|
||||
delivery_braname:"String",
|
||||
delivery_point_address:"String",
|
||||
delivery_signer_account:"String",
|
||||
id:"String",
|
||||
issuance_fact:"MarketplaceOrderIssuanceFactSnapshot",
|
||||
@@ -4202,6 +4203,7 @@ export const ReturnTypes: Record<string,any> = {
|
||||
orderer_account:"String",
|
||||
orderer_signed_at:"DateTime",
|
||||
price_per_unit:"String",
|
||||
product_name:"String",
|
||||
quantity:"Int",
|
||||
received_at:"DateTime",
|
||||
signiss1_tx_hash:"String",
|
||||
@@ -4209,6 +4211,7 @@ export const ReturnTypes: Record<string,any> = {
|
||||
status:"MarketplaceOrderStatus",
|
||||
supplier_account:"String",
|
||||
total_cost:"String",
|
||||
unit_of_measure:"String",
|
||||
updated_at:"DateTime",
|
||||
warranty_period_secs:"Int",
|
||||
warranty_until:"DateTime"
|
||||
|
||||
@@ -7081,6 +7081,8 @@ export type ValueTypes = {
|
||||
cycle_type?:boolean | `@${string}`,
|
||||
/** Имя пункта выдачи (ПВЗ), куда пайщик хочет получить заказ. */
|
||||
delivery_braname?:boolean | `@${string}`,
|
||||
/** Адрес пункта выдачи — для отображения вместо служебного идентификатора ПВЗ. */
|
||||
delivery_point_address?:boolean | `@${string}`,
|
||||
/** Учётная запись стороны кооператива, поставившей подпись вместе с заказчиком. */
|
||||
delivery_signer_account?:boolean | `@${string}`,
|
||||
/** Идентификатор заказа. */
|
||||
@@ -7101,6 +7103,8 @@ export type ValueTypes = {
|
||||
orderer_signed_at?:boolean | `@${string}`,
|
||||
/** Цена за единицу товара на момент заказа. */
|
||||
price_per_unit?:boolean | `@${string}`,
|
||||
/** Название товара из предложения — для отображения в карточке заказа. */
|
||||
product_name?:boolean | `@${string}`,
|
||||
/** Количество единиц товара в заказе. */
|
||||
quantity?:boolean | `@${string}`,
|
||||
/** Когда пайщик получил заказ. */
|
||||
@@ -7115,6 +7119,8 @@ export type ValueTypes = {
|
||||
supplier_account?:boolean | `@${string}`,
|
||||
/** Общая сумма заказа. */
|
||||
total_cost?:boolean | `@${string}`,
|
||||
/** Единица измерения товара из предложения (шт., кг, л, упак.). */
|
||||
unit_of_measure?:boolean | `@${string}`,
|
||||
/** Когда запись о заказе последний раз изменялась. */
|
||||
updated_at?:boolean | `@${string}`,
|
||||
/** Срок гарантии в секундах с момента получения. */
|
||||
@@ -17111,6 +17117,8 @@ export type ResolverInputTypes = {
|
||||
cycle_type?:boolean | `@${string}`,
|
||||
/** Имя пункта выдачи (ПВЗ), куда пайщик хочет получить заказ. */
|
||||
delivery_braname?:boolean | `@${string}`,
|
||||
/** Адрес пункта выдачи — для отображения вместо служебного идентификатора ПВЗ. */
|
||||
delivery_point_address?:boolean | `@${string}`,
|
||||
/** Учётная запись стороны кооператива, поставившей подпись вместе с заказчиком. */
|
||||
delivery_signer_account?:boolean | `@${string}`,
|
||||
/** Идентификатор заказа. */
|
||||
@@ -17131,6 +17139,8 @@ export type ResolverInputTypes = {
|
||||
orderer_signed_at?:boolean | `@${string}`,
|
||||
/** Цена за единицу товара на момент заказа. */
|
||||
price_per_unit?:boolean | `@${string}`,
|
||||
/** Название товара из предложения — для отображения в карточке заказа. */
|
||||
product_name?:boolean | `@${string}`,
|
||||
/** Количество единиц товара в заказе. */
|
||||
quantity?:boolean | `@${string}`,
|
||||
/** Когда пайщик получил заказ. */
|
||||
@@ -17145,6 +17155,8 @@ export type ResolverInputTypes = {
|
||||
supplier_account?:boolean | `@${string}`,
|
||||
/** Общая сумма заказа. */
|
||||
total_cost?:boolean | `@${string}`,
|
||||
/** Единица измерения товара из предложения (шт., кг, л, упак.). */
|
||||
unit_of_measure?:boolean | `@${string}`,
|
||||
/** Когда запись о заказе последний раз изменялась. */
|
||||
updated_at?:boolean | `@${string}`,
|
||||
/** Срок гарантии в секундах с момента получения. */
|
||||
@@ -26816,6 +26828,8 @@ export type ModelTypes = {
|
||||
cycle_type: ModelTypes["MarketplaceOrderCycleType"],
|
||||
/** Имя пункта выдачи (ПВЗ), куда пайщик хочет получить заказ. */
|
||||
delivery_braname: string,
|
||||
/** Адрес пункта выдачи — для отображения вместо служебного идентификатора ПВЗ. */
|
||||
delivery_point_address?: string | undefined | null,
|
||||
/** Учётная запись стороны кооператива, поставившей подпись вместе с заказчиком. */
|
||||
delivery_signer_account?: string | undefined | null,
|
||||
/** Идентификатор заказа. */
|
||||
@@ -26836,6 +26850,8 @@ export type ModelTypes = {
|
||||
orderer_signed_at?: ModelTypes["DateTime"] | undefined | null,
|
||||
/** Цена за единицу товара на момент заказа. */
|
||||
price_per_unit: string,
|
||||
/** Название товара из предложения — для отображения в карточке заказа. */
|
||||
product_name?: string | undefined | null,
|
||||
/** Количество единиц товара в заказе. */
|
||||
quantity: number,
|
||||
/** Когда пайщик получил заказ. */
|
||||
@@ -26850,6 +26866,8 @@ export type ModelTypes = {
|
||||
supplier_account: string,
|
||||
/** Общая сумма заказа. */
|
||||
total_cost: string,
|
||||
/** Единица измерения товара из предложения (шт., кг, л, упак.). */
|
||||
unit_of_measure?: string | undefined | null,
|
||||
/** Когда запись о заказе последний раз изменялась. */
|
||||
updated_at: ModelTypes["DateTime"],
|
||||
/** Срок гарантии в секундах с момента получения. */
|
||||
@@ -37466,6 +37484,8 @@ export type GraphQLTypes = {
|
||||
cycle_type: GraphQLTypes["MarketplaceOrderCycleType"],
|
||||
/** Имя пункта выдачи (ПВЗ), куда пайщик хочет получить заказ. */
|
||||
delivery_braname: string,
|
||||
/** Адрес пункта выдачи — для отображения вместо служебного идентификатора ПВЗ. */
|
||||
delivery_point_address?: string | undefined | null,
|
||||
/** Учётная запись стороны кооператива, поставившей подпись вместе с заказчиком. */
|
||||
delivery_signer_account?: string | undefined | null,
|
||||
/** Идентификатор заказа. */
|
||||
@@ -37486,6 +37506,8 @@ export type GraphQLTypes = {
|
||||
orderer_signed_at?: GraphQLTypes["DateTime"] | undefined | null,
|
||||
/** Цена за единицу товара на момент заказа. */
|
||||
price_per_unit: string,
|
||||
/** Название товара из предложения — для отображения в карточке заказа. */
|
||||
product_name?: string | undefined | null,
|
||||
/** Количество единиц товара в заказе. */
|
||||
quantity: number,
|
||||
/** Когда пайщик получил заказ. */
|
||||
@@ -37500,6 +37522,8 @@ export type GraphQLTypes = {
|
||||
supplier_account: string,
|
||||
/** Общая сумма заказа. */
|
||||
total_cost: string,
|
||||
/** Единица измерения товара из предложения (шт., кг, л, упак.). */
|
||||
unit_of_measure?: string | undefined | null,
|
||||
/** Когда запись о заказе последний раз изменялась. */
|
||||
updated_at: GraphQLTypes["DateTime"],
|
||||
/** Срок гарантии в секундах с момента получения. */
|
||||
|
||||
Reference in New Issue
Block a user