diff --git a/README.md b/README.md index 13778698e..436c0f7af 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ # FactuClient +Image Invoice + **FactuClient** es una aplicación de gestión diseñada para facilitar la creación, visualización y manejo de albaranes y facturas de clientes. Los usuarios pueden crear perfiles de clientes, gestionar sus datos, generar facturas a partir de albaranes existentes, y descargar o compartir estas facturas y albaranes en formato PDF. Este proyecto es parte del proyecto final del BootCamp de ISDICODERS. ## Tecnologías Utilizadas @@ -42,14 +44,14 @@ 2. **Instalar las dependencias del frontend:** ```bash - cd client + cd factuclient npm install ``` 3. **Instalar las dependencias del backend:** ```bash - cd ../server + cd ../api npm install ``` @@ -65,13 +67,14 @@ 5. **Iniciar el servidor:** ```bash - npm run dev + cd api + npm run start ``` 6. **Iniciar el frontend:** ```bash - cd client + cd factuclient npm run dev ``` @@ -89,7 +92,7 @@ Una vez que el servidor y el frontend están en funcionamiento, puedes acceder a ``` FactuClient/ -├── api/ # Código fuente del backend +├── api/ │ ├── coverage/ # Reportes de cobertura de pruebas │ ├── handlers/ # Manejadores de rutas y lógica de controladores │ ├── logic/ # Lógica de negocio y funciones utilitarias @@ -98,7 +101,8 @@ FactuClient/ │ ├── utils/ # Funciones utilitarias y helpers │ ├── routes.js # Definición de las rutas de la API │ └── server.js # Configuración e inicio del servidor -├── doc/ # Documentación adicional del proyecto +├── doc/ # Documentacion proyecto modelo de datos +├── com/ # Package validate, errors. ├── FactuClient/ # Código fuente del frontend │ ├── dist/ # Archivos estáticos generados para producción │ ├── public/ # Recursos públicos, como imágenes y favicons diff --git a/staff/jose-canto/project/FactuClient/src/components/PasswordField/index.jsx b/staff/jose-canto/project/FactuClient/src/components/PasswordField/index.jsx new file mode 100644 index 000000000..7f849a3d6 --- /dev/null +++ b/staff/jose-canto/project/FactuClient/src/components/PasswordField/index.jsx @@ -0,0 +1,22 @@ +import { useState } from "react" +import { MdVisibility, MdVisibilityOff } from "react-icons/md" +import Field from "../core/Field" + +const PasswordField = ({ id, placeholder }) => { + const [showPassword, setShowPassword] = useState(false) + + const togglePasswordVisibility = () => { + setShowPassword(!showPassword) + } + + return ( +
+ + + {showPassword ? : } + +
+ ) +} + +export default PasswordField diff --git a/staff/jose-canto/project/FactuClient/src/components/view/DeliveryInfo.jsx b/staff/jose-canto/project/FactuClient/src/components/view/DeliveryInfo.jsx index 69dc3fa7c..c64ea5be8 100644 --- a/staff/jose-canto/project/FactuClient/src/components/view/DeliveryInfo.jsx +++ b/staff/jose-canto/project/FactuClient/src/components/view/DeliveryInfo.jsx @@ -22,6 +22,8 @@ import logic from "../../logic/index" import "./DeliveryInfo.css" export default function DeliveryInfo() { + const { alert } = useContext() + const navigate = useNavigate() const { deliveryNoteId } = useParams() const [deliveryNote, setDeliveryNote] = useState(null) @@ -37,9 +39,7 @@ export default function DeliveryInfo() { setDeliveryNote(deliveryNote) const calculateTotal = deliveryNote.works.reduce( - (accumulator, work) => accumulator + work.quantity * work.price, - 0 - ) + (accumulator, work) => accumulator + work.quantity * work.price, 0) setTotal(calculateTotal) }) .catch((error) => { @@ -85,9 +85,13 @@ export default function DeliveryInfo() {
- {deliveryNote?.customer &&

{deliveryNote.customer.companyName}

} - {deliveryNote?.customer &&

{deliveryNote.customer.address}

} - {deliveryNote?.customer &&

{deliveryNote.customer.taxId}

} + {deliveryNote?.customer && ( + + )}
diff --git a/staff/jose-canto/project/FactuClient/src/components/view/InvoiceInfo.jsx b/staff/jose-canto/project/FactuClient/src/components/view/InvoiceInfo.jsx index 9d467b774..7d54b08c9 100644 --- a/staff/jose-canto/project/FactuClient/src/components/view/InvoiceInfo.jsx +++ b/staff/jose-canto/project/FactuClient/src/components/view/InvoiceInfo.jsx @@ -82,20 +82,28 @@ export default function InvoiceInfo() {
- {invoice?.company &&

{invoice.company.companyName}

} - {invoice?.company &&

{invoice.company.address}

} - {invoice?.company &&

{invoice.company.taxId}

} - {invoice?.company &&

{invoice.company.email}

} - {invoice?.company &&

{invoice.company.phone}

} + {invoice?.company && ( +
    +
  • {invoice.company.companyName}
  • +
  • {invoice.company.address}
  • +
  • {invoice.company.taxId}
  • +
  • {invoice.company.email}
  • +
  • {invoice.company.phone}
  • +
+ )}

DATOS CLIENTE:

- {invoice?.customer &&

{invoice.customer.companyName}

} - {invoice?.customer &&

{invoice.customer.address}

} - {invoice?.customer &&

{invoice.customer.taxId}

} - {invoice?.customer &&

{invoice.customer.email}

} - {invoice?.customer &&

{invoice.customer.phone}

} + {invoice?.customer && ( +
    +
  • {invoice.customer.companyName}
  • +
  • {invoice.customer.address}
  • +
  • {invoice.customer.taxId}
  • +
  • {invoice.customer.email}
  • +
  • {invoice.customer.phone}
  • +
+ )}
diff --git a/staff/jose-canto/project/FactuClient/src/components/view/Login.jsx b/staff/jose-canto/project/FactuClient/src/components/view/Login.jsx index 806c6090d..f88de09ff 100644 --- a/staff/jose-canto/project/FactuClient/src/components/view/Login.jsx +++ b/staff/jose-canto/project/FactuClient/src/components/view/Login.jsx @@ -12,6 +12,7 @@ import Button from "../core/Button" import Field from "../core/Field" import Main from "../core/Main" import Footer from "../core/Footer" +import PasswordField from "../PasswordField" export default function Login() { const { alert } = useContext() @@ -64,7 +65,7 @@ export default function Login() {
- +
diff --git a/staff/jose-canto/project/FactuClient/src/components/view/Register.jsx b/staff/jose-canto/project/FactuClient/src/components/view/Register.jsx index 8a7bf3361..588588dcb 100644 --- a/staff/jose-canto/project/FactuClient/src/components/view/Register.jsx +++ b/staff/jose-canto/project/FactuClient/src/components/view/Register.jsx @@ -9,6 +9,7 @@ import Title from "../Title" import Field from "../core/Field" import Button from "../core/Button" import Main from "../core/Main" +import PasswordField from "../PasswordField" import Footer from "../core/Footer" import "./Register.css" @@ -59,8 +60,8 @@ export default function Register() { - - + +