eCommerce

Tienda en línea

MarketplaceOperacionesVersión 0.2.0manifest

Para qué sirve ​

Store the data of an online shop: listings, shipping methods, discount codes and web orders with a fulfilment flow. Refunds need a manager and an approval. A storefront or other client reads and writes this data through the API.

Qué hace y qué no hace el paquete ​

An online shop: categories, product listings with translations, shipping methods, discount codes, web orders with lines and a fulfilment flow of pending, paid, shipped, delivered, cancelled and refunded. When the instance runs with the public site enabled, visitors browse the published listings and place orders without an account; the server prices every order from the published listing and never trusts the browser. There is no payment provider: an order starts as pending and the shop contacts the buyer. Refunds need a human approval from a manager; agents may only propose them. Customer name, email and addresses are personal data and are never public. Needs the Products package.

Modelos ​

ecommerce_category ​

A group of listings shown together in the shop

Grupo de lectura: ecommerce.user. Grupo de escritura: ecommerce.manager.

CampoTipoClase de datosDatos personalesGrupoLos agentes venDescripción
nametextnonenoecommerce.useren claroCategory name shown in the shop
slugtextnonenoecommerce.useren claroURL part of the category, lowercase with dashes
descriptiontextnonenoecommerce.useren claroShort text about the category
sequencenumbernonenoecommerce.useren claroOrder among categories, lowest first
publishedboolnonenoecommerce.useren claroWhether the category is visible to shoppers

ecommerce_listing ​

A product as it appears in the online shop

Grupo de lectura: ecommerce.user. Grupo de escritura: ecommerce.manager.

CampoTipoClase de datosDatos personalesGrupoLos agentes venDescripción
product_idref → productnonenoecommerce.useren claroThe product being sold online
titletextnonenoecommerce.useren claroTitle shown in the shop
slugtextnonenoecommerce.useren claroURL part of the product page, lowercase with dashes
summarytextnonenoecommerce.useren claroOne or two sentences shown on product cards
descriptionlongtextnonenoecommerce.useren claroDescription shown on the product page, in Markdown
category_idref → ecommerce_categorynonenoecommerce.useren claroThe category the listing is shown under
pricemoneynonenoecommerce.useren claroShop price including tax (minor currency units, e.g. cents)
compare_at_pricemoneynonenoecommerce.useren claroPrevious price shown crossed out (minor currency units)
currencytextnonenoecommerce.useren claroISO 4217 currency code of the prices, for example EUR; empty means the shop currency from the instance settings
skutextnonenoecommerce.useren claroStock keeping unit shown on the product page
stock_policyselect (always_available, block_when_out, allow_backorder)nonenoecommerce.useren claroWhat happens when stock runs out: always_available, block_when_out, allow_backorder
stock_quantitynumbernonenoecommerce.useren claroUnits on hand, used with the stock policy. Orders do not reduce it: adjust it by hand
publishedboolnonenoecommerce.useren claroWhether the listing is visible to shoppers

ecommerce_listing_translation ​

A listing translated into another language

Grupo de lectura: ecommerce.user. Grupo de escritura: ecommerce.manager.

CampoTipoClase de datosDatos personalesGrupoLos agentes venDescripción
listing_idref → ecommerce_listingnonenoecommerce.useren claroThe listing this translates
langselect (en, de, fr, pl, fi, sv, es)nonenoecommerce.useren claroLanguage of the translation: en, de, fr, pl, fi, sv or es
titletextnonenoecommerce.useren claroTranslated title
summarytextnonenoecommerce.useren claroTranslated card text
descriptionlongtextnonenoecommerce.useren claroTranslated description in Markdown
publishedboolnonenoecommerce.useren claroWhether the translation is shown; it is only reachable while its listing is published

ecommerce_shipping_method ​

A way of delivering orders with its price

Grupo de lectura: ecommerce.user. Grupo de escritura: ecommerce.manager.

CampoTipoClase de datosDatos personalesGrupoLos agentes venDescripción
nametextnonenoecommerce.useren claroName shown at checkout, for example Standard delivery
carriertextnonenoecommerce.useren claroCarrier that delivers, for example DHL
pricemoneynonenoecommerce.useren claroDelivery price (minor currency units)
free_overmoneynonenoecommerce.useren claroOrder total above which delivery is free (minor currency units); empty means never
delivery_daysnumbernonenoecommerce.useren claroUsual number of days until delivery
activeboolnonenoecommerce.useren claroWhether shoppers can choose it

ecommerce_discount_code ​

A code a shopper enters at checkout for a reduction

Grupo de lectura: ecommerce.user. Grupo de escritura: ecommerce.manager.

CampoTipoClase de datosDatos personalesGrupoLos agentes venDescripción
codetextnonenoecommerce.useren claroThe code shoppers type, for example SPRING10
kindselect (percent, fixed)nonenoecommerce.useren claroType of reduction: percent or fixed
valuenumbernonenoecommerce.useren claroReduction: basis points for percent (1000 is 10.00 percent), minor currency units for fixed
starts_ondatenonenoecommerce.useren claroFirst day the code works (YYYY-MM-DD)
ends_ondatenonenoecommerce.useren claroLast day the code works (YYYY-MM-DD)
max_usesnumbernonenoecommerce.useren claroHow many times the code may be used in total; empty means unlimited
used_countnumbernonenoecommerce.useren claroHow many times it has been used (kept up to date by hand)
minimum_ordermoneynonenoecommerce.useren claroSmallest order total the code applies to (minor currency units)
activeboolnonenoecommerce.useren claroWhether the code can be used

ecommerce_order ​

An order placed online

Grupo de lectura: ecommerce.user. Grupo de escritura: ecommerce.user.

CampoTipoClase de datosDatos personalesGrupoLos agentes venDescripción
numbertextnonenoecommerce.useren claroOrder number shown to the shopper. Free text: packages cannot generate sequences; the public checkout makes a random one
customer_emailtextinternalsíecommerce.userenmascaradoEmail address of the shopper
customer_nametextinternalsíecommerce.userenmascaradoName of the shopper
customer_idref → partynonenoecommerce.useren claroThe matching contact, once the shopper is known
shipping_addresslongtextinternalsíecommerce.userenmascaradoDelivery address
billing_addresslongtextinternalsíecommerce.userenmascaradoBilling address when different from delivery
shipping_method_idref → ecommerce_shipping_methodnonenoecommerce.useren claroThe chosen way of delivery
discount_code_idref → ecommerce_discount_codenonenoecommerce.useren claroThe discount code used, if any
placed_ondatenonenoecommerce.useren claroDay the order was placed (YYYY-MM-DD)
currencytextnonenoecommerce.useren claroISO 4217 currency code, for example EUR
subtotalmoneynonenoecommerce.useren claroSum of the lines (minor currency units, entered not computed)
discount_totalmoneynonenoecommerce.useren claroReduction from the discount code (minor currency units)
shipping_totalmoneynonenoecommerce.useren claroDelivery charge (minor currency units)
tax_totalmoneynonenoecommerce.useren claroTax included in the total (minor currency units)
totalmoneynonenoecommerce.useren claroAmount the shopper pays (minor currency units)
payment_referencetextfinancialsíecommerce.userretenidoReference from the payment provider; never a card number
tracking_referencetextnonenoecommerce.useren claroCarrier tracking number
access_tokentextsecretnoecommerce.userretenidoSecret link token that lets the shopper who placed a public order see its confirmation page. Nobody can read it back
stateselect (pending, paid, shipped, delivered, cancelled, refunded)nonenoecommerce.useren claroFulfilment status: pending, paid, shipped, delivered, cancelled, refunded

ecommerce_order_line ​

One product line of a web order

Grupo de lectura: ecommerce.user. Grupo de escritura: ecommerce.user.

CampoTipoClase de datosDatos personalesGrupoLos agentes venDescripción
order_idref → ecommerce_ordernonenoecommerce.useren claroThe order the line belongs to
product_idref → productnonenoecommerce.useren claroThe product ordered
listing_idref → ecommerce_listingnonenoecommerce.useren claroThe shop listing the line was ordered from
descriptiontextnonenoecommerce.useren claroProduct text as it was when ordered
quantitynumbernonenoecommerce.useren claroUnits ordered
unit_pricemoneynonenoecommerce.useren claroPrice per unit including tax (minor currency units)
subtotalmoneynonenoecommerce.useren claroLine total (minor currency units, entered not computed)

Flujos de trabajo ​

ecommerce_order ​

AcciónMueveQuién puede ejecutarlaAprobación
ecommerce_order.mark_paidstate: pending → paidecommerce.userno
ecommerce_order.shipstate: paid → shippedecommerce.userno
ecommerce_order.deliverstate: shipped → deliveredecommerce.userno
ecommerce_order.cancelstate: pending → cancelledecommerce.userno
ecommerce_order.refundstate: paid → refundedecommerce.managersí
ecommerce_order.refund_deliveredstate: delivered → refundedecommerce.managersí

Grupos de permisos ​

Grupos que usa esta aplicación:

  • ecommerce.manager
  • ecommerce.user

Pasos con aprobación ​

Pasos que un agente solo puede proponer:

  • ecommerce_order.refund
  • ecommerce_order.refund_delivered

Qué pueden y qué no pueden hacer los agentes ​

Un agente puede leer, buscar, crear y actualizar registros de esta aplicación, y ejecutar las acciones que no requieren aprobación, dentro de los grupos de permisos de su token.

Solo puede proponer estos pasos, y una persona debe aprobarlos: ecommerce_order.refund, ecommerce_order.refund_delivered, ecommerce_category.delete, ecommerce_listing.delete, ecommerce_listing_translation.delete, ecommerce_shipping_method.delete, ecommerce_discount_code.delete, ecommerce_order.delete, ecommerce_order_line.delete.

Los datos personales se enmascaran como tokens marcadores: ecommerce_order.customer_email, ecommerce_order.customer_name, ecommerce_order.shipping_address, ecommerce_order.billing_address.

Estos campos se retienen por completo y los agentes no los ven: ecommerce_order.payment_reference, ecommerce_order.access_token.

Dependencias ​

  • base
  • product

Instalación ​

Instálala desde la aplicación Customize (Marketplace) o desde la línea de comandos:

bash
obop modules install-from ecommerce

Requiere una base de datos y derechos de administrador.

Crea la tuya ​

La guía de módulos explica cómo se escriben aplicaciones como esta