accepted items added

This commit is contained in:
Samandar Turg'unboev
2025-06-24 09:53:03 +05:00
parent 11faf4a2c9
commit 5cad79b822
4 changed files with 103 additions and 123 deletions

View File

@@ -57,6 +57,7 @@ const DashboardBoxesPage = (props: Props) => {
const [deleteIds, setDeleteIds] = useState<number[]>([]);
const [downloadIds, setDownloadIds] = useState<number[]>([]);
const [changeStatusIds, setChangeStatusIds] = useState<number[]>([]);
const [boxAmounts, setBoxAmounts] = useState<Record<number, { totalAmount: number; totalAccepted: number }>>({});
const boxStatusOptions = useMemo(() => {
const p = ['READY_TO_INVOICE'] as BoxStatus[];
@@ -192,6 +193,40 @@ const DashboardBoxesPage = (props: Props) => {
return () => clearTimeout(timeoutId);
}, [keyword]);
useEffect(() => {
const fetchAmounts = async () => {
const result: Record<number, { totalAmount: number; totalAccepted: number }> = {};
await Promise.all(
list.map(async box => {
try {
const res = await box_requests.find({ packetId: box.id });
const boxData = res.data.data;
const total = boxData.items.reduce(
(acc: { totalAmount: number; totalAccepted: number }, item: any) => {
acc.totalAmount += +item.amount || 0;
acc.totalAccepted += +item.acceptedNumber || 0;
return acc;
},
{ totalAmount: 0, totalAccepted: 0 }
);
result[box.id] = total;
} catch (e) {
console.error(`Failed to fetch box ${box.id}`, e);
}
})
);
setBoxAmounts(result);
};
if (list.length > 0 && !loading) {
fetchAmounts();
}
}, [list, loading]);
// No, PartyName, PacketName, PartyTozaOg'irlik, CountOfItems, WeightOfItems, CargoID, PassportNameFamily - PacketStatusForInvoice
const columns: ColumnData<IBox>[] = [
{
@@ -233,59 +268,12 @@ const DashboardBoxesPage = (props: Props) => {
label: t('count_of_items'),
width: 120,
renderCell: data => {
const getOneBox = useRequest(
() => {
return box_requests.find({ packetId: data.id });
},
{
selectData(data) {
const boxData = data.data.data;
return {
products_list: [
...boxData.items.map(item => {
let name = item.name;
let nameRu = item.nameRu;
return {
id: item.id,
price: item.price,
cargoId: item.cargoId,
trekId: item.trekId,
name: name,
acceptedNumber: item.acceptedNumber,
nameRu: nameRu,
amount: +item.amount,
weight: +item.weight,
};
}),
],
};
},
}
);
const total = boxAmounts[data.id];
if (!total) return <Typography>...</Typography>;
return (
<div>
{(() => {
const total = getOneBox.data?.products_list.reduce(
(acc, product) => {
console.log(product, 'totalAccepted');
acc.totalAmount += +product.amount || 0;
acc.totalAccepted += +product.acceptedNumber || 0;
return acc;
},
{ totalAmount: 0, totalAccepted: 0 }
);
return (
<Typography>
{total?.totalAmount} | {total?.totalAccepted}
</Typography>
);
})()}
</div>
<Typography>
{total.totalAmount} | {total.totalAccepted}
</Typography>
);
},
},

View File

@@ -1,15 +1,13 @@
import BaseButton from '@/components/ui-kit/BaseButton';
import BaseInput from '@/components/ui-kit/BaseInput';
import BaseModal from '@/components/ui-kit/BaseModal';
import BaseReactSelect from '@/components/ui-kit/BaseReactSelect';
import { Product } from '@/data/item/item.mode';
import { item_requests } from '@/data/item/item.requests';
import { staff_requests } from '@/data/staff/staff.requests';
import { useMyTranslation } from '@/hooks/useMyTranslation';
import { notifyUnknownError } from '@/services/notification';
import { Box, Grid, Stack, Typography, styled } from '@mui/material';
import React, { useState } from 'react';
import { Controller, useForm } from 'react-hook-form';
import { useState } from 'react';
import { useForm } from 'react-hook-form';
const StyledBox = styled(Box)`
.title {
@@ -52,6 +50,8 @@ const EditItemModal = ({ onClose, open, onSuccess, item }: Props) => {
name: string;
amount: number;
weight: number;
acceptedNumber: number | null;
nameRu: string;
}>({
defaultValues: {
amount: item.amount,
@@ -59,6 +59,8 @@ const EditItemModal = ({ onClose, open, onSuccess, item }: Props) => {
name: item.name,
trekId: item.trekId,
weight: item.weight,
acceptedNumber: item.acceptedNumber,
nameRu: item.nameRu,
},
});