Files
sfera-new/src/graphql/mutations.ts
Veronika Smirnova 89257c75b5 fix: завершение модуляризации системы и финальная организация проекта
## Структурные изменения:

### 📁 Организация архивных файлов:
- Перенос всех устаревших правил в legacy-rules/
- Создание структуры docs-and-reports/ для отчетов
- Архивация backup файлов в legacy-rules/backups/

### 🔧 Критические компоненты:
- src/components/supplies/multilevel-supplies-table.tsx - многоуровневая таблица поставок
- src/components/supplies/components/recipe-display.tsx - отображение рецептур
- src/components/fulfillment-supplies/fulfillment-goods-orders-tab.tsx - вкладка товарных заказов

### 🎯 GraphQL обновления:
- Обновление mutations.ts, queries.ts, resolvers.ts, typedefs.ts
- Синхронизация с Prisma schema.prisma
- Backup файлы для истории изменений

### 🛠️ Утилитарные скрипты:
- 12 новых скриптов в scripts/ для анализа данных
- Скрипты проверки фулфилмент-пользователей
- Утилиты очистки и фиксации данных поставок

### 📊 Тестирование:
- test-fulfillment-filtering.js - тестирование фильтрации фулфилмента
- test-full-workflow.js - полный workflow тестирование

### 📝 Документация:
- logistics-statistics-warehouse-rules.md - объединенные правила модулей
- Обновление журналов модуляризации и разработки

###  Исправления ESLint:
- Исправлены критические ошибки в sidebar.tsx
- Исправлены ошибки типизации в multilevel-supplies-table.tsx
- Исправлены неиспользуемые переменные в goods-supplies-table.tsx
- Заменены типы any на строгую типизацию
- Исправлены console.log на console.warn

## Результат:
- Завершена полная модуляризация системы
- Организована архитектура legacy файлов
- Добавлены критически важные компоненты таблиц
- Создана полная инфраструктура тестирования
- Исправлены все критические ESLint ошибки
- Сохранены 103 незакоммиченных изменения

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-22 10:31:43 +03:00

