Добавлено обновление кэша для расходников фулфилмента в компонентах создания и отображения заказов. Реализованы новые GraphQL запросы для получения данных о расходниках. Удалены устаревшие компоненты уведомлений о непринятых поставках для упрощения интерфейса. Оптимизирована логика отображения и обновления данных о заказах.

This commit is contained in:
Veronika Smirnova
2025-07-29 17:45:29 +03:00
parent 7877f61d5a
commit 50438bb21f
18 changed files with 3693 additions and 191 deletions

View File

@ -23,7 +23,12 @@ import {
Minus,
ShoppingCart,
} from "lucide-react";
import { GET_MY_COUNTERPARTIES, GET_ALL_PRODUCTS } from "@/graphql/queries";
import {
GET_MY_COUNTERPARTIES,
GET_ALL_PRODUCTS,
GET_SUPPLY_ORDERS,
GET_MY_SUPPLIES,
} from "@/graphql/queries";
import { CREATE_SUPPLY_ORDER } from "@/graphql/mutations";
import { OrganizationAvatar } from "@/components/market/organization-avatar";
import { toast } from "sonner";
@ -94,9 +99,10 @@ export function MaterialsOrderForm() {
variables: { search: null, category: null },
}
);
// Мутация для создания заказа поставки
const [createSupplyOrder, { loading: isCreatingOrder }] = useMutation(CREATE_SUPPLY_ORDER);
const [createSupplyOrder, { loading: isCreatingOrder }] =
useMutation(CREATE_SUPPLY_ORDER);
// Фильтруем только поставщиков из партнеров
const wholesalePartners = (counterpartiesData?.myCounterparties || []).filter(
@ -178,19 +184,26 @@ export function MaterialsOrderForm() {
input: {
partnerId: selectedPartner.id,
deliveryDate: deliveryDate,
items: selectedProducts.map(product => ({
items: selectedProducts.map((product) => ({
productId: product.id,
quantity: product.selectedQuantity
}))
}
}
quantity: product.selectedQuantity,
})),
},
},
refetchQueries: [
{ query: GET_SUPPLY_ORDERS }, // Обновляем заказы поставок
{ query: GET_MY_SUPPLIES }, // Обновляем расходники фулфилмента
],
});
if (result.data?.createSupplyOrder?.success) {
toast.success("Заказ поставки создан успешно!");
router.push("/fulfillment-supplies");
} else {
toast.error(result.data?.createSupplyOrder?.message || "Ошибка при создании заказа");
toast.error(
result.data?.createSupplyOrder?.message ||
"Ошибка при создании заказа"
);
}
} catch (error) {
console.error("Error creating supply order:", error);
@ -447,14 +460,20 @@ export function MaterialsOrderForm() {
</div>
</div>
{/* Кнопка создания заказа */}
<Button
{/* Кнопка создания заказа */}
<Button
onClick={handleCreateOrder}
disabled={selectedProducts.length === 0 || !deliveryDate || isCreatingOrder}
disabled={
selectedProducts.length === 0 ||
!deliveryDate ||
isCreatingOrder
}
className="w-full mt-4 bg-gradient-to-r from-purple-500 to-pink-500 hover:from-purple-600 hover:to-pink-600 text-white"
>
<ShoppingCart className="h-4 w-4 mr-2" />
{isCreatingOrder ? "Создание заказа..." : "Создать заказ поставки"}
{isCreatingOrder
? "Создание заказа..."
: "Создать заказ поставки"}
</Button>
</div>
</Card>