Mi programa de facturación (escritorio)
Capítulo 1Lo que vas a hacer
En este tutorial vas a crear un programa de facturación para el ordenador, desde cero y sin escribir código. Tendrá clientes, productos y facturas con sus líneas; calculará solo la base, el IVA y el total; numerará las facturas por series y sacará cada factura en PDF, con tu logotipo, lista para enviar o imprimir.


Usarás:
- BreynData, el panel Datos: aquí diseñas las tablas (clientes, productos, facturas...) de una base de datos que se guarda en el ordenador.
- Los componentes Tabla de datos y Formulario de datos, que enseñan y editan los registros sin programar nada.
- BreynFlow, para unir las pantallas: abrir una factura, filtrar sus líneas, crear el PDF...
Capítulo 2Crea el proyecto
En el Administrador de proyectos, pulsa + Crear, llama al proyecto Mi facturación y elige la plantilla Programa de escritorio.

Abre home.tscn y pulsa 2D:

Se parece al modo App del móvil, con tres diferencias:
- La pantalla tiene tamaño de Ordenador y se ve como una ventana.
- main.tscn es la ventana del programa: una Barra lateral (las secciones, a la izquierda) y Screens, donde se abren las pantallas. La rellenarás al final.
- En el panel Componentes, en vez de Generar APK verás Generar EXE..., para crear el programa de Windows.
Capítulo 3Los datos de tu empresa
Abajo, en la barra de paneles, pulsa Datos. Es el panel de BreynData. Para verlo grande, pulsa el botón de expandir (a la derecha de esa barra) o Mayús+F12.
Ve a la pestaña Empresa y rellena tus datos: salen arriba en cada PDF.
- Nombre y NIF / CIF.
- Detalles: la dirección, el correo, el teléfono... una cosa por línea.
- Logotipo: pulsa Elegir... y elige una imagen del proyecto. Si no tienes una a mano, copia el logotipo de ejemplo y elige logo.png.
- Pie de página: una frase al pie de cada página.

Capítulo 4Las tablas: clientes y productos
Una tabla es un tipo de registro: los clientes, los productos, las facturas... Cada tabla tiene campos: los datos de cada registro (el nombre, el precio, la fecha...). Ve a la pestaña Tablas.
Clientes


Los tipos de campo que puedes usar:
- Texto y Texto largo (varias líneas).
- Número entero, Número decimal y Dinero (con dos decimales y el símbolo €).
- Fecha y Sí/No (una casilla).
- Registro de otra tabla: un desplegable para elegir, por ejemplo, el cliente de una factura.
- Opción: un desplegable con valores fijos.
Productos

Capítulo 5La tabla de facturas
Aquí está lo más interesante: campos que se numeran y se calculan solos.
- numero (Número): Número entero, obligatorio, con Numeración automática y Numerar por serie. Así la serie A va 1, 2, 3... y la R lleva su propia cuenta.
- codigo (Factura): Texto, con la Fórmula serie + "-" + str(numero), sin Mostrar en listados. Da «A-1», «A-2»...
- fecha (Fecha): Fecha, obligatoria, con el Valor Predeterminado today (hoy).
- cliente (Cliente): Registro de otra tabla, obligatorio, con la Tabla referenciada clientes.

- iva_pct (IVA %): Número decimal, con el valor predeterminado 21.
- base (Base imponible): Dinero, con Suma de lineas.importe: la suma de los importes de sus líneas (la tabla de líneas la harás ahora).
- iva (IVA): Dinero, con la fórmula base * iva_pct / 100.
- total (Total): Dinero, con la fórmula base + iva.
- pagada (Pagada): Sí/No.
- notas (Notas): Texto largo.

Capítulo 6Las líneas de las facturas
Cada factura tiene varias líneas (los conceptos). Van en su propia tabla:
- producto (Producto): Registro de otra tabla de productos, sin Mostrar en listados.
- descripcion (Descripción): Texto, obligatorio.
- cantidad (Cantidad): Número decimal, valor predeterminado 1.
- precio (Precio): Dinero.
- importe (Importe): Dinero, con la fórmula cantidad * precio.

Por último, pulsa Guardar tablas. El diseño se guarda en data/schema.tres y la base de datos se pone al día (si un día añades campos, los datos que ya tienes no se pierden).
Capítulo 7La pantalla de clientes
Vuelve a cerrar el panel grande (otra vez Mayús+F12) y crea la pantalla con Nueva pantalla...: clientes.tscn. Pon Clientes en su Title.
La pantalla tendrá la lista de clientes a la izquierda y, a la derecha, una tarjeta con el formulario del cliente seleccionado:

El formulario saca solo un campo para cada dato, con su tipo: el desplegable, la casilla, el texto largo... y los botones Guardar, Nuevo y Borrar.
Sus reglas
Añade Reglas (BreynFlow) a la pantalla con dos reglas:
- Abrir el registro: evento Datos > Fila de tabla de datos (Tabla, «se selecciona») → acción Datos > Abrir registro en formulario (Formulario). El registro es {record_id}, el de la fila elegida.
- Uno nuevo: Fila de tabla de datos (Tabla, «pide uno nuevo (botón Nuevo)») → Abrir registro en formulario (Formulario) con el registro 0, que quiere decir «uno nuevo, vacío».

