This commit is contained in:
Bivekich
2025-07-29 17:44:42 +03:00
7 changed files with 344 additions and 165 deletions

View File

@ -790,28 +790,28 @@ export const resolvers = {
}
// Считаем заказы поставок, требующие действий
const pendingSupplyOrders = await prisma.supplyOrder.count({
// Наши расходники (созданные нами для себя) - требуют действий по статусам
const ourSupplyOrders = await prisma.supplyOrder.count({
where: {
OR: [
// Заказы со статусом PENDING где мы - поставщик (нужно подтвердить)
{
status: "PENDING",
partnerId: currentUser.organization.id,
},
// Заказы со статусом PENDING где мы - получатель ФФ (нужно подтвердить)
{
status: "PENDING",
fulfillmentCenterId: currentUser.organization.id,
},
// Заказы со статусом IN_TRANSIT где мы - получатель ФФ (нужно подтвердить получение)
{
status: "IN_TRANSIT",
fulfillmentCenterId: currentUser.organization.id,
},
],
organizationId: currentUser.organization.id, // Создали мы
fulfillmentCenterId: currentUser.organization.id, // Получатель - мы
status: { in: ["CONFIRMED", "IN_TRANSIT"] }, // Подтверждено или в пути
},
});
// Расходники селлеров (созданные другими для нас) - требуют подтверждения получения
const sellerSupplyOrders = await prisma.supplyOrder.count({
where: {
fulfillmentCenterId: currentUser.organization.id, // Получатель - мы
organizationId: { not: currentUser.organization.id }, // Создали НЕ мы
status: "IN_TRANSIT", // В пути - нужно подтвердить получение
},
});
// Общий счетчик поставок
const pendingSupplyOrders = ourSupplyOrders + sellerSupplyOrders;
// Считаем входящие заявки на партнерство со статусом PENDING
const pendingIncomingRequests = await prisma.counterpartyRequest.count({
where: {
@ -822,6 +822,8 @@ export const resolvers = {
return {
supplyOrders: pendingSupplyOrders,
ourSupplyOrders: ourSupplyOrders, // Наши расходники
sellerSupplyOrders: sellerSupplyOrders, // Расходники селлеров
incomingRequests: pendingIncomingRequests,
total: pendingSupplyOrders + pendingIncomingRequests,
};
@ -3284,12 +3286,16 @@ export const resolvers = {
},
// Создать заказ поставки расходников
// Процесс: Селлер → Поставщик → Логистика → Фулфилмент
// 1. Селлер создает заказ у поставщика расходников
// Два сценария:
// 1. Селлер → Поставщик → Фулфилмент (селлер заказывает для фулфилмент-центра)
// 2. Фулфилмент → Поставщик → Фулфилмент (фулфилмент заказывает для себя)
//
// Процесс: Заказчик → Поставщик → [Логистика] → Фулфилмент
// 1. Заказчик (селлер или фулфилмент) создает заказ у поставщика расходников
// 2. Поставщик получает заказ и готовит товары
// 3. Логистика транспортирует товары на склад фулфилмента
// 4. Фулфилмент принимает товары на склад
// 5. Все участники видят информацию о поставке в своих кабинетах
// 5. Расходники создаются в системе фулфилмент-центра
createSupplyOrder: async (
_: unknown,
args: {
@ -3488,6 +3494,7 @@ export const resolvers = {
});
// Создаем расходники на основе заказанных товаров
// Расходники создаются в организации получателя (фулфилмент-центре)
const suppliesData = args.input.items.map((item) => {
const product = products.find((p) => p.id === item.productId)!;
const productWithCategory = supplyOrder.items.find(
@ -3506,7 +3513,8 @@ export const resolvers = {
supplier: partner.name || partner.fullName || "Не указан",
minStock: Math.round(item.quantity * 0.1), // 10% от заказанного как минимальный остаток
currentStock: 0, // Пока товар не пришел
organizationId: currentUser.organization!.id,
// Расходники создаются в организации получателя (фулфилмент-центре)
organizationId: fulfillmentCenterId || currentUser.organization!.id,
};
});