Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update UML diagrams from mermaid #1235

Merged
merged 7 commits into from
Jan 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 68 additions & 16 deletions concepts/commerce/catalog/products.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,77 @@

Depending on your setup, Shopware can easily handle thousands of products. However, an upsurge in the product quantity (in millions) needs some tweaks for robust running of the environment as it depends on factors like the number of [categories](../../../../docs/concepts/commerce/catalog/categories), [sales channels](../../../../docs/concepts/commerce/catalog/sales-channels), [product properties](../../../../docs/concepts/commerce/catalog/products#property-groups--options), etc. Every product added to your shop can be made available on one or more [sales channels](../../../../docs/concepts/commerce/catalog/sales-channels).

Let us start understanding about product more in detail:
Let's delve into a more detailed understanding of products using the example of garments:

* **Product details**: General information about a Product - for example, title, manufacturer, prices, media, etc.
* **Product properties**: Product properties encapsulates property groups and options.
* **Product variant**: A sellable good. Product Variants are generally mapped to products. Inventory is modeled per variant.
* **Category**: Products in Shopware are organised in categories. It is a grouping of products based on characteristics, marketing or search concerns. Categories are represented as a hierarchical tree to form a navigation menu. A product can be contained in multiple categories.
* **Product details**: General information about a Product.

Look at the below condensed overview of the product data model:

![Condensed overview of the product data model](../../../assets/concept-catalog-products-datamodel.png)
| Title | Product Id| Manufacturer | Prices | more.... |
|-------|-----------|--------------|--------|----------|
|levis Ocean Hoodie| SW1001 | CA | 40 | ... |

Besides their relation to categories, products can also link to a set of *property group options*.
* **Product properties**: Product properties encapsulates property groups and options. They can be displayed in a table on your product detail pages, in listings, or even be used for filtering.A product can have arbitrarily many property group options.

Check failure on line 22 in concepts/commerce/catalog/products.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] concepts/commerce/catalog/products.md#L22

Add a space between sentences. (SENTENCE_WHITESPACE) Suggestions: ` A` Rule: https://community.languagetool.org/rule/show/SENTENCE_WHITESPACE?lang=en-US Category: TYPOGRAPHY
Raw output
concepts/commerce/catalog/products.md:22:193: Add a space between sentences. (SENTENCE_WHITESPACE)
 Suggestions: ` A`
 Rule: https://community.languagetool.org/rule/show/SENTENCE_WHITESPACE?lang=en-US
 Category: TYPOGRAPHY

## Property groups and options
|Property Group| Property Group options|
|--------------|-----------------------|
|Size | *S*, *M*, *L*, *XL*, etc |

Check failure on line 26 in concepts/commerce/catalog/products.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] concepts/commerce/catalog/products.md#L26

A period is needed after the abbreviation ‘etc.’ (ETC_PERIOD[1]) Suggestions: `etc.` URL: https://languagetool.org/insights/post/spelling-etc-or-ect/ Rule: https://community.languagetool.org/rule/show/ETC_PERIOD?lang=en-US&subId=1 Category: AMERICAN_ENGLISH_STYLE
Raw output
concepts/commerce/catalog/products.md:26:39: A period is needed after the abbreviation ‘etc.’ (ETC_PERIOD[1])
 Suggestions: `etc.`
 URL: https://languagetool.org/insights/post/spelling-etc-or-ect/ 
 Rule: https://community.languagetool.org/rule/show/ETC_PERIOD?lang=en-US&subId=1
 Category: AMERICAN_ENGLISH_STYLE
|Color | *Red*, *Blue*, *Green*, *Black* |
|Material | *Leather*, *Cotton*, *Jeans* |

Product properties can be modeled using property groups and -options. They can be displayed in a table on your product detail pages, in listings, or even be used for filtering.
* **Category**: Products in Shopware are organized in categories. It is a grouping of products based on characteristics, marketing or search concerns. Categories are represented as a hierarchical tree to form a navigation menu. A product can be contained in multiple categories.

Examples of property group garments are *Size*, *Color* or *Material*. The corresponding values of each group are referred to as *property group options*. A product can have arbitrarily many property group options.
Look at the below condensed overview of the product data model:

## Product variants
```mermaid
erDiagram
Product||--|{ ProductCategory : "m:1"
ProductCategory}|--|| Category : "1:m"
Product {
uuid product_id
}
ProductCategory {
uuid product_id
uuid category_id
}
Category {
uuid category_id
}
Product ||--|{ ProductOption : "1:m"
ProductOption{
uuid product_id
uuid property_group_option_id
}
ProductOption }|--|| PropertyGroupOption : "m:1"
PropertyGroupOption{
uuid property_group_option_id
uuid property_group_id
}
PropertyGroupOption }|--|| PropertyGroup : "m:1"
PropertyGroup{
uuid property_group_id
}
```

Different variations of a product can be modeled using *product variants*. Products are a self-referencing entity, which is interpreted as a parent-child relationship. This mechanism is also used to model variants. This also provides inheritance between field values from parent products to child products.
Besides their relation to categories, products can also link to a set of *property group options*.

![Variant model](../../../assets/concept-catalog-products-variantModel.png)
* **Product variant**: A sellable product. Products are a self-referencing entity, which is interpreted as a parent-child relationship. Similarly, product variants are also generally mapped to products. This mechanism is used to model variants. This also provides inheritance between field values from parent products to child products.

```mermaid
erDiagram
Product||--|| Product : "uuid=variant"
Product {
uuid product_id
uuid parent_id
}
Product ||--|{ PropertyGroupOption : "1:m"
PropertyGroupOption{
uuid property_group_option_id
uuid property_group_id
}
PropertyGroupOption }|--|| PropertyGroup : "m:1"
PropertyGroup{
uuid property_group_id
}
```

However, it is also useful to attach some additional properties to differentiate product variants next to the field inheritance. For that reason, it is critical to understand the difference between *properties* and *options*:

Expand All @@ -52,7 +99,12 @@

It is important to understand the difference between those two because both provide a relation between the product and the property group option entity. However only one constitutes to product variants.

### Configurator
| Variant | Product | Category | Product group | Product group option |
|---------|---------|----------|---------------|----------------------|
|Variant 1| Levis Ocean Hoodie | Hoodie & Sweaters | Color | Red |
|Variant 2| Levis Ocean Hoodie | Hoodie & Sweaters | Color | Black |

## Configurator

When a variant product is loaded for a [Store API](../../api/store-api)-scoped request, Shopware assembles a configurator object which includes all different property groups and the corresponding variants. This way client applications, such as the [Storefront](../../../guides/plugins/plugins/storefront/) or the [PWA](../../../products/pwa) can display the different variant options of the product.

Expand Down
73 changes: 69 additions & 4 deletions concepts/commerce/checkout-concept/cart.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,13 +68,48 @@

Shopware 6 manages the cart's state through different services. The diagram below illustrates the different states the cart can have and the state changes it can go through.

![Cart state](../../../assets/cart-state.png)
```mermaid
---
title: Cart State
---
stateDiagram-v2
[*] --> Empty

Check failure on line 76 in concepts/commerce/checkout-concept/cart.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] concepts/commerce/checkout-concept/cart.md#L76

Possible typo: you repeated a word (ENGLISH_WORD_REPEAT_RULE) Suggestions: `Empty` Rule: https://community.languagetool.org/rule/show/ENGLISH_WORD_REPEAT_RULE?lang=en-US Category: MISC
Raw output
concepts/commerce/checkout-concept/cart.md:76:12: Possible typo: you repeated a word (ENGLISH_WORD_REPEAT_RULE)
 Suggestions: `Empty`
 Rule: https://community.languagetool.org/rule/show/ENGLISH_WORD_REPEAT_RULE?lang=en-US
 Category: MISC
Empty --> Dirty : add line item
Dirty --> Calculated : calculate
Calculated --> Dirty : modify line item/shipping/payment
Calculated --> Calculated : order invalid
Calculated --> [*] : order
```

|Cart state | Description|
|------|------------|
|Empty | A cart with no items will have default shipping and payment settings. |
|Dirty | On adding a new line item, the cart undergoes modifications with invalid prices, raw line items, and uncertain delivery validity. Consequently, calculations are necessary.|
|Calculated | After accurate calculations, the cart can be either submitted as an order or may contain errors that need to be addressed. |

## Calculation

Calculating a cart is one of the more costly operations an ecommerce system must support. Therefore the interfaces of the cart are designed as precise and as quick as possible. The calculation is a multi-stage process that revolves around the mutation of the data structure of the cart struct shown in the diagram below:

![Cart calculation](../../../assets/cart-calculation-steps.png)
```mermaid
---
title: Cart Calculation
---
stateDiagram-v2
[*] --> Enrich

Check failure on line 99 in concepts/commerce/checkout-concept/cart.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] concepts/commerce/checkout-concept/cart.md#L99

Possible typo: you repeated a word (ENGLISH_WORD_REPEAT_RULE) Suggestions: `Enrich` Rule: https://community.languagetool.org/rule/show/ENGLISH_WORD_REPEAT_RULE?lang=en-US Category: MISC
Raw output
concepts/commerce/checkout-concept/cart.md:99:12: Possible typo: you repeated a word (ENGLISH_WORD_REPEAT_RULE)
 Suggestions: `Enrich`
 Rule: https://community.languagetool.org/rule/show/ENGLISH_WORD_REPEAT_RULE?lang=en-US
 Category: MISC
Enrich --> Process

Check failure on line 100 in concepts/commerce/checkout-concept/cart.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] concepts/commerce/checkout-concept/cart.md#L100

Possible typo: you repeated a word (ENGLISH_WORD_REPEAT_RULE) Suggestions: `Process` Rule: https://community.languagetool.org/rule/show/ENGLISH_WORD_REPEAT_RULE?lang=en-US Category: MISC
Raw output
concepts/commerce/checkout-concept/cart.md:100:15: Possible typo: you repeated a word (ENGLISH_WORD_REPEAT_RULE)
 Suggestions: `Process`
 Rule: https://community.languagetool.org/rule/show/ENGLISH_WORD_REPEAT_RULE?lang=en-US
 Category: MISC
Process --> Validate

Check failure on line 101 in concepts/commerce/checkout-concept/cart.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] concepts/commerce/checkout-concept/cart.md#L101

Possible typo: you repeated a word (ENGLISH_WORD_REPEAT_RULE) Suggestions: `Validate` Rule: https://community.languagetool.org/rule/show/ENGLISH_WORD_REPEAT_RULE?lang=en-US Category: MISC
Raw output
concepts/commerce/checkout-concept/cart.md:101:16: Possible typo: you repeated a word (ENGLISH_WORD_REPEAT_RULE)
 Suggestions: `Validate`
 Rule: https://community.languagetool.org/rule/show/ENGLISH_WORD_REPEAT_RULE?lang=en-US
 Category: MISC
Validate --> Validate : repeat until no changes occur
Validate --> Persist

Check failure on line 103 in concepts/commerce/checkout-concept/cart.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] concepts/commerce/checkout-concept/cart.md#L103

Possible typo: you repeated a word (ENGLISH_WORD_REPEAT_RULE) Suggestions: `Persist` Rule: https://community.languagetool.org/rule/show/ENGLISH_WORD_REPEAT_RULE?lang=en-US Category: MISC
Raw output
concepts/commerce/checkout-concept/cart.md:103:17: Possible typo: you repeated a word (ENGLISH_WORD_REPEAT_RULE)
 Suggestions: `Persist`
 Rule: https://community.languagetool.org/rule/show/ENGLISH_WORD_REPEAT_RULE?lang=en-US
 Category: MISC
Persist --> [*]
```

|Cart calculation state | Description|
|------|------------|
|Enrich | The calculation process in the "enrich" state for line items involves adding images, its descriptions and determining prices|
|Process | During the process state, price updates occur, adjustments to shipping and payment are made|
|Validate | In the validate state, validation is performed using the rule system and cart changes based on plausibility checks. |
|Persist | The persist state is responsible for updating the storage. |

### Cart enrichment

Expand Down Expand Up @@ -105,7 +140,28 @@
| Shopware\Core\Checkout\Promotion\Cart\CartPromotionsCollector | Enrich add, remove and validate promotions |
| Shopware\Core\Checkout\Shipping\Cart\ShippingMethodPriceCollector | Handle shipping prices |

![Cart enrichment steps](../../../assets/cart-enrichtment-steps.png)
```mermaid
---
title: Enrichment
---
sequenceDiagram
Enrichment->>Enrichment :
box
participant Enrichment
participant ProductCartProcessor
participant CartPromotionsCollector
participant CartDiscountCollector
end
Note over Enrichment,CartDiscountCollector: Collect
Enrichment->>ProductCartProcessor: collect
Enrichment->>CartPromotionsCollector: collect
Enrichment->>CartDiscountCollector: collect
Note over Enrichment,CartDiscountCollector: Enrichment

Check failure on line 159 in concepts/commerce/checkout-concept/cart.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] concepts/commerce/checkout-concept/cart.md#L159

Possible typo: you repeated a word (ENGLISH_WORD_REPEAT_RULE) Suggestions: `Enrichment` Rule: https://community.languagetool.org/rule/show/ENGLISH_WORD_REPEAT_RULE?lang=en-US Category: MISC
Raw output
concepts/commerce/checkout-concept/cart.md:159:48: Possible typo: you repeated a word (ENGLISH_WORD_REPEAT_RULE)
 Suggestions: `Enrichment`
 Rule: https://community.languagetool.org/rule/show/ENGLISH_WORD_REPEAT_RULE?lang=en-US
 Category: MISC
Enrichment->>ProductCartProcessor: enrich
Enrichment->>CartPromotionsCollector: enrich
Enrichment->>CartDiscountCollector: enrich
Enrichment->>Enrichment :
```

## Cart processors - price calculation and validation

Expand All @@ -124,7 +180,16 @@
* Everybody buying a car gets a pair of sunglasses for free.
* Every cart containing two products gets a discount of 2%.

![Cart validation](../../../assets/cart-validation.png)
```mermaid
stateDiagram-v2
[*] --> Empty_cart : checkout started
Empty_cart --> Enrichment : User orders a car
state Enrichment {
Cart_with_lineitem(car) --> Cart_with_lineitem(car+sunglasses) : Iteration 1 - Cart automatically adds sunglasses
Cart_with_lineitem(car+sunglasses) --> Cart_with_lineitem(car+sunglasses+2%discount) : Iteration 2 - Cart automatically adds discount
}
Cart_with_lineitem(car+sunglasses+2%discount) --> [*] : valid
```

As you can see in the diagram above, the cart is modified during the enrichment process. The sunglasses are added in the first iteration, and in the second iteration, the discount is added as the cart contains two products. This results in the expected state of one car, one pair of sunglasses, and a two-percent discount.

Expand Down
31 changes: 29 additions & 2 deletions concepts/framework/flow-concept.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,35 @@ In Shopware, you have multiple interfaces and classes for different types of eve

Once the action on the Storefront or from the app happens, the FlowDispatcher will dispatch FlowEventAware to the FlowExecutor. From here, the FlowExecutor will check the condition to decide whether to execute the action.

![Flow builder concept for flow sequence](../../assets/flow-concept-1.png)
```mermaid
flowchart-elk TD
A([Start])-->B["`FlowDispatcher::dispatch()`"]
B--dispatches (FlowEventAware)-->C["`FlowExecutor::execute()`"]
C-->D{"`FlowExecutor::sequenceRuleMatches()`"}
C--no condition-->E["`FlowExecutor::executeAction3()`"]
D--Yes-->I["`FlowExecutor::executeAction2()`"]
E-->F["`StopFlowAction::handleFlow()`"]
F-->G([End])
D--No -->H["`FlowExecutor::executeAction1()`"]
H-->F
I-->F
```

Here is an example flow of what happens in the system when an order is placed on the Storefront.

![Flow builder concept for order placed](../../assets/flow-concept-2.png)
```mermaid
flowchart-elk TD
A([Start])
subgraph Storefront
B[User]
end
A-->Storefront
Storefront--Place an order-->Core
subgraph Core
C["`CartOrderRoute::Order()`"]--dispatch [checkout.order.place]-->D["`FlowDispatcher::dispatch()`"]
D-->E["`FlowExecutor::execute()`"]
E-->F["`FlowExecutor::executeAction()`"]
F-->G["`StopFlowAction::handleFlow()`"]
end
G-->H([End])
```
25 changes: 23 additions & 2 deletions concepts/framework/rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,32 @@

As well as a Specification class, a Rule class represents a condition to fulfill. It implements the `match(RuleScope $scope)` function to validate user defined values against a runtime state. See the following object diagram for a better understanding:

