{"id":15541369,"url":"https://github.com/ivov/admin-stock","last_synced_at":"2025-04-23T17:08:31.921Z","repository":{"id":103104889,"uuid":"219080390","full_name":"ivov/admin-stock","owner":"ivov","description":"Stock-management desktop app for an electronics company, built with Python, Qt and SQLite. First ever project!","archived":false,"fork":false,"pushed_at":"2022-02-01T10:27:53.000Z","size":1144,"stargazers_count":21,"open_issues_count":1,"forks_count":6,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-23T17:08:13.060Z","etag":null,"topics":["pyqt5","python","sqlite"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ivov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2019-11-02T00:04:26.000Z","updated_at":"2025-03-10T11:19:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"566dd75c-397f-4a44-8ed2-39f2b3182f57","html_url":"https://github.com/ivov/admin-stock","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivov%2Fadmin-stock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivov%2Fadmin-stock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivov%2Fadmin-stock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivov%2Fadmin-stock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ivov","download_url":"https://codeload.github.com/ivov/admin-stock/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250477812,"owners_count":21437049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["pyqt5","python","sqlite"],"created_at":"2024-10-02T12:16:50.557Z","updated_at":"2025-04-23T17:08:31.912Z","avatar_url":"https://github.com/ivov.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# admin-stock\n\n![](https://img.shields.io/badge/version-1.0.0-blue) ![](https://img.shields.io/github/last-commit/ivov/admin-stock) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nStock-management desktop app for an electronics company.\n\nBuilt with Python, Qt and SQLite. First ever project!\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo/python.png\" width=\"120\"\u003e\n    \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n    \u003cimg src=\"demo/qt.svg\" width=\"150\"\u003e\n    \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n    \u003cimg src=\"demo/sqlite.png\" width=\"250\"\u003e\n\u003c/p\u003e\n\n## Overview\n\nDesktop app for managing a company's stock of electronic components—stored at local and remote sites—through incoming and outgoing operations based on production reports. It relies on a lightweight database, uses modular components and offers various logging and configuration options.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo/overview.gif\"\u003e\n\u003cp\u003e\n\nFeatures:\n\n- Basic CRUD ops for components and product recipes\n- Stock calculation for incoming and outgoing ops\n- Logs for components, movements and configs\n- Storage in SQL and system registry settings\n- Reports exported as Excel spreadsheets\n- Autocompletion, coloring, filtering\n\n## Installation\n\n1. Install [Python 3.7](https://www.python.org/downloads/)\n2. Get package manager: `pip install pipenv`\n3. Clone repo and get dependencies: `pipenv install`\n4. Run: `pipenv run fbs run`\n\n## Operation\n\nThe app displays a main table with all components and their four stock levels: total, local at `Depósito` and three remotes at assemblers. Secondary tables for logs are available at `Cuadros secundarios`. Data is read from a db at `src/main/resources/comp_stock.db` and is summarized inside the status bar at the bottom.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo/operation-intro.png\"\u003e\n\u003cp\u003e\n\n### Adding components to local stock\n\nPress `Ingreso de componentes` and select `Ingreso a Depósito`. Enter the packing list number in `Remito`, the supplier name in `Proveedor` and an optional note in `Nota`. Enter component names and incoming amounts and press `Ejecutar`.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo/incoming.png\"\u003e\n\u003cp\u003e\n\n### Issuing a production report\n\nA **production report** is an Excel spreadsheet containing the products to be manufactured, the components needed, the components to be sent to the assembler considering their stock, and the number of components actually sent.\n\nPress `Informe de producción`. Enter an identification code in `Código` (prefixed by the letter `K`, `B` or `T` based on the assembler's initial). Enter product names and production amounts. Press `Calcular` to preview the needed components and their total amounts. Press `Ejecutar` to issue a production report as an Excel spreadsheet into the `output` directory.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo/production_report.png\"\u003e\n\u003cp\u003e\n\n### Moving stock from local to assembler\n\n**Important**: The final column of the production report needs to be filled in by an employee before executing this operation.\n\nPress `Egreso de componentes` and select `Egreso a armador`. Press `Seleccionar informe...` to select a production report (`INFORME DE PRODUCCIÓN`) from the `output` directory. Press `Ejecutar`.\n\nFor each component listed in the report, the outgoing amount is subtracted from local stock and added to assembler's stock (according to the report prefix). Finally, the amounts needed for production are subtracted from the assembler's stock.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo/outgoing.png\"\u003e\n\u003cp\u003e\n\n### Moving stock from local to internal use\n\nPress `Egreso de componentes` and then `Egreso interno`. Enter component names and outgoing amounts and press `Ejecutar`.\n\nFor the listed components, the outgoing amounts will be subtracted from local stock. Use this function for taking components out of stock for making experimental prototypes or samples for trade shows.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo/internal_use.png\"\u003e\n\u003cp\u003e\n\n### Creating, editing and deleting a component\n\nTo create a component, Press `Ingreso de componentes` and select `Crear componente`. Enter the component name and an optional initial amount and press `Ejecutar`.\n\nTo edit a component, Press `Ingreso de componentes` and select `Editar componente`. Search for, or double Press, a component. Enter a new name for the component and press `Ejecutar`.\n\nTo delete a component, Press `Ingreso de componentes` and select `Borrar componente`. Search for a component and press `Ejecutar`.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo/component_create.png\"\u003e\n    \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n    \u003cimg src=\"demo/component_edit.png\"\u003e\n    \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n\u003c/p\u003e\n\n### Viewing component details\n\nTo view all the details logged for a component, double click on a component name in the main table. Press `Exportar detalles` to export them as an Excel spreadsheet into the `output` directory.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo/component_details.png\"\u003e\n\u003cp\u003e\n\n### Creating, editing and deleting a recipe\n\nA **recipe** is a collection of components that make up a product.\n\nTo create a recipe, Press `Recetas de productos` and select `Crear receta`. Enter the component name and an optional initial amount and press `Ejecutar`.\n\nTo edit a recipe, Press `Recetas de productos` and select `Editar receta`. Search for, or double Press, a component. Enter a new name for the component and press `Ejecutar`.\n\nTo delete a recipe, Press `Recetas de productos` and select `Borrar receta`. Search for a component and press `Ejecutar`.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo/recipe_create.png\"\u003e\n    \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n    \u003cimg src=\"demo/recipe_edit.png\"\u003e\n\u003c/p\u003e\n\n## Configuration\n\n### Coloring critical components\n\n**Critical components** are those with total stock below a critical amount set by the user.\n\nPress `Cuadro de inventario` and select `Resaltar críticos`. Press `Agregar` to add component names and amounts and press `Guardar` to save. Critical components will be colored orange in the main table.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo/critical_components.png\"\u003e\n\u003cp\u003e\n\n### Coloring excluded components\n\n**Excluded components** are those not included in any product recipe.\n\nPress `Cuadro de inventario` and select `Componentes excluidos`. To have them colored in yellow in the main table, tick the checkbox `Resaltar excluidos en amarillo`.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo/excluded_components.png\"\u003e\n\u003cp\u003e\n\n### Exporting the main table\n\nPress `Cuadro de inventario` and select `Exportar datos` to export the main table as an Excel spreadsheet into the `output` directory.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo/excel_export.png\"\u003e\n\u003cp\u003e\n\n### Viewing movement logs\n\nPress `Cuadros secundarios` and select `Movimientos`. Filter by time period, movement (incoming or outgoing operation), component name, destination and username. Press `Borrar historial` to delete the records. Press `Exportar historial` to export the records as an Excel spreadsheet into the `output` directory.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo/movement_logs.png\"\u003e\n\u003cp\u003e\n\n### Viewing configuration logs\n\nPress `Cuadros secundarios` and select `Configuraciones`. Filter by time period, movement (incoming or outgoing operation), component name, destination and username. Press `Borrar historial` to delete the records. Press `Exportar historial` to export the records as an Excel spreadsheet into the `output` directory.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo/configuration_logs.png\"\u003e\n\u003cp\u003e\n\n### Selecting a database\n\nPress `Base de datos` and select `Cambiar base`. Press `Examinar...` to select a new database and finally `Guardar`.\n\nIf the path to the location becomes broken because the database is moved from the directory or deleted, the user will be prompted to select a new location.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo/db_select.png\"\u003e\n\u003cp\u003e\n\n### Backup and user renaming\n\nPress `Base de datos`, select `Respaldar base` and confirm. The backup database will be named like the original database plus the backup execution date and time.\n\nPress `Base de datos`, select `Editar usuario` and enter a new name for the user. This username will be reflected in the status bar and in the secondary tables `Movimientos` and `Configuraciones`.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"demo/db_backup.png\"\u003e\n    \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n    \u003cimg src=\"demo/rename_user.png\"\u003e\n\u003c/p\u003e\n\n### Shortcuts\n\n| Keys            | Action                                                  |\n| --------------- | ------------------------------------------------------- |\n| `Alt+1`         | `Ingreso de componentes` toolbutton on left-hand column |\n| `Alt+2`         | `Informe de producción` toolbutton on left-hand column  |\n| `Alt+3`         | `Egreso de componentes` toolbutton on left-hand column  |\n| `Alt+4`         | `Recetas de productos` toolbutton on left-hand column   |\n| `Alt+5`         | `Base de datos` toolbutton on left-hand column          |\n| `Alt+[initial]` | Action button in modal dialog, based on initial         |\n| `Alt+x`         | Export action button in modal dialog                    |\n\n## Author\n\n© 2019 Iván Ovejero\n\n## License\n\nDistributed under the MIT License. See [LICENSE.md](LICENSE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivov%2Fadmin-stock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fivov%2Fadmin-stock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivov%2Fadmin-stock/lists"}