Обновлены модели и компоненты для управления поставками и расходниками. Добавлены новые поля в модели SupplyOrder и соответствующие резолверы для поддержки логистики. Реализованы компоненты уведомлений для отображения статуса логистических заявок и поставок. Оптимизирован интерфейс для улучшения пользовательского опыта, добавлены логи для диагностики запросов. Обновлены GraphQL схемы и мутации для поддержки новых функциональных возможностей.
This commit is contained in:
@ -43,6 +43,9 @@ export const typeDefs = gql`
|
||||
# Расходники фулфилмента (материалы для работы фулфилмента)
|
||||
myFulfillmentSupplies: [Supply!]!
|
||||
|
||||
# Расходники селлеров на складе фулфилмента (только для фулфилмента)
|
||||
sellerSuppliesOnWarehouse: [Supply!]!
|
||||
|
||||
# Заказы поставок расходников
|
||||
supplyOrders: [SupplyOrder!]!
|
||||
|
||||
@ -52,6 +55,9 @@ export const typeDefs = gql`
|
||||
# Логистика организации
|
||||
myLogistics: [Logistics!]!
|
||||
|
||||
# Логистические партнеры (организации-логисты)
|
||||
logisticsPartners: [Organization!]!
|
||||
|
||||
# Поставки Wildberries
|
||||
myWildberriesSupplies: [WildberriesSupply!]!
|
||||
|
||||
@ -206,16 +212,23 @@ export const typeDefs = gql`
|
||||
id: ID!
|
||||
status: SupplyOrderStatus!
|
||||
): SupplyOrderResponse!
|
||||
|
||||
|
||||
# Назначение логистики фулфилментом
|
||||
assignLogisticsToSupply(
|
||||
supplyOrderId: ID!
|
||||
logisticsPartnerId: ID!
|
||||
responsibleId: ID
|
||||
): SupplyOrderResponse!
|
||||
|
||||
# Действия поставщика
|
||||
supplierApproveOrder(id: ID!): SupplyOrderResponse!
|
||||
supplierRejectOrder(id: ID!, reason: String): SupplyOrderResponse!
|
||||
supplierShipOrder(id: ID!): SupplyOrderResponse!
|
||||
|
||||
|
||||
# Действия логиста
|
||||
logisticsConfirmOrder(id: ID!): SupplyOrderResponse!
|
||||
logisticsRejectOrder(id: ID!, reason: String): SupplyOrderResponse!
|
||||
|
||||
|
||||
# Действия фулфилмента
|
||||
fulfillmentReceiveOrder(id: ID!): SupplyOrderResponse!
|
||||
|
||||
@ -228,12 +241,19 @@ export const typeDefs = gql`
|
||||
createProduct(input: ProductInput!): ProductResponse!
|
||||
updateProduct(id: ID!, input: ProductInput!): ProductResponse!
|
||||
deleteProduct(id: ID!): Boolean!
|
||||
|
||||
|
||||
# Валидация и управление остатками товаров
|
||||
checkArticleUniqueness(article: String!, excludeId: ID): ArticleUniquenessResponse!
|
||||
checkArticleUniqueness(
|
||||
article: String!
|
||||
excludeId: ID
|
||||
): ArticleUniquenessResponse!
|
||||
reserveProductStock(productId: ID!, quantity: Int!): ProductStockResponse!
|
||||
releaseProductReserve(productId: ID!, quantity: Int!): ProductStockResponse!
|
||||
updateProductInTransit(productId: ID!, quantity: Int!, operation: String!): ProductStockResponse!
|
||||
updateProductInTransit(
|
||||
productId: ID!
|
||||
quantity: Int!
|
||||
operation: String!
|
||||
): ProductStockResponse!
|
||||
|
||||
# Работа с категориями
|
||||
createCategory(input: CategoryInput!): CategoryResponse!
|
||||
@ -535,6 +555,11 @@ export const typeDefs = gql`
|
||||
}
|
||||
|
||||
# Типы для расходников
|
||||
enum SupplyType {
|
||||
FULFILLMENT_CONSUMABLES # Расходники фулфилмента (купленные фулфилментом для себя)
|
||||
SELLER_CONSUMABLES # Расходники селлеров (принятые от селлеров для хранения)
|
||||
}
|
||||
|
||||
type Supply {
|
||||
id: ID!
|
||||
name: String!
|
||||
@ -550,6 +575,9 @@ export const typeDefs = gql`
|
||||
currentStock: Int
|
||||
usedStock: Int
|
||||
imageUrl: String
|
||||
type: SupplyType!
|
||||
sellerOwner: Organization # Селлер-владелец (для расходников селлеров)
|
||||
shopLocation: String # Местоположение в магазине фулфилмента
|
||||
createdAt: DateTime!
|
||||
updatedAt: DateTime!
|
||||
organization: Organization!
|
||||
@ -594,8 +622,8 @@ export const typeDefs = gql`
|
||||
totalItems: Int!
|
||||
fulfillmentCenterId: ID
|
||||
fulfillmentCenter: Organization
|
||||
logisticsPartnerId: ID!
|
||||
logisticsPartner: Organization!
|
||||
logisticsPartnerId: ID
|
||||
logisticsPartner: Organization
|
||||
items: [SupplyOrderItem!]!
|
||||
createdAt: DateTime!
|
||||
updatedAt: DateTime!
|
||||
@ -612,21 +640,21 @@ export const typeDefs = gql`
|
||||
}
|
||||
|
||||
enum SupplyOrderStatus {
|
||||
PENDING # Ожидает одобрения поставщика
|
||||
CONFIRMED # Устаревший статус (для обратной совместимости)
|
||||
IN_TRANSIT # Устаревший статус (для обратной совместимости)
|
||||
SUPPLIER_APPROVED # Поставщик одобрил, ожидает подтверждения логистики
|
||||
LOGISTICS_CONFIRMED # Логистика подтвердила, ожидает отправки
|
||||
SHIPPED # Отправлено поставщиком, в пути
|
||||
DELIVERED # Доставлено и принято фулфилментом
|
||||
CANCELLED # Отменено (любой участник может отменить)
|
||||
PENDING # Ожидает одобрения поставщика
|
||||
CONFIRMED # Устаревший статус (для обратной совместимости)
|
||||
IN_TRANSIT # Устаревший статус (для обратной совместимости)
|
||||
SUPPLIER_APPROVED # Поставщик одобрил, ожидает подтверждения логистики
|
||||
LOGISTICS_CONFIRMED # Логистика подтвердила, ожидает отправки
|
||||
SHIPPED # Отправлено поставщиком, в пути
|
||||
DELIVERED # Доставлено и принято фулфилментом
|
||||
CANCELLED # Отменено (любой участник может отменить)
|
||||
}
|
||||
|
||||
input SupplyOrderInput {
|
||||
partnerId: ID!
|
||||
deliveryDate: DateTime!
|
||||
fulfillmentCenterId: ID # ID фулфилмент-центра для доставки
|
||||
logisticsPartnerId: ID! # ID логистической компании (обязательно)
|
||||
logisticsPartnerId: ID # ID логистической компании (опционально - может выбрать селлер или фулфилмент)
|
||||
items: [SupplyOrderItemInput!]!
|
||||
notes: String # Дополнительные заметки к заказу
|
||||
consumableType: String # Классификация расходников: FULFILLMENT_CONSUMABLES, SELLER_CONSUMABLES
|
||||
@ -642,6 +670,7 @@ export const typeDefs = gql`
|
||||
ourSupplyOrders: Int! # Расходники фулфилмента
|
||||
sellerSupplyOrders: Int! # Расходники селлеров
|
||||
incomingSupplierOrders: Int! # 🔔 Входящие заказы для поставщиков
|
||||
logisticsOrders: Int! # 🚚 Логистические заявки для логистики
|
||||
incomingRequests: Int!
|
||||
total: Int!
|
||||
}
|
||||
@ -819,6 +848,8 @@ export const typeDefs = gql`
|
||||
firstName: String!
|
||||
lastName: String!
|
||||
middleName: String
|
||||
fullName: String
|
||||
name: String
|
||||
birthDate: DateTime
|
||||
avatar: String
|
||||
passportPhoto: String
|
||||
|
Reference in New Issue
Block a user