You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 214 Next »

Coming next release

AreaDescription
Export

Export of store assortment (RTC-38671)

Export job includes the store assortment export. File format is documented in Swagger.

Order lines

Supplier values in item search (RTC-39440)

When adding new line to the purchase order from a supplier, grid in item search modal shows 'Supplier number', 'Supplier name', 'Supp. item no.', 'Supp. model no.' values defined for this supplier-item-store relation.

Row with total values (RTC-38856)

Order lines grid contains a header row with total values for columns: 'Line no.' (number of lines), 'Quantity', 'Total', 'Total suppl. curr.'. Filters applied to the grid affect the total values, and value in 'Line no.' column shows number of order lines that match the filter. 

Totals are removed from the breadcrumbs in purchase order view. 

Order line and delivery line

Fix: Buttons display (RTC-35208)

Buttons for order line and delivery line details in expanded row are displayed below all of the sections.

Store assortment

Item ordering (RTC-38676)

Only items which belong to store assortment can be found in item search. If order line or order contains item that does not belong to store assortment warning is displayed. Order submit and confirm is extended by validating whether every item belongs to store assortment. Store assortment check is also included in order validation for the import of order from the 3rd party, when order is imported with status submitted or user tries to edit submitted order. Selecting items which should be included in the order proposal is also based on store assortment and stock is not obligatory. If order line with item that does not belong to store assortment is added to proposal, such order line is deleted when processing proposals. There is no restrictions in ordering items for manual deliveries and internal transfer.



Release 28.05.2024

AreaDescription
Order proposal

Remove proposal with invalid Item, supplier or store (RTC-39421)

Order proposal or order proposal line is deleted by OrderProposalGeneratorScheduler job triggered at night by default if the item, supplier or store become invalid.

Invalid item means:

  • deleted
  • auto replenishment not set
  • ordering blocked
  • cannot be ordered
  • track stock changes not set
  • item is not in a sale what means supplier sales start date is in the future and/or end date is earlier than today's
  • item is not in order store stock
  • there is no active order point for the order store
  • item is not delivered by the order supplier to the order store

Invalid store or supplier means:

  • placeholder
  • inactive
  • replenishment flag not set
  • supplier is a store used for internal transfer (supplier GLN matches GLN of the store)

Proposal order line is also deleted when max order point is reached - as before.



Release 06.05.2024

AreaDescription
Manual delivery

Fix: Item and supplier validation (RTC-40525)

Removed validation of 'Can be ordered', 'Ordering blocked', 'Supplier sales start/end', 'Item-supplier' link, 'Quantity in supplier package' and 'Min. order quantity' for manual deliveries.

Purchase order

Fix: Submit order with duplicate items (RTC-39973)

It is possible to submit order which contains more than one order line with the same item.



Release 15.04.2024

AreaDescription
Internal transfer

Validations for internal transfer orders (RTC-39792)

Removed validation of 'Can be ordered', 'Ordering blocked', 'Item-supplier-store group' link, 'Supplier sales start/end', 'Quantity in supplier package', 'Min. order quantity' for internal transfer orders. Applies to import of internal transfer from Inventory (including rules for transfer automatic confirmation), creating and submitting internal transfer from Procurement Management as an order and as an manual delivery.



Release 11.04.2024

AreaDescription
Excel import

Validation (RTC-40253)

Fix: No all columns are required when importing Excel file. Only item identifier and quantity must be specified.

System

Do not abort external goods receipt merger on exception during saving changes (RTC-40226)

When exception during saving changes occurs in external goods receipt merger, all FlatBatchJsons in the page being processed are marked as failed and message is added to the lip job execution logs with information which FlatBatchJsons are affected. It means ExternalMerger job will still be running and processing next imports of purchase orders, order despatch advices and goods receipts.



Release 10.04.2024

AreaDescription
System

Validation error messages (RTC-39789)

Trailing white spaces are allowed in third party, Excel and POSLog imports and they are trimmed.



Release 02.04.2024

AreaDescription
API

Export of ordered quantity (RTC-38244)

Ordered quantity is exported to a Procurement.OrderedQuantity.Export blob with file format as in Swagger. It contains identifier of store and item, ordered quantity and date when this value has last been updated. This is same value as 'In order' field in Procurement Management. This is a sum of remaining quantities in orders with status submitted/edited/confirmed. Value is exported after each time when this sum can change.

Export

Purchase order (RTC-39351)

Submitted orders are exported separately and before confirmed, cancelled and done orders.

New grid

Procurement register (RTC-38675)

In the Procurement module there is a tab called 'Procurement registers'. 'Store assortment' register is added to a section named 'General'. The registry allows the user to add an assortment code to a selected store or remove it. One store can have multiple assortment codes assigned to it. The user can see only those stores for which he has permission. New permissions: 'View registers' at common role level and 'View store assortment' and 'Manage store assortment' at store level.

System

Import of assortment codes (RTC-38694)

Assortment codes are imported on item level from Item Service if assortment code is added to item or edited. Not existing assortment codes are pushed into table with assortment codes.

Validation error messages (RTC-38924)

There is a validation message saved in the database and shown in Integration Platform, when the user tries to import file through 3rd party to Procurement module with field with spaces/enters at the beginning or at the end.



Release 18.03.2024

AreaDescription
Import

Fix: deleted order points (RTC-39007)

Order points are properly deleted from Procurement databased after import caused by deleting order point from item in Item Management.

Planned assortment

Import of assortment codes (RTC-38670)

Assortment codes are imported from register in Item Management. Values are imported based on unique code. If code in assortment register will be changed, in Procurement it is imported as a new assortment code. Statuses of assortment codes such as: active, default are imported and correctly assigned as well.

Purchase order

Order delivery date based on lead time and transport time of supplier (RTC-38621)

Delivery date of order is properly set to 'now' + 'supplier lead time' + 'supplier transport time' when creating purchase order in user interface (prefilled date), new orders created from 3rd party (when delivery date not defined in imported file), import from InStore app. Feature already existed for Excel import and order proposals.

Receive goods in InStore App

Fix: Scanning items with tandem GTIN (RTC-38887)

Items are properly matched in Procurement when scanning items with tandem GTIN during receiving goods manually in InStore App.

Suppliers in Procurement

Item suppliers on store group scope (RTC-36665)

Import of item suppliers is extended with store/team/profile scope. Import of stores from Store Service is extended by creation of 'Private' store group.
Item can be ordered only if it is delivered by selected supplier to selected store (store, store team, store profile or common supplier):

  • When adding line in user interface, item search result is filtered by that (item is visible in search only if can be ordered from supplier to store). Order lines grid show supplier model/item number of correct supplier.
  • When importing order by Excel file, supplier from file is used if correct link exists. If not, line not created and warning in notification. If no supplier in file, order is created for lowest level main supplier (found for store, team, profile, common).
  • When generating order proposal, order is created for lowest level main supplier (found for store, team, profile, common).
  • In imports from 3rd party, item-supplier are never created anymore. If link does not exist:
    • purchase order imported but cannot submit it
    • order despatch advice does not auto confirm order if such line is being added
    • order despatch advice not imported if such line is tried to be added to confirmed order
    • no validation in goods receipt imports.

Detailed validation message appears in 'submit/confirm order' modal, if there are no order lines, item is inactive, item, store, supplier is placeholder or one of the ordered items is not delivered by the supplier to store (instead of generic server side error).



Release 05.03.2024 

AreaDescription
Import

API contract for Order Confirmation from 3rd party (RTC-38745)

Business rules and file contract for import of order confirmation are available in Swagger. There is also example of files. Business rules for each import are in separate expandable section of Swagger.

Use price from database for order lines from InStore app (RTC-38901)

Wholesale price and discount are taken from Procurement database when creating purchase orders or receive goods manually through InStore App. That is the price that was imported to Procurement directly from Item Service. When price does not exist in Procurement database, then price and discount are equal to 0.

Order proposal

Fix: Max order point reached (RTC-39038)

When max order point is reached, what means difference between max order point and available quantity (+remaining) is equal to 0, and min order qty is defined and is more than 1, order proposal should not be created if it doesn't exist or is updated/removed if it exists.

Management

Fix: user interface bugs in purchase orders and order lines (RTC-38567)

In purchase orders grid:

  • Un 'Supplier No.' column, correct supplier number is displayed.
  • Default sorting of the grid is by order number descending.
  • 'Total' column show price in store currency. There is hidden by default column ' Total suppl. curr.'

In order lines grid and line panel:

  • Columns in grid are properly displayed after adding columns that are hidden by default (SKU and prices in supplier currency).
  • Changed translations of validation messages: 'Quantity must be a multiple of', 'Minimum order quantity is'.
  • Changed translation of field 'Sales next 30 days last year'.

It is possible to create manual delivery when user has permission to only one store. Store selection dropdown is hidden in such case.



Release 22.02.2024

AreaDescription
Purchase order

Fix: e-mail with order confirmation PDF when not using EDI (RTC-39039)

If supplier does not use EDI, e-mail is sent if there is e-mail address in input in submit/resubmit modal. E-mail is not sent if input is empty.
If supplier uses EDI, and user select e-mail checkbox, it is required to enter e-mail address in input field.
In both cases, input is prefilled with e-mail address from supplier register. When resubmitting the order, input is prefilled with address previously used to send mail. If it was not sent, then prefilled with supplier e-mail address if exists.



Release 20.02.2024

