User Tools

Site Tools


Sidebar

Back to Main Website

Video Tutorials

User Guide

1. General Information

2. Starting Up

3. Connecting data

4. Demand and Sales Forecasting

5. Inventory Planning

6. Reference

database-connection

3.4. Databases

The database connection allows you to import the entire spectrum of data necessary to plan your demand, forecast revenue, and optimize your inventory. You can import additional axis as Locations or Channels. The first allows you to plan your demand and inventory by location or site. The second, to forecast and plan your future sales by channel or customer.

The database connection uses the ODBC or MySQL driver to import data into Streamline. The connector works with 32-bit/64-bit ODBC data sources if the 32-bit/64-bit version of Streamline is installed accordingly.

Watch a video tutorial (8:32)

 

Along with the most commonly used cases as:

we will also explain what data you need to provide and how to import them in special cases such as:

At the end of this article, we describe exporting capabilities of this connection that allows you to create purchase orders in your system.

Data that can be imported

Depending on what you are going to do – generate demand plans, perform revenue forecasting, or optimize your inventory, Streamline needs different data to be imported. This section describes the necessary data for each case.

Demand Planning

Sales history information is necessary to forecast demand. It is usually represented by a set of sales transactions in the database. Each transaction says what, when, and how much was sold.

The Transaction data includes the data shown in the table below.

Data name Description Data type
Date The transaction date. Date or DateTime
Quantity sold The item amount that was sold in the transaction. Integer
Item code The item identifier, also known as an SKU. String

Imported data described below in this section are optional for demand planning, however, they allow you to forecast by location or channel, item category, and location category.

If you need to forecast by location (such as a store, warehouse, or region) or channel, the Transaction data should be extended with one of the data presented in the table below.

Data name Description Data type Is not given
Default Provided
Location A code of the location (such as a store, warehouse, or region) where an Item code is sold. It is used to forecast consumption of each Item code in each location. String Empty string NULL or empty string
Channel It represents a channel by which an item is distributed or sold. For example, e-commerce, direct sales, distributors, or a single customer. This data should be used when you need to plan your demand by channel or customer
The Is not given section of the table describing imported data (like in the table above) means that gaps are allowed in the provided data. The Provided section shows the values (or marks) that the corresponding SQL-query should return in order to Streamline recognize a gap in the data. The Default column shows the substitution (or the default value) that Streamline uses to fill in the gap.

An empty string for Location or Channel means that there is no location or channel set for this transaction.

To plan your sales by item category (such as a product group) and/or location category (for example, build a hierarchy of Region > City > Store), you should provide the data shown in the table below.

Data name Description Data type Is not given
Default Provided
Item category, Item sub-category Used to forecast by item categories. String Category with empty name NULL or empty string
Location category, Location sub-category Used to forecast by location categories.
Empty categories at the end of the hierarchy are perfectly possible: Category1 > Category2 > ⌀ > ⌀ means that the item will be put into the Category2. The symbol ⌀ means an empty category.
Empty categories anywhere else in the hierarchy are also allowed but discouraged. For example, Category1 > ⌀ > Category3. In this case Streamline creates a subcategory with an empty name.

You can import as many categories as you need.

In addition to the Item code and Location, you can import data displayed in the table below.

Data name Description Data type Is not given
Default Provided
Item description A description of the item. It is used to better understand what a particular item code means. String Empty string NULL or empty string
Location description A description of the location. It is used to better understand what a particular location code means.
Item’s info field Any additional characteristic of the item (e.g., color, size, texture). You can import an unlimited number of such fields.
Order's profit The profit obtaned from transaction. This data should extend the Transaction data. This allows Streamline to calculate total gross profit in each data aggregation period and also over the last twelve months. Float
Streamline automatically determines whether lost sales are caused by a stock-out or zero demand if you additionally import on hand history. This will dispose you of the difficulty to set 'Zeros are lost sales' option manually.

Revenue Forecasting

To forecast revenue, the Transaction data should be extended with one of the data shown in the table below.

Data name Description Data type
Sales price/unit The price of one unit of an item in the sale transaction. Float
Sales price/order The price of the sale transaction.

The currency that Sales price/unit or Sales price/order is given in is taken as the project's base currency. Streamline does not indicate it by any means in its reports.

