Prima-Back
  1. Modulo Pedidos
Prima-Back
  • API DOCUMENTATION
  • Principal
    • /
      GET
  • Modulo Administradores
    • Vendedores Operaciones
      • Registro de Vendedores
      • Visualizar Vendedores
      • Visualizar Vendedores por Mongo ID
      • Visualizar Vendedores por cedula
      • Actualizar Vendedor
      • Eliminar Vendedor
    • Estadisticas
      • Estadisticas de documentos
      • Visualizacion de top Vendedores
      • Visualizar Ventas por Vendedor
    • Login Administradores
      POST
    • Recuperacion de contraseña Administrador
      POST
  • Modulo Vendedores
    • Inicio de Sesión Vendedores
      POST
    • Confirmación de Cuenta
      GET
    • Solicitud de restablecimiento de contraseña
      POST
    • Restablecimiento de contraseña
      POST
  • Modulo Clientes
    • Registrar Cliente
      POST
    • Visualizar Clientes
      GET
    • Visualizar Clientes por RUC
      GET
    • Actualizar Cliente
      PATCH
    • Eliminar Cliente
      DELETE
  • Modulo Productos
    • Crear Producto
      POST
    • Visualizar Productos
      GET
    • Visualizar Productos por ID
      GET
    • Actualizar Producto
      PATCH
    • Eliminar Producto
      DELETE
  • Modulo Pedidos
    • Crear Orden
      POST
    • Visualizar Ordenes
      GET
    • Visualizar Ordenes por ID
      GET
    • Actualizar Orden
      PATCH
    • Actualizar Estado de Orden
      PATCH
    • Eliminar Orden
      DELETE
  1. Modulo Pedidos

Actualizar Orden

PATCH
/api/orders/update/{{id}}

🔄 PATCH /orders/update/:id#

Actualiza los detalles de una orden existente con validación de stock y control de consistencia.

📍 Ruta#

PATCH /api/orders/update/:id

📝 Descripción#

Actualiza los datos de una orden existente identificada por su _id. Solo se permite modificar órdenes con estado 'Pendiente'.
El endpoint:
Permite cambiar los productos y cantidades.
Recalcula descuentos y totales.
Ajusta el stock de productos de forma atómica.
Realiza reversión de stock si ocurre un error.

🔐 Autenticación#

Requiere token JWT válido.
Middleware aplicado:
1.
verificarAutenticacion
2.
validateUpdateOrder
3.
validateRequest

🔢 Parámetros#

🛣️ Path Parameters#

ParámetroTipoRequeridoDescripción
idstring✅_id de la orden (formato ObjectId)

📥 Request Body#

{
  "products": [
    {
      "productId": "123",      // ID del producto (string de número)
      "quantity": 5            // cantidad > 0
    }
  ],
  "discountApplied": 10,
  "netTotal": 90,
  "totalWithTax": 106.2,
  "comment": "Actualizar por cambio de cantidad"
}

✅ Respuestas#

✔️ 200 OK – Orden actualizada correctamente#

{
  "status": "success",
  "code": "ORDER_UPDATED",
  "msg": "Orden actualizada con éxito.",
  "data": {
    "_id": "ObjectId",
    "customer": 20406090,
    "products": [
      {
        "productId": "123",
        "quantity": 5
      }
    ],
    "discountApplied": 10,
    "netTotal": 90,
    "totalWithTax": 106.2,
    "status": "Pendiente",
    "comment": "Actualizar por cambio de cantidad",
    "registrationDate": "2025-04-24T14:00:00Z",
    "lastUpdate": "2025-04-24T15:00:00Z",
    "seller": "ObjectId"
  },
  "info": {
    "stockUpdateDetails": {
      "attempted": 2,
      "modified": 2,
      "status": "Éxito",
      "message": "Stock ajustado correctamente."
    }
  }
}

❌ Errores#

⚠️ 400 Bad Request – Datos inválidos#

{
  "status": "error",
  "code": "MISSING_FIELD",
  "msg": "Campos requeridos: products (array), discountApplied, netTotal, totalWithTax."
}
{
  "status": "error",
  "code": "INVALID_OPERATION",
  "msg": "La orden con estado 'Enviado' no puede ser actualizada."
}
{
  "status": "error",
  "code": "INSUFFICIENT_STOCK",
  "msg": "Stock insuficiente para el producto 123. Stock actual: 2, se intentarían quitar 5 unidades adicionales."
}

🔐 401 Unauthorized – Token inválido o ausente#

{
  "status": "error",
  "code": "AUTH_ERROR",
  "msg": "Acceso no autorizado. Se requiere token válido."
}

🕳️ 404 Not Found – Orden o producto no existe#

{
  "status": "error",
  "code": "NOT_FOUND",
  "msg": "Orden con ID 663abc1234 no encontrada."
}
{
  "status": "error",
  "code": "NOT_FOUND",
  "msg": "Producto con ID 123 no encontrado en la base de datos."
}

⚔️ 409 Conflict – Error al ajustar stock#

{
  "status": "error",
  "code": "STOCK_CONFLICT",
  "msg": "Conflicto al ajustar stock: Se intentaron 3 ajustes, pero solo 2 se completaron. Cambios revertidos.",
  "info": {
    "attempted": 3,
    "modified": 2,
    "status": "Conflicto",
    "message": "Fallo parcial en stock.",
    "reversion": "Reversión completada con éxito."
  }
}

💥 500 Internal Server Error – Falla inesperada#

{
  "status": "error",
  "code": "SERVER_ERROR",
  "msg": "Ha ocurrido un error inesperado al actualizar la orden. Intente de nuevo más tarde.",
  "info": {
    "detail": "Referencia circular detectada.",
    "reversionStatus": "Reversión completada parcialmente. Verificar integridad manualmente."
  }
}
Request Request Example
Shell
JavaScript
Java
Swift
curl --location -g --request PATCH 'https://back-prima-s-a.onrender.com/api/orders/update/{{id}}' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY3NWNkZGEzMTJkYmM5YjM2NzkwNDliNiIsInJvbCI6IlNlbGxlciIsImlhdCI6MTczODE4OTczOCwiZXhwIjoxNzM4MjE4NTM4fQ.pqhvNo0o_kP3oK8hrJsRhdIPoXUnReaZT-x3_FVN6HA' \
--header 'Content-Type: application/json' \
--data-raw '{
    "products": [
        {
            "productId": 55055012,
            "quantity": 1
        },
				{
					"productId": 55055025,
          "quantity": 5
				}
    ],
    "discountApplied": 10.5,
    "netTotal": 7.8,
    "totalWithTax": 8.97
}'
Response Response Example
{}

Request

Authorization
Provide your bearer token in the
Authorization
header when making requests to protected resources.
Example:
Authorization: Bearer ********************
Header Params
Content-Type
string 
optional
Example:
application/json
Authorization
string 
optional
Example:
Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjY3NWNkZGEzMTJkYmM5YjM2NzkwNDliNiIsInJvbCI6IlNlbGxlciIsImlhdCI6MTczODE4OTczOCwiZXhwIjoxNzM4MjE4NTM4fQ.pqhvNo0o_kP3oK8hrJsRhdIPoXUnReaZT-x3_FVN6HA
Body Params application/json
products
array [object {2}] 
required
productId
integer 
required
quantity
integer 
required
discountApplied
number 
required
netTotal
number 
required
totalWithTax
number 
required
Examples

Responses

🟢200Success
application/json
Body
object {0}
Modified at 2025-04-24 17:44:19
Previous
Visualizar Ordenes por ID
Next
Actualizar Estado de Orden
Built with