Comercializacion : 3 usuarios: Vendedor, Compras, finanzas # Línea Italia Portal - Instalación ## Requisitos Previos - PHP >= 8.2 - Composer - Node.js >= 18.x - NPM o Yarn - MySQL >= 8.0 - Laragon (ya instalado) ## Pasos de Instalación ### 1. Crear el Proyecto Laravel ```bash cd c:\laragon\www composer create-project laravel/laravel Comercializacion cd Comercializacion ``` ### 2. Instalar Inertia.js (Server-side) ```bash composer require inertiajs/inertia-laravel ``` ### 3. Instalar Dependencias Frontend ```bash npm install @inertiajs/vue3 npm install vue@^3.4 npm install -D @vitejs/plugin-vue npm install -D typescript npm install -D vue-tsc npm install -D @types/node ``` ### 4. Instalar Dependencias UI ```bash npm install lucide-vue-next npm install @headlessui/vue npm install @heroicons/vue npm install class-variance-authority npm install clsx npm install tailwind-merge ``` ### 5. Configurar TypeScript Crear `tsconfig.json` en la raíz del proyecto ### 6. Configurar Vite Actualizar `vite.config.js` para soportar Vue y TypeScript ### 7. Configurar Tailwind CSS ```bash npm install -D tailwindcss postcss autoprefixer npx tailwindcss init -p ``` ### 8. Configurar Base de Datos Editar `.env`: ```env DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=linea_italia_portal DB_USERNAME=root DB_PASSWORD= ``` ### 9. Crear Base de Datos En Laragon, crear la base de datos `linea_italia_portal` ### 10. Ejecutar Migraciones ```bash php artisan migrate ``` ### 11. Ejecutar Seeders (opcional) ```bash php artisan db:seed ``` ### 12. Compilar Assets ```bash npm run dev ``` ### 13. Iniciar Servidor ```bash php artisan serve ``` ## Estructura del Proyecto ``` Comercializacion/ ├── app/ │ ├── Http/ │ │ ├── Controllers/ │ │ │ ├── Solicitud/ │ │ │ ├── Propuesta/ │ │ │ ├── Dashboard/ │ │ │ └── Notificacion/ │ │ ├── Requests/ │ │ │ ├── Solicitud/ │ │ │ └── Propuesta/ │ │ └── Middleware/ │ ├── Models/ │ ├── Services/ │ │ ├── SolicitudService.php │ │ ├── PropuestaService.php │ │ ├── NotificacionService.php │ │ └── SkuService.php │ ├── Helpers/ │ ├── Traits/ │ └── Enums/ ├── database/ │ ├── migrations/ │ └── seeders/ ├── resources/ │ ├── js/ │ │ ├── Components/ │ │ │ ├── Solicitudes/ │ │ │ ├── Propuestas/ │ │ │ ├── Dashboard/ │ │ │ ├── Notificaciones/ │ │ │ └── Shared/ │ │ ├── Composables/ │ │ ├── Layouts/ │ │ ├── Pages/ │ │ ├── Types/ │ │ └── app.ts │ └── css/ └── routes/ └── web.php ``` ## Comandos Útiles ### Desarrollo ```bash npm run dev # Compilar assets en modo desarrollo php artisan serve # Iniciar servidor Laravel ``` ### Producción ```bash npm run build # Compilar assets para producción ``` ### Base de Datos ```bash php artisan migrate:fresh --seed # Resetear BD con datos de prueba php artisan migrate:rollback # Revertir última migración ``` ### Caché ```bash php artisan config:clear php artisan cache:clear php artisan route:clear php artisan view:clear ``` ## Usuarios de Prueba (después de seeders) - **Vendedor**: vendedor@lineaitalia.com / password - **Agente de Compras**: compras@lineaitalia.com / password - **Finanzas**: finanzas@lineaitalia.com / password - **Admin**: admin@lineaitalia.com / password ## Notas Importantes 1. **Conexiones Externas**: Las tablas `crm.deals`, `cotizacion.productos` y `cotizacion.cotizaciones` son referencias externas. Configurar las conexiones en `config/database.php` 2. **Factor de Precio**: El factor 1.2 es modificable por el agente de compras 3. **Notificaciones**: El sistema usa notificaciones en tiempo real. Considerar implementar Laravel Echo + Pusher/Socket.io en el futuro 4. **Roles**: El sistema maneja 4 roles principales: Vendedor, Agente de Compras, Finanzas, Admin PROMP : "me estan pidiendo un nuevo proyecto , yo uso normalmente laravel vue inertia con js , entiendo que ya esos paquetes neuvos de ienrtia vienen con typescript , no se si me ayudas a crear el proyecto , a otra ia le di el siguiente pormpt del proyecto : "1 - Los que van interactuar son: Vendedores, Agente de compra 2- El detonante es que el vendedor haga una solicitud para adquirir un producto comercializado 3- El agente de compras se entere por medio de notificaciones que tiene una nueva solicitud 4- El agente revise los datos proporcionados: caracteristicas del producto, links de referencia, imagenes, precio sugerido, proveedor sugerido, tiempos de entrega sugerido, el vendedor los puede proporcionar, excepto caracteristicas del producto y cantidades, ese si debe ser obligatorio 6- El agente de compras al recibir la notificacion debera actual en base a la informacion proporcionada y hacer su labor de investigacion, tener control de los dias en cola de la solicitud, de liberar la solicitud para que le llegeu notificacion al vendedor con los datos confirmados, es decir los campos similares al levantamiento del ejecutivo pero que pueda poner n numero de propuestas si se requiere en la aplicacion, stock con proveedores 7- Dasboard para ejecutivos y agentes de compras con la informacion mas relevante, esto estilo como Tarjetas donde vengan, solicitdes pendientes, solicitudes rechazadas, solicitudes con dudas, solicitudes liberadas, etc, igual sugiereme en base al contexto que te dare mas adelante. 8- Una vez liberada por parte de compras, el ejecutivo debera recibir una notificacion para que pueda revisar las propuestas. 9- Si la propuesta fue aceptada por parte del cliente, y al aceptar al cotizacion, esto debera crear una notificacion nuevamente a comprar y a Finanzas, con el objetivo que el producto comercializado sea procesado para pago 10- una vez pagado, el ejecutivo debera de recibir una notificacion para tener en cuenta la fecha de llegada de su producto Contexto: Somos Linea Italia, vendemos productos manufacturados y diseñamos espacios de trabajo , pero regularmente nuestros cliente nos piden proyectos donde estan incluidos productos que no vendedemos, pero para cumplir con el requisito de hacer todo lo que se renderizo, comparmos productos que no son de nuestra marca y ahi es entonces donde entra la parte que el vendedor puede sugerir apartir de algunos proveedores que tenemos de cabecera o darle las caracteristicas al agente de compra de comercializado para que investigue y encuentre un producto que cumpla las caracteristicas, si cumple, pasa a la cotizacion del vendedor, eso con la liberacion del producto por parte del agente de compras en donde aparte de lo mencionado en el punto 6, debe de liberar el precion de venta, es decir el costo del proveedor por un factor de 1.2, si el vendedor acepta y no rechaza la propuesta o las propuestas, solo debera de aceptar una claro esta si hay multiples, la pone en su cotizacion, la cotizacion si es aceptada por el cliente, notifica a compara para poder hacer la solicitud de compra en el ERP, para poderlo ingresarlo, el agente de comprar debera dar de alta un nuevo SKU propio de Linea Italia y este al liberarse, debera refrescar la cotizacion para sustituir al SKU temporal con la que se libero la cotizacion , adicional Finanzas debera de estar notificado para que pueda realizar el pago del producto A modo global seria contexto, condiciones y diseño en la s imagenes de referencia, quiero trabajar con azules oscuros, tonos grises, menus limpios, notificaciones en modulos donde pueds ver el proceso, puedes evaluar la info y luego si todo te parece logico lo implementamos en React o algo parecido?" y me hizo algunas pregutnas para arrancar y le di respuestas :"P: ¿El vendedor puede ver las propuestas de TODOS los vendedores o solo las suyas? R: Solo las propias P: ¿El factor 1.2 sobre el costo es fijo o el agente de compras puede ajustarlo? R: El agente puede modificarlo P: ¿Con qué ERP trabajan actualmente para la creación de SKUs? R: Otro / No integrar por ahora P: ¿Cuántos usuarios aproximados tendrá el sistema? R: 30-100" y me dio el siguiente jsx que podemos partir para formar la estructura del proeycto linea-italia-portal.jsx ; pero me falta instalar laravel .. primero instala laravel con inertia vue luego de eso podemos crear los modelos laravel a partir del formulario de la solicitud que hace el vendedor o ejecutivo tambien tener en cuenta para los modelos y las migraciones que habra una relacion con otro sistema llamado crm creo que especificamente de su tabla deals y una relacion con el sistema cotizacion (al que actualizaremos sku) e incluso con la tabla de ese mismo sistema de productos (crean los productos comercializados a elegir pero aun no investigo como es el tema para lograrlo pero hay que tener en cuenta paral os campos que relacionan con esas tablas externas) , un modelo para las propuestas que le añade el usuario de compras a la solicitud reviar los campos que añade para crear el modelo capaz de nombre propuestas y tambien tener en cuenta para la solicitud los campos que añade finanzas, las vistas por usuario solo son referencias cada usuario tendra sus condiciones de acceso segun su funcion ; entonces requiero crear el proyecto en laravel , las migraciones y la estructura vue funcional bien organizada usando componentes parecidos al codigo que me paso la otra ia revisar componentes , composables todo bien estructurado por modulos. en el back usar pdo con servicios helpers requests y clases para que la logica no sea centralizada en el controlador si es necesario usar trais de lso modelos si lo ves conveniente y obviamente dame los pasos de instalacion para laravel vue inertia moderno @terminal:powershell lo ya instalado por cierto chequea los warnings de los npm comandos como si necesito actualizar?? responde en español porfavor y en @instrucciones.txt estan los pasos que me faltan para terminar el proyecto segun tus sugerencias. "