{"id":29311562,"url":"https://github.com/cnelfalk/farmanaccio","last_synced_at":"2026-03-09T00:34:14.189Z","repository":{"id":296450039,"uuid":"993432855","full_name":"cnelfalk/farmanaccio","owner":"cnelfalk","description":"Sistema informático programado en Python para utilizarse en una farmacia.","archived":false,"fork":false,"pushed_at":"2025-07-04T04:48:56.000Z","size":1727,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-04T05:34:11.247Z","etag":null,"topics":["customtkinter","json","mysql-database","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cnelfalk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-30T19:29:06.000Z","updated_at":"2025-07-04T04:48:59.000Z","dependencies_parsed_at":"2025-05-31T04:47:05.076Z","dependency_job_id":"8716ad05-2f6a-47b9-b922-dddfe1222cd0","html_url":"https://github.com/cnelfalk/farmanaccio","commit_stats":null,"previous_names":["cnelfalk/farmanaccio"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cnelfalk/farmanaccio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnelfalk%2Ffarmanaccio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnelfalk%2Ffarmanaccio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnelfalk%2Ffarmanaccio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnelfalk%2Ffarmanaccio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cnelfalk","download_url":"https://codeload.github.com/cnelfalk/farmanaccio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cnelfalk%2Ffarmanaccio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30278559,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-08T20:45:49.896Z","status":"ssl_error","status_checked_at":"2026-03-08T20:45:49.525Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["customtkinter","json","mysql-database","python"],"created_at":"2025-07-07T08:15:10.557Z","updated_at":"2026-03-09T00:34:14.165Z","avatar_url":"https://github.com/cnelfalk.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/b03bca29-a15a-48b0-bd9f-8574b5d9da7c\" alt=\"FarmaNaccio (Logotipo)\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Python%20-%203.13%20-%20%23FFC92B\" alt=\"Python\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/UI%20-%20CustomTkinter%20-%20%23446DFF\" alt=\"CustomTkinter\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/mysql-4479A1.svg?style=for-the-badge\u0026logo=mysql\u0026logoColor=white\" alt=\"MySQL\"\u003e\n\u003c/p\u003e\n\n## Dependencias externas\n* [mysql-connector-python](https://pypi.org/project/mysql-connector-python/)\n* [customtkinter](https://pypi.org/project/customtkinter/)\n* [CTkMessagebox](https://pypi.org/project/CTkMessagebox/)\n* [Pillow](https://pypi.org/project/pillow/)\n* [docxtpl](https://pypi.org/project/docxtpl/)\n* [docx2pdf](https://pypi.org/project/docx2pdf/)\n* [python-docx](https://pypi.org/project/python-docx/)\n\n## Síntesis\nSistema informático programado en Python para utilizarse en el contexto de una farmacia.  \nFarmaNaccio integra gestión de usuarios, clientes, stock e inventario, y ventas, con una interfaz moderna desarrollada con CustomTkinter.\n\nEste proyecto se ha realizado aplicando la metodología ágil \"Programación Extrema\" (XP) utilizando [Trello](https://trello.com/).\n\n## Participantes\n- **Alumnos (Programadores):**\n  - Matías Daniel Chiacchio\n  - Luis Ariel Espinoza\n  - Fabrizio Manuel Mansilla\n\n- **Profesores:**\n  - Cristian Fernando Cerquand\n  - Johanna Motta\n\n# Manual de Usuario\n\n## 1. Inicio Rápido\n\n1. **Inicie XAMPP:**  \n   Antes de ejecutar el programa, abra XAMPP (o asegúrese de que el servicio MySQL esté activo).\n\n2. **Ejecute la Aplicación:**  \n   Ejecute `principal.py` desde el directorio raíz del proyecto.  \n   En la primera ejecución, se crean la base de datos y las tablas necesarias, y se realiza la migración del vademécum.\n\n---\n\n## 2. Pantalla de Login\n\nLa **Pantalla de Login** es la puerta de entrada a FarmaNaccio:\n\n- **Campos de Usuario y Contraseña:**  \n  Ingrese sus credenciales. Si se dejan campos vacíos, aparecerá una advertencia.\n  \n- **Botón \"Ingresar\":**  \n  Valida las credenciales consultando la base de datos.\n\n- **Botón de Salida (\"×\"):**  \n  Ubicado en la esquina superior (ahora posicionado en la parte superior derecha conforme a los ajustes de estilo), permite cerrar la aplicación.\n\n---\n\n## 3. Ventana Principal\n\nTras un inicio de sesión exitoso se desplegará la **Ventana Principal**, la cual centraliza el acceso a los módulos del sistema:\n\n- **Menú de Usuario:**  \n  - Muestra el usuario activo.\n  - Al hacer clic se despliega un menú con las opciones de agregar/administrar usuarios y cerrar sesión.  \n  - El módulo de administración permite filtrar entre usuarios activos/inactivos y actualizar el rol al restaurar usuarios inactivos.\n\n- **Acceso a Módulos:**  \n  En el área central se encuentran botones para:\n  - **Control de Stock**\n  - **Gestión de Ventas**\n  - **Gestión de Clientes**\n\n---\n\n## 4. Gestión de Usuarios\n\nPermite administrar los usuarios del sistema:\n\n### Agregar Usuario\n\n- Seleccione **\"(+) Agregar usuario\"** desde el menú.\n- Complete el formulario (Nombre de Usuario, Contraseña –con opción de mostrar/ocultar– y Rol).\n- Pulse **\"Guardar\"**.  \n  Se valida que la contraseña tenga al menos 5 caracteres y que los campos obligatorios estén completos.\n\n### Administrar Usuarios\n\n- Seleccione **\"Administrar usuarios\"** para ver la lista de usuarios en una tabla.\n- Funciones adicionales:\n  - **Filtrado por Estado:** permite cambiar entre usuarios activos e inactivos.\n  - **Modificar y Eliminar:** Realice cambios en usuarios activos.\n  - **Restaurar Usuario:** Desde el listado de usuarios inactivos se puede restaurar a un usuario, actualizando también el rol según lo seleccionado en el combobox.\n\n---\n\n## 5. Gestión de Clientes\n\nEl módulo de clientes permite gestionar los datos de sus clientes.\n\n### Registro y Consulta\n\n- Acceda a través del botón **\"Gestión de Clientes\"**.\n- La pantalla muestra:\n  - Un campo de búsqueda para filtrar clientes por **Nombre, Apellido o CUIL**.\n  - Una tabla con clientes registrados (ID, Nombre, Apellido, CUIL, Teléfono, Email y Dirección).\n\n### Edición y Eliminación\n\n- Seleccione un cliente para cargar sus datos.\n- Use las opciones **Modificar** o **Eliminar** (previa confirmación) para actualizar los registros.\n\n---\n\n## 6. Control de Stock\n\nPermite el control y actualización del inventario:\n\n### Consulta y Búsqueda\n\n- Abra la **Ventana de Stock**.\n- Se muestra una tabla con productos, incluyendo **ID, Nombre, Precio y Stock**.\n- Un campo de búsqueda permite filtrar productos.\n\n### Alta y Actualización\n\n- Para **Agregar** un producto, complete el formulario con Nombre, Precio y Stock.\n- Si el producto existe, se suma la nueva cantidad al stock actual y se actualiza el precio (con diálogo de conflicto, si es necesario).\n\n### Eliminación\n\n- Seleccione un producto y, tras una confirmación, elimínelo del inventario.\n\n---\n\n## 7. Gestión de Ventas\n\nEste módulo abarca el proceso de venta completo, de la selección de productos a la generación de documentos.\n\n### Creación y Gestión del Carrito\n\n- Desde el **Panel de Productos**, seleccione el producto deseado y ajuste la **cantidad**.\n- Pulse **\"Agregar al Carrito\"** para incluirlo en la compra.\n- En el **Panel del Carrito** se detalla el listado de productos (ID, Producto, Precio Unitario, Cantidad y Subtotal).\n- Se ofrecen controles para modificar o eliminar productos del carrito, incluyendo la aplicación de descuentos.\n\n### Confirmación de Venta\n\n- Al pulsar **\"Confirmar Venta\"**, el sistema valida stock y actualiza la base de datos, descontando unidades de los lotes.\n- Se genera una factura utilizando una plantilla DOCX (convertida a PDF para su descarga).\n- Opcionalmente, si se configura la generación de remito, se genera y asocia a un cliente.\n\n### Requisitos Adicionales para Facturación y Remitos\n\n**Importante:**  \nPara la **generación de facturas y remitos** se requiere que el usuario tenga instalado Microsoft Word y que este se haya abierto recientemente, ya que la conversión de DOCX a PDF depende de la funcionalidad de Word.\n\n---\n\n## Instalación y Ejecución\n\n1. **Base de Datos:**  \n   Asegúrese de que MySQL (o XAMPP) esté en funcionamiento.\n\n2. **Inicialización:**  \n   Ejecute `principal.py` desde el directorio raíz del proyecto.  \n   En la primera ejecución se crearán la base de datos y las tablas, y se migrarán los registros del vademécum.\n\n3. **Inicio de Sesión:**  \n   Inicie sesión con sus credenciales.  \n   Los administradores tienen acceso a funcionalidades ampliadas (gestión de usuarios).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcnelfalk%2Ffarmanaccio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcnelfalk%2Ffarmanaccio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcnelfalk%2Ffarmanaccio/lists"}