# ericklopez-tech/viaticpro architecture

> Architecture diagram of the GitHub repository ericklopez-tech/viaticpro, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ericklopez-tech/viaticpro
- Repository: https://github.com/ericklopez-tech/viaticpro

## Overview

ViaticPro is a Java Swing desktop application for employee travel allowances. Users log in, enter the home screen, and manage employees, allowance types, and master-detail liquidations; the system validates meal eligibility against departure and arrival times. Users can also view date/employee-filtered reports and an operation log. The code is described as presentation, business logic, and data layers; the supplied excerpts and source index support those boundaries, but do not establish persistent storage beyond in-memory lists. Some panel-to-logic links are based on source-index references rather than inspected event-handler code.

Main entry points: [`ViaticPro/src/Presentacion/FrmHome.java`](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/FrmHome.java) (Home navigation), [`ViaticPro/src/Logica/MetodosBitacora.java`](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Logica/MetodosBitacora.java) (Audit operations), [`ViaticPro/src/Presentacion/FrmLogin.java`](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/FrmLogin.java) (Login), [`ViaticPro/src/Presentacion/PnlLiquidacion.java`](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/PnlLiquidacion.java) (Settlement UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_presentation["Desktop interface"]
  node_login["Login<br/>[FrmLogin.java]"]
  node_home["Home navigation<br/>[FrmHome.java]"]
  node_employees_ui["Employees UI<br/>[PnlEmpleados.java]"]
  node_users_ui["Users UI<br/>[PnlUsuarios.java]"]
  node_allowance_ui["Allowance UI<br/>[PnlViaticos.java]"]
  node_settlement_ui["Settlement UI"]
end

subgraph group_business["Business logic"]
  node_user_logic["User operations"]
  node_employee_logic["Employee operations"]
  node_allowance_logic["Allowance operations"]
  node_settlement_logic["Settlement rules"]
  node_audit_logic["Audit operations"]
end

subgraph group_data["Domain and state"]
  node_records["Domain records"]
  node_users_store[("User list")]
  node_employees_store[("Employee list<br/>[Estructuras.java]")]
  node_allowances_store[("Allowance list")]
  node_settlements_store[("Settlement list")]
  node_audit_store[("Audit log")]
end

subgraph group_insights["Reports and audit"]
  node_employee_report["Employee reports<br/>[PnlRepCFech.java]"]
  node_allowance_report["Allowance reports<br/>[PnlRepCViati.java]"]
  node_audit_report["Audit report"]
end

node_user(("Operator"))

node_user -->|"signs in"| node_login
node_login -->|"checks credentials"| node_user_logic
node_login -->|"opens after login"| node_home
node_home -->|"navigates to"| node_employees_ui
node_home -->|"navigates to"| node_users_ui
node_home -->|"navigates to"| node_allowance_ui
node_home -->|"navigates to"| node_settlement_ui
node_home -->|"navigates to"| node_employee_report
node_home -->|"navigates to"| node_allowance_report
node_home -->|"navigates to"| node_audit_report
node_login -->|"reads users"| node_users_store
node_employees_ui -->|"uses operations"| node_employee_logic
node_users_ui -->|"uses operations"| node_user_logic
node_allowance_ui -->|"uses operations"| node_allowance_logic
node_settlement_ui -->|"validates and manages"| node_settlement_logic
node_employee_report -->|"filters records"| node_settlement_logic
node_allowance_report -->|"queries records"| node_settlement_logic
node_audit_report -->|"reads log"| node_audit_store
node_user_logic -->|"queries users"| node_users_store
node_employee_logic -->|"queries employees"| node_employees_store
node_allowance_logic -->|"uses allowance list"| node_allowances_store
node_settlement_logic -->|"filters and validates"| node_settlements_store
node_settlement_ui -->|"adds or edits"| node_settlements_store
node_records -->|"models master-detail"| node_settlements_store
node_audit_logic -->|"allocates log IDs"| node_audit_store
node_audit_store -->|"stores entries"| node_records
node_employees_ui -->|"uses audit IDs"| node_audit_logic
node_users_ui -->|"uses audit IDs"| node_audit_logic
node_allowance_ui -->|"uses audit IDs"| node_audit_logic
node_settlement_ui -->|"uses audit operations"| node_audit_logic

click node_login "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/FrmLogin.java"
click node_home "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/FrmHome.java"
click node_employees_ui "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/PnlEmpleados.java"
click node_users_ui "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/PnlUsuarios.java"
click node_allowance_ui "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/PnlViaticos.java"
click node_settlement_ui "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/PnlLiquidacion.java"
click node_employee_report "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/PnlRepCFech.java"
click node_allowance_report "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/PnlRepCViati.java"
click node_audit_report "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/PnlReportesBita.java"
click node_user_logic "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Logica/MetodosUsuarios.java"
click node_employee_logic "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Logica/MetodosEmpleado.java"
click node_allowance_logic "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Logica/MetodosViatico.java"
click node_settlement_logic "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Logica/MetodosLiquidaciones.java"
click node_audit_logic "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Logica/MetodosBitacora.java"
click node_records "https://github.com/ericklopez-tech/viaticpro/tree/main/ViaticPro/src/Datos"
click node_users_store "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Datos/EstructuraUsuarios.java"
click node_employees_store "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Datos/Estructuras.java"
click node_allowances_store "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Datos/EstructuraViaticos.java"
click node_settlements_store "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Datos/EstructuraLiquidacion.java"
click node_audit_store "https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Datos/EstructuraBitacora.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_login,node_home,node_employees_ui,node_users_ui,node_allowance_ui,node_settlement_ui toneBlue
class node_user_logic,node_employee_logic,node_allowance_logic,node_settlement_logic,node_audit_logic toneAmber
class node_records,node_users_store,node_employees_store,node_allowances_store,node_settlements_store,node_audit_store toneMint
class node_employee_report,node_allowance_report,node_audit_report toneRose
class node_user toneIndigo
```

## Components

### Desktop interface

- [Login](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/FrmLogin.java): `ViaticPro/src/Presentacion/FrmLogin.java`
- [Home navigation](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/FrmHome.java): `ViaticPro/src/Presentacion/FrmHome.java`
- [Employees UI](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/PnlEmpleados.java): `ViaticPro/src/Presentacion/PnlEmpleados.java`
- [Users UI](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/PnlUsuarios.java): `ViaticPro/src/Presentacion/PnlUsuarios.java`
- [Allowance UI](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/PnlViaticos.java): `ViaticPro/src/Presentacion/PnlViaticos.java`
- [Settlement UI](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/PnlLiquidacion.java): `ViaticPro/src/Presentacion/PnlLiquidacion.java`

### Business logic

- [User operations](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Logica/MetodosUsuarios.java): `ViaticPro/src/Logica/MetodosUsuarios.java`
- [Employee operations](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Logica/MetodosEmpleado.java): `ViaticPro/src/Logica/MetodosEmpleado.java`
- [Allowance operations](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Logica/MetodosViatico.java): `ViaticPro/src/Logica/MetodosViatico.java`
- [Settlement rules](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Logica/MetodosLiquidaciones.java): `ViaticPro/src/Logica/MetodosLiquidaciones.java`
- [Audit operations](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Logica/MetodosBitacora.java): `ViaticPro/src/Logica/MetodosBitacora.java`

### Domain and state

- [Domain records](https://github.com/ericklopez-tech/viaticpro/tree/main/ViaticPro/src/Datos): `ViaticPro/src/Datos`
- [User list](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Datos/EstructuraUsuarios.java): `ViaticPro/src/Datos/EstructuraUsuarios.java`
- [Employee list](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Datos/Estructuras.java): `ViaticPro/src/Datos/Estructuras.java`
- [Allowance list](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Datos/EstructuraViaticos.java): `ViaticPro/src/Datos/EstructuraViaticos.java`
- [Settlement list](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Datos/EstructuraLiquidacion.java): `ViaticPro/src/Datos/EstructuraLiquidacion.java`
- [Audit log](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Datos/EstructuraBitacora.java): `ViaticPro/src/Datos/EstructuraBitacora.java`

### Reports and audit

- [Employee reports](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/PnlRepCFech.java): `ViaticPro/src/Presentacion/PnlRepCFech.java`
- [Allowance reports](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/PnlRepCViati.java): `ViaticPro/src/Presentacion/PnlRepCViati.java`
- [Audit report](https://github.com/ericklopez-tech/viaticpro/blob/main/ViaticPro/src/Presentacion/PnlReportesBita.java): `ViaticPro/src/Presentacion/PnlReportesBita.java`

### Other components

- **Operator**

## Connections

- Operator → Login: signs in (evidence: `README.md`)
- Login → User operations: checks credentials (evidence: `ViaticPro/src/Presentacion/FrmLogin.java`)
- Login → Home navigation: opens after login (evidence: `ViaticPro/src/Presentacion/FrmLogin.java`)
- Home navigation → Employees UI: navigates to (evidence: `ViaticPro/src/Presentacion/FrmHome.java`)
- Home navigation → Users UI: navigates to (evidence: `ViaticPro/src/Presentacion/FrmHome.java`)
- Home navigation → Allowance UI: navigates to (evidence: `ViaticPro/src/Presentacion/FrmHome.java`)
- Home navigation → Settlement UI: navigates to (evidence: `ViaticPro/src/Presentacion/FrmHome.java`)
- Home navigation → Employee reports: navigates to (evidence: `ViaticPro/src/Presentacion/FrmHome.java`)
- Home navigation → Allowance reports: navigates to (evidence: `ViaticPro/src/Presentacion/FrmHome.java`)
- Home navigation → Audit report: navigates to (evidence: `ViaticPro/src/Presentacion/FrmHome.java`)
- Login → User list: reads users (evidence: `ViaticPro/src/Presentacion/FrmLogin.java`)
- Employees UI → Employee operations: uses operations (evidence: `ViaticPro/src/Presentacion/PnlEmpleados.java`)
- Users UI → User operations: uses operations (evidence: `ViaticPro/src/Presentacion/PnlUsuarios.java`)
- Allowance UI → Allowance operations: uses operations (evidence: `ViaticPro/src/Presentacion/PnlViaticos.java`)
- Settlement UI → Settlement rules: validates and manages (evidence: `ViaticPro/src/Presentacion/PnlLiquidacion.java`)
- Employee reports → Settlement rules: filters records (evidence: `ViaticPro/src/Presentacion/PnlRepCFech.java`)
- Allowance reports → Settlement rules: queries records (evidence: `ViaticPro/src/Presentacion/PnlRepCViati.java`)
- Audit report → Audit log: reads log (evidence: `ViaticPro/src/Presentacion/PnlReportesBita.java`)
- User operations → User list: queries users (evidence: `ViaticPro/src/Logica/MetodosUsuarios.java`)
- Employee operations → Employee list: queries employees (evidence: `ViaticPro/src/Logica/MetodosEmpleado.java`)
- Allowance operations → Allowance list: uses allowance list (evidence: `ViaticPro/src/Logica/MetodosViatico.java`)
- Settlement rules → Settlement list: filters and validates (evidence: `ViaticPro/src/Logica/MetodosLiquidaciones.java`)
- Settlement UI → Settlement list: adds or edits (evidence: `ViaticPro/src/Presentacion/PnlLiquidacion.java`)
- Domain records → Settlement list: models master-detail (evidence: `ViaticPro/src/Datos/ObjLiquidacion.java`)
- Audit operations → Audit log: allocates log IDs (evidence: `ViaticPro/src/Logica/MetodosBitacora.java`)
- Audit log → Domain records: stores entries (evidence: `ViaticPro/src/Datos/EstructuraBitacora.java`)
- Employees UI → Audit operations: uses audit IDs (evidence: `ViaticPro/src/Presentacion/PnlEmpleados.java`)
- Users UI → Audit operations: uses audit IDs (evidence: `ViaticPro/src/Presentacion/PnlUsuarios.java`)
- Allowance UI → Audit operations: uses audit IDs (evidence: `ViaticPro/src/Presentacion/PnlViaticos.java`)
- Settlement UI → Audit operations: uses audit operations (evidence: `ViaticPro/src/Presentacion/PnlLiquidacion.java`)
