JairoDanielMT's picture
prescripcion con validaciones
b332881
import React, { useEffect, useState } from "react";
import { obtenerEspecifico, obtenerGet, procesarBoleta, registrarPost } from "../lib/conexionApi";
import { Navigate } from "react-router";
const ModalBoleta = ({
fecha,
setModalBoleta,
precioTotal,
carrito,
prescripcion,
adelanto,
precioLunas,
setPrescripcion,
setPrecioTotal,
setCarrito
}) => {
const [clienteBoleta, setClienteBoleta] = useState({})
const [errorClienteBoleta, setErrorClienteBoleta] = useState(false)
const [boleta, setBoleta] = useState({})
const [errorBoleta, setErrorBoleta] = useState(false)
const [boletaEmitida, setBoletaEmitida] = useState(false)
useEffect(() => {
obtenerEspecifico("clientes/prescripcion", { "id_prescripcion": prescripcion[0]["id_prescripcion"] }, setClienteBoleta, setErrorClienteBoleta)
}, [])
return (
<div className="fixed inset-0 bg-black bg-opacity-25 backdrop-blur-sm flex justify-center items-center">
<div className="bg-white p-10 shadow-md rounded-lg w-[50rem]">
<div className=" flex flex-col w-full h-full ">
<div className="flex flex-col w-full h-full p-5 px-10 mb-5 border-2 pt-5 rounded-lg">
<p className="text-4xl font-bold mb-2">Arte Visual</p>
<div className="flex">
<div className="w-2/3">
<p>Av. Los Héroes 632 S. J. M</p>
<div className="flex gap-1 mb-5">
<svg
xmlns="http://www.w3.org/2000/svg"
className="icon icon-tabler icon-tabler-brand-whatsapp"
width="25"
height="25"
viewBox="0 0 24 24"
strokeWidth="1"
stroke="#000000"
fill="none"
strokeLinecap="round"
strokeLinejoin="round"
>
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
<path d="M3 21l1.65 -3.8a9 9 0 1 1 3.4 2.9l-5.05 .9" />
<path d="M9 10a.5 .5 0 0 0 1 0v-1a.5 .5 0 0 0 -1 0v1a5 5 0 0 0 5 5h1a.5 .5 0 0 0 0 -1h-1a.5 .5 0 0 0 0 1" />
</svg>
<p>902 501 054/968 600 415</p>
</div>
<p>Señor(a): {clienteBoleta["nombres_y_apellidos"]}</p>
<p>Dirección: {clienteBoleta["direccion"]}</p>
<p>Teléfono: {clienteBoleta["telefono"]}</p>
</div>
<div className="w-1/3 text-right">
<p className="uppercase">NOTA DE PEDIDO</p>
<p>00000{prescripcion[0]["id_prescripcion"]}</p>
<p>Fecha: {fecha}</p>
</div>
</div>
<p className="mt-8">Tabla de productos</p>
<div className="flex justify-center items-center w-full my-5">
<table className="rounded-lg bg-white text-center border-2 table-fixed w-full border-separate lg:border-collapse">
<thead className="border-2">
<tr>
<th className="border w-[7rem] font-semibold">Cantidad</th>
<th className="border font-semibold">Descripción</th>
<th className="border w-[8rem] font-semibold">Precio Unit.</th>
<th className="border w-[8rem] font-semibold">Importe</th>
</tr>
</thead>
<tbody>
{carrito.map(item => {
return (
<tr key={item["monturaInventario"]["codigo"]}>
<td className="border">{item["cantidad"]}</td>
<td className="border">{item["montura"]["nombre_montura"]}</td>
<td className="border">S/.{item["monturaInventario"]["precio_unit"]}</td>
<td className="border">S/.{item["monturaInventario"]["precio_unit"]*item["cantidad"]}</td>
</tr>
)
})}
<tr>
<td className="border">{1}</td>
<td className="border">detalle de lunas: {prescripcion[0]["detalle_lunas"]}</td>
<td className="border">S/.{parseFloat(precioLunas)}</td>
<td className="border">S/.{1*parseFloat(precioLunas)}</td>
</tr>
</tbody>
</table>
</div>
<div className="flex justify-between">
<p>Adelanto: S/.{adelanto}</p>
<p>Saldo: S/.{precioTotal-adelanto}</p>
<p>Total: S/.{precioTotal}</p>
</div>
</div>
<h3 className="text-center text-2xl text-bold mb-8">
¿Emitir boleta?
</h3>
<div className="flex gap-5">
<button
className="cursor-pointer py-2 w-1/2 bg-slate-300 hover:bg-slate-400 text-gray-700 font-semibold text-center rounded-md mt-2"
onClick={(e) => {
setModalBoleta(false)
}}
>
No
</button>
<button
type="submit"
className="w-1/2 mt-2 cursor-pointer py-2 bg-slate-700 hover:bg-slate-800 text-white font-semibold text-center rounded-md "
onClick={async (e) => {
const finalizarEmisionBoleta = async () => {
await procesarBoleta(precioTotal, carrito, adelanto, prescripcion[0]["id_prescripcion"], prescripcion[0]["detalle_lunas"], precioLunas );
// reiniciar precioTotal carrito, prescripcion,
await setPrecioTotal(0)
await setCarrito([])
await setPrescripcion([])
}
finalizarEmisionBoleta()
setBoletaEmitida(true)
}}
>
</button>
</div>
</div>
</div>
{boletaEmitida && (
<Navigate to="/" replace={true}/>
)}
</div>
);
};
export default ModalBoleta;