Import Instructions

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 6

Overview
There are five types of data that need to be imported/exported at the same time: SKUs,
ingredients, product lines, formulas, and manufacturing lines. At the customer's request,
manufacturing lines do not need to be imported, but the relation between SKUs and
manufacturing lines still does. In addition, for interoperability with existing spreadsheets, the
formulas and their ingredients are specified in the same file.
CSV files do a good job representing table data, and are extremely easy to parse. In addition,
CSVs are among the most space-efficient formats, so long as the tables they are representing
are themselves the minimal. As discussed above, four CSV (comma-separated values) files are
specified, and their headers are defined below:
Filename Prefix
Header
skus
SKU#,Name,Case UPC,Unit UPC,Unit size,Count per case,PL
Name,Formula#,Formula factor,ML Shortnames,Rate,Mfg setup
cost,Mfg run cost,Comment
ingredients
Ingr#,Name,Vendor Info,Size,Cost,Comment
product_lines
Name
formulas
Formula#,Name,Ingr#,Quantity,Comment
 
File format
1. The names of the files must be prefixed by an identifying string, as defined above. The
filenames must end in “.csv”. More precisely, the filenames must constitute matches for
the following regular expressions conforming to PCRE standard:
SKUs: ^skus(\S)*\.csv$
Ingredients:^ingredients(\S)*\.csv$
Product Lines: ^product_lines(\S)*\.csv$
Formulas: ^formulas(\S)*\.csv$
2. The CSV files must be properly delimited and escaped. RFC4180 specifies the format of
a CSV file. Note specifically:
Spaces (and other space-like characters) must not be ignored if they are part of
a field.
Null values, if they are used, must be denoted by an empty string (i.e., two
consecutive commas, or a comma followed by a CRLF character).
The double quote symbol (ASCII 034) must be properly quoted.
3. A valid header, as defined above, must be included as the first line in each file. The
header is case-insensitive.
4. Data types, uniqueness, requiredness, autogenerability of attributes in the files must
conform to specifications in the Evolution requirements. If an attribute is not
specified, it should follow the requirements below:
All string-typed attributes must be no more than 1000 characters.
All Integer-typed attributes must be within range of  (i.e., a 32-bit , )[ 231 231
signed integer).
All floating-point numbers must be in decimal, and have a leading 0 (before the
decimal place) if the value is less than 1.0.
The column ML Shortnames in skus.csv contains CSV cells. Each of the CSV cell
items must be a string with no whitespace.
5. Each file must contain no more than 1,000,000 lines. The records may be in no
particular order.
6. For mixed-unit expressions, e.g., ones for the "Size" attribute of an ingredient, the
following processing algorithm must be used.
The numbers (whole or decimal) are separated from non-number (the unit part).
More formally, the expressions must constitute full matches for the following
PCRE-standard regular expression: l(\d*\.?\d+)\s*(\D.*|)$, where the
number part will be taken from group 1 of the match, and the unit part from
group 2.
The unit part is then sanitized as follows:
i. Trimmed of whitespace on both ends
ii. Dots (".") and whitespaces (" ") are replaced with empty string
iii. Converted to lowercase
iv. Any trailing ‘s’ is removed
The unit part (after sanitization) is then interpreted by matching it exactly to the
list below.
Unit
Accepted forms
Mass-based units
Ounce
"oz", "ounce"
Pound
"lb", "pound"
Imperial ton
"ton"
Gram
"g", "gram"
Kilogram
"kg", "kilogram"
Volume-based units
Fluid ounce
"floz", "fluidounce"
Pint
"pt", "pint"
Quart
"qt", "quart"
Gallon
"gal", "gallon"
Milliliter
"ml", "milliliter"
Liter
"l", "liter"
Count-based units
Count
"ct", "count"
 
Upload Specifications
1. Only one file may be submitted in one import session. This file may be of any type.
2. All submitted CSV file(s) may be assumed to have MIME type text/csv, as stipulated in
RFC4180 §3.
3. The following checks will be performed on each file individually. If any of the check fails,
the file will be rejected as a whole, and an appropriate error message will be displayed
for the administrator.
File validity: the file must be standards-compliant, and contain the required
headers in the order specified. The matching of headers should be
case-insensitive.
Duplicate records: the file must not contain duplicate records in itself. The
file may contain collision(s) to records existing in the system. Refer to the
Collision Resolution algorithm in the next section when a collision is detected.
Data validity: where required, inputs must conform to standards.
UPC numbers must conform to the UPC-A standard
Sanitized units in mixed-unit expressions must be one in the accepted
list. Further, units used in formulas.csv must be logically convertible to
the original unit used in the ingredients. Similarly, if a record constitutes
a collision in ingredients.csv, the unit, if different than that of the
existing record, must be logically convertible to the existing unit.
Empty attributes: all required attribute(s) must be supplied, except when both of
the following are true:
It is marked as autogeneratable in the Evolution requirements;
The record whose required attribute is empty contains no collision.
4. Referential integrity must be preserved in the file.
Note that the following relations exist among the files / corresponding entries in the
system:
In skus.csv,
PL Name must be existing in the system.
Formula# must be existing in the system.
All CSV cell items in ML Shortnames must be existing in the system.
In formulas.csv:
Ingr# must be existing in the system.
 
Example formulas.csv:
Formula#,Name,Ingr#,Quantity,Comment
1001,Formula1,2001,0.1250000000,
1001,Formula1,2002,0.2500000000,
1002,Formula2,2001,0.1250000000,
1002,Formula2,2006,0.0005000000,
Example ingredients.csv:
2001,Bread,Butternut,340g,2.29,This bread is used to make all the burger
2002,Beef,Beef Choice,2lb,12.25,
2006,Turkey,,424 pounds,666.66,
Example product_lines.csv:
Hamburger
Salad
Pasta
Example skus.csv:
SKU#,Name,Case UPC,Unit UPC,Unit size,Count per case,PL Name,Formula#,Formula factor,ML
Shortnames,Rate,Mfg setup cost,Mfg run cost,Comment
1001,Burger Beef,042272010264,725272730706,600g,50,Hamburger,1001,1,"line1,,,,",1,$1,$2,
1002,Burger Turkey,987654321098,705632085943,250g,80,Hamburger,1001,1,"line1",1,$1,$2,

Navigation menu