This information is also used to perform revenue-based ABC analysis and calculate selling price-dependent KPIs such as annual revenue, revenue next year, gross margin, and turn-earn index.

Inventory Planning

To generate purchase/replenishment plans, identify potential stockouts and overstocks, and create purchase recommendations, Streamline must be provided with three types of data:

To import item on-hand into Streamline, you should provide one of three variants of data shown in the table below.

Variant Data name Description Data type Default
1 Last on hand The item on-hand at the time of import. Integer 0
2 On hand The on-hand remaining after the transaction.
3 On hand change,
Last on hand
On hand change is how much the item on-hand has changed after the transaction. In this case, the transactions query must return not only sales transactions but all of the transactions impacting the item on-hand. These could include inventory receipts, inventory transfers between locations, inventory adjustments, stocktakes, write-offs, customer/supplier returns, and other. 0

The second and third variants import on hand history into Streamline that allows:

  • Calculating inventory turn-over.
  • Computing the number of days in the period you had run out of inventory (Stockout days).
  • Determining whether lost sales are caused by a stock-out or zero demand automatically. This disposes you of the difficulty to set 'Zeros are lost sales' option manually.

The On hand and On hand change should extend the Transaction data.

If you import on-hand providing the data from the 3rd case, you should set the Quantity sold to zero for the transactions that are not sales.

As we mentioned, you should also provide the data depicted in the table below.

Data name Description Given in Data type Default
Lead time The average supplier lead time to deliver an item, which is actually the interval of time between replenishment order placement and its receipt. Days Integer 30
Order cycle Represents how often the item is ordered from your supplier. Data aggregation periods (weeks or month), days, or the Lead times. 1 data aggregation period
To get accurate inventory replenishment plans along with the Lead time, Order cycle, and Transaction data, we strongly recommend that you provide Streamline with the In-transition information and Pending sales orders (described below).

The accuracy of inventory reports can be improved, if you additionally provide the Lead time variance (see table below).

Data name Description Given in Data type
Lead time variance The variance of the Lead time. Lead time units Float

To optimize the inventory, Streamline uses a lot of inputs such as Last on hand, Lead time, Order cycle, and other. Safety stock can be also considered as one of the inputs because it is used to determine the optimal purchase plan. There are several ways that Streamline uses to calculate safety stock. One of them is based on the number of safety stock periods. Streamline allows you to set up this parameter for each planning item individually. A brief description of this data is given in the table below.

Data name Description Given in Data type
# of periods for safety stock The number of future periods which demand is used as the safety stock. Data aggregation periods Float

In transition information

This information indicates the items are being delivered currently:

  • from a supplier to location or distribution center; these are all open lines of your purchase orders (POs);
  • from a location to another location; these are all open lines of your transfer orders (TOs); the items which on hand has already been changed in the source warehouse, however, has not been changed yet in the destination warehouse.

The data for the in-transition information are shown in the table below.

Data name Description Data type
Item code The item identifier, also known as SKU. String
Qty in transition The quantity of an item in transition. Integer
Delivery date Expected delivery date of the item. Date or DateTime
Sendout date (Optional) The date when the purchase order was placed. It should be given if you do not know the Delivery date.
Location (Optional) The location the item is being delivered to. It should be given if locations are used. String
Lot cost (Optional) The cost of the purchase order line. Float
Order number (Optional). The system's PO/TO number. This information is used only for display purposes in the Purchase order preview dialog. String
The Sendout date should be given for open POs only, not TOs.
A purchase order Sendout date allows Streamline to calculate Next order by date for the first time as you import your data and forecast the project.

It is strongly recommended to provide Streamline with one of the Delivery date or PO sendout date. The former is preferable.

If neither the Delivery date or PO send out date is given, Streamline will determine that the order should be delivered at the beginning of the first forecasted period. Thus, if you use incomplete period forecasting, the Qty in transition is added to the Last on hand and this result is used to generate the forecasts and inventory plans for the current period.

Pending Sales Orders

To calculate future on-hand inventory more accurately, Streamline can account for information on pending sales orders. It describes which items are on open sales orders or are back-ordered. The data you should provide are indicated in the table below.

Data name Description Data type
Item code The item identifier, also known as SKU. String
Qty to ship The item amount that should be shipped to the customer. Integer
Date When the item should be shipped to a customer. In the case of backorders, this can be some promised date. Date or DateTime
Location (Optional). The location name should be given if locations are used. String
The Date is not obligatory but is highly recommended to provide. If it is not given, Streamline determines that sales order should be delivered to a customer as soon as required quantity will be in stock.

