{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://docs.sportops.it/formato/schema/pagamenti.schema.json",
  "title": "Addebiti e incassi",
  "description": "Ogni riga è una somma dovuta da una famiglia, con il suo stato e — se incassata — quando e come.",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": [
          "integer",
          "null"
        ],
        "description": "Identificativo."
      },
      "voce_id": {
        "type": [
          "integer",
          "null"
        ],
        "description": "→ voci_pagamento.id"
      },
      "atleta_id": {
        "type": [
          "integer",
          "null"
        ],
        "description": "→ atleti.id"
      },
      "genitore_id": {
        "type": [
          "integer",
          "null"
        ],
        "description": "→ famiglie.id (chi paga, se indicato)."
      },
      "importo_cent": {
        "type": [
          "integer",
          "null"
        ],
        "description": "Importo dovuto in centesimi."
      },
      "scadenza": {
        "type": [
          "string",
          "null"
        ],
        "format": "date",
        "description": "Data di scadenza."
      },
      "periodo": {
        "type": [
          "string",
          "null"
        ],
        "description": "Periodo di riferimento (es. mese)."
      },
      "stato": {
        "type": [
          "string",
          "null"
        ],
        "description": "pending = da pagare, paid = incassato, cancelled = annullato.",
        "enum": [
          "pending",
          "paid",
          "cancelled",
          null
        ]
      },
      "canale": {
        "type": [
          "string",
          "null"
        ],
        "description": "Come è stato incassato (contanti, bonifico, online…)."
      },
      "pagato_il": {
        "type": [
          "string",
          "null"
        ],
        "format": "date-time",
        "description": "Quando."
      },
      "ricevuta_numero": {
        "type": [
          "string",
          "null"
        ],
        "description": "Numero della ricevuta emessa."
      },
      "note": {
        "type": [
          "string",
          "null"
        ],
        "description": "Note."
      }
    },
    "required": [
      "id",
      "voce_id",
      "atleta_id",
      "genitore_id",
      "importo_cent",
      "scadenza",
      "periodo",
      "stato",
      "canale",
      "pagato_il",
      "ricevuta_numero",
      "note"
    ],
    "additionalProperties": false
  }
}