AreaDescription
Procurement

Store number and name as separate columns (RTC-38812)

Due to bug related to filtering of combined column, store number and store name are again shown as separate columns in grids: purchase orders, items in purchase orders, package deliveries, order deliveries.



Released 08.02.2024

Delivery date calculated with importing purchase order from Excel

(RTC-37526)

Delivery date is not required in modal. If not set, to today's date supplier lead time and supplier transport time are added. If the date for order line is not defined in the Excel file, it is set to the same as the delivery date of the order.

Improvements

AreaDescription
Export

Supplier item no. and supplier model no. (RTC-38265)

Supplier item no. and supplier model no. are included on order line level in export of purchase order.

Goods receipt

Receive package in InStore app (RTC-33893)

Orders with Order Despatch Advice imported can be received using 'Find parcel' option in 'Receive goods' view in InStore App. Goods receipt is done with same logic as when using 'Package' section of 'Deliveries' in Procurement Management.

 Import

Import goods receipt from 3rd party (RTC-37047)

It is possible to import more than one order per file. Importing goods receipt for order created through manual delivery is not possible.

Modals and store dropdowns

Fix: Wide fields in modals and store dropdown correct filtering (RTC-36271)

'Fields in modals are wide, so they take full width of modal.
Store dropdown is getting correct data after filtering by the input text from user. Returned stores can have this input text at the beginning of store name, but also as a part of store name.

Order lines

Fix: 'in order' quantity (RTC-38393)

'In order' quantity value in order lines grid is counted based on 'Remaining' quantity instead of 'Ordered' quantity. It shows quantity of remaining order lines for this item to this store (as before). In order line panel, 'Ordered' field is renamed to 'In order' to match name of column in the grid, 'In order' and 'Available quantity' are properly displayed in order line grid and panel during creating new order line.

Update price after changing selected item (RTC-37757)

When creating new order line, after changing selected item and choosing other one in search, values in 'Stock level' and 'Price' sections of panel are updated. Validation rules for quantity input are updated for new item.

Order proposal

Scheduler job (RTC-38491)

OrderProposalGeneratorScheduler job triggers order proposal generation for all suitable stores and suppliers (all rules for items, stores and suppliers are the same as when requesting order proposal in user interface). Job runs at 2 AM UTC by default.

Purchase order

User interface improvements for increased usability (RTC-37041)

'Supplier no.', 'Quantity', 'No. of items' and 'Total' columns are included in purchase orders grid. The abbreviation 'Supp.' has been replaced by the full name 'Supplier'. 'Sign' column is removed from PO grid. The number of ordered items is displayed in 'Quantity' column for draft order and in '# Ordered' after submitting order. A '#' has also been added to the following columns: Delivered, Received, Remaining and Deviation. Store column contains store name and store number. Order points are included in the order line details view in the 'Stock level' section.

Order confirmation as EDI or e-mail PDF (RTC-38226)
In submit/resubmit order modal:

  • if supplier does not use EDI: as before, there is optional e-mail address input that is prefilled with e-mail from supplier register
  • if supplier uses EDI (flag is set in supplier register): there is blocked EDI checkbox displayed in modal, to inform user that EDI is in use. Additionally, there is e-mail checkbox. It is unselected by default, but when user select it - possible to send e-mail.

In both cases, there is 'view document' button in modal to show order as PDF.
'Export PDF' button is displayed in order lines page in toolbar on all statuses.


Receive goods and delivery grid

Fix: Save check (RTC-37389)

The display of lines in the grids with panel is correct in the following scenario: The user makes changes in the panel, does not save the changes and sets the focus on another line. Save (Dirty check modal) questions appears. The user saves the changes.



Release 30.01.2024

AreaDescription
Import

Ignore POSLog with training mode flag (RTC-38122)

POSLog created after operation by cashier with training mode enabled, is ignored by staging import filter and in result not processed by Procurement module.

Import from 3rd party

Order despatch advice (RTC-34560)

Order despatch advice line can be moved between packages (change package number of order despatch advice line by re-importing order despatch advice from 3rd party). Moving received line is not possible. If a line is moved from a package that has no other line, that package is no longer visible in the deliveries grid. Package delivery status is changed to done after moving last not received line from partially received order, and set to partially received after adding new line to package with status done.

Order proposal

Generate order proposal for all suppliers (RTC-37431)

When creating an order proposal manually, user can make it for all suppliers. There is 'All applicable' option in the modal with the number of suppliers for which 'Replenishment' and 'Generate order proposal' flags are set to true. If this option is selected, the user sees the information: 'Creating order proposals for all applicable suppliers might take some time'. There is no field in the modal to enter a delivery date. It is set automatically. To today's date supplier lead time and supplier transport time are added.

Purchase order

Revert status from done to confirmed (RTC-37671)

User can manually revert status to confirmed in the UI by clicking 3 dots button and then 'Reopen'. A modal will appear, where the user need to confirm that he want to change the status of the order. The modal includes information: 'This action will revert the purchase order to status «Confirmed». Are you sure you want to reopen the order?'. When the status is changed, the order export is triggered.



Release 24.01.2024

Order proposal and order quantity based on item attributes

(RTC-36026)

An order proposal can only be created for items meeting the following conditions:

  • Auto replenishment (AutoReplenishment) set to True
  • Can be ordered (CanBeOrdered) set to True,
  • Ordering blocked (OrderingBlock) set to False,
  • Track stock changes for item (TrackStockChanges) set to True,
  • Supplier sales start date (SupplierSalesStart) is null or earlier than now.
  • Supplier sales end date (SupplierSalesEnd) is null or later than now.

In addition

  • if Minimum order quantity (MinOrderQty) is defined then quantity is not smaller than the given value.
  • if Quantity in supplier package (PackSize) is defined and Break bulk (BreakBulk) field is set to False then quantity is a multiple of the given package size.

A line can only be added to a purchase order or manual delivery if:

  • CanBeOrdered set to True,
  • OrderingBlock set to False,
  • SupplierSalesStart is null or earlier than now
  • SupplierSalesEnd is null or later than now

If quantity is not a multiple of package size but should be, there is an information written in red: 'Quantity must be a multiple of <number>'. If the quantity entered is not equal to at least minimum order quantity: 'Minimum order quantity is <number>'. The text is in orange. For items that cannot be ordered or for which the ordering is blocked but they are added to the draft order there is a validation visible in the line level: 'This item cannot be ordered now', 'Order contains items that cannot be ordered now.' in order level and 'Manual delivery contains item that cannot be ordered now' in delivery level.

Sales data in order lines

(RTC-35089)

In 'Stock level' section of order line expanded panel, there are 'Sales past 30 days' and 'Sales next 30 days last year' values that are fetched from Reporting data warehouse. Request is done for specific store of this order. Values are sum of sales quantity in last 30 days and in next 30 days a year ago. Values are fetched for first 100 lines in the grid, and loaded for next ones when new line is being added or when grid is scrolled down. Loading circle is displayed for those fields when fetching data - it does not block other operations in  the application. If there is empty response from Reporting Service (no sales), dash is displayed. If connection with Reporting Service failed, 'N/A' is displayed.

Improvements

AreaDescription
Import

Skip invalid rows in stock import (RTC-37582)

If some rows in processed batch in stock import has invalid row (null SKU or StoreNo), then these rows are ignored in import, but other rows from this file are processed properly.

Order lines

Estimated time of delivery (RTC-35080)

On confirmed and done statuses of purchase order there is 'Estimated time of delivery' column in order lines grid. Date displayed there is date of order confirmation + transportation time on supplier + lead time supplier. If lead time is set per item on item-supplier relation, this value is used instead of lead time supplier. If value is not defined in Item Management, it is treated as 0 days. Export to blob contains this value per order line.

Supplier discount not required (RTC-37382)

When adding new item to purchase order, if there is no store price found, both wholesale price and supplier discount are prefilled with 0. Supplier discount field is not required and can be empty - when saving changes on order line, after clicking button or using keyboard shortcut, empty input field is automatically filled with 0.

Item search (RTC-30811)

When looking up items using item search new fields in the grid are present, and it's possible to reorganize order of columns in the grid, and sort the output. Grid is scrollable horizontally when multiple columns are added.
Default columns: GTIN, Name, Brand, Supplier name.
Optional columns: Ext. model no., Item number, Manufacturer, Quantity in supplier package, SKU, Sub-supplier, Supp. item no., Supp. model no., Supplier number.

Fix: Item search performance (RTC-38256)

There is no timeout when searching for item in item search (when adding order line to the order). Improved performance of lookup for item attributes used to filter item search results.

Order proposal

Supplier and store attributes (RTC-36027)

Order proposal can be generated only for stores with 'Replenishment' flag set to true and suppliers with 'Replenishment' and 'Generate order proposal' set to true. Additionally, store or supplier cannot be inactive (or placeholder). Stores and suppliers that do not match those rules, are not displayed in the dropdown list when creating new order proposals.
If the supplier has 'Free freight' value set, its value and supplier currency are displayed in the purchase order grid in the 'Free shipping limit' column, which is hidden by default. In the order lines grid, if  the total price in supplier currency is below the free freight limit, there is warning above the grid with information how much remains to reach the free freight value. There is also a link that redirects to the supplier in Item Management register. When the total equals or is above the free freight limit, warning above grid is not displayed.

Purchase order

Fix: Dropdown and delivery status filter (RTC-37463)

In modal for new purchase order or manual delivery, all records are can be found in store or supplier selection dropdown by scrolling down on the list (next 100 records are loaded after scrolling to the bottom of the list).
It is possible to filter on delivery status in the purchase order lines view.

System

Fix: Moving and selecting columns in grids (RTC-36940)

When moving column from scrollable part to not scrollable part column position is saved after refreshing page. The column selection panel is visible in full when the bottom bar is moved.



Release 15.01.2024

AreaDescription
Order lines

Prices in store currency (RTC-36454)

In 'purchase order lines', 'manual delivery', and 'items in purchase orders' grids there are 'Wholesale price', 'Net wholesale price' and 'Total' columns with prices converted to store currency. Those columns are visible by default. Store currency is default currency set in item management for country of this store. Currency code is displayed next to value in each row. Total price in breadcrumbs also shows store currency code. Additionally, using column picker user can add 'Wholesale price suppl. curr.', 'Net wholesale price suppl. curr.' and 'Total suppl. curr.' columns, which show values in supplier currency. Currency is displayed next to value in the grid and not displayed in column name anymore.
Field labels in 'Price' section in order overview are renamed as well and currency is displayed next to value instead of field name.

Purchase order

Supplier currency in order confirmation PDF (RTC-37213)

Total price in purchase order PDF shows supplier currency code.

System

Data processing jobs (RTC-37230)

The following jobs exist:
1. StagingMerger which imports stores and suppliers from Store Service.
2. ExcelMerger which imports purchase orders from uploaded Excel file.
3. ExternalMerger which imports purchase order, goods receipt and order despatch advice from 3rd party.
4. PosLogMerger which imports pos logs with purchase order or goods receipt data from POS Journal Service.
5. ItemServiceMerger which imports item price, currency rate and item store attributes from Item Service.
6. ItemMerger which imports items from Item Service.

By default, each job runs every 2 minutes.

Fix: Exception handling (RTC-37230)

Apart from the exception in the database and log in the Integration Platform, the execution of job is 'Completed with warnings'



Release 09.01.2024

AreaDescription
Import and export

Currency (RTC-36566)

Contracts for export includes: Supplier in the ExportPurchaseOrder has field CurrencyCode. Purchase order has field CurrencyRate and WholesalePriceInSupplierCurrency. GoodsReceiptLine has CurrencyRate and CostPriceInSupplierCurrency. Currency rate is properly fetched and saved after import of purchase order or goods receive and when creating manual delivery.

Order lines

Fetching price on store group level (RTC-37606)

Price on store group level is set when price on store level does not exist - first search for price of store, then price of price zone assigned to this store, then price of profile of this store. Applies to creating order line or manual delivery in user interface, generating order proposal, Excel import (when price not defined in Excel file), import of goods receipt from 3rd party.



Release 05.01.2024

Automatically set purchase order to done

(RTC-34438)

After submitting goods receipt, order status is automatically set to 'Done' if delivery status is 'Done', all order lines have status 'Delivered', remaining quantity of all order lines is equal 0. Applies to all kinds of goods receipt (from purchase order, deliveries, InStore app, 3rd party import).

Improvement

AreaDescription
Import API

Confirm purchase order when importing goods receipt from 3rd party (RTC-37272)

Existing purchase order with draft, submitted or edited status changes its status to 'confirmed' after import of goods receipt. If store/supplier is specified in goods receipt and store/supplier is not found or is placeholder, exception is thrown. New order is created when importing goods receipt and order is not found. It is required to specify external order no or supplier order in such case.



Release 02.01.2024

Import purchase order from Excel - required fields and store permission

(RTC-36883)

Price and discount are not mandatory in Excel file, they are taken from active price or set to zero if price is not defined. Delivery date of line should be set to order delivery date if not specified in the imported file. If user has access to only 1 store then store multiselect is not visible and orders are created only for their one store. Store level selection is different depending on the permission. For example, if we only have access to certain teams and stores, the 'all stores' and 'profile' option is not visible in the drop-down menu.

Fix: Validation of required supplier no and supplier GLN is removed. It is possible to import a file that has only two pieces of information: quantity and item identifier (SKU, GTIN or item number).

Improvements

AreaDescription
Goods receipt

Number of items received equal to zero (RTC-36695)

Delivery line can be counted with quantity 0 and then can be submitted. It is possible to import order despatch advice line with quantity 0 when order line exists. When order line does not exist order despatch advice line it is not created.

Fix: Values on 'Receive goods' page after leaving it (RTC-36128)

Values on 'Receive goods' page (when receiving from purchase order without import of order despatch advice) are properly displayed in grid and panel after leaving page or refreshing it. If counting on this page was started, and then ordered quantity of order line is changed, after opening 'Receive goods' again, grid shows all lines as 'Not counted', with updated order line remaining values that are displayed in 'Order' column.

Order lines

Stock level displayed when creating new line (RTC-37167)

Stock level section in panel (with 'Ordered' and 'Available quantity' values) are visible when adding new order line to the purchase order.

'In order' value update after removing order line (RTC-37172)
'In order' field in Manual delivery/Purchase order lines view is calculated based on non deleted lines of the same item in the same store in Submitted, Edited and Confirmed Purchase Orders. Value is properly updated after removing order line.

Purchase order

Supplier email for purchase orders (RTC-36340)

Email when submitting or resubmitting order is pre-filled using supplier's email for purchase orders, or by the email that was inputted in previous submit of this order.



Release 21.12.2023

Create order proposal

(RTC-36505)

An order proposal can be created via the 'New order proposal' button in the Purchase orders grid. Only users with the permission 'Create order proposals' can do this. To have this permission, 'Manage purchase order' permission is required. The button opens a modal that allows the user to select multiple stores and suppliers for which draft order proposals can be created. It will then automatically order items whose main supplier is on the list. There are notifications with information about process started and then with number of orders and lines modified, deleted or added. The price and discount for the item are automatically filled in (if they are in the Procurement database).

Create order proposals based on order points

(RTC-36629)

Order points are used when generating, updating and deleting order proposals. Order points on store level have higher priority than on 'Common' level. Order proposal is not created when there is no active order point. Proposal is created when available quantity + in order are less or equal min. order point.

Currency in purchase order lines and manual delivery lines

(RTC-34652)
There are columns in the purchase orders lines and in the manual delivery lines views showing wholesale price, net wholesale price and total price in supplier currency. They are hidden by default and visible only if CurrencyCode for supplier and CountryCode for store are defined in the Procurement database the same as curency in the input for price. Analogous information can be found in the 'Overview' tab: supplier currency and the conversion rate that has to be used to convert the price from the supplier currency to the store currency. The 'Overview' tab shows the total price in both supplier and shop currency.

When converting currencies and displaying the 'Exchange rate', it is important whether CostRate is defined. If not, the rate is equal to 1 which results in the price in the store currency and supplier being the same.

The method of calculating the net wholesale price is as follows:
wholesale price x discount, then round the result, then result x rate.

When creating a new line for purchase order or for manual delivery, the price is prefilled with the wholesale price in supplier currency defined in the Item Management. It can be changed by the us

Send email when submitting purchase order

(RTC-34955)

If email is entered in submit/resubmit purchase order modal, e-mail is sent using Message Distribution Service. Request is not done when e-mail input is empty. E-mail contains short message, order number, order note and logo. Content can be customized through Message Distribution Management templates ('Order' template is visible after first attempt to send mail on tenant). PDF file with order print is always attached to e-mail. File preview can be shown or downloaded using buttons in modal. After submitting, notification about result is shown on bottom of the screen.

Import order from Excel

(RTC-33763)

A file with order lines can by imported by a button in the user interface from the 'Purchase orders' grid. After the job is started, a notification is sent to the user. Invalid lines are skipped. Once the file has been imported, it is shown how many orders that have been created, how many lines that have been imported for each store and how many lines that have been skipped.

Only one item identifier of the 3 is required: SKU, GTIN or Item number, and only one supplier identifier of 2: supplier no. or supplier GLN. Supplier GLN is more important so if the user imports a file in which the 'supplier GLN' comes from one supplier and the 'supplier no' from another, the record will be created based on the 'supplier GLN'. Order line note column is optional. It is also possible to provide an empty/null field for order line note. Such a line will not be skipped during import. If there are empty values or nulls for quantity, wholesale price, supplier discount or delivery date then such lines are skipped. If supplier identifier is not specified, item should be delivered by the main supplier. If there are several lines in the file for different suppliers, corresponding orders will be created for each supplier.

Additional changes:
Import of items from Item Management is extended by the IsMainSupplier flag and it is saved on SupplierItem level in the Procurement database.

Import goods receipt from 3rd party

(RTC-35912)

3rd party systems, usually central warehouse systems, can do goods receipt on behalf of a store, and in such cases we can receive goods through 3rd party JSON import, with similar logic to goods receipts from InStore App. Contract and business rules are documented in Swagger. Required values are StartedDateUtc, SourceSystem, Quantity, ItemIdentifier, ShippingDateUtc. Optional fields are EndedDateUtc (equals StartedDateUtc if not provided), receiveNote, receivedBy (equals SourceSystem if not provided), costPrice (if not provided, when new order line has to be created, price is being fetched from database or set to 0 if not found), orderLineNote (set as note on order despatch line), itemName, storeName, supplierName (these tree used only when entity is not found and placeholder is created, but optional in this case too, identifier is used as name if name not sent).