Stockout Days Information

Streamline automatically calculates the number of days in the data aggregation period you had run out of stock (stockout days number) when imports your transaction history. However, Streamline needs an additional information to be provided in order to calculate stockout days accurately when it merges project's on-hand history with new transactions obtained when you update the project by clicking the Update data button. This information is shown in the table below.

Data name Description Data type
Item code The item identifier, also known as SKU. String
Location (Optional) The location name should be given if locations are used.
Qty on hand Quantity on hand on a given date. This date is a parameter of the Inventory (t) query and is substituted by a certain date when the query is executed. Integer

Accounting for Constraints in Optimization

Streamline allows you to account for constraints when optimizes inventory. There are two types of constraints, constraints on the item quantity that is ordered and constraints on the purchase order as a whole. Data for the constraints are given in the table below.

Data name Description Data type
Min. shelf The minimum number of units a shelf to display. This parameter typically arises in retail business. You can control how this amount is used when final safety stock is calculated. Integer
Constraints on item quantity
Min lot and Max lot Represent optional constraints on how few or how many of this item can be purchased from your supplier. Integer
Order rounding Allows Streamline to take into account how many items are included in a carton, allowing the application to suggest exactly the right amount of the item to order.
Constraints on purchase order
Supplier’s min. qty The minimal quantity/weight/volume/cost of ordered items in total necessary in order to supplier accept the purchase order. Integer
Supplier’s min. weight/volume/cost Float
Weight/unit The weight of one unit of an item.
Volume/unit The volume of one unit of an item.
If Min lot is greater than Max lot, Streamline neglects Min lot and uses Max lot in the optimization.
Order constraints such as Supplier’s min. weight or Supplier’s min. volume should be given to Streamline along with the Weight/unit and Volume/unit relatively.
Constraints on a purchase order are incompatible with the product shelf life limitation. It means that Streamline's purchase order recommendations come from the given purchase order constraints, not the shelf life limitation if both are given.

Data for Inventory KPIs

Streamline can calculate key inventory indicators (KPI) such as expected stockout and overstock values, gross margin, and other metrics. To enable the calculations, you should provide one of the data shown in the table below.

Data name Description Data type
Inventory value/unit The balance value of one unit of the item in stock. It should be given in the base currency. It is preferable than the Item purchase price described below. Float
Item purchase price The last purchase price of the item in the supplier's currency.

The Item purchase price is also used to calculate the value of purchase orders' lines recommended by Streamline. Some of the KPIs (for example, the annual revenue, revenue next year, and other) require Sales price/unit or Sales price/order to be additionally imported.

If supplier's currency is not given, Streamline implies that Item purchase price is given in the base currency.

Supplier's Information

Streamline allows you to import supplier information shown in the table below.

Data name Description Data type
Supplier code The identifier of the supplier. String
Supplier’s currency The currency in which the purchase orders are placed.
Supplier's item code Item code in supplier's stock-list that corresponds to your Item code. It allows Streamline to create purchase orders in supplier's item codes.
If Item value/unit is not given, Item purchase price and Supplier's currency are given, then gross-margin and turn-earn index will not be calculated.

Two-echelon Planning

Streamline allows performing two-echelon planning.

If you have only one distribution center (DC), Streamline does not require you to provide any additional data, and you can set up all necessary DC's options in the DC settings. In this case, however, there is no ability to account for the situation when a location is supplied by the supplier directly (omitting the DC).

If you have several DCs, you can import and set up them using this connection. In this case:

  • you should provide additional information (described below);
  • distribution center is always enebled and the Location control is disabled in the Settings;
  • there is the ability to account for locations that are stored by suppliers directly;
  • the options set in the DC settings are applied to all your DCs at once.

You can import any number of DCs and set up which locations are supplied by a particular DC on an item basis. It means you should set up a triple (Location, DC name, Item code). For example, the triple (West, DC west, Dark chocolate) means that DC west supplies West location with Dark chocolate.

There are two limitations on the DC-location relation:

  • Two (or more) DCs can’s supply the same item to the same location.
  • A DC can’t supply another DC, that is, only DC-to-location relations are allowed.