![](../../assets/rule-objects.png)
```mermaid
classDiagram
root-OrRule .. lineItemCount - LineItemsInCartCountRule

Check failure on line 44 in concepts/framework/rules.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] concepts/framework/rules.md#L44

Two consecutive dots (DOUBLE_PUNCTUATION) Suggestions: `.`, `…` URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US Category: PUNCTUATION
Raw output
concepts/framework/rules.md:44:16: Two consecutive dots (DOUBLE_PUNCTUATION)
 Suggestions: `.`, `…`
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods 
 Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US
 Category: PUNCTUATION
root-OrRule .. cartPrice - GoodsPriceRule

Check failure on line 45 in concepts/framework/rules.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] concepts/framework/rules.md#L45

Two consecutive dots (DOUBLE_PUNCTUATION) Suggestions: `.`, `…` URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US Category: PUNCTUATION
Raw output
concepts/framework/rules.md:45:16: Two consecutive dots (DOUBLE_PUNCTUATION)
 Suggestions: `.`, `…`
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods 
 Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US
 Category: PUNCTUATION
class root-OrRule{
rules=[lineItemCount, cartPrice]
}
class lineItemCount - LineItemsInCartCountRule{
operator=">="
count="40"
}
class cartPrice - GoodsPriceRule{
operator=">="
count="500"
}
```

This will result in the following call order:

![](../../assets/rule-sequence.png)
```mermaid
sequenceDiagram
root-->>lineItemCount: match()?
lineItemCount-->>root: false
root-->>cartPrice: match()?
cartPrice-->>root: false
```

