How jorgenio/pandasoft works
Purpose and entry point
PandaSoft is a desktop business-management application, likely for branch, warehouse, product, employee, user, consignment, and sales operations. The Qt application starts in main.cpp, with the main application window/controller represented by pandasoft.cpp, pandasoft.h, and pandasoft.ui.
Qt desktop composition
The repository is a Qt Widgets project: each major screen is implemented as a C++ class paired with a Qt Designer form. The build/resource boundary is defined by pandasoft.pro and pandasoft.qrc. UI behavior is therefore event-driven through widget actions, dialogs, and screen navigation rather than an HTTP or service API.
Main operational modules
Management (“g*”) screens form the primary operational workspace:
• Sales: gventas.cpp, gventas.h, gventas.ui
• Inventory/warehouse: galmacen.cpp, galmacen.h, galmacen.ui
• Consignments and recipients: gconsignaciones.cpp, gconsignatarios.cpp
• Product, employee, branch, zone, and user administration: gproductos.cpp, gempleados.cpp, gsucursal.cpp, gzonas.cpp, gusuarios.cpp
These modules likely coordinate listing, selection, and navigation into entity-editing dialogs.
Entity editing boundary
Entity-specific editor dialogs (“e*”) isolate create/update workflows from management screens. Core examples are eproducto.cpp, eempleado.cpp, esucursal.cpp, eusuario.cpp, ezona.cpp, and econsignatarios.cpp. dventas.cpp is the specialized sales-detail/editing workflow. This is the principal boundary where user-entered form state is validated and persisted.
Data access and persistence
database.h is the repository’s explicit persistence integration point and should be treated as the shared database contract. UI modules appear to access business records directly through this layer; no separate domain-model, API-server, or migration layer is visible in the tree. Database lifecycle, query ownership, and error propagation should be traced from database.h into pandasoft.cpp and the g*/e* modules before modifying data behavior.
Reporting and document output
Reporting is a distinct subsystem rather than part of the transactional screens. greportes.cpp provides report selection or orchestration, while report-specific views include ralmacen.cpp, rventas.cpp, rconsignaciones.cpp, and entity reports such as rproducto.cpp, rempleado.cpp, and rsucursal.cpp. tdpreviewdialog.cpp supplies a preview-dialog boundary for rendered report/document output.
Cross-cutting UI services
mensajebox.cpp centralizes application messaging/confirmation behavior and is likely used for validation failures and operation feedback. aboutpandasoft.cpp provides application metadata/about presentation. These should remain UI services, not persistence or business-operation owners.
Main entry points: database.h Database contract · pandasoft.cpp Main window · greportes.cpp Report selection · eproducto.cpp Entity editor dialogs
Components 19
Application shell
- Qt build & resources · Defines application build inputs and bundled resources.
pandasoft.pro - Application entry
main.cpp - Main window · Hosts navigation and database lifecycle coordination.
pandasoft.cpp - Message service
mensajebox.cpp - About dialog
aboutpandasoft.cpp
Operations workspace
- Sales management
gventas.cpp - Warehouse management
galmacen.cpp - Consignments management
gconsignaciones.cpp - Recipients management
gconsignatarios.cpp - Master-data management · Products, employees, branches, zones, and users.
gproductos.cpp
Entity editing
- Sales detail editor
dventas.cpp - Entity editor dialogs · Product, employee, branch, user, zone, and recipient forms.
eproducto.cpp
Reporting
- Report selection
greportes.cpp - Warehouse report
ralmacen.cpp - Sales report
rventas.cpp - Consignments report
rconsignaciones.cpp - Entity reports · Product, employee, and branch report views.
rproducto.cpp - Document preview · Displays rendered report or document output.
tdpreviewdialog.cpp
Other components
- Database contract · Shared UI-facing database access boundary.
database.h
Connections 34
- Qt build & resources → Application entry: builds
- Application entry → Main window: starts
- Main window → Database contract: initializes access
- Main window → Sales management: navigates to
- Main window → Warehouse management: navigates to
- Main window → Consignments management: navigates to
- Main window → Recipients management: navigates to
- Main window → Master-data management: navigates to
- Main window → Report selection: opens
- Main window → About dialog: opens
- Sales management → Sales detail editor: edits sale
- Master-data management → Entity editor dialogs: opens editors
- Recipients management → Entity editor dialogs: opens editor
- Sales management → Database contract: reads and writes
- Warehouse management → Database contract: reads and writes
- Consignments management → Database contract: reads and writes
- Recipients management → Database contract: reads and writes
- Master-data management → Database contract: reads and writes
- Sales detail editor → Database contract: persists sale details
- Entity editor dialogs → Database contract: validates and persists
- Report selection → Warehouse report: selects
- Report selection → Sales report: selects
- Report selection → Consignments report: selects
- Report selection → Entity reports: selects
- Warehouse report → Database contract: queries
- Sales report → Database contract: queries
- Consignments report → Database contract: queries
- Entity reports → Database contract: queries
- Warehouse report → Document preview: renders to
- Sales report → Document preview: renders to
- Consignments report → Document preview: renders to
- Entity reports → Document preview: renders to
- Entity editor dialogs → Message service: shows validation feedback
- Sales detail editor → Message service: shows operation feedback