Other requirements depend on GoodsReceiptType:

  • PurchaseOrder - used to receive orders for which there is no Order Despatch Advice
    • temporary requirement - all goods receipt lines in this type of import must have same order identifier (no support for receiving lines from multiple orders in one goods receipt)
    • order identifier and order line number are required
    • store identifier is not used
    • supplier identifier is needed only when using supplierOrderNo as orderIdentifier
    • imported only when order was found and has status Confirmed or Done - no support yet for automatic approval of draft and submitted orders, and no support for creating new orders with this import
    • packageIdentifier and packageLineNo should not be sent
    • order line can be received multiple times, value is added to delivered quantity
  • Package - used to receive orders for which there are Order Despatch Advice imported
    • orderIdentifier, orderLineNo, packageIdentifier, packageLineNo are required
    • possible to receive package with lines from multiple orders, or multiple packages within one goods receipt
    • each package line (order despatch advice line) can be received only once (as in user interface)
    • store identifier is not used
    • supplier identifier is needed only when using supplierOrderNo as orderIdentifier
  • ManualDelivery - used to receive items for which purchase order was not created.
    • new order is created for each supplier, with status 'Done'
    • orderIdentifier, orderLineNo, packageIdentifier, packageLineNo cannot be sent
    • store and supplier identifier are required

Improvements

AreaDescription
Import

Import POSLogs from multiple stores and workstations (RTC-37024)

POSLog import includes RetailStoreId and WorkstationId, so duplicate validation does not happen when we receive POSLog with same SequenceNumber from multiple stores and workstations. In case when new purchase order has to be created, its External Order No. is in format 'POSLOG-RetailStoreId-WorkstationId-SequenceNumber-SupplierNo'.

Order lines

User interface improvements (RTC-36402)

Supplier discount is displayed in order line in grid and in PDF properly when it has some decimals. Red validation message is displayed when creating order line but discount input is empty. Loading circle is displayed when adding new order line (between choosing item in item search modal and new line appearing in the grid).

Order lines and delivery lines

Import total supplier discount from Item Service (RTC-35004)

Total supplier discount is a sum of negative discounts based on wholesale price defined in Item Management. This value is imported to Procurement and displayed during adding new order or delivery line. If in Item Management the discount based on the wholesale price will have only positive values or negative values will sum to something less than -100% (e.g. -102%) then we prefill 0 in Procurement. If an item has no price defined, nothing is prefilled.

When adding order or delivery line, 'Wholesale price' is prefilled with 'Net cost' value from price calculation, which already contains supplier discount. This will be changed and 'Wholesale price' will be properly filled with 'Wholesale price in supplier currency' in RTC-34652.

Procurement API

API for purchase orders with given item and given store (RTC-36258)

Endpoint (/api/gateway/PurchaseOrders/[storeNo]/orderedItem) in Procurement Service returns orders for the given item and store with the following statuses: Submitted, Confirmed, Edited and Done. Draft and Cancelled purchase orders are not returned.

Purchase order

Fix: Order created from InStore App (RTC-36265)

Orders created from InStore App are created for correct suppliers in Procurement as supplier received in POSLog is properly identified by supplier number. Handling of InStore App goods receipt for item that was not in order is adjusted to new version of POSLog.

Fix: Import order from Excel (RTC-35004)

Delivery date is set properly when creating orders from Excel file. When importing an order via an Excel file, a separate order is created for each supplier even if the supplier's GLN is not defined in the database (it is null). If the user enters a line for which no supplier-item relationship exists, the main supplier will be selected during order creation.
In PDF file, before submitting the order, order date is displayed as today date.

Stock information in order line details (RTC-35861)

New column appears in manual delivery details, in purchase order lines, and in items in delivery called "Available quantity" displaying current stock of the selected item in selected store. Field is also visible in order line details and in manual delivery line details.

Receive goods

Backorders (RTC-35021)

Backorder flag on item level is imported from Item Service to the Procurement Service. If there is an item in a purchase order that does not allow back orders, after first goods receipt, order line delivery status is set to Delivered, even if not all ordered items have been delivered (Remaining is set to 0 and deviation is set).

System

Fix: Date filter (RTC-35746)

It is possible to filter by date.

Store information (RTC-35622)

Store import is extended by import of store address.
Store address is displayed in the PDF purchase order confirmation.

Stock import job (RTC-36336)

StockMerger job is replaced by StockImport job, which imports stock changes published by Inventory Service, without use of staging in database. This improves performance of import, especially when a lot of data is exported. Validation and placeholders logic is removed. Still, stock info older than the one we already have, is not imported. Database is extended with all other stock fields, including 'Available quantity'.

Default currency of country (RTC-36059)
Import of currency rates from Item Service includes IsDefaultForCountry flag.

Import of order points from Item Service (RTC-35084)

Common order points for item are imported as a part of ItemChanges import. Store order points are imported as a part of new ItemStoreOverride import.



Release 17.11.2023

Import order from Excel (part 2)

(RTC-33761)

In 'Import order' modal user can select level of import: Store, Team, Profile or All stores. In case of first three choices - page is shown with a list of active stores/teams/profiles. The list is filtered by access permission of user (and placeholders are excluded). User has to choose at least one from the list. It is possible to filter the list using search input. Then import has to be confirmed using 'Import' button in toolbar. A message appears on the bottom of the page as a confirmation of saving the data to staging table (from where import will be processed by a job in part 3 of this feature). When trying to leave the page during store selection process, modal with a warning appears.

Order proposal

(RTC-35111)

Order proposals are created every night. Those orders can be recognized by checkbox in 'Order proposal' column in Purchase orders grid. Order proposal condition is based on sum of stock in store, existing draft proposals and remaining quantity in submitted, edited and confirmed purchase orders. If condition is below 1 (min. order point) new order proposal is created with quantity, after which sum of above values is 10 (max. order point). Order proposals are created for main supplier of item. Proposals are not created if item has no main supplier or it never was in stock in specific store. If draft proposal exists, and quantities in other orders or stock status has changed since previous job execution, quantities in proposal are updated to match max order point. If proposal is not needed anymore, it is deleted by job, and if this was the only line in order, order is deleted as well.
Job executions contain log with count of created, updated and deleted proposal lines as well as sum of those.
Totals for purchase order is now correctly calculated after import of purchase order or order despatch advice.

Improvements

AreaDescription
Deliveries

Fix: Receive many lines (RTC-35026)

When there are more than 100 lines to receive, all of them are affected after using 'Select all' and 'Confirm items' buttons (before it affected only first 100 lines). 'Select all' selects only the lines which match current filter in the grid.
Redirection to purchase order is correct after receiving goods when there was only one line and it was fully received.
New row is properly visible in grid in background when page is in loading state after creating new order.

Import

Delivery status after import of order despatch advice (RTC-34093)

If the user imports order despatch advice by 3rd party to an order on which the receive goods have not yet been executed, the imported delivery has the status 'Not received'. After importing order despatch advice into 'Done' order, the delivery status is set to 'Partially received'. It's not possible to receive goods if external order despatch advice exist for the order. 'Receive goods' button is hidden.


API contract for Goods receipt from 3rd party (RTC-35911)

Business rules and file contract for import of goods receipts are available in Swagger. There is also example of files with required data and examples for each goods receipt type.


Remaining quantity in order despatch advice import (RTC-30937)

Remaining quantity of order despatch advice line is supported in import from 3rd party. This is an optional field. By default it is null - after receiving such order despatch advice line, remaining of order line is reduced by value that was expected to be delivered in this order despatch advice line (deviation is set if we received other number than expected).
If remaining quantity of order despatch advice line is imported - after goods receipt this value is set as remaining quantity of order line.
When receiving multiple order despatch advice lines for same order line in one goods receipt - remaining quantity on order line is set to value from order despatch advice line with latest shipping date.

Items in purchase orders

Fix: Filtering by delivery status (RTC-34747)

Active deliveries (all except Done and Cancelled) are displayed in the grid by default. Filtering by delivery status works properly. Any status can be selected.

Purchase order

Order confirmation print (RTC-35332)

PDF file with order confirmation is redesigned. The file can be downloaded using 'Print order' button which is available when order has status 'Submitted'. The file contains purchase order number, order submit date, delivery date, store name, supplier number, name and address, order note and list of order lines - SKU, Supplier item number, Description (item text), Quantity, Unit price, Discount, Amount and Total amount of the order. The order lines heading is continued on the next page when the lines do not fit one page, and the page number is displayed in the page corner.

 

Change of buttons texts (RTC-34646)

Procurement management is displayed in side menu with label 'Procurement' and links are placed in 'Purchasing' section. 'Items in purchase orders' is placed right below 'Purchase orders' in menu. "New order" button is changed to "New purchase order". "Edit date" button is changed to "Edit delivery date". Overview section in overview tab is renamed to "Details".

Fixed issue which led to no possibility to submit goods receipt from purchase order (delivery of order without import of external order despatch advice).

System

Import of stock status from Inventory module (RTC-34425)

There is a 'StockMerger' job in ProcurementServiceintegration package. By default, in runs every 2 minutes. The following information about an item from a given shop is stored in the Procurement database: id of the item, id of the shop, stock quantity and stock update date. This information is taken from the 'Inventory' module. A maximum of 3 decimal numbers are stored in the database for stock quantity. If the number exported from Inventory has 4 decimal places, the last digit is ignored. If more - there is a validation. If any imported store or item does not exist, placeholder is created. If any of incoming store identifiers does not contain storeNo and placeholder must be created, exception is thrown. If incoming stock date is before stock entry date, there is no update in the Procurement db. At least one identifier is required: StoreNo or GLN for store and Sku or GTIN for item.



