Skip to content

Commit e103480

Browse files
committed
Add supplier information to KiCad part exports
- Include supplier name and part numbers from order details in KiCad exports - Handle multiple suppliers with sequential numbering (Supplier 2, Supplier 3, etc.) - Include both active and obsolete order details for comprehensive supplier info - Add null checks to prevent errors when supplier or part number is missing
1 parent c445359 commit e103480

1 file changed

Lines changed: 22 additions & 0 deletions

File tree

src/Services/EDA/KiCadHelper.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,28 @@ public function getKiCADPart(Part $part): array
237237
$result["fields"]["Part-DB IPN"] = $this->createField($part->getIpn());
238238
}
239239

240+
// Add supplier information from orderdetails (include obsolete orderdetails)
241+
if ($part->getOrderdetails(false)->count() > 0) {
242+
$supplierCounts = [];
243+
244+
foreach ($part->getOrderdetails(false) as $orderdetail) {
245+
if ($orderdetail->getSupplier() !== null && $orderdetail->getSupplierPartNr() !== '') {
246+
$supplierName = $orderdetail->getSupplier()->getName();
247+
248+
if (!isset($supplierCounts[$supplierName])) {
249+
$supplierCounts[$supplierName] = 0;
250+
}
251+
$supplierCounts[$supplierName]++;
252+
253+
// Create field name with sequential number if more than one from same supplier (e.g. "Mouser", "Mouser 2", etc.)
254+
$fieldName = $supplierCounts[$supplierName] > 1
255+
? $supplierName . ' ' . $supplierCounts[$supplierName]
256+
: $supplierName;
257+
258+
$result["fields"][$fieldName] = $this->createField($orderdetail->getSupplierPartNr());
259+
}
260+
}
261+
}
240262

241263
return $result;
242264
}

0 commit comments

Comments
 (0)