# Administra los turnos de operador

Esta guía te muestra cómo administrar los turnos de un terminal con el deeplink Shift. Configuras la cantidad de turnos disponibles, pasas al siguiente turno y consultas cuántos hay configurados.

## Cómo funciona

Las tres operaciones comparten el URI `getnet://payment/v1/shift` y se seleccionan con el parámetro `shiftOperation`:

| `shiftOperation` | Acción | Notas |
| :--- | :--- | :--- |
| `"1"` | Configura la cantidad de turnos disponibles | Envía la cantidad en `numberOfShifts`. |
| `"2"` | Cambia al siguiente turno | No necesita parámetros extra. |
| `"3"` | Obtiene la cantidad actual de turnos | La respuesta agrega `totalOfShifts`. |

El terminal ajusta el flujo según lo que envías. Si un valor obligatorio ya viene en la solicitud, el terminal omite la pantalla de ingreso correspondiente. Si falta, se lo pide al operador.

## Antes de comenzar

La Getnet Payment App debe estar instalada en el terminal y tu aplicación debe poder iniciarla, como se describe en [Arquitectura y flujo](/es/app2app/first-steps-a2a/architecture-flow).

## Paso 1: Envía el Intent de Shift

Crea el Intent con la operación que necesitas. El siguiente ejemplo configura dos turnos y asume la responsabilidad de impresión:

```kotlin
private val REQUEST_CODE = 1001

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    val intent = Intent(Intent.ACTION_VIEW, Uri.parse("getnet://payment/v1/shift"))
    intent.putExtra("shiftOperation", "1")
    intent.putExtra("numberOfShifts", "2")
    intent.putExtra("allowPrintCurrentTransaction", "false")
    startActivityForResult(intent, REQUEST_CODE)
}
```

El parámetro opcional `skipConfirmation` oculta la pantalla de confirmación del cambio de turno. El parámetro `allowPrintCurrentTransaction` sigue las reglas de [Responsabilidad de impresión](/es/app2app/core-concept-a2a/printing-responsibility).

## Paso 2: Procesa la respuesta

Lee `result` y `resultDetails` del Intent devuelto. Para `shiftOperation` `"3"`, lee también `totalOfShifts`:

```kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
        val extras = data?.extras
        val result = extras?.getString("result")
        val resultDetails = extras?.getString("resultDetails")
        val totalOfShifts = extras?.getString("totalOfShifts")
    }
}
```

Una configuración o un cambio exitoso devuelve `result` `0` con `resultDetails` `APPROVED`. La operación de consulta devuelve el mismo par más la cantidad de turnos:

```json
{
  "result": 0,
  "resultDetails": "APPROVED",
  "totalOfShifts": "3"
}
```

`totalOfShifts` solo está presente cuando `shiftOperation` es `"3"`.

## Siguientes pasos

* [Referencia de parámetros del deeplink](/es/app2app/reference-a2a/deeplink-parameters) - todos los parámetros de solicitud y respuesta del deeplink Shift.
* [Códigos de resultado y estructuras de datos](/es/app2app/reference-a2a/result-codes-data-structure) - interpreta el valor de `result` que devuelve la operación.