Saltar al contenido principal

Resumen

Una Order es una transacción comercial — una venta, una compra, una transferencia, una invoice y más. Toda order se crea desde un Order Template que define su tipo y reglas. A medida que una order avanza por sus status, actualiza el inventory automáticamente; las invoices reciben payments; y las orders se enlazan entre sí mediante flujos padre-hijo. Para los tipos de order y sus efectos en inventario, consulta el overview de Commerce.

Dónde encontrarlo

Las orders están en Commerce → Orders.

Status

Una order pasa por cinco status: draft → new → processing → completed, más void.
  • Puedes moverte entre los primeros cuatro en cualquier dirección; cada transición aplica el efecto en inventario del tipo de order.
  • void es terminal — una order anulada no tiene más transiciones, y eliminar una order la anula.
  • Volver atrás desde completed está protegido: no puedes mover hacia atrás una order completada mientras tenga pagos aprobados o child orders completadas — resuelve eso primero (reembolsa/anula la invoice, anula el hijo completado).

Properties

PropertyTipoRequeridoDescripción
titlestringAutoGenerado desde la naming convention del template.
slugstringAutoIdentificador único, generado junto al título.
typeenumAutoEl tipo de order, heredado del template.
statusenumNodraft, new, processing, completed o void.
template_idreferenceEl order template del que se construye esta order.
contact_idreferenceNoEl cliente o contacto de la order.
location_idreferenceNoLa location principal (bodega o tienda).
destination_location_idreferenceNoLa location destino, para transferencias.
parent_idreferenceCondicionalLa order padre — requerida para invoices, shipping y returns.
itemsarrayNoLos line items.
chargesarrayNoLos charges a nivel de order.
summaryobjectAutoLos totales calculados.
is_paidbooleanAutoSi la order ya se pagó por completo.

Line items

El contenido de una order son sus line items — uno por producto o servicio. Cada renglón lleva el item, la cantidad, el precio unitario, el descuento y el impuesto, y se suma en un subtotal y un total. Las columnas y las fórmulas vienen del content template del producto, así que el mismo producto puede mostrar columnas distintas en una venta vs. una compra. Los line items se agrupan en la vista de la order por su product template. Un item que necesita tracking por unidad (números de serie, asignación a un contacto, o atributos por unidad) obtiene un registro por cada unidad de su cantidad.

Charges

Los charges son ajustes a nivel de order sobre los line items:
ConceptoEfecto
discount, promotionResta
tax, shipping, surcharges, additional_costSuma
other, price_adjustmentSuma o resta (tú eliges)
Un charge es un monto fijo o un porcentaje (calculado sobre el subtotal o el total acumulado). Los charges solo se pueden agregar o cambiar mientras la order está en draft o new.

Summary

Cada order mantiene un summary calculado — totales de items, las sumas de impuestos y descuentos, el total de cada charge, el total de la order, y el monto pagado. Se actualiza automáticamente al cambiar line items y charges.

Orders padre-hijo

Las orders se enlazan en cadenas padre-hijo para que una transacción avance por etapas. Una child order lleva line items seleccionados de su padre (cada uno recuerda el renglón del que proviene). Las reglas del order template deciden qué tipos de hijo se permiten y desde qué status del padre. Por ejemplo:
  • Una pre-order (carrito o cotización) se vuelve una sale; la sale produce una invoice para el pago y una transfer para el fulfillment.
  • Una opportunity evoluciona a quote, luego sale, luego invoice.
  • Una sale o purchase completada puede generar un return, cuya invoice hija emite el reembolso.
Un mismo line item del padre solo puede aparecer en un hijo de cada tipo — p. ej. una transfer y una invoice, pero no dos transfers.

Seeds

Las orders viajan entre entornos como Seeds estructurales. Las referencias usan reference helpers; el título, el slug, los totales y el summary de la order se calculan al importar:
[
  {
    "object_type": "orders",
    "data": {
      "type": "sale",
      "status": "completed",
      "template_id": "{{getRecordAttribute('order_templates', 'slug', 'cumbre-retail-sale')}}",
      "contact_id": "{{getRecordAttribute('contacts', 'identifiers', '[email protected]')}}",
      "location_id": "{{getContentInstance('locations', 'slug', 'juarez-warehouse')}}",
      "items": [
        { "item_code": "CUMBRE-BEANS-ETH", "line_qty": 5, "unit_price_cents": 1800 }
      ]
    }
  }
]

Gobernanza y permisos

Un super admin o un Master puede gestionar cualquier order; un Journey Manager puede gestionar las orders que posee (ver Ownership).

Acceso por API

Las orders tienen CRUD completo más operaciones dedicadas para agregar, actualizar, quitar y reordenar line items, cambiar status, crear una child order, y agregar o quitar charges. Consulta la API reference.

Relacionado

Order Templates

El blueprint que define el tipo y las reglas de una order.

Inventory

Cómo el status de una order mueve el stock.

Payments

Cobrar en las invoice orders.

Price Lists

De dónde vienen los precios de los line items.