Article
The Article Service provides functionalities revolving around article management (creating, updating, retrieving) articles. Articles are retrieved via storeId/articleId combination or via storeId/ean combination. There is also a customer import mechanism that allows for the creation/update of articles. There are 2 different scenarios:
- Scenario 1 (full data) - The customer will send all data so we will delete the old data and replace with new data
- Scenario 2 (incremental data) - The customer will send only data that was modified -> we replace / add / delete data
Product Catalog
Product Catalog is a service that stores and exposes core properties for products (not store-specific). Possible Integrations within Lobyco ecosystem:
- Purchase Load Enricher: retrieves brandId, hierarchy
- Data Platform: for personal offers algorithm: product hierarchy, product attributes
- Shopping List: product name
Purchase
Purchase Load is an enabler service for storing POS transactions (purchases). Also, it enables other services to have purchase-triggered logic via subscription to message broker topic. For example, Bonus Calculation service listens to 'PurchaseLoadedEvent' in order to calculate and load a bonus to the member bonus account for each purchase. There are separate topics for member and non-member purchases.
Purchase load endpoint performs next main validations:
- Purchase contains at least one product
- Purchase contains at least one payment method
- Payment methods:
- If payment type is card, then cardPan also must be specified
- If currency code is specified for specific payment method, it must be different from purchase currency code, and also, in this case conversion rate must be specified
- Products
- If unit price is specified, then it must be greater or equal to zero
- Quantity, price and originalPrice properties must be either positive or negative at the same time
- Discounts
- TotalDiscountAmount must not be 0
- Amounts
- Purchase.TotalAmount = (sum of all products.price) - (sum of discounts.totalDiscountAmount which doesn't have any applied products (global discounts))
- Purchase.TotalAmount = (sum of all products.originalPrice) - (sum of all discounts.totalDiscountAmount)
- Purchase.TotalAmount = sum of (paymentMethods.amount or in case if paymentMethod have conversion rate specified -> paymentMethod.amount * paymentMethods.conversionRate)
Store Service
Store Service is one of the supporting services designed to handle operations associated with managing retail chains and individual store data. It focuses on data management (creation, update, import, export) and adjustments (e.g opening hours). This service is required to run offers and campaigns at location level, and to support several App-facing features, like select preffered store, store lists, etc.
The Store APIs expose the following capabilties:
- Chain operations: create, update, delete, and retrieve information about retail chains. The service provides functionalities to check for the existence of a chain record by chain ID.
- Import and export chains: there is support for importing chain data, possibly from other systems or external sources, and exporting chain data into a CSV format.
- Store operations: similar to chain management, allows creating, updating, deleting, and retrieving store records. This also includes checking the existence of stores.
- Opening hours management: control over store opening hours, including the ability to create adjustments. This cover temporary changes like holiday hours or special event adjustments and the data is exposed to App or other channels.
- Timezones: provide a list of available time zones from System.TimeZoneInfo, which could be used to manage store times across different regions accurately.