Skip to content

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

Description

@gustavo-arzola-cuenca

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

Metadata

Metadata

Assignees

Labels

empresasPortal de personas morales (proyecto Webapp #114)enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions