Skip to main content

Conditions and formulas

A configurable product does not get a separate bill of materials and routing for every combination of options. The product has one bill of materials (super BOM) and one routing (super routing); rules are written on the lines and operations. The values the customer selects on the sales order (the configuration) are carried to the production order, and when the order is released the rules are resolved with these values: which material line is included, in what quantity, which operation is performed and how many minutes it takes.

This page describes all of the rules. Every example was set up in the demo company and its result was verified with the BOM's Yapılandırarak Dene (Try by Configuring) window or with a real production order.

Demo items

Most examples use fictitious items created in the demo company for this page: DMO-KSL-01 Ölçülü bantlı konveyör (made-to-length belt conveyor), DMO-KSL-02 Yapılandırılabilir dağıtım panosu (configurable distribution panel), DMO-KSL-03 Temizlik ürünü partisi (cleaning product batch), DMO-KSL-04 Ölçüye göre dolap (made-to-measure cabinet). Ready-made examples with option conditions: MAM-0003 Ofis çalışma masası (office desk), MAM-0006 Paslanmaz depolama tankı (stainless storage tank), MAM-0001 Motor kontrol panosu (motor control panel).

Number format

In expressions the decimal separator is always a dot (1.05). The application itself uses the Turkish number format: values typed into fields (for example Miktar 0,6) and messages quoted from the screen use a decimal comma. In the explanatory text and result tables below, numbers are written in English format (12.24 M); option names such as 1.000 L (1,000 L) are quoted exactly as they appear on screen.

Map of the rules​

RuleWhere it is definedWhat it decidesHow it is writtenResult type
Configuration preconditionÜrün Ana Verileri (Product Master Data) › item › Yapılandırma (Configuration) › the characteristic's İşlemler (Actions) › Koşul (Condition)Whether the characteristic is asked in salesValues are ticked (in the import workbook KABIN = OZEL_OLCU)—
Constraint (Sınır koy, Set a limit)Same tab › Nesne Bağımlılıkları (Object Dependencies) › Kural Ekle (Add Rule)Whether a disallowed combination can be savedExpressionYes/No
Procedure (Değer hesapla, Calculate value)Same placeWhat value a characteristic getsExpression or decision tableThe characteristic's type
Line condition (option condition)Ürün Ağaçları (Bills of Materials) › revision › the line's Kuralı Düzenle (Edit Rule) button › Satır Kuralı (Line Rule)Whether the material line is included in the orderValues are ticked on an option characteristic—
Expression-based selection conditionSatır Kuralı › İfadeli koşul (Expression condition) › Koşul (Condition)Whether the material line is included in the orderExpressionYes/No
Formula quantitySatır Kuralı › Formüllü miktar (Formula quantity) (Özellik × katsayı (Characteristic × coefficient) or İfade (Expression))The line's quantityCoefficient or expressionNumber
Operation selection conditionRotalar (Routings) › revision › the operation's Seçim koşulu ve formüller (Selection condition and formulas) button › Seçim koşulu (Selection condition)Whether the operation is included in the orderExpressionYes/No
Duration formulaSame place › Hazırlık formülü (dk) (Setup formula, min) · Makine formülü (dk) (Machine formula, min) · İşçilik formülü (dk) (Labor formula, min)The operation's durationExpressionNumber (minutes)

BOM line and operation rules can be written only in the BOM and routing of a configurable item. If a condition is written in the BOM of an item that is not configurable, saving is rejected with this message: Seçim koşulu yalnız yapılandırılabilir kartın ürün ağacında kullanılır. (A selection condition is used only in the BOM of a configurable item.) — for a quantity formula Miktar formülü yalnız yapılandırılabilir kartın ürün ağacında kullanılır. (A quantity formula is used only in the BOM of a configurable item.), and in a routing Seçim koşulu ve formüllü süre yalnız yapılandırılabilir kartın rotasında kullanılır. (Selection conditions and formula durations are used only in the routing of a configurable item.).

When and in what order rules are evaluated​

  1. Value entry — characteristic values are entered on the sales order line (or in the Yapılandırarak Dene (Try by Configuring) window). A characteristic whose precondition is not met is not shown; it cannot be given a value and its required setting is not applied. A required characteristic that is asked and left blank prevents the line from being saved.
  2. Object dependencies are applied in the order of the list: procedures write the calculated value, constraints check the combination. A constraint is checked only when its result is known.
  3. When the production order is released (Yayınla, Release), the BOM is resolved. Material requirements and operations are written to the order at this point; before release the order has no material lines. Lines are processed in line-number order, and on each line:
    1. Option condition — for each condition characteristic, the entered value must be one of the ticked values.
    2. Expression-based selection condition — the result must be Yes. If it is No or unknown, the line is not included.
    3. Quantity — fixed, Miktar + katsayı × değer (quantity + coefficient × value) or Miktar + ifadenin sonucu (quantity + result of the expression).
  4. The same item must not appear twice among the selected lines; if no line is selected, the order is not opened.
  5. The routing is resolved — for each operation the selection condition (included if Yes), then the setup, machine and labor formulas. A duration without a formula is the fixed value in the routing.
  6. Scaling to the order quantity — satır miktarı × emir miktarı ÷ ağacın temel miktarı (line quantity × order quantity ÷ base quantity of the BOM), increased by the assembly and component scrap if any. If the quantity came from a formula or there is scrap, the result is rounded up to the decimal precision of the component's unit (ADET (piece) 0, KG/M/M2 3 decimals).
Difference between Try by Configuring and the order

Yapılandırarak Dene (Try by Configuring) and the order use the same resolver. The window shows values per base quantity and without rounding; the order adds scrap and unit rounding. Example: a sheet-metal line shown as 60,288 KG in the window becomes 63,303 KG on the order with 5% component scrap (60.288 × 1.05 = 63.3024 → rounded up to 63.303).

Expression language​

Constraints, procedures, expression-based selection conditions, quantity formulas, operation conditions and duration formulas use the same language. Rules are evaluated on the server; the Sına (Test) button on the screen performs the same check without saving.

Values and notation​