Release 26.10.2023

Import order from Excel (part 1)

(RTC-33760)

If the user has the 'Create purchase orders from Excel' permission, he/she sees an 'Import order' button in the 'Purchase orders' view. After pressing the button modal with import order header appears. Proper messages are displayed:

  • If file is empty or contains invalid header rows: 'Invalid file format'/'File cannot be empty',
  • If server side error occurs during request processing: 'A server side error has occured. Please contact support for further assistance.',
  • If the request is correct processed, modal is closed and notification message is displayed: 'Import has started. You will be notified when all orders are ready'.

No data is uploaded for now. Request only checks whether file contains valid columns.

Improvements

AreaDescription
Deliveries

Goods receipt from InStore App (RTC-33711)

When the user performs a manual goods receipt in the InStore App and receiving items from different suppliers, a separate package and a separate purchase order is created in Procurement for each supplier.


Fix: Receiving order (RTC-34437)

In case of receiving order which has no order despatch advice, after clicking 'Receive goods', but then receiving order through InStore App, remaining values are properly updated. Numbers counted but not submitted in user interface are cleared. After clicking 'Receive goods' again in user interface, remaining values are correct. Order with goods receipt (first done or just started) in user interface but then done in InStore App is possible to set to done.

Deliveries lines and order lines

Fix: Total price (RTC-33465)

Values in side panel updates properly when user navigates through received delivery lines. 'Total price' and other values updates properly after editing delivery lines or order lines.

Export

Identifier in goods receipt export (RTC-33820)

ExportGoodsReceipt contract and example in the Swagger documentation is extended by GoodsReceiptId field. Id field which was used before is marked as deprecated. Identifier is exported as both Id and GoodsReceiptId as part of GoodsReceipt export.


Purchase order and goods receipt (RTC-34980)

In purchase order and goods receipt exports supplier section is extended by EDI flag which can have the value 'True' or 'False'.

Export status of purchase order lines (active or deleted) (RTC-33819)

There is a field in the Procurement.PurchaseOrder.Export contract in order Lines section named 'orderLineStatus' with two possible values: Active and Deleted. This information can be found in the schema and examples in the file export documentation in the Swagger.

Deleted lines are exported when the status of purchase order is set to submitted and after the following operations for an order with confirmed status:

  • Edit purchase order line
  • Receive goods
  • Delete purchase order line
  • Cancel manual delivery
  • Delete order despatch advice line
  • Update order despatch advice line
  • Cancel purchase order
  • Delete order line
  • Set delivery date for order
  • Set delivery date for order lines
  • Set purchase order to done
  • External import of purchase order or order despatch advice
Goods receipt

Fix: Set order to done after new goods counting was started (RTC-35055)

In case of receiving order which has no order despatch advice, after submitting at least one goods receipt, and then starting counting process again (Receive goods button in order), it is still possible to set such order to done. After setting order to done, values counted but not submitted in 'Receive goods' page are ignored.

Import

Fix: Creating packages when importing order despatch advice (RTC-34078)

If the user re-imports order despatch advice line but does not enter a package number, the line will be updated and a new package will not be created.

Order status after import of order despatch advice (RTC-34048)

Existing purchase orders (with no placeholders) are set to 'confirmed' after import of order despatch advice for this order.
For import of internal transfer by order despatch advice (from Inventory Service):

  • All despatches (without placeholders) are added to existing internal transfer order with matching supplier and store, status 'Confirmed' and delivery status 'Not received',
  • All despatches with placeholders are added to existing internal transfer order with matching supplier and store and status 'Draft',
  • If such order does not exist, new internal transfer order is created with proper status.
Import/Export

Delivery date on order line level (RTC-28994)

Delivery date of order line is a part of order line in contract for import and export of purchase order. Value is not required in import - value from order level is used if order line delivery date not in file.

Purchase orders (RTC-33420)
3rd party import of purchase orders is extended by UserDeliveryDate and export by 7 dates: userDeliveryDate, estimatedTimeOfArrival, estimatedTimeOfDelivery, confirmedTimeOfArrival, confirmedTimeOfDelivery, confirmedDate and receivedDate. The export of purchase orders is extended by the case where the user does receive goods via a button in the user interface.

Purchase order 

Fix: 'Line no' column (RTC-33825)

Line no column can be moved/resized/sorted for 'cancelled' and 'done' order statuses in the order lines grid.

Fix: Dates display (RTC-35085)

Date format depends on the region selected by the user.

Purchase orders and manual delivery

Order line registration (RTC-33982)

Adding new items for a new purchase order or for a manual delivery is possible using the keyboard navigation only. There is an 'Add item' button at the bottom of the page. After click on this, modal with item selection opens and it can be closed by ESC. 'Add + next' and 'Add' have the keyboard navigation: 'SHIFT + ENTER' and 'ENTER'. 'Add item' button is hidden when draft line is not saved and reappears after adding a new line. When adding a new line, an item can be deleted via the 'x' button next to its name. 'Stock Level' section with information about ordered items appears after clicking 'Add' or 'Add + Next'.

System

New framework for user interface (RTC-33414)

Procurement management is upgraded to framework versions Angular 16 and Kendo 12.
Column picker is dropdown list with search for columns. Grid is filtered immediately after filling filter input.



Release 15.09.2023

Items in purchase orders

(RTC-28367)

'Items in purchase orders' allows the user to find items that have been ordered or delivered. All order lines are visible. The grid includes the following columns:

  • Store
  • SKU
  • Item number
  • GTIN
  • Item text
  • Brand
  • Delivery status
  • Discount
  • Net wholesale p.
  • Order Line no.
  • Order line note
  • Order no.
  • Order status
  • Quantity
  • Received
  • Supp. Item No.
  • Supp. Model No.
  • Supp. order no.
  • Supplier name
  • Total
  • Wholesale p.
  • Created by
  • Created date
  • Modified by
  • Modified date.

'Order no' column navigates to the overview tab of the order and clicking on the link in the 'Order line no' column takes the user to the order line view with specific line selected and expanded. To access 'Items in purchase orders' grid 'View purchase orders' permission needed. If the user has access to the one store only, the 'Store' column is not visible.

In addition, the 'SKU' column is visible in all views in the Procurement module where items appear (delivery lines, order lines, goods receipt lines).

Improvements

AreaDescription
Deliveries

Received date (RTC-33843)

Date of first submitted goods receipt of order or package is properly saved on order and package levels in database. Values are visible in Deliveries grid. Date is not updated after next goods receipts of same package or order. When receiving goods with InStore app, this date is the date when goods receipt was submitted in app.


Edit or submit delivery (RTC-32952)

If the order has status draft, edited, submitted or cancelled, editing and submitting delivery is not possible. The user sees the information: 'Unable to edit/submit delivery. This order is missing information for supplier or items, and order can not change status until this information is updated.'

Import

Import file with thousands of rows (RTC-34237)

StagingImport job does not fail when one imported file contains over 4000 of JSON rows.

Procurement API

Order number in 'Packages per store' response RTC-33988

"Packages per store" endpoint is extended with orderNumber value on orderLine level, so it is known which order the line from the package belongs to.


Get packages per store (RTC-32952)

API for requesting packages per store does not return packages containing draft, edited, submitted or cancelled orders, but if there are multiple orders in the package and at least one of them has a confirmed status, the package will be returned.

Purchase order

Dates (RTC-27773)

The following dates are visible at order level:

  • Requested time of delivery - defined by store/employee when creating order. This is the same as delivery date. It can be changed using the 'edit date' button in the 'order lines' tab. Editing is not possible in the 'overview' tab.
  • Estimated time of arrival - time when order arrives to the final port (ship, airport, train comes to final destination). Defined by supplier on 'overview' tab.
  • Estimated time of delivery - calculated based on transport time and lead time specified by the supplier. These values are added to the date determining when the order was confirmed. Editing is not possible.
  • Confirmed time of arrival - provided by supplier in 'overview' tab. Time when order arrives to the store.
  • Confirmed time of delivery - defined by supplier in 'overview' tab when order is ready to be sent.
  • Received date - registered when goods receipt is done, not editable.

For draft, submitted and edited statuses, only requested time of delivery/delivery date and estimated time of arrival are displayed. For the other statuses, all dates are visible (if defined).

Order lines: Export to Excel (RTC-33758)

Order lines can be export to Excel by 'Export to Excel' button. 'View purchase orders' permission is needed. User can narrow results by applying filters in columns in the grid. Exported fields are:

  • SKU
  • GTIN
  • Item number
  • Supplier no.
  • Supplier GLN
  • Quantity
  • Wholesale price
  • Supplier discount
  • Order line note
  • Delivery date
System

Database compatibility level (RTC-32039)

Compatibility level on databases is set to 150.

Import of currency rates (RTC-30891)

Currency cost and sales rates are imported from Item Service.

Database maintenance job (RTC-32288)

There is a 'ProcurementServiceJanitor' job in ProcurementServiceintegration package. By default, in runs once every night. If there were any changes in data, it rebuilds index on updated table in database. This results in a reduction of the database size and improves performance.



Release 29.08.2023

Receive goods using InStore App

(RTC-30508)

Goods receipt can be done using InStore App.

