---
title: "Expenses"
description: "Gastos y aprobaciones. Cada aplicación es un módulo sobre un único modelo de datos."
canonical: "https://obop-platform.sliplane.app/es/apps/expenses/"
lang: "es"
---

# Expenses

## Para qué sirve

Employees file expense claims that move through draft, submitted, approved and paid. Paying needs its own permission and a human approval; receipts are referenced by note, not stored.

## Qué hace y qué no hace el paquete

Employee expense claims with a draft, submitted, approved and paid flow. Paying is a separate permission and needs a human approval; receipts are referenced by note, not stored.

## Modelos

### `expenses_expense`

An amount an employee spent for the business and wants reimbursed

Grupo de lectura: `expenses.user`. Grupo de escritura: `expenses.user`.

| Campo | Tipo | Clase de datos | Datos personales | Grupo | Los agentes ven | Descripción |
|---|---|---|---|---|---|---|
| `description` | text | `none` | no | `expenses.user` | en claro | What the money was spent on |
| `employee` | text | `internal` | sí | `expenses.user` | enmascarado | Name of the person claiming the expense |
| `spent_on` | date | `none` | no | `expenses.user` | en claro | Date of the purchase (YYYY-MM-DD) |
| `category` | select (travel, meals, lodging, supplies, software, other) | `none` | no | `expenses.user` | en claro | Expense category: travel, meals, lodging, supplies, software, other |
| `amount` | money | `financial` | sí | `expenses.user` | retenido | Amount owed to the employee (minor currency units, e.g. cents) |
| `currency` | text | `none` | no | `expenses.user` | en claro | ISO 4217 currency code, for example EUR |
| `receipt_note` | longtext | `none` | no | `expenses.user` | en claro | Where the receipt is kept and what it shows |
| `paid_on` | date | `financial` | sí | `expenses.finance` | retenido | Date the employee was reimbursed (YYYY-MM-DD) |
| `payment_reference` | text | `financial` | sí | `expenses.finance` | retenido | Bank transfer reference of the reimbursement |
| `state` | select (draft, submitted, approved, paid, refused) | `none` | no | `expenses.user` | en claro | Claim status: draft, submitted, approved, paid, refused |

## Flujos de trabajo

### `expenses_expense`

| Acción | Mueve | Quién puede ejecutarla | Aprobación |
|---|---|---|---|
| `expenses_expense.submit` | state: draft → submitted | `expenses.user` | no |
| `expenses_expense.approve` | state: submitted → approved | `expenses.manager` | no |
| `expenses_expense.pay` | state: approved → paid | `expenses.finance` | sí |
| `expenses_expense.refuse` | state: submitted → refused | `expenses.manager` | no |

## Grupos de permisos

Grupos que usa esta aplicación:

- `expenses.finance`
- `expenses.manager`
- `expenses.user`

## Pasos con aprobación

Pasos que un agente solo puede proponer:

- `expenses_expense.pay`

## Qué pueden y qué no pueden hacer los agentes

Un agente puede leer, buscar, crear y actualizar registros de esta aplicación, y ejecutar las acciones que no requieren aprobación, dentro de los grupos de permisos de su token.

Solo puede proponer estos pasos, y una persona debe aprobarlos: `expenses_expense.pay`, `expenses_expense.delete`.

Los datos personales se enmascaran como tokens marcadores: `expenses_expense.employee`.

Estos campos se retienen por completo y los agentes no los ven: `expenses_expense.amount`, `expenses_expense.paid_on`, `expenses_expense.payment_reference`.

## Dependencias

Ninguna.

## Instalación

Instálala desde la aplicación Customize (Marketplace) o desde la línea de comandos:

```bash
obop modules install-from expenses
```

Requiere una base de datos y derechos de administrador.

## Crea la tuya

[La guía de módulos explica cómo se escriben aplicaciones como esta](/es/docs/reference/module-manifest/)