WhatHow it is writtenExample
NumberDecimal separator is a dot1.05, 2.5, 12
Text, option codeSingle quotes; a quote inside the text is doubled'PVC', 'OZEL_OLCU', 'Ali''nin'
Yes/NoEVET / HAYIR (or TRUE / FALSE)KORUMA = EVET
CharacteristicThe characteristic's code; letters, digits and underscoreBOY, CIKIS_SAYISI
Code with special charactersSquare brackets[EN-1], [BOY] * 2

Codes and keywords are not case-sensitive (bant_genisligi = '800' also works). Text comparison also ignores case and leading/trailing spaces: BANT_TIPI = 'pvc' and BANT_TIPI = ' PVC ' both return Yes.

Value in the expression by characteristic type​

Characteristic typeWhat the expression readsCorrectWrong
Seçim (Selection)The option's code (text)BANT_GENISLIGI = '800'BANT_GENISLIGI = 800 (number) · BANT_GENISLIGI = '800 mm' (the option's name)
Tam Sayı (Integer), Ondalık (Decimal)NumberCIKIS_SAYISI > 12, BOY * 2BOY > '10'
Evet/Hayır (Yes/No)Yes/NoKORUMA = EVETKORUMA = 'EVET', KORUMA = 1
Tarih (Date)Text 'yyyy-MM-dd'TESLIM >= '2027-01-01'—
Metin (Text)Text (empty text counts as not entered)DOLU(ACIKLAMA)ACIKLAMA <> '' (unknown if empty)

The option's name (shown on screen, e.g. "800 mm") is not used in expressions; comparison is made by code. In the rule window, the Özellikler (Characteristics) and … değerleri (… values) buttons insert the item's characteristic and option codes at the cursor position.

Operators and precedence​

Precedence from lowest to highest: VEYA → VE → DEĞİL → comparison → + - → * / → unary -. Parentheses always come first.

OperatorMeaningEquivalent notationExample → result
+ - * /Arithmetic—2 + 3 * 4 → 14 · 10 / 4 → 2.5
+ on textConcatenation—BANT_TIPI + '-' + BANT_GENISLIGI → PVC-600
= <>Equal · not equal!= = <>BOY != 6 (BOY 6) → No
< <= > >=Comparison—BOY = 6.0 (BOY 6) → Yes
IN ( … )One of the listed valuesİÇİNDEBOY IN (6, 12) (BOY 12) → Yes
VEBoth (AND)AND
VEYAEither is enough (OR)OR
DEĞİLNegation (NOT)DEGIL, NOTDEĞİL BOY > 10 VE BOY > 5 (BOY 8) → Yes
  • Comparisons cannot be chained: BOY > 10 > 2 cannot be written (Beklenmeyen '>' (konum 10). — Unexpected '>' (position 10).). Join two conditions with VE.
  • DEĞİL negates only the comparison immediately to its right: DEĞİL A VE B = (DEĞİL A) VE B. To negate several conditions, use parentheses: DEĞİL (A VEYA B).
  • Both sides of a comparison must be of the same type; Yes/No is compared only with = and <>.
  • Arithmetic works only with numbers: KORUMA + 1 → '+' yalnız sayılarla kullanılır. ('+' is used only with numbers.)

Functions​

FunctionEquivalentWhat it doesExample → result
EGER(koşul, a, b)EĞER, IFIf the condition (koşul) is Yes, a; if No, b; if unknown, unknown. Only the selected branch is evaluatedEGER(BOY > 10, 2, 1) (BOY 12) → 2
YUVARLA(x[, n])ROUNDRounds to n decimals (n 0–10, blank = 0); half rounds upYUVARLA(2.345, 2) → 2.35 · YUVARLA(2.5) → 3
YUKARIYUVARLA(x, adım)ROUNDUPRounds up to the next multiple of the step (adım, step > 0)YUKARIYUVARLA(2.37, 0.5) → 2.5
TAVAN(x)CEILNext integer upTAVAN(2.1) → 3 · TAVAN(-2.5) → -2
TABAN(x)FLOORNext integer downTABAN(2.9) → 2 · TABAN(-2.5) → -3
MIN(a, b, …)—The smallest (one or more values)MIN(3, BOY, 8) (BOY 5) → 3
MAX(a, b, …)—The largestMAX(0.6, CIKIS_SAYISI * 0.05) (20) → 1
MUTLAK(x)ABSAbsolute valueMUTLAK(2 - BOY) (BOY 5) → 3
DOLU(özellik)SPECIFIEDYes if the characteristic (özellik) has been entered, No if not — never returns unknownDOLU(KORUMA)
TABLO('KOD')TABLEWhether the values match a row of the variant tableOnly in constraints and procedures
TABLODEGER('KOD', 'SÜTUN')LOOKUP, TABLODEĞERThe column (SÜTUN) value of the matching rowOnly in constraints and procedures

The selection condition and quantity formula of a BOM line do not query variant tables: Seçim koşulu varyant tablosu sorgulamaz. (A selection condition does not query a variant table.) · Miktar formülü varyant tablosu sorgulamaz. (A quantity formula does not query a variant table.) If you need a value from a table, write it to a characteristic calculated by a procedure and read that characteristic on the line (Example 8). An expression can be at most 1000 characters long.

Unknown value — three-valued logic​

A characteristic that has not been entered (or was not asked because its precondition was not met) is unknown. Arithmetic and comparisons involving an unknown value also return unknown. A result can therefore be Yes, No or unknown.

ExpressionValuesResult
KORUMA = EVETKORUMA not enteredunknown → the line is not included
KORUMA <> EVETKORUMA not enteredunknown → the line is not included (not No!)
BOY * 2BOY not enteredunknown → the quantity formula prevents the order from opening
BOY > 10 VEYA KORUMA = EVETBOY 12, KORUMA not enteredYes (EVET VEYA ? = Yes)
BOY > 10 VE KORUMA = EVETBOY 8, KORUMA not enteredNo (HAYIR VE ? = No)
DEĞİL DOLU(KORUMA) VEYA KORUMA = HAYIRKORUMA not enteredYes
DEĞİL DOLU(KORUMA) VEYA KORUMA = HAYIRKORUMA YesNo
EGER(KORUMA = EVET, BOY * 2.4, 0)BOY 10, KORUMA not enteredunknown → the order is not opened

The effect of an unknown value depends on the rule:

RuleIf the result is unknown
Expression-based selection condition, operation selection conditionThe line / operation is not included (as with No)
Quantity formulaError: N. satırın miktar formülü bilinmiyor — okuduğu değerlerden biri konfigürasyonda yok (…) (The quantity formula of line N is unknown — one of the values it reads is not in the configuration (…))
Duration formulaError: N numaralı operasyonun işçilik formülü hesaplanamadı — konfigürasyonda gereken değer yok. (The labor formula of operation N could not be calculated — a required value is missing from the configuration.)
ConstraintNot checked (passes)

For this reason, write a rule that reads an optional (not required) characteristic with the question "what should happen if it is not entered?" in mind; use DOLU(…) if necessary.

Syntax and evaluation messages​

The Sına (Test) button and saving check the syntax and the codes. Value-dependent errors (division by zero, a result of the wrong type, a missing value) appear only with values — in Yapılandırarak Dene (Try by Configuring) or when the order is released.

NotationMessageEnglish meaningWhen
BOY >= 10 VEİfade eksik bitti.The expression ended incomplete.Test / save
(BOY + 2')' bekleniyordu, ifade bitti.')' was expected, the expression ended.Test / save
'PVCKapanmamış metin (konum 1).Unclosed text (position 1).Test / save
BANT_GENISLIGI = "800"Beklenmeyen karakter '"' (konum 18).Unexpected character '"' (position 18).Test / save
BOY * 1,05Beklenmeyen ',' (konum 8).Unexpected ',' (position 8).Test / save
BOY % 2Beklenmeyen karakter '%' (konum 5).Unexpected character '%' (position 5).Test / save
KAREKOK(BOY)Bilinmeyen fonksiyon 'KAREKOK' (konum 1).Unknown function 'KAREKOK' (position 1).Test / save
UZUNLUK > 10 (not on the item)Seçim koşulundaki 'UZUNLUK' 'DMO-KSL-01' kartının özelliği değil.'UZUNLUK' in the selection condition is not a characteristic of item 'DMO-KSL-01'.Test / save
TABLO('X') on a lineSeçim koşulu varyant tablosu sorgulamaz.A selection condition does not query a variant table.Test / save
BOY / 0Sıfıra bölme.Division by zero.With values
EGER(BOY > 10, 2)EGER(koşul, a, b) üç değer alır.EGER(condition, a, b) takes three values.With values — Test reports it as valid
EGER(BOY, 1, 2)EGER'in koşulu Evet/Hayır olmalı.The condition of EGER must be Yes/No.With values
BANT_GENISLIGI = 800'=' iki yanında aynı türde değer ister.'=' requires values of the same type on both sides.With values
KORUMA = 'EVET''=' iki yanında aynı türde değer ister.'=' requires values of the same type on both sides.With values
YUKARIYUVARLA(BOY, 0)YUKARIYUVARLA'nın adımı sıfırdan büyük olmalı.The step of YUKARIYUVARLA must be greater than zero.With values
YUVARLA(BOY, 11)YUVARLA'nın ondalık sayısı 0–10 arası tam sayı olmalı.The number of decimals of YUVARLA must be an integer between 0 and 10.With values
DOLU(BOY * 2)DOLU(özellik) tek özellik kodu alır.DOLU(characteristic) takes a single characteristic code.With values
MAX()MAX için değer sayısı yanlış.Wrong number of values for MAX.With values
BOY * 2 in a selection conditionN. satırın seçim koşulu Evet/Hayır vermeli.The selection condition of line N must return Yes/No.With values — Test reports it as valid
Unknown code in the constraint / procedure formifadedeki 'UZUNLUK' bu kartın özelliği değil.'UZUNLUK' in the expression is not a characteristic of this item.Test / save

The position number tells you which character of the expression is meant (counting from 1). An error that appears with values is reported on the order with the line number: 9. satırın miktar formülü: Sıfıra bölme. (Quantity formula of line 9: Division by zero.)

Line condition (option condition)​

In the upper part of the Satır Kuralı (Line Rule) window, every Seçim (Selection) characteristic of the item is listed with its values.

  • If no value is ticked for a characteristic, that characteristic is not a condition.
  • For the same characteristic, one of the ticked values is enough (OR): Tank Hacmi (Tank Volume) 1.000 L or 2.000 L.
  • Conditions on different characteristics are required together (AND): Renk (Color) Beyaz (White) and Masa Genişliği (Desk Width) 140 cm.
  • If the characteristic has not been entered, the line is not included; Try by Configuring states the reason: Gelmez — Tank Hacmi girilmedi (koşul: 1.000 L). (Not included — Tank Volume not entered (condition: 1,000 L).)
  • A line can carry conditions on at most 10 characteristics; a characteristic can appear only once on a line.

The same item on two lines. An item normally appears on a single line in a revision. Exception: if the option conditions of two lines exclude each other (the ticked values on a shared characteristic do not overlap), the same item can be on two lines — in MAM-0006, HAM-0031 3 mm sheet is on one line with Tank Hacmi: 2.000 L at 290 kg and on the other with Tank Hacmi: 5.000 L at 560 kg. Expression-based conditions are not taken into account here: the same item cannot be placed on two lines with the conditions BOY <= 10 and BOY > 10 (Aynı stok kartı bir revizyonda yalnız bir malzeme satırında yer alabilir. — The same stock item can appear on only one material line in a revision.). In such a case, use a single line and write the quantity with EGER (Example 4).

Yes/No characteristics appear in the window with the Fark etmez / Evet / Hayır (Doesn't matter / Yes / No) buttons; in an expression-based condition the choice is written as UZAKTAN_IZLEME = EVET.

Expression-based selection condition​

The Satır Kuralı › İfadeli koşul › Koşul (Line Rule › Expression condition › Condition) field. Any selection that needs a numeric limit, several characteristics, VEYA or DEĞİL is written here.

  • If the result is Yes, the line is included; if it is No or unknown, it is not.
  • It is required together (AND) with the ticked option conditions.
  • Blank = no expression condition.

Formula quantity​

Satır Kuralı › Formüllü miktar (Line Rule › Formula quantity) has one of three modes:

ModeQuantityRule
Sabit miktar (Fixed quantity)The line's Miktar (Quantity) fieldThe quantity must be greater than zero
Özellik × katsayı (Characteristic × coefficient)Miktar + katsayı × özelliğin değeri (quantity + coefficient × the characteristic's value)The characteristic is numeric (Tam Sayı/Ondalık, Integer/Decimal); the coefficient is greater than zero
İfade (Expression)Miktar + ifadenin sonucu (quantity + result of the expression)The result must be a number
The Quantity field is ADDED to the formula

On a formula line the Miktar (Quantity) field is the "fixed part" and can be zero. On a line with the formula 2 * BOY and Miktar 0,6, the quantity for BOY 6 m is 2 × 6 + 0,6 = 12,6 (2 × 6 + 0.6 = 12.6). If you want the quantity to come only from the formula, enter 0 in Miktar; if you leave 1, every order gets 1 extra unit.

  • The calculated quantity (fixed + formula) must be greater than zero: N. satırın konfigürasyona göre hesaplanan miktarı sıfırdan büyük değil. (The quantity of line N calculated from the configuration is not greater than zero.)
  • The formula also applies to alternative items: the alternative's own quantity + the result of the same formula.
  • Component scrap and assembly scrap are applied to the formula result; on the order the value is rounded up to the decimals of the unit.
  • In İfade (Expression) mode, Sına (Test) checks the syntax and the codes; it does not check that the result is a number.

Configuration precondition​

Makes a characteristic be asked only when another characteristic has a certain value: "When Kabin (Cabin) Özel Ölçü (Custom Size) is selected, ask Kabin Eni (Cabin Width) and Kabin Boyu (Cabin Length)."

  • The condition characteristic must be a Seçim (Selection) or Evet/Hayır (Yes/No) characteristic of the same item; a numeric characteristic cannot be a condition.
  • For the same characteristic, one of the ticked values is enough (OR); different characteristics apply together (AND).
  • A characteristic that is not asked stays blank and its required setting is not applied; if it is given a value, the line is rejected: 'Kabin Eni' yalnız Kabin: Özel Ölçü (En x Boy) olduğunda girilir. ('Kabin Eni' is entered only when Kabin is Özel Ölçü (En x Boy).)
  • If an asked, required characteristic is blank: 'Kabin Eni' özelliğinin değeri girilmemiş. (No value has been entered for the characteristic 'Kabin Eni'.)
  • A characteristic cannot be a condition for itself (Özellik kendisine koşul olamaz. — A characteristic cannot be a condition for itself.); a loop cannot be created (Bu koşul döngü kurar: koşul özelliği dolaylı olarak bu özelliğe bağlı. — This condition creates a loop: the condition characteristic depends indirectly on this characteristic.).
  • A condition that would invalidate an existing variant is not saved: '…' varyantı bu koşulla geçersiz kalır: … (Variant '…' becomes invalid with this condition: …)
  • A chain can be built (A → B → C): if the condition characteristic is hidden, the characteristic that depends on it is hidden too.

Precondition and BOM rule together: a characteristic whose precondition is not met is unknown in rules. Protect a formula that reads this characteristic with EGER (Example 12), or tie the line to the same option condition as the precondition (Example 9).

In the import workbook (Ürün Aktarımı (Product Import) › Yapılandırma (Configuration) sheet), the precondition is written in the OnKosul column:

NotationMeaning
KABIN = OZEL_OLCUAsked if Kabin is Özel Ölçü
PERON_SAYISI = 3 / 4If 3 or 4 (values of the same characteristic separated by /)
KABIN = OZEL_OLCU; DIREK = EvetIf Kabin is Özel Ölçü and Direk is Yes (different characteristics separated by ;)
empty cellThe condition is removed (if the column exists); if the column does not exist, the existing condition is kept

Values are written with the option code; a Yes/No characteristic is written with Evet / Hayır. Unreadable cell: '…' okunamadı — biçim "ÖZELLİK = DEĞER" olmalı. ('…' could not be read — the format must be "CHARACTERISTIC = VALUE".) · unknown characteristic: Koşul özelliği '…' bulunamadı. (Condition characteristic '…' not found.) · unknown value: '…' değerlerinde '…' yok. ('…' is not among the values of '…'.) · numeric characteristic: '…' koşul olamaz — yalnız seçim ve Evet/Hayır özellikleri koşul olur. ('…' cannot be a condition — only selection and Yes/No characteristics can be conditions.)

Super routing: operation condition and duration formula​

In a routing revision, the Seçim koşulu ve formüller (Selection condition and formulas) button of each operation opens four fields under the row: Seçim koşulu (Selection condition), Hazırlık formülü (dk) (Setup formula, min), Makine formülü (dk) (Machine formula, min), İşçilik formülü (dk) (Labor formula, min).

  • If the Seçim koşulu is Yes, the operation is included in the order; if it is No or unknown, it is not. Blank = always.
  • If a formula is filled in, the duration is calculated from the formula and replaces the fixed value (it is not added, unlike the BOM quantity). Blank = the fixed duration in the routing.
  • The formula result must be between 0 and 1,000,000 minutes; it is rounded to two decimals.
  • If no operation is selected: Konfigürasyon rotanın hiçbir operasyonunu seçmiyor — rotanın seçim koşullarını düzeltin. (The configuration does not select any operation of the routing — correct the routing's selection conditions.)
  • Machine and labor durations are per base quantity; setup is per lot.

Object dependencies: constraint and procedure​

Use Kural Ekle (Add Rule) in the Nesne Bağımlılıkları (Object Dependencies) section of the item's Yapılandırma (Configuration) tab:

  • Sınır koy (Kısıt) (Set a limit — Constraint) — the expression must return Yes. If it returns No, the sales line is not saved and the rule's message is shown (if the message is blank: Konfigürasyon kısıtı sağlanmıyor: <ifade> — The configuration constraint is not met: expression). A rule of the form "if A, then B must hold" is written as DEĞİL A VEYA B: BANT_TIPI <> 'PU' VEYA BOY <= 20.
  • Değer hesapla (Prosedür) (Calculate value — Procedure) — the result of the expression (or decision table) is written to a characteristic. If the write mode is Her zaman hesapla (Always calculate), the user cannot enter a different value ('Ayak Çifti Sayısı' değeri kuraldan hesaplanır (8); farklı değer verilemez. — The value of 'Ayak Çifti Sayısı' is calculated from the rule (8); a different value cannot be entered.); if it is Girilmezse hesapla (Calculate if not entered), the value is written only while the characteristic is blank, and the user's value is kept. A procedure that writes a fraction to an integer characteristic is rejected — use YUVARLA.
  • Tablodan seç (Tablo kısıtı) (Select from table — Table constraint) — the combination of values must match a row of a variant table.

A calculated characteristic is read on BOM lines and in the routing like any other characteristic. If the same calculation is needed on several lines, do it once in a procedure and read the result on the lines.

Writing rules in the import workbook​

Instead of entering rules one by one on screen, you can also load them with an import workbook:

Workbook › sheetColumnContent
Ürün Aktarımı (Product Import) workbook › Yapılandırma (Configuration)OnKosulPrecondition (KABIN = OZEL_OLCU)
Veri Aktarımı (Data Import) › Ürün Ağaçları (Bills of Materials) workbook › Ağaç Satırları (BOM Lines)SecimKosuluExpression-based selection condition (BOY > 10)
Same sheetMiktarFormuluExpression quantity; quantity = Miktar + result of the formula
Same workbook › Satır Koşulları (Line Conditions)SatirNo, OzellikKodu, DegerKoduOption condition — one row per value
Veri Aktarımı (Data Import) › Rotalar (Routings) workbook › Operasyonlar (Operations)SecimKosulu, HazirlikFormulu, MakineFormulu, IscilikFormuluSuper routing

Examples​

Each example gives the requirement, the characteristics, the rule, the values entered and the result, and a common mistake. The "Result" column shows what the Yapılandırarak Dene (Try by Configuring) window displays per base quantity (1 ADET (piece)).

Try with Configuration — line results and quantity calculation
  1. 1Characteristic values — entered as on the sales line
  2. 2Characteristic computed by a procedure
  3. 3How many lines come, how many do not
  4. 4Calculation of a formula quantity
  5. 5Why the line does not come
  6. 6Expression condition Yes — line comes

Example 1 — Profile by length (conveyor)​

Requirement: The two side profiles of the conveyor are as long as the conveyor, with a 2% cutting allowance. Characteristic: BOY (length; Ondalık (Decimal), m, 2–30, step 0.5). Line: HAM-0035 Alüminyum konveyör profili (aluminum conveyor profile), unit M, Miktar (Quantity) 0. Formula (İfade, Expression): 2 * BOY * 1.02

BOYResult
612.24 M
12.525.5 M

Common mistake: Leaving the Miktar field at 1 — the result becomes 13.24 M.

Example 2 — Option condition and formula together (belt)​

Requirement: PVC or PU belt; belt length 2 × BOY + 0.6 m allowance. Lines: HAM-0056 PVC belt — option condition Bant Tipi: PVC Endüstriyel (Belt Type: PVC Industrial); HAM-0057 PU belt — Bant Tipi: PU Gıdaya Uygun (Belt Type: PU Food Grade). Both have Miktar 0,6 and the formula 2 * BOY.

BOYBant Tipi (Belt Type)HAM-0056HAM-0057
6PVC12.6 MNot included
12.5PUNot included25.6 M

Try by Configuring also shows how the quantity was calculated: 2 * BOY + 0,6 = 12,6.

Example 3 — Count by step (carrier roller)​

Requirement: One roller every 0.5 m, plus one extra at the end. Line: HAM-0058 Taşıyıcı makara (carrier roller), ADET (piece), Miktar 1, formula TAVAN(BOY / 0.5).

BOYResult
613 ADET
1021 ADET
12.526 ADET

Common mistake: Writing BOY / 0.5 + 1 — if the length is not a multiple of 0.5, a fractional count results; on the order ADET is rounded up, but the intent becomes unclear. When counting pieces, write TAVAN / TABAN explicitly.

Example 4 — Two options with a numeric limit (motor)​

Requirement: 0.75 kW motor up to 10 m, 1.5 kW motor above. Lines: HAM-0054 Motor redüktör 0,75 kW (gear motor 0.75 kW) — expression condition BOY <= 10; HAM-0055 Motor redüktör 1,5 kW (gear motor 1.5 kW) — BOY > 10.

BOYHAM-0054HAM-0055
101 ADET (koşul Evet: BOY <= 10 — condition Yes)Not included (koşul Hayır: BOY > 10 — condition No)
12.5Not included1 ADET

Common mistake: Writing the limit on the two lines so that they overlap or leave a gap (BOY < 10 and BOY > 10 — at 10 m no motor is included). Make one side <= and the other >. The same item cannot be used on two lines; if the item is the same and only the quantity changes, write EGER(BOY > 10, 2, 1) on a single line.

Example 5 — Optional Yes/No (protective cover)​

Requirement: If a protective cover is requested, 2.4 kg of stainless sheet per meter. Characteristic: KORUMA (protection; Evet/Hayır (Yes/No), optional). Line: HAM-0030 Paslanmaz sac (stainless sheet), KG, Miktar 0, expression condition KORUMA = EVET, formula BOY * 2.4.

BOYKORUMAResult
12.5Yes30 KG
10NoNot included — koşul Hayır: KORUMA = EVET (condition No)
6not enteredNot included — koşulun okuduğu değer girilmedi: KORUMA = EVET (the value read by the condition was not entered)

Common mistake 1: Writing KORUMA <> EVET for the "without cover" case — if it has not been entered, the result is unknown and the line is not included. Correct: DEĞİL DOLU(KORUMA) VEYA KORUMA = HAYIR. Common mistake 2: Embedding the condition in the formula: EGER(KORUMA = EVET, BOY * 2.4, 0) — if KORUMA is not entered the formula is unknown and the order is not opened; in addition, when the result is 0 the error hesaplanan miktarı sıfırdan büyük değil (calculated quantity is not greater than zero) appears. Write whether the line is included with a condition and the quantity with a formula.

Example 6 — Option and number together (middle support)​

Requirement: For an 800 mm belt on a conveyor longer than 12 m, 0.8 m of middle support profile every 3 m. Line: HAM-0032 Profil kutu 40x40 (box profile 40x40), M, Miktar 0, expression condition BANT_GENISLIGI = '800' VE BOY > 12, formula TAVAN(BOY / 3) * 0.8.

Bant Genişliği (Belt Width)BOYResult
800 mm12.54 M
800 mm12Not included — koşul Hayır (condition No)
600 mm12.5Not included

Common mistake: BANT_GENISLIGI = 800 (without quotes) — an option code is text: '=' iki yanında aynı türde değer ister. ('=' requires values of the same type on both sides.) This error does not appear in Test but with values.

Example 7 — Coefficient from a list (connecting bolt)​

Requirement: For 600 and 800 mm, 8 bolts per 1.5 m; for 400 mm, 4. Bolts are issued by backflush. Line: HAM-0064 Cıvata M8x20 (bolt M8x20), ADET, Miktar 0, Geri sarf (Backflush) ticked, formula EGER(BANT_GENISLIGI IN ('600', '800'), 8, 4) * TAVAN(BOY / 1.5).

Bant Genişliği (Belt Width)BOYResult
600 mm632 ADET
400 mm1028 ADET
800 mm1264 ADET
800 mm12.572 ADET

Example 8 — Calculated characteristic (pairs of feet)​

Requirement: The number of pairs of feet is used in several places (BOM lines, routing); the calculation should be in one place. Setup: Add the characteristic AYAK_CIFTI (pairs of feet; Tam Sayı (Integer), optional) to the item; Nesne Bağımlılıkları (Object Dependencies) › Kural Ekle (Add Rule) › Değer hesapla (Calculate value), target Ayak Çifti Sayısı (Number of Pairs of Feet), Formül (gelişmiş) (Formula, advanced), write mode Her zaman hesapla (Always calculate), expression TAVAN(BOY / 1.5) + 1. Line: HAM-0049 Ayar ayağı (leveling foot), ADET, Miktar 0, formula 2 * AYAK_CIFTI.

BOYAYAK_CIFTI (calculated)HAM-0049
10816 ADET (2 * AYAK_CIFTI = 16)
12.51020 ADET

The calculated value also appears in the order's configuration text (Ayak Çifti Sayısı: 10). Common mistake: Entering a value manually for the calculated characteristic in sales: 'Ayak Çifti Sayısı' değeri kuraldan hesaplanır (8); farklı değer verilemez. (The value of 'Ayak Çifti Sayısı' is calculated from the rule (8); a different value cannot be entered.)

Example 9 — Dimension with a precondition and a line selected by option (panel cabinet)​

Requirement: The standard cabinet is a semi-finished product from stock; for a custom size, cabinet sheet = width × length × 2 faces × 15.7 kg/m². Characteristics: KABIN (cabinet; Seçim (Selection): Standart (800x600) STD, Özel Ölçü (En x Boy) (Custom Size, Width x Length) OZEL_OLCU); KABIN_EN, KABIN_BOY (cabinet width, length; Ondalık (Decimal), m, required, precondition KABIN = OZEL_OLCU). Lines: YM-0001 Pano kabini (panel cabinet) — option condition Kabin: Standart (800x600); HAM-0029 DKP sac 2 mm (DKP sheet 2 mm), KG, Bileşen firesi (Component scrap) 5% — option condition Kabin: Özel Ölçü (En x Boy), Miktar 0, formula KABIN_EN * KABIN_BOY * 2 * 15.7.

KabinWidth × LengthYM-0001HAM-0029 (Try)HAM-0029 (on the order)
Standartnot asked1 ADETNot included—
Özel Ölçü1.2 × 1.6Not included60.288 KG63.303 KG (5% scrap, rounded up)
Özel Ölçünot enteredNot includedErrorThe sales line is not saved

In the last row the window shows two warnings: Satış satırı bu değerlerle kaydedilemez: 'Kabin Eni' özelliğinin değeri girilmemiş. (The sales line cannot be saved with these values: no value has been entered for the characteristic 'Kabin Eni'.) and 2. satırın miktar formülü bilinmiyor — okuduğu değerlerden biri konfigürasyonda yok (KABIN_EN * KABIN_BOY * 2 * 15.7). (The quantity formula of line 2 is unknown — one of the values it reads is not in the configuration.)

Example 10 — Fixed + characteristic-dependent count (terminal blocks)​

Requirement: 4 terminal blocks per output, plus 2 extra for ground. Characteristic: CIKIS_SAYISI (number of outputs; Tam Sayı (Integer), 1–24). Line: HAM-0014 Klemens (terminal block), ADET, Miktar 2, formula 4 * CIKIS_SAYISI.

CIKIS_SAYISIResult
418 ADET
626 ADET
1458 ADET
2082 ADET

The same result is obtained with the Özellik × katsayı (Characteristic × coefficient) mode: characteristic Çıkış Sayısı (Number of Outputs), coefficient 4, Miktar 2.

Example 11 — Tiered quantity (cable)​

Requirement: 3 m of cable per output for the first 6 outputs, 2 m for the rest. Line: HAM-0024 Kablo NYAF 2,5 mm² (cable NYAF 2.5 mm²), M, Miktar 0, formula EGER(CIKIS_SAYISI <= 6, 3 * CIKIS_SAYISI, 18 + 2 * (CIKIS_SAYISI - 6)).

CIKIS_SAYISIResult
412 M
618 M
1434 M
2046 M

For three tiers, nest EGER: EGER(X <= 6, …, EGER(X <= 12, …, …)).

Example 12 — EGER protecting a characteristic that is not asked (DIN rail)​

Requirement: 1.2 m of rail in the standard cabinet; for a custom size, width × 2, rounded up to the half meter. Line: HAM-0021 DIN ray (DIN rail), M, Miktar 0, formula EGER(KABIN = 'STD', 1.2, YUKARIYUVARLA(KABIN_EN * 2, 0.5)).

KabinKABIN_ENResult
Standartnot asked1.2 M
Özel Ölçü1.22.5 M (2.4 → 2.5)

EGER evaluates only the selected branch: in the standard cabinet no error occurs even though KABIN_EN is unknown. Common mistake: YUKARIYUVARLA(KABIN_EN * 2, 0.5) on its own — in the standard cabinet it is unknown and the order is not opened.

Example 13 — VEYA and its complement with DEĞİL (PLC or relay module)​

Requirement: PLC module in the professional series or with more than 12 outputs, relay module otherwise. Lines: YM-0009 PLC modülü (PLC module) — SALT_SERISI = 'PRO' VEYA CIKIS_SAYISI > 12; YM-0008 Röle modülü (relay module) — DEĞİL (SALT_SERISI = 'PRO' VEYA CIKIS_SAYISI > 12).

Şalt Serisi (Switchgear Series)CIKIS_SAYISIYM-0009YM-0008
Ekonomik (Economy)6Not included1 ADET
Ekonomik (Economy)141 ADETNot included
Profesyonel (Professional)41 ADETNot included

Writing the complement with DEĞİL ( … ) guarantees that the two lines never overlap and that no value is left uncovered. Common mistake: DEĞİL SALT_SERISI = 'PRO' VEYA CIKIS_SAYISI > 12 without parentheses — DEĞİL applies only to the first comparison.

Example 14 — Short-circuit of VE (panel fan)​

Requirement: A fan for a custom cabinet larger than 1.5 m². Line: HAM-0019 Pano fanı (panel fan) — KABIN = 'OZEL_OLCU' VE KABIN_EN * KABIN_BOY > 1.5.

KabinWidth × LengthResult
Standartnot askedNot included — koşul Hayır (condition No; even though the size is unknown)
Özel Ölçü1.2 × 1.6 = 1.921 ADET

HAYIR VE ? returns No; that is why the standard cabinet shows a plain "No" instead of "value not entered".

Example 15 — Characteristic × coefficient mode (circuit breaker)​

Requirement: One circuit breaker per output. Line: HAM-0008 Sigorta otomat C10 (circuit breaker C10), ADET, Miktar 0, mode Özellik × katsayı (Characteristic × coefficient): characteristic Çıkış Sayısı (Number of Outputs), coefficient 1.

CIKIS_SAYISIResult (calculation shown in Try)
66 ADET (1 × Çıkış Sayısı (6) = 6)
1414 ADET

In İfade (Expression) mode, 1 * CIKIS_SAYISI gives the same result. In Characteristic × coefficient mode the coefficient must be greater than zero (Formül katsayısı sıfırdan büyük olmalıdır. — The formula coefficient must be greater than zero.); the mode and an expression cannot be used together (Miktar ya özellik × katsayı ya da ifadeli formülle hesaplanır — ikisi birden olmaz. — The quantity is calculated either with characteristic × coefficient or with an expression formula — not both.).

Example 16 — Quantity with a lower limit (busbar)​

Requirement: In the professional series, 5 cm of busbar per output, at least 0.6 m. Line: HAM-0020 Bakır bara (copper busbar), M — option condition Şalt Serisi: Profesyonel (Switchgear Series: Professional), Miktar 0, formula MAX(0.6, CIKIS_SAYISI * 0.05).

Şalt Serisi (Switchgear Series)CIKIS_SAYISIResult
Profesyonel (Professional)40.6 M
Profesyonel (Professional)201 M
Ekonomik (Economy)14Not included

For an upper limit use MIN(upper, …); for both, MIN(upper, MAX(lower, …)).

Example 17 — Recipe proportional to the batch quantity (chemicals)​

Requirement: Raw materials in proportion to how many kg one batch (1 ADET) produces; salt rounded to one decimal. Characteristic: PARTI_KG (batch kg; Ondalık (Decimal), kg, 100–2000, step 50). Lines: HAM-0070 SLES — PARTI_KG * 0.12; HAM-0071 Tuz (salt) — YUVARLA(PARTI_KG * 0.015, 1); HAM-0075 Saf su (purified water) — PARTI_KG * 0.865 (all with Miktar 0).

PARTI_KGSLESSaltWater
50060 KG7.5 KG432.5 KG
1250150 KG18.8 KG (18.75 → 18.8)1081.25 KG
Proportional scaling does not require a formula

For a recipe that only grows proportionally, set the BOM's Temel Miktar (Base Quantity) to the batch (e.g. 1000 KG) and enter the order quantity as the kg to be produced; every line scales with the order quantity automatically. A formula is needed for the non-proportional part: a rounded packaging count, an option-dependent additive.

Example 18 — Packaging count and cartons (packing)​

Requirement: 5 L canister (5.2 kg fill) or 1 L bottle (1.04 kg); canisters go into cartons of 4, bottles into cartons of 12. Characteristic: AMBALAJ (packaging; Seçim (Selection): 5 L bidon (5 L canister) B5L, 1 L şişe (1 L bottle) S1L). Lines (all with Miktar 0):

LineOption conditionFormula
AMB-0001 Bidon 5 LT (canister 5 L)Ambalaj: 5 L bidonTAVAN(PARTI_KG / 5.2)
AMB-0004 Bidon kapağı (canister cap)Ambalaj: 5 L bidonTAVAN(PARTI_KG / 5.2)
AMB-0007 Koli 4'lü (carton of 4)Ambalaj: 5 L bidonTAVAN(TAVAN(PARTI_KG / 5.2) / 4)
AMB-0002 Şişe 1 LT (bottle 1 L)Ambalaj: 1 L şişeTAVAN(PARTI_KG / 1.04)
AMB-0008 Koli 12'li (carton of 12)Ambalaj: 1 L şişeTAVAN(TAVAN(PARTI_KG / 1.04) / 12)
PARTI_KGAmbalaj (Packaging)CanisterCapCarton of 4BottleCarton of 12
5005 L bidon979725Not includedNot included
12501 L şişeNot includedNot includedNot included1202101

Common mistake: Writing the carton count as TAVAN(PARTI_KG / 5.2 / 4) — dividing into cartons before rounding the canisters to a whole number can result in too few cartons. Use nested TAVAN.

Example 19 — Option-dependent additive (fragrance)​

Line: HAM-0072 Parfüm (fragrance), KG, Miktar 0, expression condition PARFUM = EVET, formula PARTI_KG * 0.003.

PARTI_KGPARFUMResult
1250Yes3.75 KG
500not enteredNot included — koşulun okuduğu değer girilmedi: PARFUM = EVET (the value read by the condition was not entered)

Example 20 — Panel area and color by dimensions (cabinet)​

Requirement: Body: two sides (height × 60 cm depth), top, bottom and one shelf every 40 cm (width × 60 cm); the color selects the panel item. 10% cutting scrap. Characteristics: GEN_CM, YUK_CM (width, height; Tam Sayı (Integer), cm), RENK (color; Seçim (Selection)), KAPAK (door; Seçim (Selection)). Lines: HAM-0038 / HAM-0039 / HAM-0040 Melamin sunta Beyaz / Ceviz / Antrasit (melamine chipboard White / Walnut / Anthracite), M2, Bileşen firesi (Component scrap) 10% — option condition Renk: Beyaz / Ceviz / Antrasit, Miktar 0, formula (2 * YUK_CM * 60 + (TABAN(YUK_CM / 40) + 1) * GEN_CM * 60) / 10000.

Width × HeightRenk (Color)Line includedResult
120 × 200Ceviz (Walnut)HAM-00396.72 M2
180 × 160Beyaz (White)HAM-00387.32 M2

Use / 10000 for cm² → m². Back panel (HAM-0041 MDF) GEN_CM * YUK_CM / 10000: 120 × 200 → 2.4 M2.

Example 21 — Hinges by number of doors and height (cabinet)​

Lines: HAM-0045 Menteşe (hinge) — option condition Kapak Tipi: Menteşeli (Door Type: Hinged), formula EGER(YUK_CM > 180, 4, 3) * TAVAN(GEN_CM / 60); HAM-0046 Kulp (handle) — no condition, formula EGER(KAPAK = 'SURGULU', 2, TAVAN(GEN_CM / 60)); HAM-0033 Profil (sürgü rayı) (profile, sliding rail) — Kapak Tipi: Sürgülü (Door Type: Sliding), formula 2 * GEN_CM / 100; HAM-0049 Ayar ayağı (leveling foot) — EGER(GEN_CM > 120, 6, 4).

Width × HeightKapak (Door)HingeHandleRailFoot
120 × 200Menteşeli (Hinged)82Not included4
180 × 160Sürgülü (Sliding)Not included23.6 M6

Example 22 — BOM with option conditions only (office desk, MAM-0003)​

A product that needs no formula, where the quantity of every combination is fixed: the panel item is selected from the combination of Renk (Color) × Masa Genişliği (Desk Width) (nine lines, each with one value on each of two characteristics); the edge band reads only the color.

Masa Genişliği (Desk Width)Renk (Color)Kablo Kanalı (Cable Duct)Panel includedBandDuct
140 cmBeyaz (White)Var (Yes)HAM-0038 1.47 M2 (Renk Beyaz, Masa Genişliği 140 cm)HAM-0042 6 MHAM-0048 1 ADET

Example 23 — The same item on two mutually exclusive lines (tank, MAM-0006)​

HAM-0031 3 mm sheet is on two lines: Tank Hacmi: 2.000 L (Tank Volume: 2,000 L) → 290 KG, Tank Hacmi: 5.000 L (Tank Volume: 5,000 L) → 560 KG. This is allowed because the conditions on the same characteristic do not overlap. HAM-0034 pipe is on a single line with 1.000 L / 2.000 L (OR) → 4 M.

Tank Hacmi (Tank Volume)Karıştırıcı (Agitator)HAM-0031HAM-0034HAM-0059 / HAM-0060
2.000 LVar (Yes)290 KG4 M1 / 1 ADET

Example 24 — Super routing: duration and operation selection (conveyor)​

The routing of DMO-KSL-01; durations on order UE-2026-000009, opened with BOY 12.5, Bant Tipi (Belt Type) PVC and Koruma (Protection) Yes:

Op.OperationRuleDuration on the order
10Profil kesim (profile cutting)Machine formula 2 * BOY * 0.8 (setup 10, labor 5 fixed)Machine 20 min
20Şase ve makara montajı (chassis and roller assembly)Labor formula 30 + 6 * BOY105 min
30Bant montajı ve gerdirme (belt assembly and tensioning)Labor formula EGER(BANT_TIPI = 'PU', 40, 25) + 2 * BOY50 min
40Koruma kapağı montajı (protective cover assembly)Selection condition KORUMA = EVET, labor 3 * BOY37.5 min
50Motor bağlantısı (motor connection)Fixed 3030 min
60Çalışma testi (operating test)Labor EGER(BOY > 10, 30, 20)30 min

In the panel routing (DMO-KSL-02), the labor of the cabinet fabrication included with KABIN = 'OZEL_OLCU' is 60 + 40 * KABIN_EN * KABIN_BOY → 136.8 min for 1.2 × 1.6 m; 20 + 8 * CIKIS_SAYISI → 132 min for 14 outputs; the PLC programming operation is included with SALT_SERISI = 'PRO' VEYA CIKIS_SAYISI > 12 (UE-2026-000010).

Example 25 — Constraint (disallowed combination)​

Requirement: The PU food-grade belt is produced at most 20 m long. Rule: Sınır koy (Set a limit), expression BANT_TIPI <> 'PU' VEYA BOY <= 20, message PU gıda bandı en çok 20 m boyda üretilir. (The PU food-grade belt is produced at most 20 m long.)

Bant Tipi (Belt Type)BOYResult
PU24The sales line is not saved — PU gıda bandı en çok 20 m boyda üretilir.
PU12.5Passes
PVC24Passes

An out-of-range value does not need a constraint; the characteristic's En az / En çok / Adım (Minimum / Maximum / Step) fields check it: 'Boy' değeri izinli aralıkta değil (2–30 m, 0,5 m adım). (The value of 'Boy' is not within the allowed range (2–30 m, step 0.5 m).) (BOY 31 or 6.3).

Checklist for writing rules​

  1. Write whether the line is included with a condition and its quantity with a formula; do not combine the two inside EGER(…, …, 0).
  2. On a formula line, fill in the Miktar (Quantity) field deliberately (usually 0).
  3. Write option codes in single quotes and Yes/No without quotes; use a dot as the decimal separator.
  4. Build rules that read optional characteristics and characteristics with preconditions for the "no value" case (DOLU, EGER).
  5. Write limits so that they cover every value: one side <=, the other >; for the complement use DEĞİL ( … ).
  6. If the same item is needed on two lines, set up the conditions so that they exclude each other by option; an expression condition is not enough.
  7. Before saving, use Sına (Test); after saving, use Yapılandırarak Dene (Try by Configuring) to try the extreme values (smallest, largest, both sides of a limit, optional field blank).