'Find order' option let the user count and submit goods for orders with no order despatch advice imported. Values counted in InStore App are added as 'Delivered' on purchase order line and 'Remaining' is updated. Goods receipt is created and exported same as when doing 'Receive goods' in Procurement Management. Cancelled goods receipt and lines with 0 items counted are ignored. When counted item which was not in order, this item is added to the order as new line. Deliveries are identified by order number and line number (provided in POSLog). 'Comment' from InStore App is saved as 'Receive note' on order. When received delivery for deleted order line, line is added back to order.

'Receive manually' can be used to create manual delivery. Order with status 'Done' is created for supplier of first scanned item (placeholders created if other items do not have this supplier).

'Find package' is not yet supported (receival of goods for imported order despatch advices).

Import of suppliers from Item Service works properly when GLN is changed between two suppliers within one import.

Improvements

Module Description
Deliveries

Fix: Order dispatch advice import and purchase order validation (RTC-33997)

'Received' and 'Deviation' is properly displayed after creating or editing quantity of order dispatch advice line.
It is possible to create purchase order when store and supplier have no GLN value.
Store is created without GLN if its value imported from Store Service is duplicate.

Delivery and Purchase order 

Pcs unit (RTC-31023)

Import of items from ItemService is extended by unit. For 'pcs' unit only whole numbers are allowed when adding and editing order lines or delivery lines. The same for panels in receive goods view and delivery view.

Internal transfer

Create 'internal transfer' purchase order in user interface (RTC-32775)

'Internal transfer' order type is available when creating new purchase order in user interface. When this type of order is selected, supplier dropdown shows only suppliers which GLN is the same as GLN of any store in Store Management. Any item can be added to this order - supplier-item relation is not needed and its placeholder is not created. Goods receipt for such order works same as for other order types. Purchase order is exported with 'InternalTransfer' order type. GLN of store must be unique. It is not possible to create order for store and supplier with same GLN.


Create 'internal transfer' manual delivery (RTC-32906)

'Internal transfer' order type is available when creating new manual delivery. Same as in purchase orders, when this type of order is selected, supplier dropdown shows only suppliers which GLN is the same as GLN of any store in Store Management. Any item can be added to this delivery - supplier-item relation is not needed and its placeholder is not created. It is not possible to create delivery for store and supplier with same GLN. Additionally, 'Preorder' order type can be selected for manual delivery.


Import from Inventory module or 3rd party (RTC-32907)

Purchase order and order despatch advice imports from 3rd party are extended with 'internal transfer' order type and 'GLN' as store identifier.
'Internal transfer' can be created only when supplier is internal (its GLN is the same as GLN of any store in Store Management). Supplier and store GLN cannot be the same.
Order identifier is required in order despatch advice import only if order is not internal transfer. For internal transfer, first draft internal transfer order created today with matching sender store and recipient store is used. If no such order exists new draft order is created. In case when multiple such orders exists, first one is going to be fetched. Order line number is ignored. When next internal transfer comes for same item, existing order line quantity is updated.

Purchase order

Status done (RTC-31607)

It is possible to change status of the order from confirmed to done after receiving all expected deliveries. The set to done dialogues are different based on whether or not there is a remaining value.
If remaining value, user is asked what to do with this value (add as deviation or edit order quantity to match what is delivered).
If there is no remaining value, dialogue will show just the summary of the order. If there are active deliveries, dialogue that all deliveries must be processed before order can be set to done is shown. When the 'Set to done' button is clicked, the purchase order is exported. If the order has no deliveries, setting to done is not possible. Importing order despatch advice into an order with a done or cancelled status is blocked.


Fix: Set supplier order number (RTC-33464)

Supplier order number value is properly saved when confirming order.


User experience when creating order (RTC-33669)

Browser focus is on store dropdown when creating purchase order. Focus is on item input while entering purchase order. Supplier discount is always prefilled with '0' in panel for adding item to order. After adding item to order, focus on back to item search input. Only the just created order line row is expanded in order lines grid (other expanded lines are closed without saving changes). After saving changes in order line in submitted order, status 'Edited' and 'Resubmit' button are properly displayed. Order line note is wrapped when too long in read-only expanded order line (on statuses confirmed, cancelled, done).


Fix: Order line from manual delivery (RTC-33471)

Order lines that were created via manual delivery are visible in the user interface.

Delivery date (RTC-30947)

It is possible to set past delivery date when creating or editing order or order line.

System

External store number (RTC-31281)

StagingMerger in ProcurementServiceIntegration works properly when store has external number according to new rules (unique in company, not unique globally). StoreIdentifier used in imports has no longer externalStoreNo field. Field StoreNo is now required. New stores created through import have externalStoreNo set to null.



Release 07.08.2023

Module Description
Procurement API

InStore integration improvement (RTC-33068)
"Purchase orders per store" endpoint returns only confirmed orders with no imported order despatch advice. Only those are available in 'Find order' option in InStore App - logic same as when receiving goods in Procurement. Orders with imported order despatch advice will be received using 'Find package'.
"Packages per store" endpoint is extended with PackageLineNo value, which is a unique identifier of line within package. Value is generated automatically for all lines. It will be used to identify package lines received in InStore App.

Purchase order

Create purchase order from InStore App (RTC-30507)

'Item ordering' from InStore App is processed by Procurement and results in creating purchase order. It creates a draft purchase order with external number 'POSLOG-sequenceNo-supplierGLN'. For each ordered item such order is created, and when there already exists draft order created from InStore, with matching store and supplier - item is imported as new line in such order (one item ordering in InStore can contain items from multiple suppliers and will result in multiple orders in Procurement). Receipt note is saved as order line note. Quantity and net price is imported. Supplier discount is set to 0%. Order line number is generated.
When item (GTIN), supplier (GLN), supplier-item, store (StoreNo) does not exist in Procurement database, order is created with placeholders.
When POSLog was already processed, it is not processed again when sent again.

Purchase order and delivery

Expand row to show panel with order line details (RTC-32514)

A panel with the following information has been added to each line, under both the 'Purchase orders' tab and the 'Deliveries' tab: ORDER (Order line note, Quantity), STOCK LEVEL (Ordered), PRICE (Wholesale price, Supplier discount) and DELIVERY DATES (Delivery date) only in 'Purchase orders' tab. When a new line is added to the purchase order, the panel is open and the focus is on the quantity field. In the 'Deliveries' tab, the panel does not open when a new line is added. The plus and minus buttons allow to expand or collapse the panel respectively. When the page is refreshed, all panels for all lines are collapsed. The panel can be edited when the order line has statuses: 'Draft', 'Submitted' or 'Edited'. For all other statuses a read-only panel is displayed. Delivery line can be edited when the delivery has draft status. There is no panel for other statuses of delivery. Setting a past date for purchase order line is possible.


Preset price (RTC-32590)

The price is automatically filled out when a new item is added to a purchase order or to manual delivery. Active wholesale price for item for given store is returned. The user can change it. The most current price is always entered based on the 'Valid from' column in the 'Store price' tab in the item view in Item Management. An exception is when store, profile and/or price zone prices are given. In this case, even if the profile/price zone price is more recent, the store price will be entered, as it has greater priority. When the price information is being searched, input is in 'loading' state, 'Wholesale price' field is blocked and it's not possible to enter any value there. Focus is on 'quantity' when price is successfully found and 0% is automatically entered in the discount field. If the item does not have a price or a price is equal to zero, focus is on the price field.
Prices in the 'Purchase orders' are always displayed with two decimal digits (for example 3.65; 5.00; 4.40).


Store number (RTC-32755)

Column named 'Store no.' is visible in the Purchase orders and Deliveries views. This column is hidden when user has permission to only one store. There is an information about store number in overview tab, next to the store name. Column 'Store' is renamed to 'Store name'.

System

Upgrade to LibBackEnd 5.4.0 (RTC-33208)

LibBackEnd updated in order to support notifications and Azure SignalR.


Import of stores by GLN (RTC-32901)

Global Location Number is imported from Store Service and saved in Procurement database when a user edits an existing store or creates a new one.


Import package related values of item (RTC-33245)

'Quantity in supplier package' and 'Min. order quantity' values of an item are imported from Item Service. Values are not yet used.



Release 28.06.2023

Module Description
Deliveries

Submit manual delivery (RTC-31139)

It is possible to submit delivery which was created manually. The flow is: The user can create a new delivery from the deliveries view (both from the 'Package' and 'Order' tabs) using the 'New delivery' button. After clicking the button, he is taken to a view where he can add items and then click 'Submit'. When leaving goods receipt from manual delivery view without submit, status of delivery stays 'Draft'. Manual delivery can be edited until the user presses submit. Submit modal is added to goods receipt from manual delivery. After submitting delivery, user is redirected to previous view ('Package' tab or 'Order' tab). Purchase order status is set to 'Done', order delivery status is set to 'Done' and package status is set to 'Done'. Submit of manual delivery triggers export of purchase order and goods receipt. When delivery line is added to purchase order created through delivery, remaining is set to 0 and status is set to counted for added delivery line. Submitting package or order delivery from deliveries grid cause update of delivery fields on order lines related to submitted lines: 'delivered', and 'remaining'.

Update of the quantities in the side panel (RTC-31664)

After confirming delivery line from purchase orders or deliveries grid values from side panel are updated properly: received is set to ordered and remaining to 0.

Manual delivery (RTC-31403)