1666 lines
31 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { gql } from 'graphql-tag'
export const SEND_SMS_CODE = gql`
mutation SendSmsCode($phone: String!) {
sendSmsCode(phone: $phone) {
success
message
}
}
`
export const VERIFY_SMS_CODE = gql`
mutation VerifySmsCode($phone: String!, $code: String!) {
verifySmsCode(phone: $phone, code: $code) {
success
message
token
user {
id
phone
organization {
id
inn
kpp
name
fullName
address
addressFull
ogrn
ogrnDate
type
status
actualityDate
registrationDate
liquidationDate
managementName
managementPost
opfCode
opfFull
opfShort
okato
oktmo
okpo
okved
employeeCount
revenue
taxSystem
phones
emails
apiKeys {
id
marketplace
isActive
}
}
}
}
}
`
export const VERIFY_INN = gql`
mutation VerifyInn($inn: String!) {
verifyInn(inn: $inn) {
success
message
organization {
name
fullName
address
isActive
}
}
}
`
export const REGISTER_FULFILLMENT_ORGANIZATION = gql`
mutation RegisterFulfillmentOrganization($input: FulfillmentRegistrationInput!) {
registerFulfillmentOrganization(input: $input) {
success
message
user {
id
phone
organization {
id
inn
kpp
name
fullName
address
addressFull
ogrn
ogrnDate
type
status
actualityDate
registrationDate
liquidationDate
managementName
managementPost
opfCode
opfFull
opfShort
okato
oktmo
okpo
okved
employeeCount
revenue
taxSystem
phones
emails
apiKeys {
id
marketplace
isActive
}
referralPoints
}
}
}
}
`
export const REGISTER_SELLER_ORGANIZATION = gql`
mutation RegisterSellerOrganization($input: SellerRegistrationInput!) {
registerSellerOrganization(input: $input) {
success
message
user {
id
phone
organization {
id
inn
kpp
name
fullName
address
addressFull
ogrn
ogrnDate
type
status
actualityDate
registrationDate
liquidationDate
managementName
managementPost
opfCode
opfFull
opfShort
okato
oktmo
okpo
okved
employeeCount
revenue
taxSystem
phones
emails
apiKeys {
id
marketplace
isActive
}
referralPoints
}
}
}
}
`
export const ADD_MARKETPLACE_API_KEY = gql`
mutation AddMarketplaceApiKey($input: MarketplaceApiKeyInput!) {
addMarketplaceApiKey(input: $input) {
success
message
apiKey {
id
marketplace
apiKey
isActive
validationData
}
}
}
`
export const REMOVE_MARKETPLACE_API_KEY = gql`
mutation RemoveMarketplaceApiKey($marketplace: MarketplaceType!) {
removeMarketplaceApiKey(marketplace: $marketplace)
}
`
export const UPDATE_USER_PROFILE = gql`
mutation UpdateUserProfile($input: UpdateUserProfileInput!) {
updateUserProfile(input: $input) {
success
message
user {
id
phone
avatar
managerName
organization {
id
inn
kpp
name
fullName
address
addressFull
ogrn
ogrnDate
type
market
status
actualityDate
registrationDate
liquidationDate
managementName
managementPost
opfCode
opfFull
opfShort
okato
oktmo
okpo
okved
employeeCount
revenue
taxSystem
phones
emails
apiKeys {
id
marketplace
isActive
}
}
}
}
}
`
export const UPDATE_ORGANIZATION_BY_INN = gql`
mutation UpdateOrganizationByInn($inn: String!) {
updateOrganizationByInn(inn: $inn) {
success
message
user {
id
phone
organization {
id
inn
kpp
name
fullName
address
addressFull
ogrn
ogrnDate
type
status
actualityDate
registrationDate
liquidationDate
managementName
managementPost
opfCode
opfFull
opfShort
okato
oktmo
okpo
okved
employeeCount
revenue
taxSystem
phones
emails
apiKeys {
id
marketplace
isActive
}
}
}
}
}
`
// Мутации для контрагентов
export const SEND_COUNTERPARTY_REQUEST = gql`
mutation SendCounterpartyRequest($organizationId: ID!, $message: String) {
sendCounterpartyRequest(organizationId: $organizationId, message: $message) {
success
message
request {
id
status
message
createdAt
sender {
id
inn
name
fullName
type
}
receiver {
id
inn
name
fullName
type
}
}
}
}
`
export const RESPOND_TO_COUNTERPARTY_REQUEST = gql`
mutation RespondToCounterpartyRequest($requestId: ID!, $accept: Boolean!) {
respondToCounterpartyRequest(requestId: $requestId, accept: $accept) {
success
message
request {
id
status
message
createdAt
sender {
id
inn
name
fullName
type
}
receiver {
id
inn
name
fullName
type
}
}
}
}
`
export const CANCEL_COUNTERPARTY_REQUEST = gql`
mutation CancelCounterpartyRequest($requestId: ID!) {
cancelCounterpartyRequest(requestId: $requestId)
}
`
export const REMOVE_COUNTERPARTY = gql`
mutation RemoveCounterparty($organizationId: ID!) {
removeCounterparty(organizationId: $organizationId)
}
`
// Автоматическое создание записи в таблице склада при новом партнерстве
export const AUTO_CREATE_WAREHOUSE_ENTRY = gql`
mutation AutoCreateWarehouseEntry($partnerId: ID!) {
autoCreateWarehouseEntry(partnerId: $partnerId) {
success
message
warehouseEntry {
id
storeName
storeOwner
storeImage
storeQuantity
partnershipDate
}
}
}
`
// Мутации для сообщений
export const SEND_MESSAGE = gql`
mutation SendMessage($receiverOrganizationId: ID!, $content: String!, $type: MessageType = TEXT) {
sendMessage(receiverOrganizationId: $receiverOrganizationId, content: $content, type: $type) {
success
message
messageData {
id
content
type
voiceUrl
voiceDuration
fileUrl
fileName
fileSize
fileType
senderId
senderOrganization {
id
name
fullName
type
users {
id
avatar
managerName
}
}
receiverOrganization {
id
name
fullName
type
users {
id
avatar
managerName
}
}
isRead
createdAt
updatedAt
}
}
}
`
export const SEND_VOICE_MESSAGE = gql`
mutation SendVoiceMessage($receiverOrganizationId: ID!, $voiceUrl: String!, $voiceDuration: Int!) {
sendVoiceMessage(
receiverOrganizationId: $receiverOrganizationId
voiceUrl: $voiceUrl
voiceDuration: $voiceDuration
) {
success
message
messageData {
id
content
type
voiceUrl
voiceDuration
fileUrl
fileName
fileSize
fileType
senderId
senderOrganization {
id
name
fullName
type
users {
id
avatar
managerName
}
}
receiverOrganization {
id
name
fullName
type
users {
id
avatar
managerName
}
}
isRead
createdAt
updatedAt
}
}
}
`
export const SEND_IMAGE_MESSAGE = gql`
mutation SendImageMessage(
$receiverOrganizationId: ID!
$fileUrl: String!
$fileName: String!
$fileSize: Int!
$fileType: String!
) {
sendImageMessage(
receiverOrganizationId: $receiverOrganizationId
fileUrl: $fileUrl
fileName: $fileName
fileSize: $fileSize
fileType: $fileType
) {
success
message
messageData {
id
content
type
voiceUrl
voiceDuration
fileUrl
fileName
fileSize
fileType
senderId
senderOrganization {
id
name
fullName
type
users {
id
avatar
managerName
}
}
receiverOrganization {
id
name
fullName
type
users {
id
avatar
managerName
}
}
isRead
createdAt
updatedAt
}
}
}
`
export const SEND_FILE_MESSAGE = gql`
mutation SendFileMessage(
$receiverOrganizationId: ID!
$fileUrl: String!
$fileName: String!
$fileSize: Int!
$fileType: String!
) {
sendFileMessage(
receiverOrganizationId: $receiverOrganizationId
fileUrl: $fileUrl
fileName: $fileName
fileSize: $fileSize
fileType: $fileType
) {
success
message
messageData {
id
content
type
voiceUrl
voiceDuration
fileUrl
fileName
fileSize
fileType
senderId
senderOrganization {
id
name
fullName
type
users {
id
avatar
managerName
}
}
receiverOrganization {
id
name
fullName
type
users {
id
avatar
managerName
}
}
isRead
createdAt
updatedAt
}
}
}
`
export const MARK_MESSAGES_AS_READ = gql`
mutation MarkMessagesAsRead($conversationId: ID!) {
markMessagesAsRead(conversationId: $conversationId)
}
`
// Мутации для услуг
export const CREATE_SERVICE = gql`
mutation CreateService($input: ServiceInput!) {
createService(input: $input) {
success
message
service {
id
name
description
price
imageUrl
createdAt
updatedAt
}
}
}
`
export const UPDATE_SERVICE = gql`
mutation UpdateService($id: ID!, $input: ServiceInput!) {
updateService(id: $id, input: $input) {
success
message
service {
id
name
description
price
imageUrl
createdAt
updatedAt
}
}
}
`
export const DELETE_SERVICE = gql`
mutation DeleteService($id: ID!) {
deleteService(id: $id)
}
`
// Мутации для расходников - только обновление цены разрешено
export const UPDATE_SUPPLY_PRICE = gql`
mutation UpdateSupplyPrice($id: ID!, $input: UpdateSupplyPriceInput!) {
updateSupplyPrice(id: $id, input: $input) {
success
message
supply {
id
name
article
description
pricePerUnit
unit
imageUrl
warehouseStock
isAvailable
warehouseConsumableId
createdAt
updatedAt
organization {
id
name
}
}
}
}
`
// Мутация для заказа поставки товаров с поддержкой многоуровневой системы
export const CREATE_SUPPLY_ORDER = gql`
mutation CreateSupplyOrder($input: SupplyOrderInput!) {
createSupplyOrder(input: $input) {
success
message
order {
id
partnerId
deliveryDate
status
totalAmount
totalItems
fulfillmentCenterId
logisticsPartnerId
# Новые поля для многоуровневой системы
packagesCount
volume
responsibleEmployee
notes
createdAt
updatedAt
partner {
id
inn
name
fullName
address
market
}
fulfillmentCenter {
id
name
fullName
address
}
logisticsPartner {
id
name
fullName
}
employee {
id
firstName
lastName
position
department
}
# Маршруты поставки
routes {
id
logisticsId
fromLocation
toLocation
fromAddress
toAddress
distance
estimatedTime
price
status
createdDate
logistics {
id
fromLocation
toLocation
priceUnder1m3
priceOver1m3
description
}
}
items {
id
quantity
price
totalPrice
recipe {
services {
id
name
description
price
}
fulfillmentConsumables {
id
name
description
pricePerUnit
unit
imageUrl
organization {
id
name
}
}
sellerConsumables {
id
name
description
price
unit
}
marketplaceCardId
}
product {
id
name
article
description
price
quantity
images
mainImage
category {
id
name
}
}
}
}
}
}
`
// Мутация для назначения логистики на поставку фулфилментом
export const ASSIGN_LOGISTICS_TO_SUPPLY = gql`
mutation AssignLogisticsToSupply($supplyOrderId: ID!, $logisticsPartnerId: ID!, $responsibleId: ID) {
assignLogisticsToSupply(
supplyOrderId: $supplyOrderId
logisticsPartnerId: $logisticsPartnerId
responsibleId: $responsibleId
) {
success
message
order {
id
status
logisticsPartnerId
responsibleId
logisticsPartner {
id
name
fullName
type
}
responsible {
id
firstName
lastName
email
}
}
}
}
`
// Мутации для логистики
export const CREATE_LOGISTICS = gql`
mutation CreateLogistics($input: LogisticsInput!) {
createLogistics(input: $input) {
success
message
logistics {
id
fromLocation
toLocation
priceUnder1m3
priceOver1m3
description
createdAt
updatedAt
organization {
id
name
fullName
}
}
}
}
`
export const UPDATE_LOGISTICS = gql`
mutation UpdateLogistics($id: ID!, $input: LogisticsInput!) {
updateLogistics(id: $id, input: $input) {
success
message
logistics {
id
fromLocation
toLocation
priceUnder1m3
priceOver1m3
description
createdAt
updatedAt
organization {
id
name
fullName
}
}
}
}
`
export const DELETE_LOGISTICS = gql`
mutation DeleteLogistics($id: ID!) {
deleteLogistics(id: $id)
}
`
// Мутации для товаров поставщика
export const CREATE_PRODUCT = gql`
mutation CreateProduct($input: ProductInput!) {
createProduct(input: $input) {
success
message
product {
id
name
article
description
price
pricePerSet
quantity
setQuantity
ordered
inTransit
stock
sold
type
category {
id
name
}
brand
color
size
weight
dimensions
material
images
mainImage
isActive
createdAt
updatedAt
organization {
id
market
}
}
}
}
`
export const UPDATE_PRODUCT = gql`
mutation UpdateProduct($id: ID!, $input: ProductInput!) {
updateProduct(id: $id, input: $input) {
success
message
product {
id
name
article
description
price
pricePerSet
quantity
setQuantity
ordered
inTransit
stock
sold
type
category {
id
name
}
brand
color
size
weight
dimensions
material
images
mainImage
isActive
createdAt
updatedAt
organization {
id
market
}
}
}
}
`
export const DELETE_PRODUCT = gql`
mutation DeleteProduct($id: ID!) {
deleteProduct(id: $id)
}
`
// Мутация для проверки уникальности артикула
export const CHECK_ARTICLE_UNIQUENESS = gql`
mutation CheckArticleUniqueness($article: String!, $excludeId: ID) {
checkArticleUniqueness(article: $article, excludeId: $excludeId) {
isUnique
existingProduct {
id
name
article
}
}
}
`
// Мутация для резервирования товара (при заказе)
export const RESERVE_PRODUCT_STOCK = gql`
mutation ReserveProductStock($productId: ID!, $quantity: Int!) {
reserveProductStock(productId: $productId, quantity: $quantity) {
success
message
product {
id
quantity
ordered
stock
}
}
}
`
// Мутация для освобождения резерва (при отмене заказа)
export const RELEASE_PRODUCT_RESERVE = gql`
mutation ReleaseProductReserve($productId: ID!, $quantity: Int!) {
releaseProductReserve(productId: $productId, quantity: $quantity) {
success
message
product {
id
quantity
ordered
stock
}
}
}
`
// Мутация для обновления статуса "в пути"
export const UPDATE_PRODUCT_IN_TRANSIT = gql`
mutation UpdateProductInTransit($productId: ID!, $quantity: Int!, $operation: String!) {
updateProductInTransit(productId: $productId, quantity: $quantity, operation: $operation) {
success
message
product {
id
quantity
ordered
inTransit
stock
}
}
}
`
// Мутации для корзины
export const ADD_TO_CART = gql`
mutation AddToCart($productId: ID!, $quantity: Int = 1) {
addToCart(productId: $productId, quantity: $quantity) {
success
message
cart {
id
totalPrice
totalItems
items {
id
quantity
totalPrice
isAvailable
availableQuantity
product {
id
name
article
price
quantity
images
mainImage
organization {
id
name
fullName
}
}
}
}
}
}
`
export const UPDATE_CART_ITEM = gql`
mutation UpdateCartItem($productId: ID!, $quantity: Int!) {
updateCartItem(productId: $productId, quantity: $quantity) {
success
message
cart {
id
totalPrice
totalItems
items {
id
quantity
totalPrice
isAvailable
availableQuantity
product {
id
name
article
price
quantity
images
mainImage
organization {
id
name
fullName
}
}
}
}
}
}
`
export const REMOVE_FROM_CART = gql`
mutation RemoveFromCart($productId: ID!) {
removeFromCart(productId: $productId) {
success
message
cart {
id
totalPrice
totalItems
items {
id
quantity
totalPrice
isAvailable
availableQuantity
product {
id
name
article
price
quantity
images
mainImage
organization {
id
name
fullName
}
}
}
}
}
}
`
export const CLEAR_CART = gql`
mutation ClearCart {
clearCart
}
`
// Мутации для избранного
export const ADD_TO_FAVORITES = gql`
mutation AddToFavorites($productId: ID!) {
addToFavorites(productId: $productId) {
success
message
favorites {
id
name
article
price
quantity
images
mainImage
category {
id
name
}
organization {
id
name
fullName
inn
}
}
}
}
`
export const REMOVE_FROM_FAVORITES = gql`
mutation RemoveFromFavorites($productId: ID!) {
removeFromFavorites(productId: $productId) {
success
message
favorites {
id
name
article
price
quantity
images
mainImage
category {
id
name
}
organization {
id
name
fullName
inn
}
}
}
}
`
// Мутации для внешней рекламы
export const CREATE_EXTERNAL_AD = gql`
mutation CreateExternalAd($input: ExternalAdInput!) {
createExternalAd(input: $input) {
success
message
externalAd {
id
name
url
cost
date
nmId
clicks
organizationId
createdAt
updatedAt
}
}
}
`
export const UPDATE_EXTERNAL_AD = gql`
mutation UpdateExternalAd($id: ID!, $input: ExternalAdInput!) {
updateExternalAd(id: $id, input: $input) {
success
message
externalAd {
id
name
url
cost
date
nmId
clicks
organizationId
createdAt
updatedAt
}
}
}
`
export const DELETE_EXTERNAL_AD = gql`
mutation DeleteExternalAd($id: ID!) {
deleteExternalAd(id: $id) {
success
message
externalAd {
id
}
}
}
`
export const UPDATE_EXTERNAL_AD_CLICKS = gql`
mutation UpdateExternalAdClicks($id: ID!, $clicks: Int!) {
updateExternalAdClicks(id: $id, clicks: $clicks) {
success
message
}
}
`
// Мутации для категорий
export const CREATE_CATEGORY = gql`
mutation CreateCategory($input: CategoryInput!) {
createCategory(input: $input) {
success
message
category {
id
name
createdAt
updatedAt
}
}
}
`
export const UPDATE_CATEGORY = gql`
mutation UpdateCategory($id: ID!, $input: CategoryInput!) {
updateCategory(id: $id, input: $input) {
success
message
category {
id
name
createdAt
updatedAt
}
}
}
`
export const DELETE_CATEGORY = gql`
mutation DeleteCategory($id: ID!) {
deleteCategory(id: $id)
}
`
// Мутации для сотрудников
export const CREATE_EMPLOYEE = gql`
mutation CreateEmployee($input: CreateEmployeeInput!) {
createEmployee(input: $input) {
success
message
employee {
id
firstName
lastName
middleName
birthDate
avatar
position
department
hireDate
salary
status
phone
email
emergencyContact
emergencyPhone
createdAt
updatedAt
}
}
}
`
export const UPDATE_EMPLOYEE = gql`
mutation UpdateEmployee($id: ID!, $input: UpdateEmployeeInput!) {
updateEmployee(id: $id, input: $input) {
success
message
employee {
id
firstName
lastName
middleName
birthDate
avatar
passportSeries
passportNumber
passportIssued
passportDate
address
position
department
hireDate
salary
status
phone
email
emergencyContact
emergencyPhone
createdAt
updatedAt
}
}
}
`
export const DELETE_EMPLOYEE = gql`
mutation DeleteEmployee($id: ID!) {
deleteEmployee(id: $id)
}
`
export const UPDATE_EMPLOYEE_SCHEDULE = gql`
mutation UpdateEmployeeSchedule($input: UpdateScheduleInput!) {
updateEmployeeSchedule(input: $input)
}
`
export const CREATE_WILDBERRIES_SUPPLY = gql`
mutation CreateWildberriesSupply($input: CreateWildberriesSupplyInput!) {
createWildberriesSupply(input: $input) {
success
message
supply {
id
deliveryDate
status
totalAmount
totalItems
createdAt
}
}
}
`
// Админ мутации
export const ADMIN_LOGIN = gql`
mutation AdminLogin($username: String!, $password: String!) {
adminLogin(username: $username, password: $password) {
success
message
token
admin {
id
username
email
isActive
lastLogin
createdAt
updatedAt
}
}
}
`
export const ADMIN_LOGOUT = gql`
mutation AdminLogout {
adminLogout
}
`
export const CREATE_SUPPLY_SUPPLIER = gql`
mutation CreateSupplySupplier($input: CreateSupplySupplierInput!) {
createSupplySupplier(input: $input) {
success
message
supplier {
id
name
contactName
phone
market
address
place
telegram
createdAt
}
}
}
`
// Мутация для обновления статуса заказа поставки
export const UPDATE_SUPPLY_ORDER_STATUS = gql`
mutation UpdateSupplyOrderStatus($id: ID!, $status: SupplyOrderStatus!) {
updateSupplyOrderStatus(id: $id, status: $status) {
success
message
order {
id
status
deliveryDate
totalAmount
totalItems
partner {
id
name
fullName
}
items {
id
quantity
price
totalPrice
product {
id
name
article
description
price
quantity
images
mainImage
category {
id
name
}
}
}
}
}
}
`
// Мутации для кеша склада WB
export const SAVE_WB_WAREHOUSE_CACHE = gql`
mutation SaveWBWarehouseCache($input: WBWarehouseCacheInput!) {
saveWBWarehouseCache(input: $input) {
success
message
fromCache
cache {
id
organizationId
cacheDate
data
totalProducts
totalStocks
totalReserved
createdAt
updatedAt
}
}
}
`
// Мутации для кеша статистики продаж
export const SAVE_SELLER_STATS_CACHE = gql`
mutation SaveSellerStatsCache($input: SellerStatsCacheInput!) {
saveSellerStatsCache(input: $input) {
success
message
cache {
id
organizationId
cacheDate
period
dateFrom
dateTo
productsData
productsTotalSales
productsTotalOrders
productsCount
advertisingData
advertisingTotalCost
advertisingTotalViews
advertisingTotalClicks
expiresAt
createdAt
updatedAt
}
}
}
`
// Новые мутации для управления заказами поставок
export const SUPPLIER_APPROVE_ORDER = gql`
mutation SupplierApproveOrder($id: ID!) {
supplierApproveOrder(id: $id) {
success
message
order {
id
status
deliveryDate
totalAmount
totalItems
partner {
id
name
fullName
}
logisticsPartner {
id
name
fullName
}
}
}
}
`
export const SUPPLIER_REJECT_ORDER = gql`
mutation SupplierRejectOrder($id: ID!, $reason: String) {
supplierRejectOrder(id: $id, reason: $reason) {
success
message
order {
id
status
}
}
}
`
export const SUPPLIER_SHIP_ORDER = gql`
mutation SupplierShipOrder($id: ID!) {
supplierShipOrder(id: $id) {
success
message
order {
id
status
deliveryDate
partner {
id
name
fullName
}
logisticsPartner {
id
name
fullName
}
}
}
}
`
export const LOGISTICS_CONFIRM_ORDER = gql`
mutation LogisticsConfirmOrder($id: ID!) {
logisticsConfirmOrder(id: $id) {
success
message
order {
id
status
deliveryDate
partner {
id
name
fullName
}
logisticsPartner {
id
name
fullName
}
}
}
}
`
export const LOGISTICS_REJECT_ORDER = gql`
mutation LogisticsRejectOrder($id: ID!, $reason: String) {
logisticsRejectOrder(id: $id, reason: $reason) {
success
message
order {
id
status
}
}
}
`
export const FULFILLMENT_RECEIVE_ORDER = gql`
mutation FulfillmentReceiveOrder($id: ID!) {
fulfillmentReceiveOrder(id: $id) {
success
message
order {
id
status
deliveryDate
totalAmount
totalItems
partner {
id
name
fullName
}
logisticsPartner {
id
name
fullName
}
}
}
}
`