Aplicación para llevar a cabo el stock de la fábrica
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

274 lines
8.0 KiB

import React, { useState, useEffect } from "react";
import { useParams } from "react-router-dom";
import Box from "@mui/material/Box";
import Collapse from "@mui/material/Collapse";
import IconButton from "@mui/material/IconButton";
import Table from "@mui/material/Table";
import TableBody from "@mui/material/TableBody";
import TableCell, { tableCellClasses } from "@mui/material/TableCell";
import TableContainer from "@mui/material/TableContainer";
import TableHead from "@mui/material/TableHead";
import TableRow from "@mui/material/TableRow";
import Typography from "@mui/material/Typography";
import Paper from "@mui/material/Paper";
import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown";
import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp";
import { styled } from "@mui/material/styles";
import { getListProvidersByIdSupply } from "../services/orders";
import { grey } from "@mui/material/colors";
const StyledTableCell = styled(TableCell)(() => ({
[`&.${tableCellClasses.head}`]: {
backgroundColor: "#23282c",
color: "#fff",
fontSize: 16,
height: "10px",
},
[`&.${tableCellClasses.body}`]: {
fontSize: 14,
color: "#fff",
border: "unset",
backgroundColor: "#23282c",
paddingTop: "5px",
paddingBottom: "5px",
},
}));
const StyledTableRow = styled(TableRow)(() => ({
"&:nth-of-type(odd)": {
backgroundColor: "#23282c",
height: "20px",
},
// hide last border
"&:last-child td, &:last-child th": {
border: 0,
},
}));
function createData(
name,
price,
lastOrderQuantity,
lastOrderDate,
description,
orders,
providersFull
) {
/* console.log("provFULL: ");
console.log(
"name:" + name,
"price: " + price,
"lastOrderQuantity: " + lastOrderQuantity,
"lastOrderDate: " + lastOrderDate,
"description: " + description,
"orders: " + orders,
"providersFull: " + providersFull
);
console.log("providersFull dsde ACa");
console.log(providersFull); */
if (orders) {
const providerMaped = orders.map((order) => {
console.log("provMap: " + order.amount);
console.log("provMap- name: " + order.date);
return {
key: order.amount,
dateH: order.date.slice(0, 10),
priceH: order.amount,
quantityH: order.quantity,
};
});
return {
name,
price,
lastOrderQuantity,
lastOrderDate,
description,
history: providerMaped,
};
} else {
return {
name,
price,
lastOrderQuantity,
lastOrderDate,
description,
history: [],
};
}
}
function Row(props) {
const { row } = props;
const [open, setOpen] = React.useState(false);
return (
<React.Fragment>
<StyledTableRow
sx={{ "& > *": { borderBottom: "unset" }, background: "#23282C" }}
>
<StyledTableCell>
<IconButton
aria-label="expand row"
size="small"
onClick={() => setOpen(!open)}
>
{open ? <KeyboardArrowUpIcon /> : <KeyboardArrowDownIcon />}
</IconButton>
</StyledTableCell>
{/* <StyledTableCell component="th" scope="row">{row._id}</StyledTableCell> */}
<StyledTableCell style={{ display: "none" }} align="right">
{row._id}
</StyledTableCell>
<StyledTableCell align="left">{row.name}</StyledTableCell>
<StyledTableCell align="right">{row.price}</StyledTableCell>
<StyledTableCell align="right">{row.lastOrderQuantity}</StyledTableCell>
<StyledTableCell align="right">{row.lastOrderDate}</StyledTableCell>
</StyledTableRow>
<StyledTableRow>
<StyledTableCell style={{ paddingTop: 0 }} colSpan={6}>
<Collapse in={open} timeout="auto" unmountOnExit>
<Box sx={{ marginTop: 1, borderBottom: "0.5px solid grey" }}>
<h4
style={{ paddingLeft: 15, color: "#3082aa", fontWeight: "100" }}
>
Historial
</h4>
<Table
size="small"
aria-label="historial"
style={{ width: "100%" }}
>
<TableHead>
<StyledTableRow>
<StyledTableCell
style={{ fontSize: "13px" }}
align="right"
></StyledTableCell>
<StyledTableCell style={{ fontSize: "13px" }} align="right">
Precio
</StyledTableCell>
<StyledTableCell style={{ fontSize: "13px" }} align="right">
Cantidad
</StyledTableCell>
<StyledTableCell style={{ fontSize: "13px" }} align="right">
Fecha de ingreso
</StyledTableCell>
</StyledTableRow>
</TableHead>
<TableBody>
{row.history.map((historyRow) => (
<StyledTableRow key={historyRow._id}>
<StyledTableCell
style={{ fontSize: "13px" }}
align="right"
width="29%"
></StyledTableCell>
<StyledTableCell
style={{ fontSize: "13px" }}
align="right"
>
{historyRow.priceH}
</StyledTableCell>
<StyledTableCell
style={{ fontSize: "13px" }}
align="right"
width="17%"
>
{historyRow.quantityH}
</StyledTableCell>
<StyledTableCell
style={{ fontSize: "13px" }}
component="th"
scope="row"
align="right"
>
{historyRow.dateH}
</StyledTableCell>
</StyledTableRow>
))}
</TableBody>
</Table>
</Box>
</Collapse>
</StyledTableCell>
</StyledTableRow>
</React.Fragment>
);
}
export default function DataTableProvidersDetail(props) {
console.log("providers desde dataTableP");
console.log(props.selectedSupply);
const [orders, setOrders] = useState([]);
let total = 0;
const params = useParams();
const loadOrders = async () => {
const orders = await getListProvidersByIdSupply(params.id);
setOrders(orders);
};
useEffect(() => {
loadOrders();
}, []);
/* console.log("ver los orders");
console.log(orders); */
const rows = orders.map((e) => {
total += e.total;
props.funcTotal(total);
// last orders amount
const lastOrder = e.orders[e.orders.length - 1].amount;
//last orders quantity
const lastOrderQuantity = e.orders[e.orders.length - 1].quantity;
// last orders date
const lastOrderDate = e.orders[e.orders.length - 1].date.slice(0, 10);
return createData(
e.name.name,
lastOrder,
lastOrderQuantity,
lastOrderDate,
e.name.description,
e.orders,
orders
);
});
return (
<>
<TableContainer component={Paper} style={{ width: "93%" }}>
<Table aria-label="collapsible table">
<TableHead>
<StyledTableRow>
<StyledTableCell />
<StyledTableCell>Proveedor</StyledTableCell>
<StyledTableCell align="right">Precio</StyledTableCell>
<StyledTableCell align="right">Cantidad</StyledTableCell>
<StyledTableCell align="right">
última Fecha de Ingreso
</StyledTableCell>
</StyledTableRow>
</TableHead>
<TableBody>
{rows.map((row) => (
<Row key={row._id} row={row} />
))}
</TableBody>
</Table>
</TableContainer>
</>
);
}