meta {
  name: 04 In-app respond paid
  type: http
  seq: 4
}

post {
  url: {{baseUrl}}/api/v1/checkin/inapp/{{invoiceId}}/paid
  body: none
  auth: bearer
}

auth:bearer {
  token: {{token}}
}

tests {
  test("200 OK", function () {
    expect(res.getStatus()).to.equal(200);
  });
  test("status = paid", function () {
    expect(res.getBody().data.status).to.equal("paid");
  });
}

docs {
  POST /api/v1/checkin/inapp/:invoiceId/paid — auth requise

  Réponse "Oui — la facture est payée" depuis l'app (modale check-in OU
  bouton "Marquer encaissée" sur la fiche). Effets identiques au lien
  email mais auth-based (pas de token URL).

  Effets :
  - CheckinTask (si elle existe) : status='answered', answer='paid'
  - Invoice : status='paid', paid_at=now, rubis_earned+1
  - Organization.rubis_count+1
  - ActivityEvent kind=invoice_paid (label "via confirmation")
  - Toutes les RelanceTask scheduled de la facture → cancelled

  Réponse : la facture sérialisée (status='paid' désormais).

  Précondition : `invoiceId` doit appartenir à l'org de l'user (404 sinon).
  Idempotent : si déjà paid → renvoie l'état courant sans bumper.
}
