BreynGINE

Mi programa de facturación (escritorio)

Estás leyendo el tutorial en la web. En el editor del ordenador está en Ayuda > Tutoriales, al lado de tu proyecto. Los enlaces que en el editor copian dibujos y sonidos a tu proyecto, aquí los descargan en ZIP; en el móvil, BreynGINE te ofrece copiarlos al abrir el tutorial.

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.

«Mi facturación»: una factura con sus líneas y los totales calculados.
«Mi facturación»: una factura con sus líneas y los totales calculados.
Y su PDF, con los datos de tu empresa y del cliente.
Y su PDF, con los datos de tu empresa y del cliente.

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...
Consejo: si aún no conoces el modo App, el tutorial de la lista de tareas lo explica con calma. Aquí se va un poco más rápido en lo que ya sale allí.

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.

La plantilla «Programa de escritorio».
La plantilla «Programa de escritorio».

Abre home.tscn y pulsa 2D:

Un programa de escritorio: pantallas del tamaño de un ordenador (1280 × 720).
Un programa de escritorio: pantallas del tamaño de un ordenador (1280 × 720).

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.
Consejo: la plantilla Programa de escritorio: Facturación, de la pestaña Tienda de Assets del Administrador de proyectos, trae un programa como este ya hecho, con VeriFactu incluido. Ábrela cuando termines para comparar.

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.
La pestaña Empresa del panel Datos.
La pestaña Empresa del panel Datos.

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

1
Pulsa + Tabla. Arriba, en Nombre escribe clientes (el nombre para las reglas: letras, números y _, sin espacios ni acentos), en Etiqueta Clientes (el nombre que se ve) y en Orden name.
2
La tabla ya trae un campo: name (Nombre), obligatorio. Déjalo así.
Una tabla nueva, con su primer campo.
Una tabla nueva, con su primer campo.
3
Pulsa + Campo y, a la derecha, ponle Nombre nif, Etiqueta NIF y marca Único (no puede haber dos clientes con el mismo NIF).
4
Más campos: direccion (Dirección), de Tipo Texto largo y sin Mostrar en listados; email (Email) y telefono (Teléfono).
La tabla de clientes, con el campo NIF seleccionado.
La tabla de clientes, con el campo NIF seleccionado.

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

1
+ Tabla: nombre productos, etiqueta Productos, orden descripcion.
2
Selecciona el campo name y cámbialo: nombre descripcion, etiqueta Descripción.
3
+ Campo: precio (Precio), de tipo Dinero.
4
En Se muestra como elige Descripción: es lo que se ve de un producto en los desplegables.
La tabla de productos.
La tabla de productos.

Capítulo 5La tabla de facturas

Aquí está lo más interesante: campos que se numeran y se calculan solos.

1
+ Tabla: nombre facturas, etiqueta Facturas, orden -fecha, -numero (el «-» ordena de mayor a menor: las más nuevas arriba).
2
Cambia el primer campo por serie (Serie), de tipo Opción, con las Opciones A y R (A para las normales, R para las rectificativas) y el Valor Predeterminado A.
3
Y añade estos campos:
  • 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.
El campo «cliente»: un registro de la tabla de clientes.
El campo «cliente»: un registro de la tabla de 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.
4
En Se muestra como elige Factura (el código A-1).
La tabla de facturas. En «Detalles» ves las fórmulas, las sumas y la numeración.
La tabla de facturas. En «Detalles» ves las fórmulas, las sumas y la numeración.
Consejo: los campos con fórmula o con «Suma de» no se escriben: se calculan solos cada vez que cambia algo. En las fórmulas usas los nombres de los campos, y + - * / para las cuentas.

Capítulo 6Las líneas de las facturas

Cada factura tiene varias líneas (los conceptos). Van en su propia tabla:

1
+ Tabla: nombre lineas, etiqueta Líneas de factura.
2
El primer campo será factura (Factura): Registro de otra tabla de facturas, obligatorio, con Borrar con el padre (si borras una factura, se borran sus líneas) y sin Mostrar en listados.
3
Añade:
  • 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.
4
Elige Descripción en Se muestra como.
La tabla de líneas.
La tabla de líneas.

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).

Consejo: fíjate en que descripcion y precio se llaman igual en productos y en líneas. Gracias a eso, al elegir un producto en una línea, su descripción y su precio se copian solos.

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:

1
Selecciona Box y añade una Fila. En el Inspector, en Layout > Container Sizing, marca Expand en Vertical: así la fila ocupa toda la altura.
2
Con la fila seleccionada, añade una Tabla de datos. Llámala Tabla. En el Inspector: Table clientes y, en Columns, las columnas que quieres ver: name, nif, email y telefono.
3
Selecciona otra vez la fila y añade una Tarjeta. Ponle Custom Minimum Size x = 380 y en Container Sizing > Vertical elige Shrink Begin (que no se estire hacia abajo). Cambia su texto «Tarjeta» por Cliente.
4
Selecciona el Box de la tarjeta y añade un Formulario de datos llamado Formulario, con Table clientes.
La pantalla de clientes: la tabla y el formulario, ya con los campos que diseñaste.
La pantalla de clientes: la tabla y el formulario, ya con los campos que diseñaste.

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».
Las reglas de la pantalla de clientes.
Las reglas de la pantalla de clientes.

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.

Consejo: puedes duplicar clientes.tscn en el panel Proyecto (clic derecho > Duplicar...) y cambiar solo la tabla, las columnas y el título.

Capítulo 8La lista de facturas

Nueva pantalla: facturas.tscn, con el título Facturas.

1
Selecciona AppBar y añade un Botón llamado PdfLista, con el texto PDF de la lista y el estilo Text.
2
Selecciona Box y añade una Tabla de datos llamada Tabla: tabla facturas, columnas serie, numero, fecha, cliente, total y pagada.
La lista de facturas.
La lista de 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.
Las reglas de la lista de facturas.
Las reglas de la lista de 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.

1
En AppBar, un Botón Pdf con el texto PDF y estilo Text.
2
En Box, una Fila con Expand en Vertical, como en clientes.
3
Dentro de la fila, una Tarjeta (ancho mínimo 360, Shrink Begin, texto Factura) con un Formulario de datos llamado FormFactura de la tabla facturas.
4
Selecciona la fila y añade una Columna (con Expand en Horizontal, para que ocupe el resto). Dentro: un Título con el texto Líneas, una Tabla de datos llamada Lineas y una Tarjeta con un Formulario de datos llamado FormLinea.
5
La tabla Lineas: tabla lineas, columnas descripcion, cantidad, precio e importe; desmarca Show Search y Show New Button.
6
El formulario FormLinea: tabla lineas, Columns 2 y, en Fields, producto, descripcion, cantidad, precio e importe (sin factura: esa se pone sola).
7
En la tarjeta de la línea, cambia el texto por una ayuda: Guarda primero la factura y luego añade sus líneas. Al elegir un producto se rellenan su descripción y su precio.
La pantalla de una factura: el formulario a la izquierda, las líneas a la derecha.
La pantalla de una factura: el formulario a la izquierda, las líneas a la derecha.
Consejo: en un formulario, Fields vacío quiere decir «todos los campos, en su orden». Solo hace falta rellenarlo para quitar alguno o cambiar el orden.

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.
«Abrir la factura» y «Sus líneas».
«Abrir la factura» y «Sus 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}).
Las reglas de las líneas.
Las reglas de las líneas.
  • PDF: Se pulsa un botón (Pdf) → Crear PDF de «un documento de un registro (factura...)», tabla facturas, registro {factura_id}, título Factura.
La regla del PDF.
La regla del PDF.
Consejo: «Crear PDF» encuentra solo lo que necesita una factura: el número y su serie, la fecha, el cliente, las líneas (la tabla que apunta a las facturas y se borra con ellas) y los totales (los campos de dinero calculados). En sus «options» puedes elegir otros, si algún día lo necesitas.

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 barra lateral con sus tres secciones.
La barra lateral con sus tres secciones.

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.

1
Ve a Clientes, pulsa Nuevo, rellena el formulario y pulsa Guardar. Añade otro.
Un cliente nuevo.
Un cliente nuevo.
2
En Productos, añade unos cuantos con su precio.
Los productos.
Los productos.
3
Ve a Facturas y pulsa Nuevo. La serie ya es A y la fecha la de hoy; elige el cliente y pulsa Guardar: la factura recibe su número.
4
Ahora, a la derecha, elige un producto: su descripción y su precio aparecen solos. Cambia la cantidad si quieres y pulsa Guardar. Añade más líneas.
Al elegir un producto, la línea se rellena sola.
Al elegir un producto, la línea se rellena sola.

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

La factura terminada.
La factura terminada.
5
Pulsa PDF: se crea el PDF y se abre con tu visor de PDF.
6
Vuelve atrás (la flecha de arriba): la lista ya enseña tus facturas, de la más nueva a la más antigua.
La lista de facturas.
La lista de facturas.
Consejo: en el editor, el panel Datos > Registros enseña los datos guardados en este ordenador, y también puedes cambiarlos desde ahí.

Capítulo 13El programa para Windows

Para llevarte el programa a cualquier ordenador, pulsa Generar EXE... en el panel Componentes.

La ventana «Generar EXE (Windows)».
La ventana «Generar EXE (Windows)».

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 pestaña VeriFactu: qué campos son el número, la serie, la fecha, el cliente, los importes...
La pestaña VeriFactu: qué campos son el número, la serie, la fecha, el cliente, los importes...

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!

← Todos los tutoriales