{% extends 'bom/bom-base.html' %} {% load static %} {% load materializecss %} {% block head-title %}{{ title }}{% endblock %} {% block bom-menu %}{% endblock %} {% block content %}

Add or update parts, vendor prices or a BOM from a CSV. You'll review every change before anything is saved.

syncMatching rows update horizontal_ruleBlank cells are left alone shieldNothing is deleted except BOM lines you replace
{% include 'bom/starter-part-classes-prompt.html' %}
{% csrf_token %}

What's in the file?

{% for value, name, description, icon in import_type_choices %} {% endfor %}
{{ upload_bom_form.parent_part_number|materializecss:'s12' }}

Every row becomes a direct child of this assembly. Leave it empty when the file has a level column.

If the assembly already has a BOM

{% for name in seller_names %}

Used for rows without a seller. Created if it doesn't exist yet.

lightbulbAny file IndaBOM exports can be edited and imported back.

lightbulbStart from a file: export your parts or download a template set up for your organization's numbering{% if organization.number_scheme == 'S' %} and part classes{% endif %}.

lightbulbStart from a file: export your vendor prices or download a template.

lightbulbStart from a file: export an assembly's BOM from its Manage menu, or {% if organization.number_scheme == 'S' %} download a sample. {% else %} download a sample. {% endif %}

Columns for parts

Each row is one part. A row that names an existing part (by part number, or by manufacturer part number) updates it; any other row creates a part. Part classes are never changed by an import. Column names are case-insensitive and unrecognized columns are ignored.

{% if organization.number_scheme == 'S' %} {% else %} {% endif %}
part_class or part_number also: class, part_category Provide one or both. part_class is the class code (e.g. 500) and IndaBOM assigns the next item number. part_number is a full number like {{ organization.example_part_number }}; an existing number updates that part. When both are given, part_number wins.
part_numberalso: part number, part no Any unique number, e.g. {{ organization.example_part_number }}. An existing number updates that part.
revisionalso: rev, part_revision Up to 4 characters. Required to create a part. For an existing part it picks the revision to update: the latest when the column is left out, a new revision when the value is unknown. Released and Obsolete revisions keep their description and properties.
descriptionalso: desc Up to 255 characters. Required to create a part; blank keeps an existing description.
manufacturer_name
manufacturer_part_number also: manufacturer, mfg, mpn, mfg_part_number
Include both to attach a manufacturer part; the manufacturer is created if unknown. manufacturer_part_number also identifies an existing part when part_number is blank. A new pair is added to the part; the primary manufacturer part is never changed.
seller, unit_cost, nre_cost, … One vendor price per row, using the vendor prices columns. Requires a manufacturer part; unit_cost is required to create a price.
property_<code>also: the property's name Custom properties defined in Settings → IndaBOM. property_<code>_units holds the unit symbol (e.g. mV) for a property with a quantity of measure.
Columns for vendor prices

Each row is one price break, identified by manufacturer part, vendor and minimum order quantity. A matching price is updated, any other row creates one, and parts are never created. Column names are case-insensitive and unrecognized columns are ignored.

part_number or
manufacturer_part_number also: part number, mpn, mfg_part_number
Identifies an existing part. With manufacturer_name the pair identifies the manufacturer part; a part without one gets it created.
selleralso: part_seller Vendor name, created if unknown. Rows without one use the default vendor.
unit_costalso: part_cost Cost per unit in your organization's currency. Currency symbols and thousands separators are accepted. Required to create a price.
minimum_order_quantityalso: moq Part of the price's identity; blank means 1.
nre_costalso: nre Non-recurring engineering cost.
seller_part_numberalso: seller_pn, spn The vendor's own catalog number.
minimum_pack_quantityalso: mpq Pack or reel size.
lead_time_daysalso: lead_time, lt Lead time in days.
Columns for a bill of materials

Each row is one BOM line. Parts and revisions are created if they don't exist, or updated if they do. Released revisions are added as they are and Obsolete revisions are skipped. When a sub-assembly has rows beneath it in the file, its BOM is set to match those rows; a sub-assembly listed without rows beneath it is left alone. Vendor price columns are ignored.

part_number or
manufacturer_part_number also: part number, mpn, mfg_part_number
Identifies the subpart. The part must already exist when using manufacturer_part_number.
quantityalso: count, qty Defaults to 1 if empty.
level Nesting depth (1 = direct child). Not needed when you fill in Add to assembly; every row is then a direct child.
referencealso: designator Comma-separated list (e.g. R1, R2). Count must match quantity.
do_not_loadalso: dnl, dnp Mark as Do Not Load. Values: y, x, yes, true.
revisionalso: rev Target revision. Defaults to 1 if omitted.
descriptionalso: desc Part description, up to 255 characters.
{% endblock %} {% block bom-script %} {% endblock %}