a lot of
This commit is contained in:
@ -728,33 +728,57 @@ export const resolvers = {
|
||||
},
|
||||
});
|
||||
|
||||
// Получаем расходники селлеров из таблицы supply
|
||||
// Это расходники, созданные при доставке заказов от селлеров
|
||||
const existingSupplies = await prisma.supply.findMany({
|
||||
// Получаем ВСЕ расходники из таблицы supply для фулфилмента
|
||||
const allSupplies = await prisma.supply.findMany({
|
||||
where: { organizationId: currentUser.organization.id },
|
||||
include: { organization: true },
|
||||
orderBy: { createdAt: "desc" },
|
||||
});
|
||||
|
||||
// Получаем все заказы фулфилмента для себя (чтобы исключить их расходники)
|
||||
const fulfillmentOwnOrders = await prisma.supplyOrder.findMany({
|
||||
where: {
|
||||
organizationId: currentUser.organization.id, // Созданы фулфилментом
|
||||
fulfillmentCenterId: currentUser.organization.id, // Для себя
|
||||
status: "DELIVERED",
|
||||
},
|
||||
include: {
|
||||
items: {
|
||||
include: {
|
||||
product: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// Создаем набор названий товаров из заказов фулфилмента для себя
|
||||
const fulfillmentProductNames = new Set(
|
||||
fulfillmentOwnOrders.flatMap((order) =>
|
||||
order.items.map((item) => item.product.name)
|
||||
)
|
||||
);
|
||||
|
||||
// Фильтруем расходники: исключаем те, что созданы заказами фулфилмента для себя
|
||||
const sellerSupplies = allSupplies.filter((supply) => {
|
||||
// Если расходник соответствует товару из заказа фулфилмента для себя,
|
||||
// то это расходник фулфилмента, а не селлера
|
||||
return !fulfillmentProductNames.has(supply.name);
|
||||
});
|
||||
|
||||
// Логирование для отладки
|
||||
console.log("🔥🔥🔥 SELLER SUPPLIES RESOLVER CALLED 🔥🔥🔥");
|
||||
console.log("📊 Расходники селлеров:", {
|
||||
organizationId: currentUser.organization.id,
|
||||
organizationType: currentUser.organization.type,
|
||||
existingSuppliesCount: existingSupplies.length,
|
||||
allSuppliesCount: allSupplies.length,
|
||||
fulfillmentOwnOrdersCount: fulfillmentOwnOrders.length,
|
||||
fulfillmentProductNames: Array.from(fulfillmentProductNames),
|
||||
filteredSellerSuppliesCount: sellerSupplies.length,
|
||||
sellerOrdersCount: sellerSupplyOrders.length,
|
||||
sellerOrders: sellerSupplyOrders.map((o) => ({
|
||||
id: o.id,
|
||||
sellerName: o.organization.name,
|
||||
supplierName: o.partner.name,
|
||||
status: o.status,
|
||||
itemsCount: o.items.length,
|
||||
})),
|
||||
});
|
||||
|
||||
// Возвращаем только расходники селлеров из таблицы supply
|
||||
// TODO: В будущем можно добавить фильтрацию по источнику заказа
|
||||
return existingSupplies;
|
||||
// Возвращаем только расходники селлеров (исключая расходники фулфилмента)
|
||||
return sellerSupplies;
|
||||
},
|
||||
|
||||
// Расходники фулфилмента (материалы для работы фулфилмента)
|
||||
@ -818,12 +842,14 @@ export const resolvers = {
|
||||
category: item.product.category?.name || "Расходники фулфилмента",
|
||||
status:
|
||||
order.status === "PENDING"
|
||||
? "in-transit"
|
||||
? "planned"
|
||||
: order.status === "CONFIRMED"
|
||||
? "in-transit"
|
||||
? "confirmed"
|
||||
: order.status === "IN_TRANSIT"
|
||||
? "in-transit"
|
||||
: "available",
|
||||
: order.status === "DELIVERED"
|
||||
? "in-stock"
|
||||
: "planned",
|
||||
date: order.createdAt,
|
||||
supplier: order.partner.name || order.partner.fullName || "Не указан",
|
||||
minStock: Math.round(item.quantity * 0.1),
|
||||
@ -3751,6 +3777,7 @@ export const resolvers = {
|
||||
totalItems: totalItems,
|
||||
organizationId: currentUser.organization.id,
|
||||
fulfillmentCenterId: fulfillmentCenterId,
|
||||
logisticsPartnerId: args.input.logisticsPartnerId,
|
||||
status: initialStatus,
|
||||
items: {
|
||||
create: orderItems,
|
||||
@ -3772,6 +3799,11 @@ export const resolvers = {
|
||||
users: true,
|
||||
},
|
||||
},
|
||||
logisticsPartner: {
|
||||
include: {
|
||||
users: true,
|
||||
},
|
||||
},
|
||||
items: {
|
||||
include: {
|
||||
product: {
|
||||
@ -3803,7 +3835,7 @@ export const resolvers = {
|
||||
quantity: item.quantity,
|
||||
unit: "шт",
|
||||
category: productWithCategory?.category?.name || "Расходники",
|
||||
status: "in-transit", // Статус "в пути" так как заказ только создан
|
||||
status: "planned", // Статус "запланировано" (ожидает одобрения поставщиком)
|
||||
date: new Date(args.input.deliveryDate),
|
||||
supplier: partner.name || partner.fullName || "Не указан",
|
||||
minStock: Math.round(item.quantity * 0.1), // 10% от заказанного как минимальный остаток
|
||||
@ -5288,10 +5320,53 @@ export const resolvers = {
|
||||
},
|
||||
});
|
||||
|
||||
// Если статус изменился на DELIVERED, обновляем склад фулфилмента
|
||||
if (args.status === "DELIVERED" && existingOrder.fulfillmentCenterId) {
|
||||
console.log("🚚 Обновляем склад фулфилмента:", {
|
||||
// Обновляем статусы расходников в зависимости от статуса заказа
|
||||
const targetOrganizationId = existingOrder.fulfillmentCenterId || existingOrder.organizationId;
|
||||
|
||||
if (args.status === "CONFIRMED") {
|
||||
// При подтверждении поставщиком - переводим расходники в статус "confirmed"
|
||||
await prisma.supply.updateMany({
|
||||
where: {
|
||||
organizationId: targetOrganizationId,
|
||||
status: "planned",
|
||||
// Находим расходники по названиям товаров из заказа
|
||||
name: {
|
||||
in: existingOrder.items.map(item => item.product.name)
|
||||
}
|
||||
},
|
||||
data: {
|
||||
status: "confirmed"
|
||||
}
|
||||
});
|
||||
|
||||
console.log("✅ Статусы расходников обновлены на 'confirmed'");
|
||||
}
|
||||
|
||||
if (args.status === "IN_TRANSIT") {
|
||||
// При отгрузке - переводим расходники в статус "in-transit"
|
||||
await prisma.supply.updateMany({
|
||||
where: {
|
||||
organizationId: targetOrganizationId,
|
||||
status: "confirmed",
|
||||
name: {
|
||||
in: existingOrder.items.map(item => item.product.name)
|
||||
}
|
||||
},
|
||||
data: {
|
||||
status: "in-transit"
|
||||
}
|
||||
});
|
||||
|
||||
console.log("✅ Статусы расходников обновлены на 'in-transit'");
|
||||
}
|
||||
|
||||
// Если статус изменился на DELIVERED, обновляем склад
|
||||
if (args.status === "DELIVERED") {
|
||||
|
||||
console.log("🚚 Обновляем склад организации:", {
|
||||
targetOrganizationId,
|
||||
fulfillmentCenterId: existingOrder.fulfillmentCenterId,
|
||||
organizationId: existingOrder.organizationId,
|
||||
itemsCount: existingOrder.items.length,
|
||||
items: existingOrder.items.map((item) => ({
|
||||
productName: item.product.name,
|
||||
@ -5299,19 +5374,19 @@ export const resolvers = {
|
||||
})),
|
||||
});
|
||||
|
||||
// Обновляем расходники фулфилмента
|
||||
// Обновляем расходники
|
||||
for (const item of existingOrder.items) {
|
||||
console.log("📦 Обрабатываем товар:", {
|
||||
productName: item.product.name,
|
||||
quantity: item.quantity,
|
||||
fulfillmentCenterId: existingOrder.fulfillmentCenterId,
|
||||
targetOrganizationId,
|
||||
});
|
||||
|
||||
// Ищем существующий расходник
|
||||
// Ищем существующий расходник в правильной организации
|
||||
const existingSupply = await prisma.supply.findFirst({
|
||||
where: {
|
||||
name: item.product.name,
|
||||
organizationId: existingOrder.fulfillmentCenterId,
|
||||
organizationId: targetOrganizationId,
|
||||
},
|
||||
});
|
||||
|
||||
@ -5329,14 +5404,14 @@ export const resolvers = {
|
||||
where: { id: existingSupply.id },
|
||||
data: {
|
||||
currentStock: existingSupply.currentStock + item.quantity,
|
||||
status: "available", // Меняем статус на "доступен"
|
||||
status: "in-stock", // Меняем статус на "на складе"
|
||||
},
|
||||
});
|
||||
} else {
|
||||
console.log("➕ Создаем новый расходник:", {
|
||||
name: item.product.name,
|
||||
quantity: item.quantity,
|
||||
organizationId: existingOrder.fulfillmentCenterId,
|
||||
organizationId: targetOrganizationId,
|
||||
});
|
||||
|
||||
// Создаем новый расходник
|
||||
@ -5350,7 +5425,7 @@ export const resolvers = {
|
||||
quantity: item.quantity,
|
||||
unit: "шт",
|
||||
category: item.product.category?.name || "Расходники",
|
||||
status: "available",
|
||||
status: "in-stock",
|
||||
date: new Date(),
|
||||
supplier:
|
||||
existingOrder.partner.name ||
|
||||
@ -5358,7 +5433,7 @@ export const resolvers = {
|
||||
"Не указан",
|
||||
minStock: Math.round(item.quantity * 0.1),
|
||||
currentStock: item.quantity,
|
||||
organizationId: existingOrder.fulfillmentCenterId,
|
||||
organizationId: targetOrganizationId,
|
||||
},
|
||||
});
|
||||
|
||||
@ -5370,7 +5445,7 @@ export const resolvers = {
|
||||
}
|
||||
}
|
||||
|
||||
console.log("🎉 Склад фулфилмента успешно обновлен!");
|
||||
console.log("🎉 Склад организации успешно обновлен!");
|
||||
}
|
||||
|
||||
return {
|
||||
|
Reference in New Issue
Block a user