As you can see, a single rule can either contain user defined values or other user defined rules. These are Container rules. The rule system here bears some resemblance to the [SearchCriteria](../../guides/plugins/plugins/framework/data-handling/reading-data#Filtering), although independent. A Search Criteria is the representation of a query that gets translated and executed through the storage engine. The rule matches in-memory in PHP and does not access the underlying storage.

Expand Down
17 changes: 16 additions & 1 deletion guides/plugins/plugins/api/multi-inventory.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,22 @@

The Multi-Inventory feature implements a specific data structure for its internal stock handling. The following entity-relationship model visually represents the new entities, as well as the relationships between them and platform entities.

![multi-inventory_data-structure](../../../../assets/multi-inventory-data-structure.png)
```mermaid
erDiagram
order_warehouse_group }|..|| order : has

Check failure on line 39 in guides/plugins/plugins/api/multi-inventory.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] guides/plugins/plugins/api/multi-inventory.md#L39

Two consecutive dots (DOUBLE_PUNCTUATION) Suggestions: `.`, `…` URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US Category: PUNCTUATION
Raw output
guides/plugins/plugins/api/multi-inventory.md:39:28: Two consecutive dots (DOUBLE_PUNCTUATION)
 Suggestions: `.`, `…`
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods 
 Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US
 Category: PUNCTUATION
order_warehouse_group }|..|| warehouse_group : has

Check failure on line 40 in guides/plugins/plugins/api/multi-inventory.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] guides/plugins/plugins/api/multi-inventory.md#L40

Two consecutive dots (DOUBLE_PUNCTUATION) Suggestions: `.`, `…` URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US Category: PUNCTUATION
Raw output
guides/plugins/plugins/api/multi-inventory.md:40:28: Two consecutive dots (DOUBLE_PUNCTUATION)
 Suggestions: `.`, `…`
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods 
 Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US
 Category: PUNCTUATION
order_product_warehouse }|..|| order : has

Check failure on line 41 in guides/plugins/plugins/api/multi-inventory.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] guides/plugins/plugins/api/multi-inventory.md#L41

Two consecutive dots (DOUBLE_PUNCTUATION) Suggestions: `.`, `…` URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US Category: PUNCTUATION
Raw output
guides/plugins/plugins/api/multi-inventory.md:41:30: Two consecutive dots (DOUBLE_PUNCTUATION)
 Suggestions: `.`, `…`
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods 
 Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US
 Category: PUNCTUATION
order_product_warehouse }|..|| warehouse : has

Check failure on line 42 in guides/plugins/plugins/api/multi-inventory.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] guides/plugins/plugins/api/multi-inventory.md#L42

Two consecutive dots (DOUBLE_PUNCTUATION) Suggestions: `.`, `…` URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US Category: PUNCTUATION
Raw output
guides/plugins/plugins/api/multi-inventory.md:42:30: Two consecutive dots (DOUBLE_PUNCTUATION)
 Suggestions: `.`, `…`
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods 
 Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US
 Category: PUNCTUATION
warehouse_group }|..|| rule : has

Check failure on line 43 in guides/plugins/plugins/api/multi-inventory.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] guides/plugins/plugins/api/multi-inventory.md#L43

Two consecutive dots (DOUBLE_PUNCTUATION) Suggestions: `.`, `…` URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US Category: PUNCTUATION
Raw output
guides/plugins/plugins/api/multi-inventory.md:43:22: Two consecutive dots (DOUBLE_PUNCTUATION)
 Suggestions: `.`, `…`
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods 
 Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US
 Category: PUNCTUATION
warehouse_group }|..|| product_warehouse_group : has

Check failure on line 44 in guides/plugins/plugins/api/multi-inventory.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] guides/plugins/plugins/api/multi-inventory.md#L44

Two consecutive dots (DOUBLE_PUNCTUATION) Suggestions: `.`, `…` URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US Category: PUNCTUATION
Raw output
guides/plugins/plugins/api/multi-inventory.md:44:22: Two consecutive dots (DOUBLE_PUNCTUATION)
 Suggestions: `.`, `…`
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods 
 Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US
 Category: PUNCTUATION
warehouse_group }|..|| warehouse_group_warehouse : has

Check failure on line 45 in guides/plugins/plugins/api/multi-inventory.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] guides/plugins/plugins/api/multi-inventory.md#L45

Two consecutive dots (DOUBLE_PUNCTUATION) Suggestions: `.`, `…` URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US Category: PUNCTUATION
Raw output
guides/plugins/plugins/api/multi-inventory.md:45:22: Two consecutive dots (DOUBLE_PUNCTUATION)
 Suggestions: `.`, `…`
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods 
 Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US
 Category: PUNCTUATION
product_warehouse_group }|..|| product : has

Check failure on line 46 in guides/plugins/plugins/api/multi-inventory.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] guides/plugins/plugins/api/multi-inventory.md#L46

Two consecutive dots (DOUBLE_PUNCTUATION) Suggestions: `.`, `…` URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US Category: PUNCTUATION
Raw output
guides/plugins/plugins/api/multi-inventory.md:46:30: Two consecutive dots (DOUBLE_PUNCTUATION)
 Suggestions: `.`, `…`
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods 
 Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US
 Category: PUNCTUATION
order_product_warehouse }|..|| product : has

Check failure on line 47 in guides/plugins/plugins/api/multi-inventory.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] guides/plugins/plugins/api/multi-inventory.md#L47

Two consecutive dots (DOUBLE_PUNCTUATION) Suggestions: `.`, `…` URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US Category: PUNCTUATION
Raw output
guides/plugins/plugins/api/multi-inventory.md:47:30: Two consecutive dots (DOUBLE_PUNCTUATION)
 Suggestions: `.`, `…`
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods 
 Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US
 Category: PUNCTUATION
product_warehouse }|..|| product : has

Check failure on line 48 in guides/plugins/plugins/api/multi-inventory.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] guides/plugins/plugins/api/multi-inventory.md#L48

Two consecutive dots (DOUBLE_PUNCTUATION) Suggestions: `.`, `…` URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US Category: PUNCTUATION
Raw output
guides/plugins/plugins/api/multi-inventory.md:48:24: Two consecutive dots (DOUBLE_PUNCTUATION)
 Suggestions: `.`, `…`
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods 
 Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US
 Category: PUNCTUATION
warehouse_group_warehouse }|..|| warehouse_group : has

Check failure on line 49 in guides/plugins/plugins/api/multi-inventory.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] guides/plugins/plugins/api/multi-inventory.md#L49

Two consecutive dots (DOUBLE_PUNCTUATION) Suggestions: `.`, `…` URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US Category: PUNCTUATION
Raw output
guides/plugins/plugins/api/multi-inventory.md:49:32: Two consecutive dots (DOUBLE_PUNCTUATION)
 Suggestions: `.`, `…`
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods 
 Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US
 Category: PUNCTUATION
warehouse_group_warehouse }|..|| warehouse : has

Check failure on line 50 in guides/plugins/plugins/api/multi-inventory.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] guides/plugins/plugins/api/multi-inventory.md#L50

Two consecutive dots (DOUBLE_PUNCTUATION) Suggestions: `.`, `…` URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US Category: PUNCTUATION
Raw output
guides/plugins/plugins/api/multi-inventory.md:50:32: Two consecutive dots (DOUBLE_PUNCTUATION)
 Suggestions: `.`, `…`
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods 
 Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US
 Category: PUNCTUATION
product_warehouse }|..|| warehouse : has

Check failure on line 51 in guides/plugins/plugins/api/multi-inventory.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] guides/plugins/plugins/api/multi-inventory.md#L51

Two consecutive dots (DOUBLE_PUNCTUATION) Suggestions: `.`, `…` URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US Category: PUNCTUATION
Raw output
guides/plugins/plugins/api/multi-inventory.md:51:24: Two consecutive dots (DOUBLE_PUNCTUATION)
 Suggestions: `.`, `…`
 URL: https://languagetool.org/insights/post/punctuation-guide/#what-are-periods 
 Rule: https://community.languagetool.org/rule/show/DOUBLE_PUNCTUATION?lang=en-US
 Category: PUNCTUATION
```

## Working with the API

Expand Down
1 change: 0 additions & 1 deletion products/extensions/b2b-suite/concept/line-item-list.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ The LineItemList component is the central representation of product lists in the
* Guaranteed audit logging

The component is used across multiple different child components throughout the B2B Suite.

![image](../../../../assets/line-item-list-outer-dependencies.svg)

The yellow colored blocks represent components, while the smaller green ones are context objects that contain the component specific information.
Expand Down
27 changes: 26 additions & 1 deletion products/extensions/b2b-suite/guides/core/audit-log.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,32 @@
The B2B Suite provides a general audit log that can be implemented in every component.
The audit log component can save different log types and author information like first name, last name, and email. It provides a one-to-many association index. The database structure is described in the graphic below:

![image](../../../../../assets/auditlog-structure.svg)
```mermaid
classDiagram
b2b_audit_log_index o--> b2b_audit_log : n to 1
b2b_audit_log o--> b2b_audit_log_author : n to 1
class b2b_audit_log_index{
id

Check failure on line 22 in products/extensions/b2b-suite/guides/core/audit-log.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] products/extensions/b2b-suite/guides/core/audit-log.md#L22

The abbreviation for “identification” is spelled all-uppercase, or did you mean “I’d” (= I would/had)? (ID_CASING[1]) Suggestions: `I'd`, `ID` Rule: https://community.languagetool.org/rule/show/ID_CASING?lang=en-US&subId=1 Category: CASING
Raw output
products/extensions/b2b-suite/guides/core/audit-log.md:22:8: The abbreviation for “identification” is spelled all-uppercase, or did you mean “I’d” (= I would/had)? (ID_CASING[1])
 Suggestions: `I'd`, `ID`
 Rule: https://community.languagetool.org/rule/show/ID_CASING?lang=en-US&subId=1
 Category: CASING
audit_log_id
reference_table
reference_id
}
class b2b_audit_log{
id

Check failure on line 28 in products/extensions/b2b-suite/guides/core/audit-log.md

View workflow job for this annotation

GitHub Actions / LanguageTool

[LanguageTool] products/extensions/b2b-suite/guides/core/audit-log.md#L28

The abbreviation for “identification” is spelled all-uppercase, or did you mean “I’d” (= I would/had)? (ID_CASING[1]) Suggestions: `I'd`, `ID` Rule: https://community.languagetool.org/rule/show/ID_CASING?lang=en-US&subId=1 Category: CASING
Raw output
products/extensions/b2b-suite/guides/core/audit-log.md:28:8: The abbreviation for “identification” is spelled all-uppercase, or did you mean “I’d” (= I would/had)? (ID_CASING[1])
 Suggestions: `I'd`, `ID`
 Rule: https://community.languagetool.org/rule/show/ID_CASING?lang=en-US&subId=1
 Category: CASING
log_value
log_type
event_date
author_hash
}
class b2b_audit_log_author{
hash
salutation
title
firstname
lastname
email
}
```

As you can see, the database structure is very flat. In the `b2b_audit_log` table, we save a log type and a serialized *AuditLogValueEntity*.
All required author information is saved in the `b2b_audit_log_author` table.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ The most basic ajax panel looks like this:
```twig
<div
class="b2b--ajax-panel"
data-url="{{ path('frontend.b2b.b2bcontact.grid' }}"
data-url="{{ path('frontend.b2b.b2bcontact.grid') }}"
>
<!-- will load content here -->
</div>
Expand Down
Loading