---
title: "Field Service"
description: "Trabajos en el sitio. Cada aplicación es un módulo sobre un único modelo de datos."
canonical: "https://obop.dev/es/apps/field-service/"
lang: "es"
---

# Field Service

## Para qué sirve

Schedule on-site jobs for customers: who does the work, where, when, which parts were used and whether the customer must sign off. Site addresses and contacts are personal data and treated as such.

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

On-site jobs for customers, done by a technician: scheduled, en route, in progress, done or cancelled. A job records the customer, the site, the technician, the planned day and start (minutes since midnight), the parts used and whether the customer must sign off. Site address and contact details are personal data. Needs the Human Resources and Products packages.

## Modelos

### `field_service_job`

An on-site job for a customer

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

| Campo | Tipo | Clase de datos | Datos personales | Grupo | Los agentes ven | Descripción |
|---|---|---|---|---|---|---|
| `name` | text | `none` | no | `field_service.user` | en claro | Short title of the job, for example Replace boiler pump |
| `customer_id` | ref → party | `none` | no | `field_service.user` | en claro | The customer the job is for |
| `site_name` | text | `none` | no | `field_service.user` | en claro | Name of the site, for example Main warehouse |
| `site_address` | longtext | `internal` | sí | `field_service.user` | enmascarado | Street address where the work is done; often a person's home |
| `site_city` | text | `internal` | sí | `field_service.user` | enmascarado | City of the site |
| `site_postcode` | text | `internal` | sí | `field_service.user` | enmascarado | Postcode of the site |
| `site_country` | text | `none` | no | `field_service.user` | en claro | Country of the site |
| `site_contact_name` | text | `internal` | sí | `field_service.user` | enmascarado | Name of the person to meet on site |
| `site_contact_phone` | text | `internal` | sí | `field_service.user` | enmascarado | Phone number of the person to meet on site |
| `technician_id` | ref → hr_employee | `internal` | sí | `field_service.user` | enmascarado | Technician assigned to the job |
| `priority` | select (low, normal, high, urgent) | `none` | no | `field_service.user` | en claro | How urgent the job is: low, normal, high, urgent |
| `description` | longtext | `none` | no | `field_service.user` | en claro | What has to be done and what the customer reported |
| `scheduled_on` | date | `none` | no | `field_service.user` | en claro | Planned day of the visit (YYYY-MM-DD) |
| `scheduled_start_minute` | number | `none` | no | `field_service.user` | en claro | Planned start in minutes since midnight (540 is 09:00) |
| `planned_minutes` | number | `none` | no | `field_service.user` | en claro | Planned duration in minutes |
| `signature_required` | bool | `none` | no | `field_service.user` | en claro | Whether the customer has to sign off the work before it counts as done |
| `signed_by` | text | `internal` | sí | `field_service.user` | enmascarado | Name of the person who signed off the work |
| `signed_on` | date | `none` | no | `field_service.user` | en claro | Day the customer signed off (YYYY-MM-DD) |
| `work_report` | longtext | `none` | no | `field_service.user` | en claro | What was done, written by the technician |
| `state` | select (scheduled, en_route, in_progress, done, cancelled) | `none` | no | `field_service.user` | en claro | Job status: scheduled, en_route, in_progress, done, cancelled |

### `field_service_part`

A part or product used on a job

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

| Campo | Tipo | Clase de datos | Datos personales | Grupo | Los agentes ven | Descripción |
|---|---|---|---|---|---|---|
| `job_id` | ref → field_service_job | `none` | no | `field_service.user` | en claro | The job the part was used on |
| `product_id` | ref → product | `none` | no | `field_service.user` | en claro | The product that was used |
| `quantity` | number | `none` | no | `field_service.user` | en claro | How many units were used |
| `unit_price` | money | `none` | no | `field_service.user` | en claro | Price per unit charged to the customer (minor currency units, e.g. cents) |
| `note` | text | `none` | no | `field_service.user` | en claro | Remark about the part, for example serial number |

## Flujos de trabajo

### `field_service_job`

| Acción | Mueve | Quién puede ejecutarla | Aprobación |
|---|---|---|---|
| `field_service_job.depart` | state: scheduled → en_route | `field_service.user` | no |
| `field_service_job.start` | state: en_route → in_progress | `field_service.user` | no |
| `field_service_job.complete` | state: in_progress → done | `field_service.user` | no |
| `field_service_job.cancel` | state: scheduled → cancelled | `field_service.manager` | no |

## Grupos de permisos

Grupos que usa esta aplicación:

- `field_service.manager`
- `field_service.user`

## Pasos con aprobación

Ningún paso de esta aplicación requiere aprobación, salvo eliminar registros.

## 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: `field_service_job.delete`, `field_service_part.delete`.

Los datos personales se enmascaran como tokens marcadores: `field_service_job.site_address`, `field_service_job.site_city`, `field_service_job.site_postcode`, `field_service_job.site_contact_name`, `field_service_job.site_contact_phone`, `field_service_job.technician_id`, `field_service_job.signed_by`.

## Dependencias

- `base`
- `product`
- `hr`

## Instalación

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

```bash
obop modules install-from field_service
```

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