Package org.kigalisim.engine.recalc
Class SalesStreamDistributionBuilder
java.lang.Object
org.kigalisim.engine.recalc.SalesStreamDistributionBuilder
Builder for creating sales stream distribution percentages.
This class implements the logic for determining the appropriate percentage split between import, domestic, and export based on which streams have been explicitly enabled and their current values.
-
Constructor Summary
ConstructorsConstructorDescriptionCreate builder without any values initialized. -
Method Summary
Modifier and TypeMethodDescriptionbuild()Build a sales stream distribution based on provided values.setDomesticEnabled(boolean domesticEnabled) Set whether domestic stream is enabled.setDomesticSales(EngineNumber domesticSales) Set the domestic sales value.setExportEnabled(boolean exportEnabled) Set whether export stream is enabled.setExportSales(EngineNumber exportSales) Set the export sales value.setImportEnabled(boolean importEnabled) Set whether import stream is enabled.setImportSales(EngineNumber importSales) Set the import sales value.setIncludeExports(boolean includeExports) Set whether exports should be included in the distribution.
-
Constructor Details
-
SalesStreamDistributionBuilder
public SalesStreamDistributionBuilder()Create builder without any values initialized.
-
-
Method Details
-
setDomesticSales
Set the domestic sales value.- Parameters:
domesticSales- Current domestic sales value- Returns:
- This builder for method chaining
-
setImportSales
Set the import sales value.- Parameters:
importSales- Current import sales value- Returns:
- This builder for method chaining
-
setDomesticEnabled
Set whether domestic stream is enabled.- Parameters:
domesticEnabled- true if domestic stream has ever been enabled- Returns:
- This builder for method chaining
-
setImportEnabled
Set whether import stream is enabled.- Parameters:
importEnabled- true if import stream has ever been enabled- Returns:
- This builder for method chaining
-
setExportSales
Set the export sales value.- Parameters:
exportSales- Current export sales value- Returns:
- This builder for method chaining
-
setExportEnabled
Set whether export stream is enabled.- Parameters:
exportEnabled- true if export stream has ever been enabled- Returns:
- This builder for method chaining
-
setIncludeExports
Set whether exports should be included in the distribution.- Parameters:
includeExports- true if exports should be included in distribution calculations- Returns:
- This builder for method chaining
-
build
Build a sales stream distribution based on provided values.Distribution logic:- If exports are excluded: 100% split between import and domestic only
- If exports are included: proportional split between import, domestic, and export
- Proportional split based on current values if streams have sales
- Equal split among enabled streams if no current sales
- Returns:
- A SalesStreamDistribution with appropriate percentages
- Throws:
IllegalStateException- if any required field is missing
-