CredonixDocs
Referencia de la APIPlan de proyecto

Completar hitos

Completa hitos de un plan de proyecto y genera sus órdenes de cobro.

Descripción general

Este endpoint marca hitos como completados y genera una orden de cobro por cada uno. Por cada hito:

  • La orden se emite hoy, sin importar completed_at, vence grace_period_days días después, queda con estatus issued y no lleva CFDI.
  • La orden cobra los conceptos del plan escalados a la parte del hito: el precio unitario, los descuentos de monto fijo y las bases de impuestos se multiplican por el porcentaje del hito (percentage) o por su valor entre el total del plan (fixed), redondeados a 6 decimales. Un hito sin valor cobra los conceptos completos.
  • El historial registra una ejecución manual con el hito en milestone_id, scheduled_date igual a completed_at, executed_date igual a hoy y la API key en executed_by.
  • El hito queda con completed: true, remaining_amount baja por el total de la orden y last_execution_at se actualiza. Cuando ya no quedan hitos pendientes, el plan pasa a completed.

Solo se procesan hitos pendientes de este plan. Los id desconocidos, ya completados o de otro plan se omiten sin error, así que la respuesta puede traer executions vacío. El estatus del plan no se revisa: también puedes completar hitos de un plan paused o completed.

Los hitos se procesan uno por uno. Si uno falla, los anteriores quedan completados; el que falla sigue pendiente y queda en el historial con estatus error.

Una solicitud exitosa devuelve 201 con { automation, executions }. Acepta el header Idempotency-Key para reintentar sin cobrar dos veces.

Requiere el permiso Crear en Órdenes de cobro.

Endpoint

POSThttps://app.credonix.mx/api/v1/project-plan-automations/{automationId}/complete-milestones

Path param: automationId — el id de la automatización.

Completar un hito por porcentaje


El hito "Anticipo" vale 30 % de un plan de 1160.00. La orden generada cobra el concepto con precio unitario 300: subtotal 300.00, IVA 48.00 y total 348.00. remaining_amount baja de 1160.00 a 812.00. Sin completed_at, el hito se completa con la fecha de hoy.

{
  "milestones": [
    {
      "id": "cmu21apfn00mov1dq96rwtxxs"
    }
  ]
}

Completar un hito de monto fijo


El hito "Fase 1" vale 348.00 de un plan de 1160.00, es decir 30 % del total. La orden generada cobra 348.00 y remaining_amount queda en 812.00. Consulta la orden con su generated_invoice_id en Consultar orden de cobro.

{
  "milestones": [
    {
      "id": "cmu21ar5q00nvv1dqpejqm2kd"
    }
  ]
}

Reglas de los campos

CampoTipoRequeridoNotas
milestonesarrayHitos que quieres completar. Al menos uno.
milestones[].idstringid de un hito del plan (milestones[].id).
milestones[].completed_atstringNoFecha de completado con el formato YYYY-MM-DD. Por defecto, hoy en la zona horaria de la organización.

No se aceptan otros campos: cualquier campo desconocido responde 400 con VALIDATION_ERROR.

Forma de las respuestas

CampoTipoDescripción
automationobjetoEl plan actualizado, con la misma forma que Consultar plan de proyecto.
executionsarrayUna ejecución por cada hito completado, con la misma forma que en el historial.

Errores

StatusCódigoCausa
400VALIDATION_ERRORFalta milestones, está vacío ("Selecciona al menos un hito para completar") o un hito tiene un valor inválido.
400DEFAULT_LEGAL_ENTITY_NOT_FOUNDEl plan no tiene razón social y la organización no tiene una razón social predeterminada.
400AUTOMATION_INVOICE_FAILEDNo se pudo crear la orden de cobro de un hito. El hito sigue pendiente y la ejecución queda en el historial con estatus error. La respuesta incluye "message": "Error al crear la orden de cobro.".
401MISSING_API_KEY, INVALID_API_KEY, API_KEY_REVOKEDAPI key ausente, inválida o revocada.
403INSUFFICIENT_PERMISSIONSLa API key no tiene el permiso Crear en Órdenes de cobro.
404NOT_FOUNDLa automatización no existe en tu organización o es de otro tipo. La respuesta incluye "message": "La automatización no fue encontrada.".
Abrir Credonix