This documentation is for a version that has reached its End Of Life. Such versions are no longer supported and don't receive security updates. Consider updating to a newer version.
Basket data model¶
The basket consists of two elements:
- a basket header that contains information such as IDs, the invoice party and delivery
- one or more basket lines with information about the products
Basket¶
The following attributes are provided by the basket header.
Attribute | Meaning | Type | Mandatory |
---|---|---|---|
basketId |
Basket ID number. Ensures that one order is placed only once. It must be an integer, because it is passed to the ERP, and some ERP systems accept only integer IDs. | int | Yes |
originId |
ID of the original basket if the current basket is a copy | int | |
erpOrderId |
ID assigned by the ERP to the order document | string | |
guid |
Unique ID that identifies the order across all systems (for example, ERP, shop and payment system) | string | |
state |
new , offered , payed , confirmed |
string | Yes |
type |
basket , quickOrder , storedBasket , wishlist , comparison |
string | Yes |
erpFailCounter |
Used in the processFailedOrder() method of the BasketService to count the number of attempts (of submitting the order to the ERP) |
int | |
erpFailErrorLog |
List of messages related to failed ERP transmissions | array | |
sessionId |
sessionId of the anonymous user |
string | |
userId |
userId if the user is logged in |
int | |
basketName |
The basket name given by a user to function storedBasket . In this case the attribute type is storedBasket (see Wishlist and stored baskets) |
string | |
invoiceParty |
Invoice address. In order to process the basket, the address may have to be updated if the customer changes the invoice address | Party | |
deliveryParty |
Delivery address chosen for the order | Party | |
buyerParty |
Customer address. In order to process the basket, the address may have to be updated if the customer changes the invoice address | Party | |
remark |
Additional customer remark | string | |
dateCreated |
Date and time when the basket was created | Datetime | Yes |
dateLastModified |
Date and time when the basket was last modified | Datetime | Yes |
shop |
Code of the shop where the order was placed. The code is defined in silver.e-shop.yml |
string | |
requirePriceUpdate |
If true, price engine must be initiated | boolean | Yes |
totals |
Stores BasketTotals object, used for all lines |
array of BasketTotals | |
totalsSum |
Stores an array of BasketTotals objects, used for order splitting |
BasketTotals | |
currency |
Basket currency | string | |
totalsSumNet |
Basket total net sum as simple float value | float | |
totalsSumGross |
Basket total gross sum as simple float value | float | |
additionalLines |
Array of AdditionalLine objects that can contain more information about products (for example, additional shipping costs, vouchers, discounts, etc.) |
array of AdditionalLine | |
lines |
Array of BasketLine objects | array of BasketLine | |
dateLastPriceCalculation |
Date of last price calculation made by the basket service when storing the basket | DateTime | |
shippingMethod |
The selected shipping method | string | |
paymentMethod |
The selected payment method | string | |
paymentTransactionId |
Transaction ID given by the payment provider | string | |
confirmationEmail |
Email address, to which the order confirmation email will be sent | string | |
salesConfirmationEmail |
Email address of the sales contact, to whom order confirmation will be sent | string | |
allProductsAvailable |
True if all products in basket are available. This value can be checked only if a service such as the ERP provides Stockinfo |
boolean | |
dataMap |
Additional information (for example, project-specific attributes) | array | |
messages |
The error, notice and success messages. The messages are not stored in the database | array |
BasketLine¶
Attribute | Meaning | Type | Mandatory |
---|---|---|---|
basketLineId |
Basket line ID | int | Yes |
lineNumber |
Line number. The number is set when the user adds an article to the basket | int | Yes |
sku |
Unique article number | string | Yes |
variantCode |
If variant is used | string | |
productType |
Type of product, such as product, event, subscription, ebook, download.This field is used, for example, to choose a template for displaying the product info for price engine (which request should be sent to the ERP)Example: OrderableProductNode |
string | Yes |
quantity |
Quantity of the product | float | Yes |
unit |
Type of packaging unit | string | |
price |
Price for one item of the line | float | |
priceNet |
Net price for one item of the line | float | |
priceGross |
Gross price for one item of the line | float | |
linePriceAmountNet |
Net price of all items of the line | float | |
linePriceAmountGross |
Gross price of all items of the line | float | |
vat |
VAT in % | float | |
isIncVat |
Does the price include VAT | boolean | |
currency |
Line currency | string | Yes |
catalogElement |
Complete (orderable) catalog element | CatalogElement | |
groupCalc |
Not used | string | |
groupOrder |
Not used | string | |
remark |
Additional remark from the user | string | |
basket |
Relation to the Basket object | Basket | |
remoteDataMap |
Additional information for the given basket line. This field may contain extra data provided by the user for this basket line (for example, a special field such as length or a reference to an internal order number).The price engine sets the following attributes in the remoteDataMap when provided by the price service (for example, by an ERP system):stockNumeric - number of items in stockonStock - boolean |
array | |
variantCharacteristics |
Contains all characteristics for the given variantCode |
array | |
assignedLines |
Array of AdditionalLine objects that can contain more information about products (for example, additional shipping costs, vouchers, discounts) |
array of AdditionalLine |
BasketTotals¶
BasketTotals
is not an entity, therefore it has no table in the database. BasketTotals
is stored in the basket as:
- serialized object -
totalsSum
- serialized array of objects -
totals
Attribute | Type (PHP) |
---|---|
totalNet |
float |
totalGross |
float |
vatList |
array |
currency |
string |
Important Basket Repository methods¶
Method | Usage | Parameters |
---|---|---|
getBasketBySessionId |
Gets basket by SessionId |
sessionId , state , type , name (optional), splittingcode (optional) |
getBasketByUserId |
Gets basket by userId |
userId , state , type , name (optional), splittingcode (optional) |
removeAllAssignedBaskets |
Removes all baskets from the database that are based on the original basket | originBasketId |
removeBasketsOlderThan |
Removes all old anonymous baskets from the storage | validationDatetime |
Basket messages¶
Basket messages are stored in the Basket object, but they are not stored in the database. It is possible to store several success, error or notice messages for products.
Method | Meaning | Parameters |
---|---|---|
setSuccessMessage() |
Adds one success message to the basket | success |
getSuccessMessages() |
Gets all success messages from the basket. If it is not set, an empty string is returned. | |
setErrorMessage() |
Adds one error message to the basket | error |
getErrorMessages() |
Gets all error messages from the basket. If it is not set, an empty string is returned. | |
setNoticeMessage() |
Adds one notice message to the basket | notice |
getNoticeMessages() |
Gets all notice messages from the basket. If it is not set, an empty string is returned. | |
clearAllMessages() |
Deletes all messages from the basket | |
removeSuccessMessageForSku() |
Deletes all success messages for the given SKU from the success messages | sku |
The messages are rendered using the EshopBundle/Resources/views/Basket/messages.html.twig
template.