This commit is contained in:
David Rice
2026-04-13 07:15:42 +01:00
parent c1cd199e5a
commit 2da2d2e10a

View File

@@ -494,16 +494,57 @@ def export_to_xlsx(project_name: str, variant_name: str, schematics: list, bom_d
if bom_data is not None: if bom_data is not None:
match = None match = None
for mfr_name, mpn in pairs: designator = node.get("designator") or ""
if mfr_name == "-" and mpn == "-": ref = comp.get("name") or ""
continue 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) match = _find_bom_match(bom_data, mfr_name, mpn)
if match: if match:
break break
# --- Passive fallback (R / C) ---
if not match: if not match:
match = _find_passive_bom_match( match = _find_passive_bom_match(bom_data, designator, params, nexar_desc)
bom_data, node.get("designator") or "", params, comp.get("description") or ""
) # --- 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: if match:
row += [match["manufacturer"], match["mpn"], match["unit_cost"]] row += [match["manufacturer"], match["mpn"], match["unit_cost"]]
else: else: