cuenca-mx / cuenca-mx/cuenca-validations

[cuenca-validations] Tipos de órdenes de pago, lotes y beneficiarios

Open
#419 0 comments 0 reactions 1 assignee View on GitHub

@rcabrera-py is already working on this.

Since Aug 27, 2026.

empresas enhancement
Dominant language
Python
Stars
3
Forks
0
Avg merge
2d 13h
Merged PRs (30d)
6

Description

Estado 2026-09-18. #420 mergeó tipos PM (LegalPerson/Operator) y cerró #421, no este issue. En main no hay PaymentOrder* en cuenca_validations.types. Sigue pendiente para oaxaca #606/#613.

Contexto

El portal de personas morales introduce tres recursos nuevos en oaxaca —órdenes de pago, órdenes por lote y beneficiarios con alias— y sus tipos tienen que vivir aquí.

Este paquete es el contrato del servidor: oaxaca valida contra estas clases. Por ejemplo, POST /transfers usa @app.validate(StrictTransferRequest) (oaxaca/chalicelib/resources/transfers.py:28), así que un campo que no exista en el request se ignora sin importar lo que mande el cliente.

Conviene dejarlo dicho porque es una confusión fácil: la v2 de cuenca-js no sustituye a este paquete. Son contratos de lados opuestos. cuenca-js tipa al cliente; cuenca-validations valida en el servidor. El precedente está en Python: cuenca-python no redefine nada, importa de aquí (cuenca/resources/transfers.py:4-11).

Entregable

Requests, queries y enums de los recursos nuevos, siguiendo las convenciones del paquete:

  • Requests en types/requests.py, heredando de BaseRequest.
  • Queries en types/queries.py, heredando de QueryParams (con extra="forbid" y MAX_PAGE_SIZE=100).
  • Enums en types/enums.py como class X(str, Enum).
  • Tipos de valor reutilizando los existentes (Clabe, Rfc, Curp, StrictPositiveInt para montos en centavos).

Cubre:

  1. Órdenes de pago: request de creación, request de autorización/rechazo, query, y el enum de estados (created, authorized, rejected, expired).
  2. Órdenes por lote: request con renglones, estado por renglón, query.
  3. Beneficiarios: alias y estado de validación en el request de Account.

Nota: los montos siempre en centavos enteros, como BaseTransferRequest.amount (types/requests.py:116-118, "Always in cents, not in MXN pesos").

Criterios de aceptación

  • Tipos publicados y consumibles desde oaxaca.
  • Exportados en types/__init__.py.
  • json_schema_extra con ejemplos, como el resto del paquete.
  • Versión publicada en PyPI y fijada en oaxaca/requirements.txt.
  • Sin cambios breaking para los consumidores existentes (cuenca-python, oaxaca, identify, authed).

Dependencias

Se define junto con los issues de oaxaca; la implementación de allá depende de que esto esté publicado.

Fuera de alcance

La referencia numérica. Transfer.reference_number existe en el modelo de oaxaca (chalicelib/models/transfers.py:47) pero no en BaseTransferRequest; exponerlo queda pospuesto.


Contexto del programa

Parte del portal de banca en línea para personas morales (proyecto Webapp #114).


Enlaces

Depende de: se define junto con cuenca-mx/oaxaca#605, cuenca-mx/oaxaca#606, cuenca-mx/oaxaca#607

Bloquea a: cuenca-mx/oaxaca#605, cuenca-mx/oaxaca#606, cuenca-mx/oaxaca#607

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.