Merge branch 'main' of https://gittea.biveki.ru/Sfera/sfera
This commit is contained in:
@ -827,7 +827,7 @@ export const GET_WILDBERRIES_CAMPAIGNS_LIST = gql`
|
||||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
`;
|
||||
|
||||
export const GET_EXTERNAL_ADS = gql`
|
||||
query GetExternalAds($dateFrom: String!, $dateTo: String!) {
|
||||
@ -948,6 +948,8 @@ export const GET_PENDING_SUPPLIES_COUNT = gql`
|
||||
query GetPendingSuppliesCount {
|
||||
pendingSuppliesCount {
|
||||
supplyOrders
|
||||
ourSupplyOrders
|
||||
sellerSupplyOrders
|
||||
incomingRequests
|
||||
total
|
||||
}
|
||||
|
@ -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,
|
||||
};
|
||||
});
|
||||
|
||||
|
@ -602,6 +602,8 @@ export const typeDefs = gql`
|
||||
|
||||
type PendingSuppliesCount {
|
||||
supplyOrders: Int!
|
||||
ourSupplyOrders: Int! # Наши расходники
|
||||
sellerSupplyOrders: Int! # Расходники селлеров
|
||||
incomingRequests: Int!
|
||||
total: Int!
|
||||
}
|
||||
|
Reference in New Issue
Block a user