There are new names of the tabs in deliveries view: Packages' and 'Orders'. Deletion of the last line is blocked in manual delivery. When the user wants to edit a purchase order created manually, a message is displayed with link to delivery, where order can be edited. Default filter in delivery view is to show packages and orders with 'Active' (other than 'Done') delivery status. Despatch created manually and received order despatch advice lines cannot be edited through import. There is a required field validation when user wants to add/edit price or discount of item.

Cancel manual delivery, add order/order line note (RTC-31622)

Manual delivery ('Draft') can be cancelled. Such delivery is not visible in Deliveries grids (package and order). The purchase order has status and delivery status set to 'Cancelled'. In such purchase order there is no 'View delivery' link.
Order note and order line note can be added using button in toolbar and 'Edit row' modal in manual delivery view.

'View row' modal and side panel for goods receipt (RTC-31244)

Side panel for goods receipt in read-only mode (received order despatch advice line) and 'View order' modal in read-only purchase order display values as text. Keyboard can be used to undo changes (Ctrl+Z), save (Enter), save and move to next line (Shift+Enter). Arrow keys can be used to change line selection. Panel can be closed and opened using button in its corner or 'Space' and 'Esc'. Trailing zeros are removed from side panel for goods receipt (so instead of 3.000 -> 3 is displayed).

System

Separators in inputs (RTC-30928)

Inputs in the application have unified decimal separators.

Import of store prices (RTC-25594)

Store prices of an item are imported from Item Service (store/store group, validity period, Sales unit, Net price, Retail price, store currency, VAT rate).
When price is created for new store group (with no stores assigned), placeholder store group is created in Procurement database.
Values are not yet used in Procurement module.

Procurement API

API for all purchase orders for given store (RTC-30321)