To set up the relations, the DC name should be returned by the Item info query. It indicates the name of the DC in the triple.

Now, we describe the data that the query should return in order to Streamline set the relations properly.

As we explained previously, to set up a triple, the Item info query should return the following data columns: Location, DC name, and Item code. The table below shows example records that should be returned by the query in order to set up a DC-location-item relation.

Location DC name Item code
A DC1 Item1
DC1 NULL Item1

As you see, we need two records to be returned for each DC-location-item relation. The first one links location A to DC1, meaning that Item1 will be supplied by DC1 to location A. The second one declares DC1 as a location that stores Item1.

To set up a situation when an item is supplied to a location by the supplier directly (no DC involved), the query should return the record shown in the table below. The table shows example data.

Location DC name Item code
B NULL Item1

Let's consider an example shown in the figure below.

In this case, the query should return the data shown in the table below.

Location DC name Item code
A NULL Item1
B DC1 Item2
C DC1 Item3
C DC2 Item4
DC1 NULL Item2
DC1 NULL Item3
DC2 NULL Item4

Material Requirements Planning

Bill of materials information describes the components of finished products. Components can be considered as sub-assemblies (at the intermediate levels of the production process) or as raw materials (at the lowest level of the process). You can import unlimited number of assembly levels.

Streamline also supports material requirements planning for batches. I.e. when a BOM describes ingredients that are used to produce a number of finished products.

To get a materials requirements plan, you should provide Streamline with the data shown in the table below.

Data name Description Data type
Finished good's code The code of a finished product or a sub-assemblied item. String
Material's code The material's or component's code.
Material qty/batch The quantity of material or component that is required to produce a batch of the finished good. Integer
Finished batch size (Optional) The size of a finished good batch, i.e. the number of finished goods to be produced. If it is not given, the batch size is equal to 1 by default.

Planning Products with a Shelf Life

Streamline allows you to plan products having a limited shelf life. There are different data you can import to cover a particular situation (see table below).

Data name Description Given in Data type
Shelf life, periods The desired time the item should be in stock. There are two options to import Shelf life depending on the unit of measure. Data aggregation periods Float
Shelf life, days Days

Disassembled Kit Planning

If you have kitted items in your inventory but want to forecast and plan only by their components, Streamline can automatically disassemble them and take into account this information. In this case, you should provide the data indicated in the table below.

Data name Description Data type
Component code The code of the item that is a component of the kitted item. String
Qty in kit The quantity of the component required for the kit. Integer
Kitted item code The code of the kitted item. String

Connecting to your database

In this section, we will discover the generic capabilities of the database connector. You will learn how to establish a connection to a database and read the content of its tables.

Go to the menu File > New > Database connection. The dialog differs only in database connection options whether the ODBC or MySQL driver is used.

ODBC

There are three ways to connect to ODBC data source in Streamline:

  • Streamline automatically pulls out all available ODBC connection configurations from your system and shows them in the drop-down list of the Data source name control. Select the connection configuration to your database if you have already set it up before.
  • Create a connection string to your database by clicking the Build button.

After the driver has been selected, Streamline opens the connection configuration dialog where you can set the database (or data file) and enter the login credentials. Finally, Streamline inserts the resulting connection string into the Data source name field.

If Streamline can’t detect an interactive tool for building the connection string, it shows a “This driver cannot build connection string interactively.” message. Refer to the driver documentation and build the connection string manually.
  • Enter the connection string into the Data source name field manually. The login information can be excluded from the string and entered in the Username and Password fields.

MySQL

Host is the IP address, domain name, or LAN name of the MySQL server.

Port is the port listened to by the MySQL server.

Database is the name of the database you are connecting to.

Using the MySQL option is much faster than connecting to MySQL database using ODBC driver.

Enter the account credentials (Username and Password) for the database.

Reading the database tables

To read the tables of the database, click the Read button. The list of the tables will appear on the right side of the dialog.

To show the content of a table, double-click on the table name in the list. The content will appear in the table at the bottom of the dialog.

Importing queries

To import data, SQL-queries are used. In this section, we will explain queries used to import data and the data they can import.

The Database connection dialog has several tabs, such as Transactions, Item info, and so on. Each tab is designed to import particular data by executing the query entered into the main field of the tab. Only the Transactions query is obligatory, the others are optional. The table below matches the queries and the data that they should be used to import.