Y la de productos
Haz igual la pantalla productos.tscn (título Productos): una fila con una Tabla de datos de productos (columnas descripcion y precio), una tarjeta Producto con su Formulario de datos y las mismas dos reglas.
Capítulo 8La lista de facturas
Nueva pantalla: facturas.tscn, con el título Facturas.

Aquí las facturas no se editan al lado, sino en su propia pantalla (la harás ahora). Las reglas:
- Abrir una factura: Fila de tabla de datos (Tabla, «se abre (doble clic o Intro)») → Ir a una pantalla factura.tscn enviando factura_id = {record_id}.
- Una factura nueva: Fila de tabla de datos («pide uno nuevo (botón Nuevo)») → Ir a una pantalla factura.tscn enviando factura_id = 0.
- PDF de la lista: Se pulsa un botón (PdfLista) → Datos > Crear PDF de «un listado de una tabla», tabla facturas, título Facturas.

Capítulo 9La pantalla de una factura
La última pantalla, y la más completa: factura.tscn, con el título Factura. A la izquierda irá la factura y, a la derecha, sus líneas.

Capítulo 10Las reglas de la factura
Añade Reglas (BreynFlow) a la pantalla Factura. Son siete, pero muy parecidas entre sí:
- Abrir la factura: Se muestra la pantalla → Abrir registro en formulario (FormFactura, registro {factura_id}). Es el número que envió la lista (0 si es nueva).
- Sus líneas: Datos > Formulario guardado (FormFactura, «muestra un registro (o uno nuevo)», su id en factura_id) → Datos > Filtrar tabla de datos (Lineas, solo los registros con factura = {factura_id}) → Abrir registro en formulario (FormLinea, registro 0, con los valores iniciales factura = {factura_id}).
- Guardada: sus líneas: lo mismo, pero con «guarda un registro». Así, al guardar una factura nueva, ya se le pueden añadir líneas.

- Factura borrada: Formulario guardado (FormFactura, «borra un registro») → Volver atrás.
- Línea guardada: la siguiente: Formulario guardado (FormLinea, «guarda un registro», su id en linea_id) → Abrir registro en formulario (FormLinea, registro 0, con factura = {factura_id}). El formulario queda listo para la línea siguiente.
- Cambiar una línea: Fila de tabla de datos (Lineas, «se selecciona», su id en linea_id) → Abrir registro en formulario (FormLinea, registro {linea_id}).

- PDF: Se pulsa un botón (Pdf) → Crear PDF de «un documento de un registro (factura...)», tabla facturas, registro {factura_id}, título Factura.

Guarda (Ctrl+S).
Capítulo 11La barra lateral
Ya solo falta decirle al programa qué secciones tiene. Abre main.tscn y selecciona Sidebar. En el Inspector:
- App Title: Mi facturación.
- Titles: Facturas, Clientes y Productos.
- Screens: res://facturas.tscn, res://clientes.tscn y res://productos.tscn, en el mismo orden.

La primera sección es la que se abre al arrancar. La pantalla home.tscn de la plantilla ya no se usa: puedes borrarla.
Capítulo 12¡A facturar!
Guarda todo y pulsa ▶. El programa se abre en su ventana.



La base, el IVA y el total se calculan a cada línea:


Capítulo 13El programa para Windows
Para llevarte el programa a cualquier ordenador, pulsa Generar EXE... en el panel Componentes.

Pon el nombre del programa, la versión, tu empresa y un icono (un PNG cuadrado o un .ico; puedes dibujarlo en el editor de Sprites). Pulsa Generar y tendrás un solo archivo .exe, con todo dentro, en la carpeta build del proyecto. Cada ordenador donde lo uses tendrá su propia base de datos.
VeriFactu
Si facturas en España, la pestaña VeriFactu del panel Datos prepara el programa para la normativa: al emitir cada factura se envía a la AEAT con tu certificado digital y el PDF lleva el código QR.

La plantilla Programa de escritorio: Facturación de la Tienda de Assets lo trae ya configurado, con el botón Emitir y las piezas VeriFactu de BreynFlow: es el mejor sitio para verlo funcionando.
Capítulo 14Y ahora, ¿qué?
¡Has hecho un programa de facturación completo! Con base de datos, numeración por series, cálculos automáticos, PDF con tu logotipo y su instalador para Windows. Ideas para seguir:
- Añade presupuestos: otra tabla igual que facturas, con sus líneas, y su PDF con el título Presupuesto.
- Filtra la lista: Filtrar tabla de datos con pagada = false para ver solo las facturas pendientes.
- Cuenta lo que te deben: la condición Número de registros y un texto que lo diga.
- Pon un buscador de clientes en la factura: el componente Selector de registro.
- Haz una versión para el móvil: los mismos datos y componentes funcionan en el modo App.
¡Que las cuentas te salgan siempre!
