src: wv_dataclasses: improved qty_multiplier support for additional items
This commit is contained in:
parent
7b201eb320
commit
57ec0ea00b
@ -344,7 +344,9 @@ class BomEntry:
|
|||||||
), f"Unexpected id type {self.amount}"
|
), f"Unexpected id type {self.amount}"
|
||||||
self.qty *= self.amount
|
self.qty *= self.amount
|
||||||
if self.qty_multiplier is not None:
|
if self.qty_multiplier is not None:
|
||||||
self.qty *= float(self.qty_multiplier)
|
if not isinstance(self.qty_multiplier, str):
|
||||||
|
self.qty *= float(self.qty_multiplier)
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def description_str(self):
|
def description_str(self):
|
||||||
@ -563,8 +565,12 @@ class Component:
|
|||||||
if self.category is None:
|
if self.category is None:
|
||||||
raise RuntimeError(f"category should be defined for {self}")
|
raise RuntimeError(f"category should be defined for {self}")
|
||||||
|
|
||||||
|
def compute_qty_multipliers(self):
|
||||||
|
pass
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def bom_entry(self):
|
def bom_entry(self):
|
||||||
|
self.compute_qty_multipliers()
|
||||||
return BomEntry(
|
return BomEntry(
|
||||||
qty=self.qty,
|
qty=self.qty,
|
||||||
partnumbers=self.partnumbers,
|
partnumbers=self.partnumbers,
|
||||||
@ -744,12 +750,16 @@ class Connector(GraphicalComponent):
|
|||||||
"CONNECTIONS": num_connections,
|
"CONNECTIONS": num_connections,
|
||||||
}
|
}
|
||||||
for subitem in self.additional_components:
|
for subitem in self.additional_components:
|
||||||
if isinstance(subitem.qty_multiplier, QtyMultiplierConnector):
|
if isinstance(subitem.qty_multiplier, str):
|
||||||
computed_factor = qty_multipliers_computed[subitem.qty_multiplier.name]
|
computed_factor = qty_multipliers_computed[subitem.qty_multiplier.upper()]
|
||||||
elif isinstance(subitem.qty_multiplier, QtyMultiplierCable):
|
#if isinstance(subitem.qty_multiplier, QtyMultiplierConnector):
|
||||||
raise Exception("Used a cable multiplier in a connector!")
|
# computed_factor = qty_multipliers_computed[subitem.qty_multiplier.name.upper()]
|
||||||
else: # int or float
|
#elif isinstance(subitem.qty_multiplier, QtyMultiplierCable):
|
||||||
|
# raise Exception("Used a cable multiplier in a connector!")
|
||||||
|
elif isinstance(subitem.qty_multiplier, int) or isinstance(subitem.qty_multiplier, float):
|
||||||
computed_factor = subitem.qty_multiplier
|
computed_factor = subitem.qty_multiplier
|
||||||
|
else:
|
||||||
|
raise ValueError(f'Unexpected qty multiplier "{subitem.qty_multiplier}"')
|
||||||
subitem._qty_multiplier_computed = computed_factor
|
subitem._qty_multiplier_computed = computed_factor
|
||||||
|
|
||||||
|
|
||||||
@ -793,6 +803,7 @@ class WireClass(GraphicalComponent):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def bom_entry(self):
|
def bom_entry(self):
|
||||||
|
self.compute_qty_multipliers()
|
||||||
return BomEntry(
|
return BomEntry(
|
||||||
qty=self.length,
|
qty=self.length,
|
||||||
partnumbers=self.partnumbers,
|
partnumbers=self.partnumbers,
|
||||||
@ -1001,6 +1012,7 @@ class Cable(WireClass):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def bom_entry(self):
|
def bom_entry(self):
|
||||||
|
self.compute_qty_multipliers()
|
||||||
if self.is_bundle:
|
if self.is_bundle:
|
||||||
return [w.bom_entry for w in self.wire_objects.values()]
|
return [w.bom_entry for w in self.wire_objects.values()]
|
||||||
else:
|
else:
|
||||||
@ -1175,7 +1187,7 @@ class Cable(WireClass):
|
|||||||
if isinstance(subitem.qty_multiplier, QtyMultiplierCable):
|
if isinstance(subitem.qty_multiplier, QtyMultiplierCable):
|
||||||
computed_factor = qty_multipliers_computed[subitem.qty_multiplier.name]
|
computed_factor = qty_multipliers_computed[subitem.qty_multiplier.name]
|
||||||
# inherit component's length unit if appropriate
|
# inherit component's length unit if appropriate
|
||||||
if subitem.qty_multiplier.name in ["LENGTH", "TOTAL_LENGTH"]:
|
if subitem.qty_multiplier.name.upper() in ["LENGTH", "TOTAL_LENGTH"]:
|
||||||
if subitem.qty.unit is not None:
|
if subitem.qty.unit is not None:
|
||||||
raise Exception(
|
raise Exception(
|
||||||
f"No unit may be specified when using"
|
f"No unit may be specified when using"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user