eCommerce
Webbutik
Vad den är till för
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.
Vad paketet gör och inte gör
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.
Modeller
ecommerce_category
A group of listings shown together in the shop
Läsgrupp: ecommerce.user. Skrivgrupp: ecommerce.manager.
| Fält | Typ | Dataklass | Personuppgift | Grupp | Agenter ser | Beskrivning |
|---|---|---|---|---|---|---|
name | text | none | nej | ecommerce.user | i klartext | Category name shown in the shop |
slug | text | none | nej | ecommerce.user | i klartext | URL part of the category, lowercase with dashes |
description | text | none | nej | ecommerce.user | i klartext | Short text about the category |
sequence | number | none | nej | ecommerce.user | i klartext | Order among categories, lowest first |
published | bool | none | nej | ecommerce.user | i klartext | Whether the category is visible to shoppers |
ecommerce_listing
A product as it appears in the online shop
Läsgrupp: ecommerce.user. Skrivgrupp: ecommerce.manager.
| Fält | Typ | Dataklass | Personuppgift | Grupp | Agenter ser | Beskrivning |
|---|---|---|---|---|---|---|
product_id | ref → product | none | nej | ecommerce.user | i klartext | The product being sold online |
title | text | none | nej | ecommerce.user | i klartext | Title shown in the shop |
slug | text | none | nej | ecommerce.user | i klartext | URL part of the product page, lowercase with dashes |
summary | text | none | nej | ecommerce.user | i klartext | One or two sentences shown on product cards |
description | longtext | none | nej | ecommerce.user | i klartext | Description shown on the product page, in Markdown |
category_id | ref → ecommerce_category | none | nej | ecommerce.user | i klartext | The category the listing is shown under |
price | money | none | nej | ecommerce.user | i klartext | Shop price including tax (minor currency units, e.g. cents) |
compare_at_price | money | none | nej | ecommerce.user | i klartext | Previous price shown crossed out (minor currency units) |
currency | text | none | nej | ecommerce.user | i klartext | ISO 4217 currency code of the prices, for example EUR; empty means the shop currency from the instance settings |
sku | text | none | nej | ecommerce.user | i klartext | Stock keeping unit shown on the product page |
stock_policy | select (always_available, block_when_out, allow_backorder) | none | nej | ecommerce.user | i klartext | What happens when stock runs out: always_available, block_when_out, allow_backorder |
stock_quantity | number | none | nej | ecommerce.user | i klartext | Units on hand, used with the stock policy. Orders do not reduce it: adjust it by hand |
published | bool | none | nej | ecommerce.user | i klartext | Whether the listing is visible to shoppers |
ecommerce_listing_translation
A listing translated into another language
Läsgrupp: ecommerce.user. Skrivgrupp: ecommerce.manager.
| Fält | Typ | Dataklass | Personuppgift | Grupp | Agenter ser | Beskrivning |
|---|---|---|---|---|---|---|
listing_id | ref → ecommerce_listing | none | nej | ecommerce.user | i klartext | The listing this translates |
lang | select (en, de, fr, pl, fi, sv, es) | none | nej | ecommerce.user | i klartext | Language of the translation: en, de, fr, pl, fi, sv or es |
title | text | none | nej | ecommerce.user | i klartext | Translated title |
summary | text | none | nej | ecommerce.user | i klartext | Translated card text |
description | longtext | none | nej | ecommerce.user | i klartext | Translated description in Markdown |
published | bool | none | nej | ecommerce.user | i klartext | Whether the translation is shown; it is only reachable while its listing is published |
ecommerce_shipping_method
A way of delivering orders with its price
Läsgrupp: ecommerce.user. Skrivgrupp: ecommerce.manager.
| Fält | Typ | Dataklass | Personuppgift | Grupp | Agenter ser | Beskrivning |
|---|---|---|---|---|---|---|
name | text | none | nej | ecommerce.user | i klartext | Name shown at checkout, for example Standard delivery |
carrier | text | none | nej | ecommerce.user | i klartext | Carrier that delivers, for example DHL |
price | money | none | nej | ecommerce.user | i klartext | Delivery price (minor currency units) |
free_over | money | none | nej | ecommerce.user | i klartext | Order total above which delivery is free (minor currency units); empty means never |
delivery_days | number | none | nej | ecommerce.user | i klartext | Usual number of days until delivery |
active | bool | none | nej | ecommerce.user | i klartext | Whether shoppers can choose it |
ecommerce_discount_code
A code a shopper enters at checkout for a reduction
Läsgrupp: ecommerce.user. Skrivgrupp: ecommerce.manager.
| Fält | Typ | Dataklass | Personuppgift | Grupp | Agenter ser | Beskrivning |
|---|---|---|---|---|---|---|
code | text | none | nej | ecommerce.user | i klartext | The code shoppers type, for example SPRING10 |
kind | select (percent, fixed) | none | nej | ecommerce.user | i klartext | Type of reduction: percent or fixed |
value | number | none | nej | ecommerce.user | i klartext | Reduction: basis points for percent (1000 is 10.00 percent), minor currency units for fixed |
starts_on | date | none | nej | ecommerce.user | i klartext | First day the code works (YYYY-MM-DD) |
ends_on | date | none | nej | ecommerce.user | i klartext | Last day the code works (YYYY-MM-DD) |
max_uses | number | none | nej | ecommerce.user | i klartext | How many times the code may be used in total; empty means unlimited |
used_count | number | none | nej | ecommerce.user | i klartext | How many times it has been used (kept up to date by hand) |
minimum_order | money | none | nej | ecommerce.user | i klartext | Smallest order total the code applies to (minor currency units) |
active | bool | none | nej | ecommerce.user | i klartext | Whether the code can be used |
ecommerce_order
An order placed online
Läsgrupp: ecommerce.user. Skrivgrupp: ecommerce.user.
| Fält | Typ | Dataklass | Personuppgift | Grupp | Agenter ser | Beskrivning |
|---|---|---|---|---|---|---|
number | text | none | nej | ecommerce.user | i klartext | Order number shown to the shopper. Free text: packages cannot generate sequences; the public checkout makes a random one |
customer_email | text | internal | ja | ecommerce.user | maskerad | Email address of the shopper |
customer_name | text | internal | ja | ecommerce.user | maskerad | Name of the shopper |
customer_id | ref → party | none | nej | ecommerce.user | i klartext | The matching contact, once the shopper is known |
shipping_address | longtext | internal | ja | ecommerce.user | maskerad | Delivery address |
billing_address | longtext | internal | ja | ecommerce.user | maskerad | Billing address when different from delivery |
shipping_method_id | ref → ecommerce_shipping_method | none | nej | ecommerce.user | i klartext | The chosen way of delivery |
discount_code_id | ref → ecommerce_discount_code | none | nej | ecommerce.user | i klartext | The discount code used, if any |
placed_on | date | none | nej | ecommerce.user | i klartext | Day the order was placed (YYYY-MM-DD) |
currency | text | none | nej | ecommerce.user | i klartext | ISO 4217 currency code, for example EUR |
subtotal | money | none | nej | ecommerce.user | i klartext | Sum of the lines (minor currency units, entered not computed) |
discount_total | money | none | nej | ecommerce.user | i klartext | Reduction from the discount code (minor currency units) |
shipping_total | money | none | nej | ecommerce.user | i klartext | Delivery charge (minor currency units) |
tax_total | money | none | nej | ecommerce.user | i klartext | Tax included in the total (minor currency units) |
total | money | none | nej | ecommerce.user | i klartext | Amount the shopper pays (minor currency units) |
payment_reference | text | financial | ja | ecommerce.user | undanhållen | Reference from the payment provider; never a card number |
tracking_reference | text | none | nej | ecommerce.user | i klartext | Carrier tracking number |
access_token | text | secret | nej | ecommerce.user | undanhållen | Secret link token that lets the shopper who placed a public order see its confirmation page. Nobody can read it back |
state | select (pending, paid, shipped, delivered, cancelled, refunded) | none | nej | ecommerce.user | i klartext | Fulfilment status: pending, paid, shipped, delivered, cancelled, refunded |
ecommerce_order_line
One product line of a web order
Läsgrupp: ecommerce.user. Skrivgrupp: ecommerce.user.
| Fält | Typ | Dataklass | Personuppgift | Grupp | Agenter ser | Beskrivning |
|---|---|---|---|---|---|---|
order_id | ref → ecommerce_order | none | nej | ecommerce.user | i klartext | The order the line belongs to |
product_id | ref → product | none | nej | ecommerce.user | i klartext | The product ordered |
listing_id | ref → ecommerce_listing | none | nej | ecommerce.user | i klartext | The shop listing the line was ordered from |
description | text | none | nej | ecommerce.user | i klartext | Product text as it was when ordered |
quantity | number | none | nej | ecommerce.user | i klartext | Units ordered |
unit_price | money | none | nej | ecommerce.user | i klartext | Price per unit including tax (minor currency units) |
subtotal | money | none | nej | ecommerce.user | i klartext | Line total (minor currency units, entered not computed) |
Arbetsflöden
ecommerce_order
| Åtgärd | Flyttar | Vem får köra den | Godkännande |
|---|---|---|---|
ecommerce_order.mark_paid | state: pending → paid | ecommerce.user | nej |
ecommerce_order.ship | state: paid → shipped | ecommerce.user | nej |
ecommerce_order.deliver | state: shipped → delivered | ecommerce.user | nej |
ecommerce_order.cancel | state: pending → cancelled | ecommerce.user | nej |
ecommerce_order.refund | state: paid → refunded | ecommerce.manager | ja |
ecommerce_order.refund_delivered | state: delivered → refunded | ecommerce.manager | ja |
Behörighetsgrupper
Grupper som den här appen använder:
ecommerce.managerecommerce.user
Steg som kräver godkännande
Steg som en agent bara kan föreslå:
ecommerce_order.refundecommerce_order.refund_delivered
Vad agenter kan och inte kan göra
En agent kan läsa, söka, skapa och uppdatera poster i den här appen, och köra de åtgärder som inte kräver godkännande, inom behörighetsgrupperna för sin token.
Den kan bara föreslå de här stegen, och en person måste godkänna dem: 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.
Personuppgifter maskeras som platshållare: ecommerce_order.customer_email, ecommerce_order.customer_name, ecommerce_order.shipping_address, ecommerce_order.billing_address.
De här fälten undanhålls helt från agenter: ecommerce_order.payment_reference, ecommerce_order.access_token.
Beroenden
baseproduct
Installera
Installera den från appen Customize (Marknadsplats), eller från kommandoraden:
obop modules install-from ecommerceKräver en databas och administratörsbehörighet.