Metadata-Version: 2.4
Name: invoice-gen-tool
Version: 1.0.0
Summary: CLI tool to generate HTML invoices from JSON
Author-email: Your Name <your.email@example.com>
License: MIT
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Requires-Python: >=3.8
Description-Content-Type: text/markdown

# Invoice Generator

Herramienta CLI para generar facturas en HTML a partir de un archivo JSON. Combina las funcionalidades de dos proyectos anteriores: un generador CLI y un generador web.

## Instalación

```bash
pip install invoice-gen-tool
```

O bien ejecuta directamente:

```bash
python cli.py --help
```

## Uso

### Generar una factura

```bash
invogen generate example.json
```

También puedes especificar un directorio de salida:

```bash
invogen generate example.json --output-dir ./facturas
```

### Listar facturas generadas

```bash
invogen list
```

```bash
invogen list --output-dir ./facturas
```

## Formato del JSON

```json
{
  "number": "001",
  "date": "2023-01-15",
  "issuer": "ACME Corp",
  "client": "John Doe",
  "items": [
    {"description": "Widget", "quantity": 2, "price": 9.99},
    {"description": "Gadget", "quantity": 1, "price": 19.99}
  ],
  "tax_rate": 21
}
```

- `number`, `date`, `issuer`, `client`, `items` son obligatorios.
- `tax_rate` es opcional (por defecto 0%).
- Cada item debe tener `description`, `quantity` (positivo) y `price` (positivo).

## Versión Web

Abre `web/index.html` en un navegador para una interfaz gráfica que genera la factura en el navegador y permite imprimir/PDF.

## Pruebas

```bash
python -m pytest tests/
```

## Licencia

MIT
```
## Manejo de errores

El CLI incluye validaciones robustas con mensajes claros. Ejemplos de errores:

```bash
$ invogen generate nonexistent.json
Error: File not found: nonexistent.json

$ invogen generate ejemplo.json --output-dir /root/test
Error: Cannot create output directory '/root/test': [Errno 13] Permission denied: '/root/test'

$ echo '{"invalid": true}' > bad.json && invogen generate bad.json
Error: Missing required field 'number' in bad.json

$ invogen list --output-dir /directorio/inexistente
Error: No invoices found. Directory does not exist: /directorio/inexistente
```

Errores adicionales que captura el CLI:
- Archivo sin extensión `.json`
- JSON mal formado
- Campos requeridos faltantes (`number`, `date`, `issuer`, `client`, `items`)
- `items` no es una lista o está vacía
- Cada item debe tener `description`, `quantity` (positivo) y `price` (positivo)
- Directorio de salida no escribible
- Errores de permisos al leer/escribir


