Changes
This commit is contained in:
@@ -494,16 +494,57 @@ def export_to_xlsx(project_name: str, variant_name: str, schematics: list, bom_d
|
||||
|
||||
if bom_data is not None:
|
||||
match = None
|
||||
for mfr_name, mpn in pairs:
|
||||
if mfr_name == "-" and mpn == "-":
|
||||
continue
|
||||
designator = node.get("designator") or ""
|
||||
ref = comp.get("name") or ""
|
||||
nexar_desc = comp.get("description") or ""
|
||||
|
||||
valid_pairs = [(m, p) for m, p in pairs if m != "-" or p != "-"]
|
||||
|
||||
# --- MPN / manufacturer match ---
|
||||
for mfr_name, mpn in valid_pairs:
|
||||
match = _find_bom_match(bom_data, mfr_name, mpn)
|
||||
if match:
|
||||
break
|
||||
|
||||
# --- Passive fallback (R / C) ---
|
||||
if not match:
|
||||
match = _find_passive_bom_match(
|
||||
bom_data, node.get("designator") or "", params, comp.get("description") or ""
|
||||
match = _find_passive_bom_match(bom_data, designator, params, nexar_desc)
|
||||
|
||||
# --- Diagnostics when no match ---
|
||||
if not match:
|
||||
if not valid_pairs:
|
||||
print(f" NO MATCH [{designator}] {ref}: no manufacturer data in Nexar")
|
||||
else:
|
||||
tried_mpns = [p for _, p in valid_pairs]
|
||||
# Check if any Nexar MPN exists in BOM ignoring manufacturer
|
||||
mpn_in_bom = next(
|
||||
(e for e in bom_data for mpn in tried_mpns if _mpn_match(e["mpn"], mpn)),
|
||||
None
|
||||
)
|
||||
if mpn_in_bom:
|
||||
print(
|
||||
f" NO MATCH [{designator}] {ref}: "
|
||||
f"MPN '{mpn_in_bom['mpn']}' found in BOM but manufacturer differs "
|
||||
f"(BOM: '{mpn_in_bom['manufacturer']}' vs Nexar: '{valid_pairs[0][0]}')"
|
||||
)
|
||||
else:
|
||||
# Check if BOM has the manufacturer but with a different MPN
|
||||
mfr_in_bom = next(
|
||||
(e for e in bom_data for mfr, _ in valid_pairs if _prefix_match(e["manufacturer"], mfr)),
|
||||
None
|
||||
)
|
||||
if mfr_in_bom:
|
||||
print(
|
||||
f" NO MATCH [{designator}] {ref}: "
|
||||
f"manufacturer '{mfr_in_bom['manufacturer']}' found in BOM "
|
||||
f"but MPN differs (BOM: '{mfr_in_bom['mpn']}' vs Nexar: {tried_mpns})"
|
||||
)
|
||||
else:
|
||||
print(
|
||||
f" NO MATCH [{designator}] {ref}: "
|
||||
f"Nexar MPN(s) {tried_mpns} not found in BOM at all"
|
||||
)
|
||||
|
||||
if match:
|
||||
row += [match["manufacturer"], match["mpn"], match["unit_cost"]]
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user