There is an endpoint (/api/gateway/PurchaseOrders/ordersPerStore/[storeNo]) in Procurement Service, which returns Active (Submitted, Edited, Confirmed) purchase orders for given store. Store is identified by store number. Response contains orderNumber, supplierName, order lines (line number, mainGTIN, originalQuantity (what was ordered), remainingQuantity (what is remaining after previous confirmed deliveries), deliveryDate (set by user on order line level). Endpoint supports OData filtering (filter by orderNumber, supplierName, top, skip and order parameters). Endpoint is documented in Swagger.

API for all packages for given store (RTC-30618)

There is an endpoint (/api/gateway/PurchaseOrders/packagesPerStore/[storeNo]) in Procurement Service, which returns pending packages for given store (not received and partially received packages and lines which are not 'Received'). Store is identified by store number. Response contains packageNumber, supplierName, order lines (line number, mainGTIN, quantity (number of items in package), deliveryDate (set by user on order line level). Endpoint supports OData filtering (filter by orderNumber, supplierName, top, skip and order parameters). Endpoint is documented in Swagger.

API for purchase orders with given item and given store (RTC-31423)

There is an endpoint (/api/gateway/PurchaseOrders/[storeNo]/orderedItem) in Procurement Service, which returns Active purchase orders for the item for given store. Store is identified by store number, item by SKU or mainGTIN. Response contains orderNo, originalQuantity, lineDeliveryDate, orderStatus, orderType. Endpoint supports OData filtering (filter by each field from response).
When item is added to the purchase order more than once, it is separate lines if delivery dates are different, and are aggregated into one line with sum of quantity if delivery date is same for each order line.
Existing endpoints in Procurement API are renamed so the names are more accurate. API is documented in Swagger.

Purchase orders



Overview grid (RTC-25195)

There is a tab next to the 'Order lines' with collapse able section named 'Order details'. Before expanding the grid, the following information is displayed: delivery date, delivery status and sequence of numbers: delivered/ordered (deviation). After expanding we can see three sections: Overview (with fields Store, Delivery date, Order type, Order Note), Statistics (with fields Ordered, Delivered, Remaining and Deviation) and Price (with information what is the price of the whole order - Total). There is a sign: '+' or '-' next to the deviation value. The Toolbar contains buttons that allow user to change the status, such as are in the 'Order lines' tab (Submit order/Resubmit order/Mark as confirmed) and 'Add order note' or 'Edit order note' depending on whether the order contains a note.

Purchase orders and deliveries

Decimal quantity (RTC-31022)

Quantity can have 3 decimals and be between 0.001 and 9 999 999 999.999. It is possible to enter, import and export such values. Zeros at the end are not displayed, for example we show 1.1 and not 1.100. Sides panels not in scope.



Release 29.05.2023

Order confirmation print

(RTC-30367)

It is possible to generate PDF file by 'print order' button with order confirmation when status of order is submitted. The file contains the following information: purchase order number, order date, customer number, vendor, to which shop the order is sent ('Ship to' field), e-mail address ('Billing'), order note, GTIN (Item number), item name ('Description'), quantity of product ('Qty'), total price for each item and price for whole order.

Improvements

Module Description
Deliveries

Receive goods with deviation (RTC-28803)

Side panel in delivery view shows quantity of sent items and input for received quantity (max 3 decimals). After save, deviation is calculated, grid is updated and order despatch advice line has status 'Counted'. Focus is automatically set to the received field in the panel after opening panel or changing selected delivery row, so value can be entered directly. Keyboard can be used to undo changes (Ctrl+Z), save (Enter), save and move to next line (Shift+Enter). Arrow keys can be used to change line selection. Panel can be closed and opened using button in its corner or 'Space' and 'Esc'.
Each time side panel form is updated and changes are not saved, changed value is bold and modal appears when changing focus to other row.
When none or more than one rows are selected, price panel cannot be used (message displayed in panel).
User must have 'Manage deliveries' permission to see panel.


Manual delivery (RTC-29687)

It is possible to create a new delivery manually – delivery for which there was no purchase order. It can be created using button in Deliveries page and is displayed as package and order delivery in status 'Draft'. It is created alongside with new purchase order in state 'Confirmed', so all changes on manual delivery cause export of order. Such order cannot be edited through 'Purchase order' view. A package code is created for all order despatch advice lines in manual delivery when adding the first line. New despatch cannot be created for order created through manual delivery. If any line selected when creating new manual delivery, then field in form for store is filled with value from selected line. 'View deliveries' permission is needed to view manual deliveries.

'Manage purchase orders' permission is needed to create and edit manual delivery.


Submit delivery (RTC-30255)

It is possible to submit delivery which was created through 3rd party import. This can be done using 'Submit delivery' button in delivery page. Before submitting delivery, there is a modal with information about delivery (submitted quantity, amount, deviation). It is possible to add a receive note. After submitting, counted lines (in displayed package or order) status changes to 'Received'. Submission does not affect the 'not counted' lines. If all lines are 'Not counted', submit isn't possible. Received line cannot be edited and resubmitted. When submitting, statuses of relevant orders and packages change either to 'partially received' or 'done' depending on other delivery lines in order/package.

Delivery status is added on purchase order level. Whether a purchase order can be edited depends on the 'delivery status'. Status 'Done': only new lines can be added. After this process, the delivery status changes to 'Partially received'. Status 'Partially received' and 'Not received': new lines can be added. Delivery status does not change. Handling of delivery status 'In progress' (counted, not submitted) or 'Draft' (manual delivery) - not in scope. Removal of order lines is only possible if the purchase order does not have any order despatch advice lines and delivery status is 'Partially received' or 'Not received'. Editing order line - not in scope.


Goods receipt from purchase order (RTC-25796)

There is 'Receive goods' button in purchase order with status 'Confirmed'. It opens order deliveries page if there is order despatch advice imported from 3rd party. Button is hidden when all purchase order lines are delivered.
When there is no order despatch advice for this order, button opens 3rd level page 'Goods receipt'. Grid shows list of purchase order lines with remaining delivery (lines that are not fully delivered, with 'Remaining' quantity higher than 0. Grid columns are 'Order' (what is remaining for this line), 'Received' (how many items were counted now) and 'Remaining' (what we expect to come in future delivery). Those values can be set using side panel. Lines can be multiselected and counted as fully delivered using 'Confirm items' button. After submit, goods receipt is exported, delivered lines are shown in Deliveries tab. Delivery status of order and order line as well as remaining quantity and deviation are updated.
Remaining quantity and status are properly updated when editing order line which had some deliveries before and when line with no deliveries is deleted from order. Edit of order line also affects a goods receipt which is started but not yet submitted (goods receipt always show lines which have remaining delivery).

Export

Goods receipt (RTC-30254)

Goods receipts are exported to blob as JSON, with content as specified in Swagger. Goods receipt is created after submit of delivery.

Order lines

'In order' column (RTC-26264)

'In order' column in order lines tab in purchase order indicates quantity of items in all purchase orders that are not deleted and have status submitted, edited or confirmed and are from the same store as the purchase order.


Filtering and delete button (RTC-31614)
Order line can be deleted when order has multiple order lines but filtering returns only single line.

Procurement API

Use order line delivery date in API for order info for item for given store (RTC-30953)

Order lines in API response are grouped by delivery date on order line level instead of date on order level.

Purchase order

Decimal quantity (RTC-26261)

It is possible to enter, import and export decimal quantity of item in purchase order. Quantity can have 4 decimals and be between 0.0001 and 999999999.9999.


Edit delivery date of item in confirmed purchase order (RTC-30708)

Delivery date can be edited when purchase order has status 'Confirmed'.


Line number (RTC-28425)

Line no. is identifier of order line unique within each purchase order. Column is added to purchase order lines grid. When adding items to purchase order, it is automatically generated as a next available number, starting from 1. One item can be added to purchase order multiple times, as another order line with other line number (in user interface and import).
LineNo is required in 3rd party import of purchase order and order despatch advice (item identifier is also still required). It must have integer value between 1 and 9999. It is used to identify line when updating order line and to assign order despatch advice lines to order lines. When lineNo not found in purchase order - new order line is created. When lineNo exists but don't match item identifier - new line is created with generated lineNo above 10000 and item as in imported file (not possible to change item in existing order line). Same when lineNo is duplicated within one imported file.


Change status of purchase order when changing delivery date (RTC-30955)

After changing delivery date of 'Submitted' order or order line, the status of purchase order changes to 'Edited'.

System

Migration to .NET 6 (RTC-28897)

Procurement Service module is migrated to .NET 6.


Item name and item group name (RTC-31164)

Item names with up to 255 characters can be stored in the Promotion and Procurement databases. The same applies to item groups stored only in the Promotion database. When the item names are too long when importing OrderDespatchAdvice or PurchaseOrder via a third party, a validation error will appear.


Suppliers export/import (RTC-30619)

Export of suppliers from Item Service and import to Procurement is extended by 'VAT number', 'Lead time', 'Reference' and 'EDI' fields.


Import of items performance (RTC-28310)

Performance of import of items and supplier-items is improved.



Release 04.04.2023

Import of order despatch advice

(RTC-25794)

Order despatch advice can be created by 3rd party using JSON file import via File Service. This is the document the sender of goods sends to the recipient as the goods are packed and shipped.
Order despatch is identified by unique externalOrderDespatchAdviceNo. A despatch advice relates to one order, identified by orderIdentifier. Order despatch lines are identified by externalLineNo that is unique within a despatch. A despatch advice line relates to one order line, identified by item identifier (order lineNo not yet supported).
Details of file format, values range, required fields and examples are documented in EG Cloud Swagger.
If supplier, store, item, supplier-item, purchase order, order line are not found, placeholder entities are created (such purchase order has status draft).
Order despatches are displayed in 'Deliveries' page in Procurement Management, where order despatch lines are grouped by package or number.

Deliveries - packages grid

(RTC-28846)

There is 'Deliveries' page in Purchase tab in side menu. This page contains grid with list of packages. In the packages tab deliveries (upcoming and received) are displayed in terms of internal and external package number. 

In User Management there is a permission on store role, located under 'Procurement' - 'Deliveries': 'View deliveries'. This permission allows to open deliveries grid. In this grid, user sees only orders in all stores to which he has access in this role.

Deliveries - order grid

(RTC-28848)

There is 'Order' tab on 'Deliveries' page, It contains grid with deliveries in terms of internal and external order number.

Deliveries: Packages/orders details

(RTC-28849)

Package details view is opened after clicking package number in "Packages" tab in "Deliveries". Page shows contents of the package. Each line has its order number (package can contain items from multiple purchase orders). "Order no" links to order delivery details page.
Order delivery details view is opened after clicking order number in "Order" tab in Deliveries. Page shows contents of the order that is being delivered. Each line has its package number (order can be delivered in multiple packages). "Package no" links to package details page.
Both pages breadcrumbs show package or order number, supplier name, number of lines and quantity of items in this package or order delivery.

Improvements

ModuleDescription 
Deliveries

Mark items as counted without setting deviation (RTC-28850)

It is possible to mark item lines as counted using 'Confirm items' button on bottom of the delivery details page. Item lines can be selected by using mouse, Control and Shift buttons. There is also a 'Select all' button. After clicking 'Confirm items' button, selected lines have status 'Counted', and 'Received' column has the same value as 'Order'. Deviation equals zero.
'Manage deliveries' store permission is required to count items.

Import

Order status (RTC-27171)

"Order Status" is optional field in purchase order import from file. Value can be set to 'Draft' (default) or 'Submitted'. "Submitted" orders import fails when order uses placeholder store/supplier/item/supplier-item. Draft orders can be submitted, but submitted order cannot be set as draft. Other statuses are not supported. Purchase order export is triggered after creating/updating submitted order or submitting draft order through import.

Procurement

Supplier model/Item number: (RTC-26263)

Supplier number and Supplier Model number imported from Items to Procurement.


Purchase orders and deliveries: (RTC-26263)

Columns added to Procurement module, displayed in Purchase Orders and Deliveries.

Purchase order

Order type (RTC-26548)

"Order type" must be set when creating new purchase order: "Replenishment" or "Preorder". Value is displayed in column in "Purchase orders" grid. Order type of existing purchase order cannot be changed (in user interface and import API).


Confirm (RTC-25795)

'Edited' and 'Submitted' orders can be confirmed using 'Mark as confirmed' button on bottom of purchase order page. To be confirmed, order must have at least one order line, and store/supplier/item/supplier-item cannot be placeholder. After clicking button, 'Confirm order' modal appears, where 'Supplier order no.' can be defined (not required, unique within supplier).
By default, confirmed order is not editable. Page can be switched to editable mode and back using 'Edit order' and 'Finish editing' buttons. Order lines can be added, edited and removed when in editable mode. It is not possible to remove the only order line from confirmed order (at least one order line required).
Purchase order is exported when confirmed, and after each update of confirmed order.


Delivery date on purchase order line level (RTC-25710)

Delivery date can be set for each order line. Existing order lines have delivery date same as delivery date of order. Order level value is also used for newly created order lines. Delivery date of order line can be changed in 'Edit row' modal or by selecting multiple rows and using 'Edit date' button on bottom of page.


Multi-select of order lines (RTC-25710)

Order lines can be selected by using mouse, Control (Ctrl) and Shift buttons. There is also a 'Select all' button.


Cancel (RTC-28234)

Purchase order can be cancelled using button in three dots menu on bottom of page. Pressing cancel order button opens modal with description and buttons to close modal or cancel order. When cancelling order with submitted, edited or confirmed status, order is exported with status "Cancelled".


Supplier order number (RTC-30018)

Supplier order number is pre-filled with value in database, allowing order confirmation without change of this value.

System

Import of store groups (RTC-28768)

Profiles and teams and its assignment to stores is imported from Store Service.



Release 25.01.2023

ModuleDescription 
Purchase order

Rename 'Supplier orders' to 'Purchase orders' (RTC-28177)

'Supplier orders' are renamed to 'Purchase orders' in user interface. Applies to menu, main page title, new order modal, URL.


Delivery date is required (RTC-28070)

Delivery date is a required field and cannot be set into the past. Existing orders delivery date is set to today (when order didn't have delivery date). Import from 3rd party works as before, when importing new purchase order Delivery Date is set to today's date.


Dropshipment info in Purchase Order contracts (RTC-28604)

Purchase Order import and export contracts contain dropshipment information: "shipTo" on order level (delivery address) and "deliveryDate" on order line (date or week of planned delivery). Documentation is updated. Both fields are not yet supported in application.



Release 10.01.2023

ModuleDescription 
Procurement Service

SupplierOrderNo in Purchase order contract (RTC-27574)

"SupplierOrderNo" is identifier of order, which is unique per supplier. "ExternalOrderNo" is globally unique identifier used in import. PurchaseOrder and OrderDespatchAdvice import and export contracts contain "SupplierOrderNo" value.
"Ext. Order No" column is added to "Supplier orders" grid in user interface.
"SupplierOrder" is renamed to "PurchaseOrder" in import/export contracts blob types and import documentation.
API for order info for item for given store is renamed to "PurchaseOrders" (URL and documentation).

System

Import of items (RTC-26800)

All item changes from Item Service are imported to Procurement database (SKU, MainGTIN, Brand, Name, status, ItemNo, assigned suppliers). Only items with status: Draft, Active, Stopped (not inactive and deleted) and delivered by selected supplier can be ordered, but it is possible to see and edit existing order lines containing incorrect items. When adding item through item search or 3rd party import, if item or item-supplier relation does not exist in Procurement database, placeholder row is created (values are expected to come in next import from Item Service). Order with placeholder store, supplier, item, item-supplier cannot be submitted.



Release 16.12.2022

ModuleDescription 
System

Import of suppliers (RTC-27020)

Suppliers imported from Item Service are identified by internal identifier, so supplier is properly updated when its Number (external supplier number) is modified in Item Management register. When supplier has no internal identifier in Procurement, it is identified by external number (to allow update of existing data).



Release 24.11.2022 

ModuleDescription 
Import

Import purchase order lines from API (RTC-26624)

Order lines can be imported together with purchase order header. Contract and examples in Swagger contain order lines. Item is identified by SKU or GTIN. When item does not exist, placeholder item is created in Procurement database until item is imported from Item Service (SKU must be provided, GTIN and item name are optional). Order with placeholder items cannot be submitted through user interface. Only draft orders can be imported and updated. Quantity and wholesale price are required. Optional fields are supplier discount (0% by default), order line note and status (delete item from order). OrderDate on order level is renamed to OrderDateUTC.

Procurement API

API for order info for item for given store (RTC-26259)

There is an endpoint in Procurement Service, which returns Active (Submitted, Edited, Confirmed) orders for item for given store (including past deliveries that are not yet done). Store is identified by store number and item is identified by SKU or MainGTIN (SKU has higher priority when both are provided). Response contain delivery dates, orderNo, externalSupplierNo, supplierNo and quantity.

  • No labels