feat: residues accounting

This commit is contained in:
2025-01-14 21:35:06 +04:00
parent fec6b13972
commit c45d2ac20a
74 changed files with 2994 additions and 28 deletions

View File

@@ -0,0 +1,70 @@
import { useEffect, useState } from "react";
import { ResidualPalletSchema, ResiduesService } from "../../../../../client";
import { modals } from "@mantine/modals";
import { notifications } from "../../../../../shared/lib/notifications.ts";
type Props = {
palletId: number;
}
const useReceiptPallet = ({ palletId }: Props) => {
const [pallet, setPallet] = useState<ResidualPalletSchema | null>(null);
const [clientId, setClientId] = useState<number | null>(null);
useEffect(() => {
fetchPallet(palletId);
}, []);
const fetchPallet = (palletId?: number) => {
const id = palletId ?? pallet?.id;
if (!id) return;
ResiduesService.getResidualPallet({ palletId: id })
.then(res => {
setPallet(res.pallet);
setClientId(res.clientId);
})
.catch(err => console.log(err));
};
const onCreateProductClick = () => {
if (!(pallet && clientId)) return;
modals.openContextModal({
modal: "receiptModal",
title: "Добавление товара",
withCloseButton: false,
innerProps: {
clientId,
isBox: false,
object: pallet,
fetchObject: fetchPallet,
},
});
};
const onCreateBoxClick = () => {
ResiduesService.createResidualBox({
requestBody: {
palletId,
clientId: null,
},
})
.then(({ ok, message }) => {
if (!ok) {
notifications.error({ message });
}
fetchPallet();
})
.catch(err => console.log(err));
};
return {
pallet,
fetchPallet,
clientId,
onCreateProductClick,
onCreateBoxClick,
};
};
export default useReceiptPallet;