Query(tab) Demand Planning Inventory Planning
Transactions

Transaction's data:

  • Date
  • Item code
  • Quantity sold
  • Location or Channel
  • Sales price/unit or Sales price/order
  • Order's profit

Transaction's data:

  • On hand (remaining) or On hand change
Deprecated data: item description; item category; location category; in transition; delivery date; lead time; lead time variance; order cycle; order rounding; min lot; max lot; supplier code; supplier’s currency; shelf life, periods; item purchase price; inventory value/unit, item’s info field.
Item info
  • Item code
  • Location or Channel
  • Item categories
  • Location categories
  • Item description
  • Item's info field
  • Last on hand
  • Order cycle
  • Lead time
  • DC name
  • Lead time variance
  • # of safety stock periods
  • Min lot, Max lot, Order rounding
  • Supplier min.qty/weight/volume/cost
  • Weight/unit, Volume/unit
  • Inventory value/unit
  • Item purchase price
  • Supplier code, Supplier's currency, Supplier's item code
  • Shelf life, periods, Shelf life, days
  • Min. shelf
Deprecated data: in transition, delivery date, pending sales order qty.
In transition In transition data
Pending sales orders Information on pending sales orders
Inventory(t) Stockout days information
Bill of materials Bill of materials data
Substitutions Data about kits
To plan inventory in Streamline, you should provide data from both columns (Demand Planning and Inventory Planning) of the table above.

The table indicates deprecated data that should not be imported normally by those queries. It is strongly recommended to import these using the queries, specially designed for them.

Last on hand can be imported using the Transactions query too. This can be done only in the case when you are providing On hand change data in the Transaction data. In this situation, the last on hand is imported via the On hand column. Despite this capability, we strongly recommend that you import last on hand using the Item info query.

If your In transition information has only one transaction per item (or item-location), you can optionally use columns such as the In transition and Delivery date of the Transactions or Items info queries, to import it into Streamline. However, this situation is fairly specific and these columns are left for compatibility and are highly deprecated. Generally, we strongly encourage you to use the In transition query to import your In-transition information.

Special cases

This section describes the capabilities of the connector to import data in very specific situations which happen rarely. We strongly recommend that you import the data according to the table above.

Item info query is absent

If the Item info query is absent, you can import all necessary information (see Deprecated data) using the Transactions query.

Transactions query includes the location information while the Item info query doesn’t

In this special case, you can import all the fields except for the columns that represent location state (Last on hand, Pending sales order qty, In transition, Delivery date) using the Item Info query. The location state info should be returned via other queries, for example: Last on hand and Pending sales orders qty from the Transactions query and In transition, Delivery date using the In transition query.

In these special cases, Streamline does not know the stock-list. Consequently, if a project is updated using the Update data button, Streamline leaves the stock-list as it was before the update, no planning items are removed. Streamline removes planning items that did not appear in the updated data from the project in all the other data connections (and cases for the database connection) except for the Order list connection.

Import options

The importer can automatically aggregate your timestamps in periods (days, weeks, months) using the Group by option. So if you want to see the forecasts, procurement plan, and other reports in months, group the data by months.

The Starting from option depends on the Group by parameter and is available only if you group the data by month or week. If you group timestamps by month, the Starting from parameter defines the ordinal number of the day in the month you want to start the import from. If the Group by option is switched to ‘week’, this allows starting the import from the specified day of a week.

Importing your data

This section describes how to import your data using the Database connection dialog. To import the data, follow these steps:

  1. Go to the menu File > New > Database connection.
  2. Establish the connection to your ODBC data source.
  3. Go to the specific query tab. For example, the Transactions tab.
  4. Enter your SQL-query in the main field of the tab.
  5. Click the Preview button, to execute the query.
  6. Set the meaning of the columns returned by the query.

The preview table at the bottom of the dialog has a special row with a drop-down list in each column for the returned data. The list displays the data that Streamline understands and can import in the corresponding query tab. The description of the options in the list is given in the Data that can be imported section. Thus, to import your data correctly, match the meaning of your data column to the most appropriate option in the drop-down list.

7. Repeat steps 3-6 for all your queries.
8. Set the import options and click OK.

In the next sections, we will describe the specifics of each query.

Transactions

This query is used to import the Transaction data. The list of the transactions must be in descending order.

If you are going to plan material requirements, Transactions query should also return transactions affecting items On hand due to assembly builds.

Item info

This query should return additional information about planning items.

This query is used as a filter for imported planning items, i.e. only those planning items that are returned by this query will be imported, regardless of the fact that any other planning items may appear in the returned values of the other queries.
The records returned by this query must be unique by planning item identifier. If locations (or channels) are not used, the identifier is the Item code, otherwise, it is the (Item code, Location) or (Item code, Channel) pair.

Importing categories

As soon as the Item category is selected from the drop-down list for a specific column, the option changes to Item category 2 for subsequent columns, then to Item category 3 and so on. This sequence forms a hierarchy of categories in Streamline. In other words, the Item category 2 is a subcategory of Item category, the Item category 3 is a subcategory of Item category 2, and so on. This behavior applies to importing location categories too.

2017/11/10 14:18

In transition

This query is used to retrieve the data about items in transition.

Pending Sales Orders

This query is used to pull the data about items that are on open sales orders or backorders.

Substitutions

Streamline allows making substitutions when imports the data. That can be used when you need to disassemble kitted items and have the forecasts and procurement plans for the components only. To understand a kit’s content, Streamline implements substitution rules. The rule syntax looks like:

<Kitted item code><Qty in kit><Component code>.

Your SQL-query should return a set of such the rules. As you can see, the columns should be ordered according to the rule syntax.

Bill of Materials

This query is used to import bill of materials data.

Inventory (t)

This query should return the quantity on-hand after the latest transaction on a given date for every planning item. The query must contain the :date mark in the body. This mark is a parameter of this query and is replaced by a certain date when the query is executed.

To understand how the query should look like and how it works, consider an example shown in the figure below.

The tables related to the query are shown in the figure below.

Transactions table contains all transactions impacting on-hand. A description of the transactions table columns is the folowing:

  • item_id is the item identifier from the item table;
  • location_id is the location identifier from the location table;
  • remainder contains on-hand after particular transaction;
  • trn_date contains transaction date.
This query should return the columns in the given order: 1) Item code; 2) Location; 3) Qty on hand.
If locations are not used, return an empty string or NULL in the second column of the query result.

Updating data (importing only last changes)

At first, you import all the sales orders data. It’s not necessary to import all the data again in future imports. It’s reasonable to import only the last changes. To make Streamline do this automatically the :startdate parameter should be used in the Transactions query.

An example of the query is shown below:

SELECT [Posting DATE] AS [DATE],
       IIF (e.[Entry TYPE] = 1, -e.Quantity, 0) AS [Quantity],
       i.[No_] AS [Item code]
       FROM dbo.[CRONUS International Ltd_$Item Ledger Entry] AS e
       INNER JOIN dbo.[CRONUS International Ltd_$Item] AS i 
       ON i.[No_] = e.[Item No_]
       WHERE i.[No_] IN 
 (
 SELECT i.[No_]
 FROM dbo.[CRONUS International Ltd_$Item] AS i
 WHERE Blocked = 0
 ) AND [Posting DATE] >= ':startdate';

To import all the sales history using this query, you should specify the Import from date parameter to cover the history. Now, when you click the Update data button of the program toolbar, Streamline calculates the start date so that only the last changes of the sales history are imported. It substitutes the :startdate parameter of the query by the calculated date and executes the query.

Exporting query

Database connection allows you to export purchase order recommendations into the database of your system by executing a SQL-query. This query should be given in the Export periodic order tab of the Database connection dialog (see figure below).

There are four marks that you can use in this query. They are substituted by the corresponding data when the query is executed. The marks, corresponding substitution, and the substitution source are given in the table below.

Mark Substitution Substitution source
:itemcode Item code or
Supplier's item code
Purchase order preview dialog
:location Location
:orderqty Qty
:minpoint Reorder point Inventory report
If the Supplier's item code was imported, Streamline uses it as the substition for the :itemcode mark.

Streamline makes the substitutions and executes this query when you click the Create button in the Purchase order preview dialog. This query is executed for every order line that is checked in the mentioned dialog.

The Test section at the bottom of the Database connection dialog allows you to test your query using the data you enter into the following fields: Item code, Location, Order quantity, and Reorder point. To run the test, click the Execute button.


Next: Inventory Management Systems

Download PDF

database-connection.txt · Last modified: 2019/02/07 16:27 by admin