diff --git a/src/Controller/AssemblyController.php b/src/Controller/AssemblyController.php index 54cc1abb..9106f677 100644 --- a/src/Controller/AssemblyController.php +++ b/src/Controller/AssemblyController.php @@ -139,6 +139,7 @@ class AssemblyController extends AbstractController 'required' => true, 'choices' => [ 'assembly.bom_import.type.json' => 'json', + 'assembly.bom_import.type.csv' => 'csv', 'assembly.bom_import.type.kicad_pcbnew' => 'kicad_pcbnew', ] ]); diff --git a/src/Services/ImportExportSystem/BOMImporter.php b/src/Services/ImportExportSystem/BOMImporter.php index e7672623..2f6236af 100644 --- a/src/Services/ImportExportSystem/BOMImporter.php +++ b/src/Services/ImportExportSystem/BOMImporter.php @@ -38,6 +38,7 @@ use InvalidArgumentException; use League\Csv\Reader; use Psr\Log\LoggerInterface; use Symfony\Component\HttpFoundation\File\File; +use Symfony\Component\HttpFoundation\File\UploadedFile; use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Contracts\Translation\TranslatorInterface; use UnexpectedValueException; @@ -48,6 +49,9 @@ use Symfony\Component\Validator\ConstraintViolation; */ class BOMImporter { + private const IMPORT_TYPE_JSON = 'json'; + private const IMPORT_TYPE_CSV = 'csv'; + private const IMPORT_TYPE_KICAD_PCB = 'kicad_pcbnew'; private const MAP_KICAD_PCB_FIELDS = [ 0 => 'Id', @@ -67,6 +71,7 @@ class BOMImporter private readonly PartRepository $partRepository, private readonly ManufacturerRepository $manufacturerRepository, private readonly CategoryRepository $categoryRepository, + private readonly DBElementRepository $projectBOMEntryRepository, private readonly DBElementRepository $assemblyBOMEntryRepositor, private readonly TranslatorInterface $translator ) { @@ -109,7 +114,7 @@ class BOMImporter * Converts the given file into an ImporterResult with an array of BOM entries using the given options and save them into the given assembly. * The changes are not saved into the database yet. */ - public function importFileIntoAssembly(File $file, Assembly $assembly, array $options): ImporterResult + public function importFileIntoAssembly(UploadedFile $file, Assembly $assembly, array $options): ImporterResult { $importerResult = $this->fileToImporterResult($file, $options, AssemblyBOMEntry::class); @@ -135,8 +140,44 @@ class BOMImporter /** * Converts the given file into an ImporterResult with an array of BOM entries using the given options. */ - public function fileToImporterResult(File $file, array $options, string $objectType = ProjectBOMEntry::class): ImporterResult + public function fileToImporterResult(UploadedFile $file, array $options, string $objectType = ProjectBOMEntry::class): ImporterResult { + $result = new ImporterResult(); + + //Available file endings depending on the import type + $validExtensions = match ($options['type']) { + self::IMPORT_TYPE_KICAD_PCB => ['kicad_pcb'], + self::IMPORT_TYPE_JSON => ['json'], + self::IMPORT_TYPE_CSV => ['csv'], + default => [], + }; + + //Get the file extension of the uploaded file + $fileExtension = pathinfo($file->getClientOriginalName(), PATHINFO_EXTENSION); + + //Check whether the file extension is valid + if ($validExtensions === []) { + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.invalid_import_type', + 'import.type' + )); + + return $result; + } else if (!in_array(strtolower($fileExtension), $validExtensions, true)) { + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.invalid_file_extension', + 'file.extension', + $fileExtension, + [ + '%extension%' => $fileExtension, + '%importType%' => $this->translator->trans('assembly.bom_import.type.'.$options['type']), + '%allowedExtensions%' => implode(', ', $validExtensions), + ] + )); + + return $result; + } + return $this->stringToImporterResult($file->getContent(), $options, $objectType); } @@ -180,7 +221,7 @@ class BOMImporter * Import string data into an array of BOM entries, which are not yet assigned to a project. * @param string $data The data to import * @param array $options An array of options - * @return ProjectBOMEntry[]|AssemblyBOMEntry[] An array of imported entries + * @return ImporterResult An result of imported entries or a violation list */ public function stringToImporterResult(string $data, array $options, string $objectType = ProjectBOMEntry::class): ImporterResult { @@ -188,10 +229,17 @@ class BOMImporter $resolver = $this->configureOptions($resolver); $options = $resolver->resolve($options); + $defaultImporterResult = new ImporterResult(); + $defaultImporterResult->addViolation($this->buildJsonViolation( + 'validator.bom_importer.invalid_import_type', + 'import.type' + )); + return match ($options['type']) { - 'kicad_pcbnew' => $this->parseKiCADPCB($data, $objectType), - 'json' => $this->parseJson($data, $options, $objectType), - default => throw new InvalidArgumentException('Invalid import type!'), + self::IMPORT_TYPE_KICAD_PCB => $this->parseKiCADPCB($data, $objectType), + self::IMPORT_TYPE_JSON => $this->parseJson($data, $objectType), + self::IMPORT_TYPE_CSV => $this->parseCsv($data, $objectType), + default => $defaultImporterResult, }; } @@ -228,7 +276,7 @@ class BOMImporter $bom_entry->setName($entry['Designation']); } - $bom_entry->setMountnames($entry['Designator'] ?? ''); + $bom_entry->setMountnames($entry['Designator']); $bom_entry->setComment($entry['Supplier and ref'] ?? ''); $bom_entry->setQuantity((float) ($entry['Quantity'] ?? 1)); @@ -295,7 +343,37 @@ class BOMImporter return $this->validationService->validateBOMEntries($mapped_entries, $options); } - private function parseJson(string $data, array $options = [], string $objectType = ProjectBOMEntry::class): ImporterResult + /** + * Parses the given JSON data into an ImporterResult while validating and transforming entries according to the + * specified options and object type. If violations are encountered during parsing, they are added to the result. + * + * The structure of each entry in the JSON data is validated to ensure that required fields (e.g., quantity, and name) + * are present, and optional composite fields, like `part` and its sub-properties, meet specific criteria. Various + * conditions are checked, including whether the provided values are the correct types, and if relationships (like + * matching parts or manufacturers) are resolved successfully. + * + * Violations are added for: + * - Missing or invalid `quantity` values. + * - Non-string `name` values. + * - Invalid structure or missing sub-properties in `part`. + * - Incorrect or unresolved references to parts and their information, such as `id`, `name`, `manufacturer_product_number` + * (mpnr), `internal_part_number` (ipn), or `description`. + * - Inconsistent or absent manufacturer information. + * + * If a match for a part or manufacturer cannot be resolved, a violation is added alongside an indication of the + * imported value and any partially matched information. Warnings for no exact matches are also added for parts + * using specific identifying properties like name, manufacturer product number, or internal part numbers. + * + * Additional validations include: + * - Checking for empty or invalid descriptions. + * - Ensuring manufacturers, if specified, have valid `name` or `id` values. + * + * @param string $data JSON encoded string containing BOM entries data. + * @param string $objectType The type of entries expected during import (e.g., `ProjectBOMEntry` or `AssemblyBOMEntry`). + * + * @return ImporterResult The result containing parsed data and any violations encountered during the parsing process. + */ + private function parseJson(string $data, string $objectType = ProjectBOMEntry::class): ImporterResult { $result = new ImporterResult(); $this->jsonRoot = 'JSON Import for '.$objectType === ProjectBOMEntry::class ? 'Project' : 'Assembly'; @@ -303,291 +381,34 @@ class BOMImporter $data = json_decode($data, true); foreach ($data as $key => $entry) { - // Check quantity if (!isset($entry['quantity'])) { $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.quantity.required', + 'validator.bom_importer.json_csv.quantity.required', "entry[$key].quantity" )); } if (isset($entry['quantity']) && (!is_float($entry['quantity']) || $entry['quantity'] <= 0)) { $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.quantity.float', + 'validator.bom_importer.json_csv.quantity.float', "entry[$key].quantity", $entry['quantity'] )); } - // Check name if (isset($entry['name']) && !is_string($entry['name'])) { $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.parameter.string.notEmpty', + 'validator.bom_importer.json_csv.parameter.string.notEmpty', "entry[$key].name", $entry['name'] )); } - // Check if part is assigned with relevant information if (isset($entry['part'])) { - if (!is_array($entry['part'])) { - $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.parameter.array', - "entry[$key].part", - $entry['part'] - )); - } - - $partIdValid = isset($entry['part']['id']) && is_int($entry['part']['id']) && $entry['part']['id'] > 0; - $partNameValid = isset($entry['part']['name']) && is_string($entry['part']['name']) && trim($entry['part']['name']) !== ''; - $partMpnrValid = isset($entry['part']['mpnr']) && is_string($entry['part']['mpnr']) && trim($entry['part']['mpnr']) !== ''; - $partIpnValid = isset($entry['part']['ipn']) && is_string($entry['part']['ipn']) && trim($entry['part']['ipn']) !== ''; - - if (!$partIdValid && !$partNameValid && !$partMpnrValid && !$partIpnValid) { - $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.parameter.subproperties', - "entry[$key].part", - $entry['part'], - ['%propertyString%' => '"id", "name", "mpnr", or "ipn"'] - )); - } - - $part = $partIdValid ? $this->partRepository->findOneBy(['id' => $entry['part']['id']]) : null; - $part = $part ?? ($partMpnrValid ? $this->partRepository->findOneBy(['manufacturer_product_number' => trim($entry['part']['mpnr'])]) : null); - $part = $part ?? ($partIpnValid ? $this->partRepository->findOneBy(['ipn' => trim($entry['part']['ipn'])]) : null); - $part = $part ?? ($partNameValid ? $this->partRepository->findOneBy(['name' => trim($entry['part']['name'])]) : null); - - if ($part === null) { - $value = sprintf('part.id: %s, part.mpnr: %s, part.ipn: %s, part.name: %s', - isset($entry['part']['id']) ? '' . $entry['part']['id'] . '' : '-', - isset($entry['part']['mpnr']) ? '' . $entry['part']['mpnr'] . '' : '-', - isset($entry['part']['ipn']) ? '' . $entry['part']['ipn'] . '' : '-', - isset($entry['part']['name']) ? '' . $entry['part']['name'] . '' : '-', - ); - - $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.parameter.notFoundFor', - "entry[$key].part", - $entry['part'], - ['%value%' => $value] - )); - } - - if ($partNameValid && $part !== null && isset($entry['part']['name']) && $part->getName() !== trim($entry['part']['name'])) { - $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.parameter.noExactMatch', - "entry[$key].part.name", - $entry['part']['name'], - [ - '%importValue%' => '' . $entry['part']['name'] . '', - '%foundId%' => $part->getID(), - '%foundValue%' => '' . $part->getName() . '' - ] - )); - } - - if ($partMpnrValid && $part !== null && isset($entry['part']['mpnr']) && $part->getManufacturerProductNumber() !== trim($entry['part']['mpnr'])) { - $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.parameter.noExactMatch', - "entry[$key].part.mpnr", - $entry['part']['mpnr'], - [ - '%importValue%' => '' . $entry['part']['mpnr'] . '', - '%foundId%' => $part->getID(), - '%foundValue%' => '' . $part->getManufacturerProductNumber() . '' - ] - )); - } - - if ($partIpnValid && $part !== null && isset($entry['part']['ipn']) && $part->getIpn() !== trim($entry['part']['ipn'])) { - $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.parameter.noExactMatch', - "entry[$key].part.ipn", - $entry['part']['ipn'], - [ - '%importValue%' => '' . $entry['part']['ipn'] . '', - '%foundId%' => $part->getID(), - '%foundValue%' => '' . $part->getIpn() . '' - ] - )); - } - - // Part: Description check - if (isset($entry['part']['description'])) { - if (!is_string($entry['part']['description']) || trim($entry['part']['description']) === '') { - $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.parameter.string.notEmpty', - 'entry[$key].part.description', - $entry['part']['description'] - )); - } - } - - $partDescription = $entry['part']['description'] ?? ''; - - // Part: Manufacturer check - $manufacturerIdValid = false; - $manufacturerNameValid = false; - if (array_key_exists('manufacturer', $entry['part'])) { - if (!is_array($entry['part']['manufacturer'])) { - $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.parameter.array', - 'entry[$key].part.manufacturer', - $entry['part']['manufacturer']) ?? null - ); - } - - $manufacturerIdValid = isset($entry['part']['manufacturer']['id']) && is_int($entry['part']['manufacturer']['id']) && $entry['part']['manufacturer']['id'] > 0; - $manufacturerNameValid = isset($entry['part']['manufacturer']['name']) && is_string($entry['part']['manufacturer']['name']) && trim($entry['part']['manufacturer']['name']) !== ''; - - // Stellen sicher, dass mindestens eine Bedingung für manufacturer erfüllt sein muss - if (!$manufacturerIdValid && !$manufacturerNameValid) { - $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.parameter.manufacturerOrCategoryWithSubProperties', - "entry[$key].part.manufacturer", - $entry['part']['manufacturer'], - )); - } - } - - $manufacturer = $manufacturerIdValid ? $this->manufacturerRepository->findOneBy(['id' => $entry['part']['manufacturer']['id']]) : null; - $manufacturer = $manufacturer ?? ($manufacturerNameValid ? $this->manufacturerRepository->findOneBy(['name' => trim($entry['part']['manufacturer']['name'])]) : null); - - if (($manufacturerIdValid || $manufacturerNameValid) && $manufacturer === null) { - $value = sprintf( - 'manufacturer.id: %s, manufacturer.name: %s', - isset($entry['part']['manufacturer']['id']) && $entry['part']['manufacturer']['id'] !== null ? '' . $entry['part']['manufacturer']['id'] . '' : '-', - isset($entry['part']['manufacturer']['name']) && $entry['part']['manufacturer']['name'] !== null ? '' . $entry['part']['manufacturer']['name'] . '' : '-' - ); - - $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.parameter.notFoundFor', - "entry[$key].part.manufacturer", - $entry['part']['manufacturer'], - ['%value%' => $value] - )); - } - - if ($manufacturerNameValid && $manufacturer !== null && isset($entry['part']['manufacturer']['name']) && $manufacturer->getName() !== trim($entry['part']['manufacturer']['name'])) { - $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.parameter.noExactMatch', - "entry[$key].part.manufacturer.name", - $entry['part']['manufacturer']['name'], - [ - '%importValue%' => '' . $entry['part']['manufacturer']['name'] . '', - '%foundId%' => $manufacturer->getID(), - '%foundValue%' => '' . $manufacturer->getName() . '' - ] - )); - } - - // Part: Category check - $categoryIdValid = false; - $categoryNameValid = false; - if (array_key_exists('category', $entry['part'])) { - if (!is_array($entry['part']['category'])) { - $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.parameter.array', - 'entry[$key].part.category', - $entry['part']['category']) ?? null - ); - } - - $categoryIdValid = isset($entry['part']['category']['id']) && is_int($entry['part']['category']['id']) && $entry['part']['category']['id'] > 0; - $categoryNameValid = isset($entry['part']['category']['name']) && is_string($entry['part']['category']['name']) && trim($entry['part']['category']['name']) !== ''; - - if (!$categoryIdValid && !$categoryNameValid) { - $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.parameter.manufacturerOrCategoryWithSubProperties', - "entry[$key].part.category", - $entry['part']['category'] - )); - } - } - - $category = $categoryIdValid ? $this->categoryRepository->findOneBy(['id' => $entry['part']['category']['id']]) : null; - $category = $category ?? ($categoryNameValid ? $this->categoryRepository->findOneBy(['name' => trim($entry['part']['category']['name'])]) : null); - - if (($categoryIdValid || $categoryNameValid) && $category === null) { - $value = sprintf( - 'category.id: %s, category.name: %s', - isset($entry['part']['category']['id']) && $entry['part']['category']['id'] !== null ? '' . $entry['part']['category']['id'] . '' : '-', - isset($entry['part']['category']['name']) && $entry['part']['category']['name'] !== null ? '' . $entry['part']['category']['name'] . '' : '-' - ); - - $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.parameter.notFoundFor', - "entry[$key].part.category", - $entry['part']['category'], - ['%value%' => $value] - )); - } - - if ($categoryNameValid && $category !== null && isset($entry['part']['category']['name']) && $category->getName() !== trim($entry['part']['category']['name'])) { - $result->addViolation($this->buildJsonViolation( - 'validator.bom_importer.json.parameter.noExactMatch', - "entry[$key].part.category.name", - $entry['part']['category']['name'], - [ - '%importValue%' => '' . $entry['part']['category']['name'] . '', - '%foundId%' => $category->getID(), - '%foundValue%' => '' . $category->getName() . '' - ] - )); - } - - if ($result->getViolations()->count() > 0) { - continue; - } - - if ($partDescription !== '') { - //Beim Import / Aktualisieren von zugehörigen Bauteilen zu einer Baugruppe die Beschreibung des Bauteils mit übernehmen. - $part->setDescription($partDescription); - } - - if ($manufacturer !== null && $manufacturer->getID() !== $part->getManufacturerID()) { - //Beim Import / Aktualisieren von zugehörigen Bauteilen zu einer Baugruppe des Hersteller des Bauteils mit übernehmen. - $part->setManufacturer($manufacturer); - } - - if ($category !== null && $category->getID() !== $part->getCategoryID()) { - //Beim Import / Aktualisieren von zugehörigen Bauteilen zu einer Baugruppe die Kategorie des Bauteils mit übernehmen. - $part->setCategory($category); - } - - if ($objectType === AssemblyBOMEntry::class) { - $bomEntry = $this->assemblyBOMEntryRepository->findOneBy(['part' => $part]); - - if ($bomEntry === null) { - if (isset($entry['name']) && $entry['name'] !== '') { - $bomEntry = $this->assemblyBOMEntryRepository->findOneBy(['name' => $entry['name']]); - } - - if ($bomEntry === null) { - $bomEntry = new AssemblyBOMEntry(); - } - } - } else { - $bomEntry = new ProjectBOMEntry(); - } - - $bomEntry->setQuantity($entry['quantity']); - $bomEntry->setName($entry['name'] ?? ''); - - $bomEntry->setPart($part); - - $result->addBomEntry($bomEntry); + $this->processPart($entry, $result, $key, $objectType,self::IMPORT_TYPE_JSON); } else { - //Eintrag ohne Part-Relation in die Bauteilliste aufnehmen - - if ($objectType === AssemblyBOMEntry::class) { - $bomEntry = new AssemblyBOMEntry(); - } else { - $bomEntry = new ProjectBOMEntry(); - } - - $bomEntry->setQuantity($entry['quantity']); - $bomEntry->setName($entry['name'] ?? ''); + $bomEntry = $this->getOrCreateBomEntry($objectType, $entry['name'] ?? null); + $bomEntry->setQuantity((float) $entry['quantity']); $result->addBomEntry($bomEntry); } @@ -596,6 +417,400 @@ class BOMImporter return $result; } + + /** + * Parses a CSV string and processes its rows into hierarchical data structures, + * performing validations and converting data based on the provided headers. + * Handles potential violations and manages the creation of BOM entries based on the given type. + * + * @param string $csvData The raw CSV data to parse, with rows separated by newlines. + * @param string $objectType The class type to instantiate for BOM entries, defaults to ProjectBOMEntry. + * + * @return ImporterResult Returns an ImporterResult instance containing BOM entries and any validation violations encountered. + */ + function parseCsv(string $csvData, string $objectType = ProjectBOMEntry::class): ImporterResult + { + $result = new ImporterResult(); + $rows = explode("\n", trim($csvData)); + $headers = str_getcsv(array_shift($rows), ';'); + + foreach ($rows as $key => $row) { + $entry = []; + $values = str_getcsv($row, ';'); + + foreach ($headers as $index => $column) { + //Convert column name into hierarchy + $path = explode('_', $column); + $temp = &$entry; + + foreach ($path as $step) { + if (!isset($temp[$step])) { + $temp[$step] = []; + } + + $temp = &$temp[$step]; + } + + //If there is no value, skip + if (isset($values[$index]) && $values[$index] !== '') { + //Check whether the value is numerical + if (is_numeric($values[$index])) { + //Convert to integer or float + $temp = (strpos($values[$index], '.') !== false) + ? floatval($values[$index]) + : intval($values[$index]); + } else { + //Leave other data types untouched + $temp = $values[$index]; + } + } + } + + $entry = $this->removeEmptyProperties($entry); + + if (!isset($entry['quantity'])) { + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.csv.quantity.required', + "row[$key].quantity" + )); + } + + if (isset($entry['quantity']) && (!is_numeric($entry['quantity']) || $entry['quantity'] <= 0)) { + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.csv.quantity.float', + "row[$key].quantity", + $entry['quantity'] + )); + } + + if (isset($entry['name']) && !is_string($entry['name'])) { + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.csv.parameter.string.notEmpty', + "row[$key].name", + $entry['name'] + )); + } + + if (isset($entry['part'])) { + $this->processPart($entry, $result, $key, $objectType, self::IMPORT_TYPE_CSV); + } else { + $bomEntry = $this->getOrCreateBomEntry($objectType, $entry['name'] ?? null); + $bomEntry->setQuantity((float) $entry['quantity'] ?? 0); + + $result->addBomEntry($bomEntry); + } + } + + return $result; + } + + /** + * Processes an individual part entry in the import data. + * + * This method validates the structure and content of the provided part entry and uses the findings + * to identify corresponding objects in the database. The result is recorded, and violations are + * logged if issues or discrepancies exist in the validation or database matching process. + * + * @param array $entry The array representation of the part entry. + * @param ImporterResult $result The result object used for recording validation violations. + * @param int $key The index of the entry in the data array. + * @param string $objectType The type of object being processed. + * @param string $importType The type of import being performed. + * + * @return void + */ + private function processPart(array $entry, ImporterResult $result, int $key, string $objectType, string $importType): void + { + $prefix = $importType === self::IMPORT_TYPE_JSON ? 'entry' : 'row'; + + if (!is_array($entry['part'])) { + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.json_csv.parameter.array', + $prefix."[$key].part", + $entry['part'] + )); + } + + $partIdValid = isset($entry['part']['id']) && is_int($entry['part']['id']) && $entry['part']['id'] > 0; + $partMpnrValid = isset($entry['part']['mpnr']) && is_string($entry['part']['mpnr']) && trim($entry['part']['mpnr']) !== ''; + $partIpnValid = isset($entry['part']['ipn']) && is_string($entry['part']['ipn']) && trim($entry['part']['ipn']) !== ''; + $partNameValid = isset($entry['part']['name']) && is_string($entry['part']['name']) && trim($entry['part']['name']) !== ''; + + if (!$partIdValid && !$partNameValid && !$partMpnrValid && !$partIpnValid) { + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.json_csv.parameter.subproperties', + $prefix."[$key].part", + $entry['part'], + ['%propertyString%' => '"id", "name", "mpnr", or "ipn"'] + )); + } + + $part = $partIdValid ? $this->partRepository->findOneBy(['id' => $entry['part']['id']]) : null; + $part = $part ?? ($partMpnrValid ? $this->partRepository->findOneBy(['manufacturer_product_number' => trim($entry['part']['mpnr'])]) : null); + $part = $part ?? ($partIpnValid ? $this->partRepository->findOneBy(['ipn' => trim($entry['part']['ipn'])]) : null); + $part = $part ?? ($partNameValid ? $this->partRepository->findOneBy(['name' => trim($entry['part']['name'])]) : null); + + if ($part === null) { + $value = sprintf('part.id: %s, part.mpnr: %s, part.ipn: %s, part.name: %s', + isset($entry['part']['id']) ? '' . $entry['part']['id'] . '' : '-', + isset($entry['part']['mpnr']) ? '' . $entry['part']['mpnr'] . '' : '-', + isset($entry['part']['ipn']) ? '' . $entry['part']['ipn'] . '' : '-', + isset($entry['part']['name']) ? '' . $entry['part']['name'] . '' : '-', + ); + + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.json_csv.parameter.notFoundFor', + $prefix."[$key].part", + $entry['part'], + ['%value%' => $value] + )); + } + + if ($partNameValid && $part !== null && isset($entry['part']['name']) && $part->getName() !== trim($entry['part']['name'])) { + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.json_csv.parameter.noExactMatch', + $prefix."[$key].part.name", + $entry['part']['name'], + [ + '%importValue%' => '' . $entry['part']['name'] . '', + '%foundId%' => $part->getID(), + '%foundValue%' => '' . $part->getName() . '' + ] + )); + } + + if ($partMpnrValid && $part !== null && isset($entry['part']['mpnr']) && $part->getManufacturerProductNumber() !== trim($entry['part']['mpnr'])) { + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.json_csv.parameter.noExactMatch', + $prefix."[$key].part.mpnr", + $entry['part']['mpnr'], + [ + '%importValue%' => '' . $entry['part']['mpnr'] . '', + '%foundId%' => $part->getID(), + '%foundValue%' => '' . $part->getManufacturerProductNumber() . '' + ] + )); + } + + if ($partIpnValid && $part !== null && isset($entry['part']['ipn']) && $part->getIpn() !== trim($entry['part']['ipn'])) { + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.json_csv.parameter.noExactMatch', + $prefix."[$key].part.ipn", + $entry['part']['ipn'], + [ + '%importValue%' => '' . $entry['part']['ipn'] . '', + '%foundId%' => $part->getID(), + '%foundValue%' => '' . $part->getIpn() . '' + ] + )); + } + + if (isset($entry['part']['description'])) { + if (!is_string($entry['part']['description']) || trim($entry['part']['description']) === '') { + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.json_csv.parameter.string.notEmpty', + 'entry[$key].part.description', + $entry['part']['description'] + )); + } + } + + $partDescription = $entry['part']['description'] ?? ''; + + $manufacturerIdValid = false; + $manufacturerNameValid = false; + if (array_key_exists('manufacturer', $entry['part'])) { + if (!is_array($entry['part']['manufacturer'])) { + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.json_csv.parameter.array', + 'entry[$key].part.manufacturer', + $entry['part']['manufacturer']) ?? null + ); + } + + $manufacturerIdValid = isset($entry['part']['manufacturer']['id']) && is_int($entry['part']['manufacturer']['id']) && $entry['part']['manufacturer']['id'] > 0; + $manufacturerNameValid = isset($entry['part']['manufacturer']['name']) && is_string($entry['part']['manufacturer']['name']) && trim($entry['part']['manufacturer']['name']) !== ''; + + if (!$manufacturerIdValid && !$manufacturerNameValid) { + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.json_csv.parameter.manufacturerOrCategoryWithSubProperties', + $prefix."[$key].part.manufacturer", + $entry['part']['manufacturer'], + )); + } + } + + $manufacturer = $manufacturerIdValid ? $this->manufacturerRepository->findOneBy(['id' => $entry['part']['manufacturer']['id']]) : null; + $manufacturer = $manufacturer ?? ($manufacturerNameValid ? $this->manufacturerRepository->findOneBy(['name' => trim($entry['part']['manufacturer']['name'])]) : null); + + if (($manufacturerIdValid || $manufacturerNameValid) && $manufacturer === null) { + $value = sprintf( + 'manufacturer.id: %s, manufacturer.name: %s', + isset($entry['part']['manufacturer']['id']) && $entry['part']['manufacturer']['id'] !== null ? '' . $entry['part']['manufacturer']['id'] . '' : '-', + isset($entry['part']['manufacturer']['name']) && $entry['part']['manufacturer']['name'] !== null ? '' . $entry['part']['manufacturer']['name'] . '' : '-' + ); + + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.json_csv.parameter.notFoundFor', + $prefix."[$key].part.manufacturer", + $entry['part']['manufacturer'], + ['%value%' => $value] + )); + } + + if ($manufacturerNameValid && $manufacturer !== null && isset($entry['part']['manufacturer']['name']) && $manufacturer->getName() !== trim($entry['part']['manufacturer']['name'])) { + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.json_csv.parameter.noExactMatch', + $prefix."[$key].part.manufacturer.name", + $entry['part']['manufacturer']['name'], + [ + '%importValue%' => '' . $entry['part']['manufacturer']['name'] . '', + '%foundId%' => $manufacturer->getID(), + '%foundValue%' => '' . $manufacturer->getName() . '' + ] + )); + } + + $categoryIdValid = false; + $categoryNameValid = false; + if (array_key_exists('category', $entry['part'])) { + if (!is_array($entry['part']['category'])) { + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.json_csv.parameter.array', + 'entry[$key].part.category', + $entry['part']['category']) ?? null + ); + } + + $categoryIdValid = isset($entry['part']['category']['id']) && is_int($entry['part']['category']['id']) && $entry['part']['category']['id'] > 0; + $categoryNameValid = isset($entry['part']['category']['name']) && is_string($entry['part']['category']['name']) && trim($entry['part']['category']['name']) !== ''; + + if (!$categoryIdValid && !$categoryNameValid) { + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.json_csv.parameter.manufacturerOrCategoryWithSubProperties', + $prefix."[$key].part.category", + $entry['part']['category'] + )); + } + } + + $category = $categoryIdValid ? $this->categoryRepository->findOneBy(['id' => $entry['part']['category']['id']]) : null; + $category = $category ?? ($categoryNameValid ? $this->categoryRepository->findOneBy(['name' => trim($entry['part']['category']['name'])]) : null); + + if (($categoryIdValid || $categoryNameValid) && $category === null) { + $value = sprintf( + 'category.id: %s, category.name: %s', + isset($entry['part']['category']['id']) && $entry['part']['category']['id'] !== null ? '' . $entry['part']['category']['id'] . '' : '-', + isset($entry['part']['category']['name']) && $entry['part']['category']['name'] !== null ? '' . $entry['part']['category']['name'] . '' : '-' + ); + + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.json_csv.parameter.notFoundFor', + $prefix."[$key].part.category", + $entry['part']['category'], + ['%value%' => $value] + )); + } + + if ($categoryNameValid && $category !== null && isset($entry['part']['category']['name']) && $category->getName() !== trim($entry['part']['category']['name'])) { + $result->addViolation($this->buildJsonViolation( + 'validator.bom_importer.json_csv.parameter.noExactMatch', + $prefix."[$key].part.category.name", + $entry['part']['category']['name'], + [ + '%importValue%' => '' . $entry['part']['category']['name'] . '', + '%foundId%' => $category->getID(), + '%foundValue%' => '' . $category->getName() . '' + ] + )); + } + + if ($result->getViolations()->count() > 0) { + return; + } + + if ($partDescription !== '') { + //When updating the associated parts to a assembly, take over the description of the part. + $part->setDescription($partDescription); + } + + if ($manufacturer !== null && $manufacturer->getID() !== $part->getManufacturerID()) { + //When updating the associated parts, take over to a assembly of the manufacturer of the part. + $part->setManufacturer($manufacturer); + } + + if ($category !== null && $category->getID() !== $part->getCategoryID()) { + //When updating the associated parts to a assembly, take over the category of the part. + $part->setCategory($category); + } + + if ($objectType === AssemblyBOMEntry::class) { + $bomEntry = $this->assemblyBOMEntryRepository->findOneBy(['part' => $part]); + + if ($bomEntry === null) { + if (isset($entry['name']) && $entry['name'] !== '') { + $bomEntry = $this->assemblyBOMEntryRepository->findOneBy(['name' => $entry['name']]); + } + + if ($bomEntry === null) { + $bomEntry = new AssemblyBOMEntry(); + } + } + } else { + $bomEntry = new ProjectBOMEntry(); + } + + $bomEntry->setQuantity((float) $entry['quantity']); + $bomEntry->setName($entry['name'] ?? ''); + + $bomEntry->setPart($part); + + $result->addBomEntry($bomEntry); + } + + private function removeEmptyProperties(array $data): array + { + foreach ($data as $key => &$value) { + //Recursive check when the value is an array + if (is_array($value)) { + $value = $this->removeEmptyProperties($value); + + //Remove the array when it is empty after cleaning + if (empty($value)) { + unset($data[$key]); + } + } elseif ($value === null || $value === '') { + //Remove values that are explicitly zero or empty + unset($data[$key]); + } + } + + return $data; + } + + private function getOrCreateBomEntry(string $objectType, ?string $name) + { + $bomEntry = null; + + //Check whether there is a name + if (!empty($name)) { + if ($objectType === ProjectBOMEntry::class) { + $bomEntry = $this->projectBOMEntryRepository->findOneBy(['name' => $name]); + } elseif ($objectType === AssemblyBOMEntry::class) { + $bomEntry = $this->assemblyBOMEntryRepository->findOneBy(['name' => $name]); + } + } + + //If no bom enttry was found, a new object create + if ($bomEntry === null) { + $bomEntry = new $objectType(); + } + + $bomEntry->setName($name); + + return $bomEntry; + } + /** * This function uses the order of the fields in the CSV files to make them locale independent. * @param array $entry @@ -619,6 +834,21 @@ class BOMImporter return $out; } + + /** + * Builds a JSON-based constraint violation. + * + * This method creates a `ConstraintViolation` object that represents a validation error. + * The violation includes a message, property path, invalid value, and other contextual information. + * Translations for the violation message can be applied through the translator service. + * + * @param string $message The translation key for the validation message. + * @param string $propertyPath The property path where the violation occurred. + * @param mixed|null $invalidValue The value that caused the violation (optional). + * @param array $parameters Additional parameters for message placeholders (default is an empty array). + * + * @return ConstraintViolation The created constraint violation object. + */ /** * Parse KiCad schematic BOM with flexible field mapping */ @@ -1097,6 +1327,20 @@ class BOMImporter return array_values($headers); } + /** + * Builds a JSON-based constraint violation. + * + * This method creates a `ConstraintViolation` object that represents a validation error. + * The violation includes a message, property path, invalid value, and other contextual information. + * Translations for the violation message can be applied through the translator service. + * + * @param string $message The translation key for the validation message. + * @param string $propertyPath The property path where the violation occurred. + * @param mixed|null $invalidValue The value that caused the violation (optional). + * @param array $parameters Additional parameters for message placeholders (default is an empty array). + * + * @return ConstraintViolation The created constraint violation object. + */ private function buildJsonViolation(string $message, string $propertyPath, mixed $invalidValue = null, array $parameters = []): ConstraintViolation { return new ConstraintViolation( diff --git a/templates/assemblies/import_bom.html.twig b/templates/assemblies/import_bom.html.twig index 04ff328a..9e99c541 100644 --- a/templates/assemblies/import_bom.html.twig +++ b/templates/assemblies/import_bom.html.twig @@ -53,6 +53,34 @@ +
+
+
+ {% trans %}assembly.import_bom.template.header.csv{% endtrans %} +
+
+ {{ 'assembly.bom_import.template.csv.exptected_columns'|trans }} + +
quantity;name;part_id;part_mpnr;part_ipn;part_name;part_description;part_manufacturer_id;part_manufacturer_name;part_category_id;part_category_name
+ +
    +
  • quantity
  • +
  • name
  • +
  • part_id
  • +
  • part_mpnr
  • +
  • part_ipn
  • +
  • part_name
  • +
  • part_description
  • +
  • part_manufacturer_id
  • +
  • part_manufacturer_name
  • +
  • part_category_id
  • +
  • part_category_name
  • +
+ + {{ 'assembly.bom_import.template.csv.table'|trans|raw }} +
+
+
@@ -61,6 +89,20 @@
{{ 'assembly.bom_import.template.kicad_pcbnew.exptected_columns'|trans }}
Id;Designator;Package;Quantity;Designation;Supplier and ref
+ +
    +
  • Id
  • +
  • Designator
  • +
  • Package
  • +
  • Quantity
  • +
  • Designation
  • +
  • Supplier and ref
  • +
  • Note
  • +
  • Footprint
  • +
  • Value
  • +
  • Footprint
  • +
+ {{ 'assembly.bom_import.template.kicad_pcbnew.exptected_columns.note'|trans|raw }} {{ 'assembly.bom_import.template.kicad_pcbnew.table'|trans|raw }} diff --git a/translations/messages.cs.xlf b/translations/messages.cs.xlf index cbe8833e..b0ec9332 100644 --- a/translations/messages.cs.xlf +++ b/translations/messages.cs.xlf @@ -13437,6 +13437,12 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz JSON pro sestavu + + + assembly.bom_import.type.csv + CSV pro sestavu + + assembly.bom_import.type.kicad_pcbnew @@ -13461,6 +13467,12 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz Šablona importu JSON pro sestavu + + + assembly.import_bom.template.header.csv + Importní šablona CSV pro sestavu + + assembly.import_bom.template.header.kicad_pcbnew @@ -13520,24 +13532,26 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz quantity - Povinné + Povinné pole Číslo s plovoucí desetinnou čárkou (Float) - Musí být uvedeno a obsahovat hodnotu s plovoucí desetinnou čárkou (Float) větší než 0,0. + Musí být vyplněno a obsahovat číselnou hodnotu (Float) větší než 0.0. name Volitelné - Řetězec (String) - Pokud je přítomen, musí být neprázdný řetězec. + Řetězec + Pokud je uvedeno, musí být neprázdný text. Název položky ve skupině. part Volitelné Objekt/Array - Pokud je uvedeno, musí to být objekt/array a minimálně jedno pole musí být vyplněno: + Pokud má být přiřazena součástka, musí být objektem/arrayem a alespoň jedno z následujících polí musí být vyplněno:
  • part.id
  • +
  • part.mpnr
  • +
  • part.ipn
  • part.name
@@ -13546,38 +13560,38 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz part.id Volitelné Celé číslo (Integer) - Celé číslo (Integer) > 0. Odpovídá internímu číselnému ID součástky v Part-DB. - - - part.name - Volitelné - Řetězec (String) - Neprázdný řetězec, pokud není zadáno part.mpnr nebo part.ipn. + Celé číslo > 0. Odpovídá internímu číselnému ID součástky v databázi. part.mpnr Volitelné - Řetězec (String) - Neprázdný řetězec, pokud není zadáno part.name nebo part.ipn. + Řetězec + Neprázdný text, pokud není vyplněno part.id, part.ipn ani part.name. part.ipn Volitelné - Řetězec (String) - Neprázdný řetězec, pokud není zadáno part.name nebo part.mpnr. + Řetězec + Neprázdný text, pokud není vyplněno part.id, part.mpnr ani part.name. + + + part.name + Volitelné + Řetězec + Neprázdný text, pokud není vyplněno part.id, part.mpnr ani part.ipn. part.description Volitelné Řetězec nebo null - Pokud je přítomen, musí být neprázdný řetězec nebo null. + Pokud je uvedeno, musí být neprázdný řetězec nebo null. Přepíše stávající hodnotu v součástce. part.manufacturer Volitelné Objekt/Array - Pokud je přítomen, musí to být objekt/array a minimálně jedno pole musí být vyplněno: + Pokud má být výrobce součástky upraven nebo má být součástka jednoznačně identifikována pomocí hodnoty part.mpnr, musí být objektem/arrayem a alespoň jedno z následujících polí musí být vyplněno:
  • manufacturer.id
  • manufacturer.name
  • @@ -13588,20 +13602,20 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz manufacturer.id Volitelné Celé číslo (Integer) - Celé číslo (Integer) > 0. Odpovídá internímu číselnému ID výrobce. + Celé číslo > 0. Odpovídá internímu číselnému ID výrobce. manufacturer.name Volitelné - Řetězec (String) - Neprázdný řetězec, pokud není uvedeno manufacturer.id. + Řetězec + Neprázdný text, pokud není uveden manufacturer.id. part.category Volitelné Objekt/Array - Pokud je přítomen, musí to být objekt/array a minimálně jedno pole musí být vyplněno: + Pokud má být kategorie součástky upravena, musí být objektem/arrayem a alespoň jedno z následujících polí musí být vyplněno:
    • category.id
    • category.name
    • @@ -13612,13 +13626,138 @@ Vezměte prosím na vědomí, že se nemůžete vydávat za uživatele se zakáz category.id Volitelné Celé číslo (Integer) - Celé číslo (Integer) > 0. Odpovídá internímu číselnému ID kategorie součástky. + Celé číslo > 0. Odpovídá internímu číselnému ID kategorie součástky. category.name Volitelné - Řetězec (String) - Neprázdný řetězec, pokud není uvedeno category.id. + Řetězec + Neprázdný text, pokud není uvedeno category.id. + + + + ]]> + + + + + + assembly.bom_import.template.csv.exptected_columns + Možné sloupce: + + + + + assembly.bom_import.template.csv.table + + + + + Sloupec + Podmínka + Datový typ + Popis + + + + + quantity + Povinné pole + Číslo s plovoucí desetinnou čárkou (Float) + Musí být vyplněno a obsahovat číselnou hodnotu (Float) větší než 0.0. + + + name + Volitelné + Řetězec + Název položky ve skupině. + + + Sloupce začínající part_ + + Pokud má být přiřazena součástka, jeden z následujících sloupců musí být uveden a vyplněn: +
        +
      • part_id
      • +
      • part_mpnr
      • +
      • part_ipn
      • +
      • part_name
      • +
      + + + + part_id + Volitelné + Celé číslo (Integer) + Celé číslo > 0. Odpovídá internímu číselnému ID součástky v databázi. + + + part_mpnr + Volitelné + Řetězec + Musí být uvedeno, pokud nejsou vyplněny sloupce part_id, part_ipn nebo part_name. + + + part_ipn + Volitelné + Řetězec + Musí být uvedeno, pokud nejsou vyplněny sloupce part_id, part_mpnr nebo part_name. + + + part_name + Volitelné + Řetězec + Musí být uvedeno, pokud nejsou vyplněny sloupce part_id, part_mpnr nebo part_ipn. + + + part_description + Volitelné + Řetězec + Bude přeneseno do součástky a přepíše aktuální hodnotu, pokud je uveden neprázdný text. + + + Sloupce začínající part_manufacturer_ + + Pokud má být výrobce upraven nebo součástka jednoznačně identifikována pomocí part_mpnr, jeden z následujících sloupců musí být uveden a vyplněn: +
        +
      • part_manufacturer_id
      • +
      • part_manufacturer_name
      • +
      + + + + part_manufacturer_id + Volitelné + Celé číslo (Integer) + Celé číslo > 0. Odpovídá internímu číselnému ID výrobce. + + + part_manufacturer_name + Volitelné + Řetězec + Musí být uvedeno, pokud není vyplněn sloupec part_manufacturer_id. + + + Sloupce začínající part.category_ + + Pokud má být kategorie upravena, jeden z následujících sloupců musí být uveden a vyplněn: +
        +
      • part_category_id
      • +
      • part_category_name
      • +
      + + + + part_category_id + Volitelné + Celé číslo (Integer) + Celé číslo > 0. Odpovídá internímu číselnému ID kategorie součástky. + + + part_category_name + Volitelné + Řetězec + Musí být uvedeno, pokud není vyplněn sloupec part_category_id. diff --git a/translations/messages.da.xlf b/translations/messages.da.xlf index 2461f8c7..4322fd9f 100644 --- a/translations/messages.da.xlf +++ b/translations/messages.da.xlf @@ -12598,6 +12598,12 @@ Bemærk venligst, at du ikke kan kopiere fra deaktiveret bruger. Hvis du prøver JSON for en samling
      + + + assembly.bom_import.type.csv + CSV til en samling + + assembly.bom_import.type.kicad_pcbnew @@ -12622,6 +12628,12 @@ Bemærk venligst, at du ikke kan kopiere fra deaktiveret bruger. Hvis du prøver JSON-importskabelon til en samling + + + assembly.import_bom.template.header.csv + Importskabelon CSV til en samling + + assembly.import_bom.template.header.kicad_pcbnew @@ -12681,64 +12693,66 @@ Bemærk venligst, at du ikke kan kopiere fra deaktiveret bruger. Hvis du prøver quantity - Påkrævet - Flydende tal (Float) - Skal være til stede og indeholde en flydende værdi (Float), der er større end 0,0. + Påkrævet felt + Flydende punkt-tal (Float) + Skal være udfyldt og indeholde en flydende værdi (Float), der er større end 0.0. name - Valgfri - String - Hvis til stede, skal det være en ikke-tom streng. + Valgfrit + Streng + Hvis det er angivet, skal det være en ikke-tom streng. Navn på posten inden for samlingen. part - Valgfri + Valgfrit Objekt/Array - Hvis angivet, skal det være et objekt/array, og mindst ét af felterne skal udfyldes: + Hvis en del skal tildeles, skal det være et objekt/array, og mindst et af følgende felter skal være udfyldt:
      • part.id
      • +
      • part.mpnr
      • +
      • part.ipn
      • part.name
      part.id - Valgfri + Valgfrit Heltal (Integer) - Heltal (Integer) > 0. Matcher Part-DB's interne numeriske ID for komponenten. - - - part.name - Valgfri - String - Ikke-tom streng, hvis part.mpnr eller part.ipn ikke er givet. + Heltal > 0. Tilsvarer den interne nummer-ID for delen i database. part.mpnr - Valgfri - String - Ikke-tom streng, hvis part.name eller part.ipn ikke er givet. + Valgfrit + Streng + Ikke-tom streng, hvis ingen part.id-, part.ipn- eller part.name-værdi er angivet. part.ipn - Valgfri - String - Ikke-tom streng, hvis part.name eller part.mpnr ikke er givet. + Valgfrit + Streng + Ikke-tom streng, hvis ingen part.id-, part.mpnr- eller part.name-værdi er angivet. + + + part.name + Valgfrit + Streng + Ikke-tom streng, hvis ingen part.id-, part.mpnr- eller part.ipn-værdi er angivet. part.description - Valgfri - String eller null - Hvis til stede, skal det være en ikke-tom streng eller null. + Valgfrit + Streng eller null + Hvis angivet, skal det være en ikke-tom streng eller null. Værdien bliver overskrevet i delen. part.manufacturer - Valgfri + Valgfrit Objekt/Array - Hvis til stede, skal det være et objekt/array, og mindst ét af felterne skal udfyldes: + Hvis producenten af en del skal ændres eller entydigt søges ved hjælp af part.mpnr-værdien, skal det være et objekt/array og mindst et af følgende felter skal være udfyldt:
      • manufacturer.id
      • manufacturer.name
      • @@ -12747,22 +12761,22 @@ Bemærk venligst, at du ikke kan kopiere fra deaktiveret bruger. Hvis du prøver manufacturer.id - Valgfri + Valgfrit Heltal (Integer) - Heltal (Integer) > 0. Matcher producentens interne numeriske ID. + Heltal > 0. Tilsvarer den interne nummer-ID for producenten. manufacturer.name - Valgfri - String - Ikke-tom streng, hvis manufacturer.id ikke er givet. + Valgfrit + Streng + Ikke-tom streng, hvis ingen manufacturer.id er angivet. part.category - Valgfri + Valgfrit Objekt/Array - Hvis til stede, skal det være et objekt/array, og mindst ét af felterne skal udfyldes: + Hvis en delens kategori skal ændres, skal det være et objekt/array, og mindst et af følgende felter skal være udfyldt:
        • category.id
        • category.name
        • @@ -12771,15 +12785,140 @@ Bemærk venligst, at du ikke kan kopiere fra deaktiveret bruger. Hvis du prøver category.id - Valgfri + Valgfrit Heltal (Integer) - Heltal (Integer) > 0. Matcher komponentkategoriens interne numeriske ID. + Heltal > 0. Tilsvarer den interne nummer-ID for delens kategori. category.name - Valgfri - String - Ikke-tom streng, hvis category.id ikke er givet. + Valgfrit + Streng + Ikke-tom streng, hvis ingen category.id er angivet. + + + + ]]> + + + + + + assembly.bom_import.template.csv.exptected_columns + Mulige kolonner: + + + + + assembly.bom_import.template.csv.table + + + + + Kolonne + Betingelse + Datatype + Beskrivelse + + + + + quantity + Påkrævet felt + Flydende punkt-tal (Float) + Skal være udfyldt og indeholde en flydende værdi (Float), der er større end 0.0. + + + name + Valgfrit + Streng + Navnet på posten inden for samlingen. + + + Kolonner, der starter med part_ + + Hvis en del skal tildeles, skal en af følgende kolonner være angivet og udfyldt: +
            +
          • part_id
          • +
          • part_mpnr
          • +
          • part_ipn
          • +
          • part_name
          • +
          + + + + part_id + Valgfrit + Heltal (Integer) + Heltal > 0. Tilsvarer den interne nummer-ID for delen i databasen. + + + part_mpnr + Valgfrit + Streng + Skal angives, hvis ingen af kolonnerne part_id, part_ipn, eller part_name er udfyldt. + + + part_ipn + Valgfrit + Streng + Skal angives, hvis ingen af kolonnerne part_id, part_mpnr eller part_name er udfyldt. + + + part_name + Valgfrit + Streng + Skal angives, hvis ingen af kolonnerne part_id, part_mpnr eller part_ipn er udfyldt. + + + part_description + Valgfrit + Streng + Vil blive overført og overskrive værdien for delen, hvis en ikke-tom streng er angivet. + + + Kolonner, der starter med part_manufacturer_ + + Hvis producenten for en del skal ændres eller søges entydigt ved hjælp af part_mpnr, skal en af følgende kolonner være angivet og udfyldt: +
            +
          • part_manufacturer_id
          • +
          • part_manufacturer_name
          • +
          + + + + part_manufacturer_id + Valgfrit + Heltal (Integer) + Heltal > 0. Tilsvarer den interne nummer-ID for producenten. + + + part_manufacturer_name + Valgfrit + Streng + Skal angives, hvis ingen part_manufacturer_id er udfyldt. + + + Kolonner, der starter med part.category_ + + Hvis en dels kategori skal ændres, skal en af følgende kolonner være angivet og udfyldt: +
            +
          • part_category_id
          • +
          • part_category_name
          • +
          + + + + part_category_id + Valgfrit + Heltal (Integer) + Heltal > 0. Tilsvarer den interne nummer-ID for delens kategori. + + + part_category_name + Valgfrit + Streng + Skal angives, hvis ingen part_category_id er udfyldt. diff --git a/translations/messages.de.xlf b/translations/messages.de.xlf index 53273565..870446fe 100644 --- a/translations/messages.de.xlf +++ b/translations/messages.de.xlf @@ -13064,7 +13064,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön assembly.edit.bom.import_bom - Bauteile importieren + Importiere Bauteil-Liste @@ -13319,6 +13319,12 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön JSON für eine Baugruppe
          + + + assembly.bom_import.type.csv + CSV für eine Baugruppe + + assembly.bom_import.type.kicad_pcbnew @@ -13343,6 +13349,12 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön Import-Vorlage JSON für eine Baugruppe + + + assembly.import_bom.template.header.csv + Import-Vorlage CSV für eine Baugruppe + + assembly.import_bom.template.header.kicad_pcbnew @@ -13410,16 +13422,18 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön name Optional String - Falls vorhanden, muss es ein nicht-leerer String sein. + Falls vorhanden, muss es ein nicht-leerer String sein. Name des Eintrags innerhalb der Baugruppe. part Optional Objekt/Array - Falls angegeben, muss es ein Objekt/Array sein und mindestens eines der Felder ausgefüllt sein: + Falls ein Bauteil zugeordnet werden soll, muss es ein Objekt/Array und mindestens eines der Felder ausgefüllt sein:
          • part.id
          • +
          • part.mpnr
          • +
          • part.ipn
          • part.name
          @@ -13430,36 +13444,36 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön Ganzzahl (Integer) Ganzzahl (Integer) > 0. Entspricht der Part-DB internen numerischen ID des Bauteils. - - part.name - Optional - String - Nicht-leerer String, falls keine part.mpnr- bzw. part.ipn-Angabe gegeben ist. - part.mpnr Optional String - Nicht-leerer String, falls keine part.name- bzw. part-ipn-Angabe gegeben ist. + Nicht-leerer String, falls keine part.id-, part-ipn- bzw. part.name-Angabe gegeben ist. part.ipn Optional String - Nicht-leerer String, falls keine part.name- bzw. part.mpnr-Angabe gegeben ist. + Nicht-leerer String, falls keine part.id-, part.mpnr bzw. part.name-Angabe gegeben ist. + + + part.name + Optional + String + Nicht-leerer String, falls keine part.id-, part.mpnr- bzw. part.ipn-Angabe gegeben ist. part.description Optional String oder null - Falls vorhanden, muss es ein nicht-leerer String sein oder null. + Falls vorhanden, muss es ein nicht-leerer String sein oder null. Wird in das Bauteil übernommen, d.h. der dortige Wert überschrieben. part.manufacturer Optional Objekt/Array - Falls vorhanden, muss es ein Objekt/Array sein und mindestens eines der Felder ausgefüllt sein: + Falls der Hersteller eines Bauteils mit angepasst werden oder das Bauteil anhand der part.mpnr-Angabe eindeutig gesucht werden soll, muss es ein Objekt/Array und mindestens eines der Felder ausgefüllt sein:
          • manufacturer.id
          • manufacturer.name
          • @@ -13483,7 +13497,7 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön Optional Objekt/Array - Falls vorhanden, muss es ein Objekt/Array sein und mindestens eines der Felder ausgefüllt sein: + Falls die Kategorie eine Bauteils mit angepasst werden soll, muss es ein Objekt/Array und mindestens eines der Felder ausgefüllt sein:
            • category.id
            • category.name
            • @@ -13508,6 +13522,131 @@ Bitte beachten Sie, dass Sie sich nicht als deaktivierter Benutzer ausgeben kön + + + assembly.bom_import.template.csv.exptected_columns + Mögliche Spalten: + + + + + assembly.bom_import.template.csv.table + + + + + Spalte + Bedingung + Datentyp + Beschreibung + + + + + quantity + Pflichtfeld + Gleitkommazahl (Float) + Muss gegeben sein und enthält einen Gleitkommawert (Float), der größer als 0.0 ist. + + + name + Optional + String + Name des Eintrags innerhalb der Baugruppe. + + + Spalten beginnend mit part_ + + Falls ein Bauteil zugeordnet werden soll, muss eine der folgenden Spalten gegeben und ausgefüllt sein: +
                +
              • part_id
              • +
              • part_mpnr
              • +
              • part_ipn
              • +
              • part_name
              • +
              + + + + part_id + Optional + Ganzzahl (Integer) + Ganzzahl (Integer) > 0. Entspricht der Part-DB internen numerischen ID des Bauteils. + + + part_mpnr + Optional + String + Anzugeben, falls keine part_id-, part_ipn- bzw. part_name-Spalte ausgefüllt gegeben ist. + + + part_ipn + Optional + String + Anzugeben, falls keine part_id-, part_mpnr- bzw. part_name-Spalte ausgefüllt gegeben ist. + + + part_name + Optional + String + Anzugeben, falls keine part_id-, part_mpnr- bzw. part_ipn-Spalte ausgefüllt gegeben ist. + + + part_description + Optional + String + Wird in das Bauteil übernommen, d.h. der dortige Wert überschrieben sofern ein nicht-leerer String gegeben ist. + + + Spalten beginnend mit part_manufacturer_ + + Falls der Hersteller eines Bauteils mit angepasst werden oder das Bauteil anhand der part_mpnr-Angabe eindeutig gesucht werden soll, muss eine der folgenden Spalten gegeben und ausgefüllt sein: +
                +
              • part_manufacturer_id
              • +
              • part_manufacturer_name
              • +
              + + + + part_manufacturer_id + Optional + Ganzzahl (Integer) + Ganzzahl (Integer) > 0. Entspricht der internen numerischen ID des Herstellers. + + + part_manufacturer_name + Optional + String + Anzugeben, falls keine part_manufacturer_id-Spalte ausgefüllt gegeben ist. + + + Spalten beginnend mit part.category_ + + Falls die Kategorie eines Bauteils mit angepasst werden soll, muss eine der folgenden Spalten gegeben und ausgefüllt sein: +
                +
              • part_category_id
              • +
              • part_category_name
              • +
              + + + + part_category_id + Optional + Ganzzahl (Integer) + Ganzzahl (Integer) > 0. Entspricht der internen numerischen ID der Kategorie des Bauteils. + + + part_category_name + Optional + String + Anzugeben, falls keine part_category_id-Spalte ausgefüllt gegeben ist. + + + + ]]> +
              +
              +
              assembly.bom_import.template.kicad_pcbnew.exptected_columns diff --git a/translations/messages.el.xlf b/translations/messages.el.xlf index b5413189..c97f0630 100644 --- a/translations/messages.el.xlf +++ b/translations/messages.el.xlf @@ -1925,6 +1925,12 @@ JSON για συναρμολόγηση + + + assembly.bom_import.type.csv + CSV για μια συναρμολόγηση + + assembly.bom_import.type.kicad_pcbnew @@ -1949,6 +1955,12 @@ Πρότυπο εισαγωγής JSON για συναρμολόγηση + + + assembly.import_bom.template.header.csv + Πρότυπο CSV εισαγωγής για μια συναρμολόγηση + + assembly.import_bom.template.header.kicad_pcbnew @@ -2001,7 +2013,7 @@ Πεδίο Προϋπόθεση - Τύπος Δεδομένων + Τύπος δεδομένων Περιγραφή @@ -2010,22 +2022,24 @@ quantity Υποχρεωτικό πεδίο Αριθμός κινητής υποδιαστολής (Float) - Πρέπει να παρέχεται και να περιέχει τιμή κινητής υποδιαστολής (Float) μεγαλύτερη από 0.0. + Πρέπει να είναι συμπληρωμένος και να περιέχει μια αριθμητική τιμή (Float) μεγαλύτερη από 0.0. name Προαιρετικό - Κείμενο (String) - Εάν υπάρχει, πρέπει να είναι μη κενό κείμενο. + Χαρακτηριστική ακολουθία (String) + Αν υπάρχει, πρέπει να είναι μη κενό κείμενο. Το όνομα του είδους μέσα στη συλλογή. part Προαιρετικό Αντικείμενο/Πίνακας - Εάν παρέχεται, πρέπει να είναι αντικείμενο/πίνακας και τουλάχιστον ένα από τα πεδία του να είναι συμπληρωμένο: + Αν πρόκειται να ανατεθεί ένα εξάρτημα, πρέπει να είναι αντικείμενο/πίνακας και τουλάχιστον ένα από τα παρακάτω πεδία πρέπει να έχει συμπληρωθεί:
              • part.id
              • +
              • part.mpnr
              • +
              • part.ipn
              • part.name
              @@ -2034,38 +2048,38 @@ part.id Προαιρετικό Ακέραιος αριθμός (Integer) - Ακέραιος (Integer) > 0. Αντιστοιχεί στην εσωτερική αριθμητική ταυτότητα (ID) του εξαρτήματος στη βάση δεδομένων. - - - part.name - Προαιρετικό - Κείμενο (String) - Μη κενό κείμενο, εάν δεν παρέχονται οι ενδείξεις part.mpnr ή part.ipn. + Ακέραιος αριθμός > 0. Αντιστοιχεί στο εσωτερικό αριθμητικό ID του εξαρτήματος στη βάση δεδομένων. part.mpnr Προαιρετικό - Κείμενο (String) - Μη κενό κείμενο, εάν δεν παρέχονται οι ενδείξεις part.name ή part.ipn. + Χαρακτηριστική ακολουθία (String) + Μη κενό κείμενο, αν δεν έχει συμπληρωθεί το part.id, part.ipn ή part.name. part.ipn Προαιρετικό - Κείμενο (String) - Μη κενό κείμενο, εάν δεν παρέχονται οι ενδείξεις part.name ή part.mpnr. + Χαρακτηριστική ακολουθία (String) + Μη κενό κείμενο, αν δεν έχει συμπληρωθεί το part.id, part.mpnr ή part.name. + + + part.name + Προαιρετικό + Χαρακτηριστική ακολουθία (String) + Μη κενό κείμενο, αν δεν έχει συμπληρωθεί το part.id, part.mpnr ή part.ipn. part.description Προαιρετικό - Κείμενο ή null - Εάν υπάρχει, πρέπει να είναι μη κενό κείμενο, ή null. + Χαρακτηριστική ακολουθία ή null + Αν υπάρχει, πρέπει να είναι μη κενό κείμενο ή null. Υπερισχύει της υπάρχουσας τιμής στο εξάρτημα. part.manufacturer Προαιρετικό Αντικείμενο/Πίνακας - Εάν υπάρχει, πρέπει να είναι αντικείμενο/πίνακας και τουλάχιστον ένα από τα πεδία του να είναι συμπληρωμένο: + Αν ο κατασκευαστής ενός εξαρτήματος χρειάζεται να αλλάξει ή να αναζητηθεί μονοσήμαντα μέσω της τιμής part.mpnr, πρέπει να είναι αντικείμενο/πίνακας και τουλάχιστον ένα από τα παρακάτω πεδία να είναι συμπληρωμένα:
              • manufacturer.id
              • manufacturer.name
              • @@ -2076,20 +2090,20 @@ manufacturer.id Προαιρετικό Ακέραιος αριθμός (Integer) - Ακέραιος (Integer) > 0. Αντιστοιχεί στην εσωτερική αριθμητική ταυτότητα (ID) του κατασκευαστή. + Ακέραιος αριθμός > 0. Αντιστοιχεί στο εσωτερικό αριθμητικό ID του κατασκευαστή. manufacturer.name Προαιρετικό - Κείμενο (String) - Μη κενό κείμενο, εάν δεν παρέχεται η ένδειξη manufacturer.id. + Χαρακτηριστική ακολουθία (String) + Μη κενό κείμενο, αν δεν έχει συμπληρωθεί το manufacturer.id. part.category Προαιρετικό Αντικείμενο/Πίνακας - Εάν υπάρχει, πρέπει να είναι αντικείμενο/πίνακας και τουλάχιστον ένα από τα πεδία του να είναι συμπληρωμένο: + Αν χρειάζεται να τροποποιηθεί η κατηγορία του εξαρτήματος, πρέπει να είναι αντικείμενο/πίνακας και τουλάχιστον ένα από τα παρακάτω πεδία να είναι συμπληρωμένα:
                • category.id
                • category.name
                • @@ -2100,13 +2114,138 @@ category.id Προαιρετικό Ακέραιος αριθμός (Integer) - Ακέραιος (Integer) > 0. Αντιστοιχεί στην εσωτερική αριθμητική ταυτότητα (ID) της κατηγορίας του εξαρτήματος. + Ακέραιος αριθμός > 0. Αντιστοιχεί στο εσωτερικό αριθμητικό ID της κατηγορίας εξαρτήματος. category.name Προαιρετικό - Κείμενο (String) - Μη κενό κείμενο, εάν δεν παρέχεται η ένδειξη category.id. + Χαρακτηριστική ακολουθία (String) + Μη κενό κείμενο, αν δεν έχει συμπληρωθεί το category.id. + + + + ]]> + + + + + + assembly.bom_import.template.csv.exptected_columns + Δυνατές στήλες: + + + + + assembly.bom_import.template.csv.table + + + + + Στήλη + Προϋπόθεση + Τύπος δεδομένων + Περιγραφή + + + + + quantity + Υποχρεωτικό πεδίο + Αριθμός κινητής υποδιαστολής (Float) + Πρέπει να είναι συμπληρωμένος και να περιέχει μια αριθμητική τιμή (Float) μεγαλύτερη από 0.0. + + + name + Προαιρετικό + Χαρακτηριστική ακολουθία (String) + Το όνομα του είδους μέσα στη συλλογή. + + + Στήλες που ξεκινούν με part_ + + Αν χρειάζεται να αποδοθεί εξάρτημα, πρέπει να συμπληρωθεί μία από τις παρακάτω στήλες: +
                    +
                  • part_id
                  • +
                  • part_mpnr
                  • +
                  • part_ipn
                  • +
                  • part_name
                  • +
                  + + + + part_id + Προαιρετικό + Ακέραιος αριθμός (Integer) + Ακέραιος αριθμός > 0. Αντιστοιχεί στο εσωτερικό αριθμητικό ID του εξαρτήματος στη βάση δεδομένων. + + + part_mpnr + Προαιρετικό + Χαρακτηριστική ακολουθία (String) + Πρέπει να συμπληρωθεί αν δεν γεμίσουν οι part_id, part_ipn ή part_name. + + + part_ipn + Προαιρετικό + Χαρακτηριστική ακολουθία (String) + Πρέπει να συμπληρωθεί αν δεν γεμίσουν οι part_id, part_mpnr ή part_name. + + + part_name + Προαιρετικό + Χαρακτηριστική ακολουθία (String) + Πρέπει να συμπληρωθεί αν δεν γεμίσουν οι part_id, part_mpnr ή part_ipn. + + + part_description + Προαιρετικό + Χαρακτηριστική ακολουθία + Θα μεταφερθεί και θα αντικαταστήσει την τιμή στο εξάρτημα, αν δοθεί μια μη κενή ακολουθία. + + + Στήλες που ξεκινούν με part_manufacturer_ + + Αν ο κατασκευαστής του εξαρτήματος πρέπει να αλλάξει ή να αναζητηθεί μονοσήμαντα μέσω της part_mpnr, πρέπει να συμπληρωθεί μία από τις παρακάτω στήλες: +
                    +
                  • part_manufacturer_id
                  • +
                  • part_manufacturer_name
                  • +
                  + + + + part_manufacturer_id + Προαιρετικό + Ακέραιος αριθμός (Integer) + Ακέραιος αριθμός > 0. Αντιστοιχεί στο εσωτερικό αριθμητικό ID του κατασκευαστή. + + + part_manufacturer_name + Προαιρετικό + Χαρακτηριστική ακολουθία (String) + Πρέπει να συμπληρωθεί αν δεν γεμίσει το πεδίο part_manufacturer_id. + + + Στήλες που ξεκινούν με part.category_ + + Αν η κατηγορία του εξαρτήματος πρέπει να αλλάξει, πρέπει να συμπληρωθεί μία από τις παρακάτω στήλες: +
                    +
                  • part_category_id
                  • +
                  • part_category_name
                  • +
                  + + + + part_category_id + Προαιρετικό + Ακέραιος αριθμός (Integer) + Ακέραιος αριθμός > 0. Αντιστοιχεί στο εσωτερικό αριθμητικό ID της κατηγορίας του εξαρτήματος. + + + part_category_name + Προαιρετικό + Χαρακτηριστική ακολουθία (String) + Πρέπει να συμπληρωθεί αν δεν γεμίσει το πεδίο part_category_id. diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf index 27601d80..e0484384 100644 --- a/translations/messages.en.xlf +++ b/translations/messages.en.xlf @@ -13065,7 +13065,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g assembly.edit.bom.import_bom - Import BOM + Import part list @@ -13269,7 +13269,7 @@ Please note, that you can not impersonate a disabled user. If you try you will g assembly.import_bom - Import BOM for project + Import part list for assembly @@ -13317,7 +13317,13 @@ Please note, that you can not impersonate a disabled user. If you try you will g assembly.bom_import.type.json - JSON for one assembly + JSON for an assembly + + + + + assembly.bom_import.type.csv + CSV for an assembly @@ -13344,6 +13350,12 @@ Please note, that you can not impersonate a disabled user. If you try you will g Import template JSON format for one assembly
                  + + + assembly.import_bom.template.header.csv + Import template CSV format for one assembly + + assembly.import_bom.template.header.kicad_pcbnew @@ -13396,31 +13408,33 @@ Please note, that you can not impersonate a disabled user. If you try you will g Field Condition - Data type + Data Type Description quantity - Required - Floating point (Float) - Must be provided and contains a floating-point value (Float) greater than 0.0. + Mandatory + Floating point number (Float) + Must be provided and contains a floating point value (Float), which is greater than 0.0. name Optional String - If present, it must be a non-empty string. + If present, it must be a non-empty string. Name of the entry within the assembly. part Optional Object/Array - If provided, it must be an object/array and at least one of the fields must be filled: + If a part is to be associated, it must be an object/array with at least one of the following fields filled out:
                  • part.id
                  • +
                  • part.mpnr
                  • +
                  • part.ipn
                  • part.name
                  @@ -13429,38 +13443,38 @@ Please note, that you can not impersonate a disabled user. If you try you will g part.id Optional Integer - Integer > 0. Matches the Part-DB internal numeric ID of the component. - - - part.name - Optional - String - Non-empty string if no part.mpnr or part.ipn is provided. + Integer > 0. Corresponds to the part database internal numeric ID of the part. part.mpnr Optional String - Non-empty string if no part.name or part.ipn is provided. + Non-empty string, if no part.id, part.ipn, or part.name is provided. part.ipn Optional String - Non-empty string if no part.name or part.mpnr is provided. + Non-empty string, if no part.id, part.mpnr, or part.name is provided. + + + part.name + Optional + String + Non-empty string, if no part.id, part.mpnr, or part.ipn is provided. part.description Optional String or null - If present, it must be a non-empty string or null. + If provided, it must be a non-empty string or null. It will be transferred to the part, overwriting its current value. part.manufacturer Optional Object/Array - If present, it must be an object/array and at least one of the fields must be filled: + If the manufacturer of a part is to be adjusted or the part is to be uniquely identified using the part.mpnr, it must be an object/array with at least one of the following fields filled out:
                  • manufacturer.id
                  • manufacturer.name
                  • @@ -13471,20 +13485,20 @@ Please note, that you can not impersonate a disabled user. If you try you will g manufacturer.id Optional Integer - Integer > 0. Matches the internal numeric ID of the manufacturer. + Integer > 0. Corresponds to the internal numeric ID of the manufacturer. manufacturer.name Optional String - Non-empty string if no manufacturer.id is provided. + Non-empty string, if no manufacturer.id is provided. part.category Optional Object/Array - If present, it must be an object/array and at least one of the fields must be filled: + If the category of a part is to be adjusted, it must be an object/array with at least one of the following fields filled out:
                    • category.id
                    • category.name
                    • @@ -13495,13 +13509,138 @@ Please note, that you can not impersonate a disabled user. If you try you will g category.id Optional Integer - Integer > 0. Matches the internal numeric ID of the component's category. + Integer > 0. Corresponds to the internal numeric ID of the part category. category.name Optional String - Non-empty string if no category.id is provided. + Non-empty string, if no category.id is provided. + + + + ]]> + + + + + + assembly.bom_import.template.csv.exptected_columns + Possible columns: + + + + + assembly.bom_import.template.csv.table + + + + + Column + Condition + Data Type + Description + + + + + quantity + Mandatory + Floating point number (Float) + Must be provided and contains a floating point value (Float), which is greater than 0.0. + + + name + Optional + String + Name of the entry within the assembly. + + + Columns starting with part_ + + If a part is to be associated, one of the following columns must be provided and filled out: +
                        +
                      • part_id
                      • +
                      • part_mpnr
                      • +
                      • part_ipn
                      • +
                      • part_name
                      • +
                      + + + + part_id + Optional + Integer + Integer > 0. Corresponds to the part database internal numeric ID of the part. + + + part_mpnr + Optional + String + Must be provided if no part_id, part_ipn, or part_name column is filled out. + + + part_ipn + Optional + String + Must be provided if no part_id, part_mpnr, or part_name column is filled out. + + + part_name + Optional + String + Must be provided if no part_id, part_mpnr, or part_ipn column is filled out. + + + part_description + Optional + String + Will be transferred to the part, overwriting its current value if a non-empty string is provided. + + + Columns starting with part_manufacturer_ + + If the manufacturer of a part is to be adjusted or the part is to be uniquely identified using the part_mpnr, one of the following columns must be provided and filled out: +
                        +
                      • part_manufacturer_id
                      • +
                      • part_manufacturer_name
                      • +
                      + + + + part_manufacturer_id + Optional + Integer + Integer > 0. Corresponds to the internal numeric ID of the manufacturer. + + + part_manufacturer_name + Optional + String + Must be provided if no part_manufacturer_id column is filled out. + + + Columns starting with part.category_ + + If the category of a part is to be adjusted, one of the following columns must be provided and filled out: +
                        +
                      • part_category_id
                      • +
                      • part_category_name
                      • +
                      + + + + part_category_id + Optional + Integer + Integer > 0. Corresponds to the internal numeric ID of the part category. + + + part_category_name + Optional + String + Must be provided if no part_category_id column is filled out. diff --git a/translations/messages.es.xlf b/translations/messages.es.xlf index 0383f964..ff1183f0 100644 --- a/translations/messages.es.xlf +++ b/translations/messages.es.xlf @@ -12734,6 +12734,12 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S JSON para un ensamblaje
                      + + + assembly.bom_import.type.csv + CSV para un ensamblaje + + assembly.bom_import.type.kicad_pcbnew @@ -12758,6 +12764,12 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S Plantilla de importación JSON para un ensamblaje + + + assembly.import_bom.template.header.csv + Plantilla de importación CSV para un ensamblaje + + assembly.import_bom.template.header.kicad_pcbnew @@ -12810,31 +12822,33 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S Campo Condición - Tipo de dato + Tipo de datos Descripción quantity - Obligatorio - Número decimal (Float) - Debe estar presente y contener un valor decimal (Float) mayor que 0.0. + Campo obligatorio + Número de punto flotante (Float) + Debe completarse y contener un valor flotante (Float) mayor a 0.0. name Opcional - Cadena de texto (String) - Si está presente, debe ser una cadena de texto no vacía. + Cadena + Si se especifica, debe ser una cadena no vacía. El nombre del elemento dentro del conjunto. part Opcional Objeto/Array - Si se proporciona, debe ser un objeto/array y al menos uno de los campos debe estar completado: + Si se debe asignar una pieza, debe ser un objeto/array, y al menos uno de los siguientes campos debe completarse:
                      • part.id
                      • +
                      • part.mpnr
                      • +
                      • part.ipn
                      • part.name
                      @@ -12843,38 +12857,38 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S part.id Opcional Entero (Integer) - Entero (Integer) > 0. Corresponde al ID numérico interno del componente en la base de datos. - - - part.name - Opcional - Cadena de texto (String) - Cadena de texto no vacía, si no se proporciona part.mpnr o part.ipn. + Entero > 0. Corresponde al ID interno numérico de la pieza en la base de datos. part.mpnr Opcional - Cadena de texto (String) - Cadena de texto no vacía, si no se proporciona part.name o part.ipn. + Cadena + Cadena no vacía si no se rellenan los campos part.id, part.ipn o part.name. part.ipn Opcional - Cadena de texto (String) - Cadena de texto no vacía, si no se proporciona part.name o part.mpnr. + Cadena + Cadena no vacía si no se rellenan los campos part.id, part.mpnr o part.name. + + + part.name + Opcional + Cadena + Cadena no vacía si no se rellenan los campos part.id, part.mpnr o part.ipn. part.description Opcional - Cadena de texto (String) o null - Si está presente, debe ser una cadena de texto no vacía o null. + Cadena o null + Si se especifica, debe ser una cadena no vacía o null. Este valor sobrescribirá el existente en la pieza. part.manufacturer Opcional Objeto/Array - Si está presente, debe ser un objeto/array y al menos uno de los campos debe estar completado: + Si se desea cambiar el fabricante de la pieza o buscarlo de forma única utilizando el valor part.mpnr, debe ser un objeto/array y al menos uno de los siguientes campos debe completarse:
                      • manufacturer.id
                      • manufacturer.name
                      • @@ -12885,20 +12899,20 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S manufacturer.id Opcional Entero (Integer) - Entero (Integer) > 0. Corresponde al ID numérico interno del fabricante. + Entero > 0. Corresponde al ID interno numérico del fabricante. manufacturer.name Opcional - Cadena de texto (String) - Cadena de texto no vacía, si no se proporciona manufacturer.id. + Cadena + Cadena no vacía si no se proporciona el campo manufacturer.id. part.category Opcional Objeto/Array - Si está presente, debe ser un objeto/array y al menos uno de los campos debe estar completado: + Si se desea cambiar la categoría de la pieza, debe ser un objeto/array y al menos uno de los siguientes campos debe completarse:
                        • category.id
                        • category.name
                        • @@ -12909,13 +12923,138 @@ Por favor ten en cuenta que no puedes personificar a un usuario deshabilitado. S category.id Opcional Entero (Integer) - Entero (Integer) > 0. Corresponde al ID numérico interno de la categoría del componente. + Entero > 0. Corresponde al ID interno numérico de la categoría de la pieza. category.name Opcional - Cadena de texto (String) - Cadena de texto no vacía, si no se proporciona category.id. + Cadena + Cadena no vacía si no se proporciona el campo category.id. + + + + ]]> + + + + + + assembly.bom_import.template.csv.exptected_columns + Columnas posibles: + + + + + assembly.bom_import.template.csv.table + + + + + Columna + Condición + Tipo de datos + Descripción + + + + + quantity + Campo obligatorio + Número de punto flotante (Float) + Debe completarse y contener un valor flotante (Float) mayor a 0.0. + + + name + Opcional + Cadena + El nombre del elemento dentro del conjunto. + + + Columnas que comienzan con part_ + + Si se debe asignar una pieza, al menos una de las siguientes columnas debe completarse: +
                            +
                          • part_id
                          • +
                          • part_mpnr
                          • +
                          • part_ipn
                          • +
                          • part_name
                          • +
                          + + + + part_id + Opcional + Entero (Integer) + Entero > 0. Corresponde al ID interno numérico de la pieza en la base de datos. + + + part_mpnr + Opcional + Cadena + Debe completarse si no se han rellenado las columnas part_id, part_ipn o part_name. + + + part_ipn + Opcional + Cadena + Debe completarse si no se han rellenado las columnas part_id, part_mpnr o part_name. + + + part_name + Opcional + Cadena + Debe completarse si no se han rellenado las columnas part_id, part_mpnr o part_ipn. + + + part_description + Opcional + Cadena + Se transferirá y reemplazará el valor de la descripción de la pieza si se proporciona una cadena no vacía. + + + Columnas que comienzan con part_manufacturer_ + + Si el fabricante de la pieza debe cambiarse o buscarse exclusivamente mediante part_mpnr, al menos una de las siguientes columnas debe completarse: +
                            +
                          • part_manufacturer_id
                          • +
                          • part_manufacturer_name
                          • +
                          + + + + part_manufacturer_id + Opcional + Entero (Integer) + Entero > 0. Corresponde al ID interno numérico del fabricante. + + + part_manufacturer_name + Opcional + Cadena + Debe completarse si no se ha proporcionado el campo part_manufacturer_id. + + + Columnas que comienzan con part.category_ + + Si se necesita modificar la categoría de la pieza, al menos una de las siguientes columnas debe completarse: +
                            +
                          • part_category_id
                          • +
                          • part_category_name
                          • +
                          + + + + part_category_id + Opcional + Entero (Integer) + Entero > 0. Corresponde al ID interno numérico de la categoría de la pieza. + + + part_category_name + Opcional + Cadena + Debe completarse si no se ha proporcionado el campo part_category_id. diff --git a/translations/messages.fr.xlf b/translations/messages.fr.xlf index 32012190..9cd29321 100644 --- a/translations/messages.fr.xlf +++ b/translations/messages.fr.xlf @@ -9487,6 +9487,12 @@ exemple de ville
                          JSON pour un assemblage
                          + + + assembly.bom_import.type.csv + CSV pour un assemblage + + assembly.bom_import.type.kicad_pcbnew @@ -9511,6 +9517,12 @@ exemple de ville Modèle d’importation JSON pour un assemblage + + + assembly.import_bom.template.header.csv + Modèle d'importation CSV pour un assemblage + + assembly.import_bom.template.header.kicad_pcbnew @@ -9570,24 +9582,26 @@ exemple de ville quantity - Obligatoire - Nombre décimal (Float) - Doit être présent et contenir une valeur décimale (Float) supérieure à 0,0. + Champ obligatoire + Nombre à virgule flottante (Float) + Doit être rempli et contenir une valeur décimale (Float) supérieure à 0.0. name Optionnel - Chaîne (String) - Si présent, doit être une chaîne non vide. + Chaîne + Si renseigné, doit être une chaîne non vide. Le nom de l'élément dans l'assemblage. part Optionnel Objet/Tableau - Si fourni, doit être un objet/un tableau et au moins un des champs doit être rempli : + Si une pièce doit être assignée, cela doit être un objet/tableau et au moins un des champs suivants doit être renseigné :
                          • part.id
                          • +
                          • part.mpnr
                          • +
                          • part.ipn
                          • part.name
                          @@ -9596,38 +9610,38 @@ exemple de ville part.id Optionnel Entier (Integer) - Entier (Integer) > 0. Correspond à l'ID numérique interne dans Part-DB du composant. - - - part.name - Optionnel - Chaîne (String) - Chaîne non vide si part.mpnr ou part.ipn ne sont pas fournis. + Nombre entier > 0. Correspond à l'ID interne numérique de la pièce dans la base de données. part.mpnr Optionnel - Chaîne (String) - Chaîne non vide si part.name ou part.ipn ne sont pas fournis. + Chaîne + Chaîne non vide si part.id, part.ipn ou part.name ne sont pas renseignés. part.ipn Optionnel - Chaîne (String) - Chaîne non vide si part.name ou part.mpnr ne sont pas fournis. + Chaîne + Chaîne non vide si part.id, part.mpnr ou part.name ne sont pas renseignés. + + + part.name + Optionnel + Chaîne + Chaîne non vide si part.id, part.mpnr ou part.ipn ne sont pas renseignés. part.description Optionnel Chaîne ou null - Si présent, doit être une chaîne non vide ou null. + Si renseignée, doit être une chaîne non vide ou null. Ce champ remplacera la valeur existante de la pièce. part.manufacturer Optionnel Objet/Tableau - Si présent, doit être un objet/un tableau et au moins un des champs doit être rempli : + Si le fabricant de la pièce doit être modifié ou recherché de manière unique à l'aide de la valeur part.mpnr, cela doit être un objet/tableau et au moins un des champs suivants doit être renseigné :
                          • manufacturer.id
                          • manufacturer.name
                          • @@ -9638,20 +9652,20 @@ exemple de ville manufacturer.id Optionnel Entier (Integer) - Entier (Integer) > 0. Correspond à l'ID numérique interne du fabricant. + Nombre entier > 0. Correspond à l'ID interne numérique du fabricant. manufacturer.name Optionnel - Chaîne (String) - Chaîne non vide si manufacturer.id n'est pas fourni. + Chaîne + Chaîne non vide si manufacturer.id n'est pas renseigné. part.category Optionnel Objet/Tableau - Si présent, doit être un objet/un tableau et au moins un des champs doit être rempli : + Si la catégorie de la pièce doit être modifiée, cela doit être un objet/tableau et au moins un des champs suivants doit être renseigné :
                            • category.id
                            • category.name
                            • @@ -9662,13 +9676,138 @@ exemple de ville category.id Optionnel Entier (Integer) - Entier (Integer) > 0. Correspond à l'ID numérique interne de la catégorie du composant. + Nombre entier > 0. Correspond à l'ID interne numérique de la catégorie de la pièce. category.name Optionnel - Chaîne (String) - Chaîne non vide si category.id n'est pas fourni. + Chaîne + Chaîne non vide si category.id n'est pas renseigné. + + + + ]]> + + + + + + assembly.bom_import.template.csv.exptected_columns + Colonnes possibles : + + + + + assembly.bom_import.template.csv.table + + + + + Colonne + Condition + Type de données + Description + + + + + quantity + Champ obligatoire + Nombre à virgule flottante (Float) + Doit être rempli et contenir une valeur décimale (Float) supérieure à 0.0. + + + name + Optionnel + Chaîne + Le nom de l'élément dans l'assemblage. + + + Colonnes commençant par part_ + + Si une pièce doit être assignée, au moins une des colonnes suivantes doit être renseignée : +
                                +
                              • part_id
                              • +
                              • part_mpnr
                              • +
                              • part_ipn
                              • +
                              • part_name
                              • +
                              + + + + part_id + Optionnel + Entier (Integer) + Nombre entier > 0. Correspond à l'ID interne numérique de la pièce dans la base de données. + + + part_mpnr + Optionnel + Chaîne + Doit être renseignée si les colonnes part_id, part_ipn ou part_name ne sont pas remplies. + + + part_ipn + Optionnel + Chaîne + Doit être renseignée si les colonnes part_id, part_mpnr ou part_name ne sont pas remplies. + + + part_name + Optionnel + Chaîne + Doit être renseignée si les colonnes part_id, part_mpnr ou part_ipn ne sont pas remplies. + + + part_description + Optionnel + Chaîne + Sera transférée et remplacera la valeur existante de la description si une chaîne non vide est fournie. + + + Colonnes commençant par part_manufacturer_ + + Si le fabricant de la pièce doit être modifié ou recherché uniquement via part_mpnr, au moins une des colonnes suivantes doit être renseignée : +
                                +
                              • part_manufacturer_id
                              • +
                              • part_manufacturer_name
                              • +
                              + + + + part_manufacturer_id + Optionnel + Entier (Integer) + Nombre entier > 0. Correspond à l'ID interne numérique du fabricant. + + + part_manufacturer_name + Optionnel + Chaîne + Doit être renseignée si part_manufacturer_id n'est pas fourni. + + + Colonnes commençant par part.category_ + + Si la catégorie de la pièce doit être modifiée, au moins une des colonnes suivantes doit être renseignée : +
                                +
                              • part_category_id
                              • +
                              • part_category_name
                              • +
                              + + + + part_category_id + Optionnel + Entier (Integer) + Nombre entier > 0. Correspond à l'ID interne numérique de la catégorie de la pièce. + + + part_category_name + Optionnel + Chaîne + Doit être renseignée si part_category_id n'est pas fourni. @@ -9679,75 +9818,75 @@ exemple de ville
                              assembly.bom_import.template.kicad_pcbnew.exptected_columns - Colonnes attendues : + Colonnes attendues: assembly.bom_import.template.kicad_pcbnew.exptected_columns.note - Remarque : Aucun mappage n'est effectué avec des composants spécifiques issus de la gestion des catégories.

                              - ]]> + Remarque: Aucun mappage n'est effectué avec des composants spécifiques issus de la gestion des catégories.

                              + ]]>
                              - - assembly.bom_import.template.kicad_pcbnew.table - - - - - Champ - Condition - Type de Données - Description - - - - - Id - Optionnel - Entier - Champ libre. Un numéro d'identification unique pour chaque composant. - - - Designator - Optionnel - Chaîne - Champ libre. Une désignation de référence unique pour le composant sur le PCB, par exemple, "R1" pour la résistance 1.
                              Utilisé comme le nom de l'emplacement de l'entrée composant dans l'assemblage. - - - Package - Optionnel - Chaîne - Champ libre. Le boîtier ou le format du composant, par exemple, "0805" pour les résistances CMS.
                              Non inclus dans l'entrée composant pour l'assemblage. - - - Quantity - Obligatoire - Entier - Le nombre de composants identiques nécessaires pour créer une instance de l'assemblage.
                              Utilisé comme la quantité dans l'entrée composant de l'assemblage. - - - Designation - Obligatoire - Chaîne - La description ou la fonction du composant, par exemple, valeur de résistance "10kΩ" ou valeur de condensateur "100nF".
                              Utilisé comme le nom dans l'entrée composant pour l'assemblage. - - - Supplier and ref - Optionnel - Chaîne - Champ libre. Peut contenir par exemple des informations spécifiques sur le fournisseur.
                              Utilisé comme une note dans l'entrée composant pour l'assemblage. - - - - ]]> -
                              -
                              + + assembly.bom_import.template.kicad_pcbnew.table + + + + + Champ + Condition + Type de Données + Description + + + + + Id + Optionnel + Entier + Champ libre. Un numéro d'identification unique pour chaque composant. + + + Designator + Optionnel + Chaîne + Champ libre. Une désignation de référence unique pour le composant sur le PCB, par exemple, "R1" pour la résistance 1.
                              Utilisé comme le nom de l'emplacement de l'entrée composant dans l'assemblage. + + + Package + Optionnel + Chaîne + Champ libre. Le boîtier ou le format du composant, par exemple, "0805" pour les résistances CMS.
                              Non inclus dans l'entrée composant pour l'assemblage. + + + Quantity + Obligatoire + Entier + Le nombre de composants identiques nécessaires pour créer une instance de l'assemblage.
                              Utilisé comme la quantité dans l'entrée composant de l'assemblage. + + + Designation + Obligatoire + Chaîne + La description ou la fonction du composant, par exemple, valeur de résistance "10kΩ" ou valeur de condensateur "100nF".
                              Utilisé comme le nom dans l'entrée composant pour l'assemblage. + + + Supplier and ref + Optionnel + Chaîne + Champ libre. Peut contenir par exemple des informations spécifiques sur le fournisseur.
                              Utilisé comme une note dans l'entrée composant pour l'assemblage. + + + + ]]> +
                              +
                              diff --git a/translations/messages.it.xlf b/translations/messages.it.xlf index f6e3c944..8e39c031 100644 --- a/translations/messages.it.xlf +++ b/translations/messages.it.xlf @@ -12736,6 +12736,12 @@ Notare che non è possibile impersonare un utente disattivato. Quando si prova a JSON per un gruppo + + + assembly.bom_import.type.csv + CSV per un'assemblaggio + + assembly.bom_import.type.kicad_pcbnew @@ -12760,6 +12766,12 @@ Notare che non è possibile impersonare un utente disattivato. Quando si prova a Template di importazione JSON per un gruppo + + + assembly.import_bom.template.header.csv + Modello di importazione CSV per un assemblaggio + + assembly.import_bom.template.header.kicad_pcbnew @@ -12812,31 +12824,33 @@ Notare che non è possibile impersonare un utente disattivato. Quando si prova a Campo Condizione - Tipo di dato + Tipo di dati Descrizione quantity - Obbligatorio + Campo obbligatorio Numero decimale (Float) - Deve essere presente e contenere un valore decimale (Float) maggiore di 0,0. + Deve essere compilato e contenere un valore decimale (Float) maggiore di 0.0. name Opzionale - Stringa (String) - Se presente, deve essere una stringa non vuota. + Stringa + Se specificato, deve essere una stringa non vuota. Il nome del componente all'interno dell'assemblaggio. part Opzionale Oggetto/Array - Se fornito, deve essere un oggetto/un array e almeno uno dei campi deve essere compilato: + Se è necessario assegnare una parte, deve essere un Oggetto/Array e almeno uno dei seguenti campi deve essere compilato:
                              • part.id
                              • +
                              • part.mpnr
                              • +
                              • part.ipn
                              • part.name
                              @@ -12844,39 +12858,39 @@ Notare che non è possibile impersonare un utente disattivato. Quando si prova a part.id Opzionale - Intero (Integer) - Intero (Integer) > 0. Corrisponde all'ID numerico interno di Part-DB per il componente. - - - part.name - Opzionale - Stringa (String) - Stringa non vuota se part.mpnr o part.ipn non sono forniti. + Numero intero + Numero intero > 0. Corrisponde all'ID interno numerico del componente nel database. part.mpnr Opzionale - Stringa (String) - Stringa non vuota se part.name o part.ipn non sono forniti. + Stringa + Stringa non vuota se i campi part.id, part.ipn o part.name non sono compilati. part.ipn Opzionale - Stringa (String) - Stringa non vuota se part.name o part.mpnr non sono forniti. + Stringa + Stringa non vuota se i campi part.id, part.mpnr o part.name non sono compilati. + + + part.name + Opzionale + Stringa + Stringa non vuota se i campi part.id, part.mpnr o part.ipn non sono compilati. part.description Opzionale Stringa o null - Se presente, deve essere una stringa non vuota o null. + Se specificato, deve essere una stringa non vuota o null. Questo valore sovrascriverà quello esistente nella parte. part.manufacturer Opzionale Oggetto/Array - Se presente, deve essere un oggetto/un array e almeno uno dei campi deve essere compilato: + Se il produttore della parte deve essere cambiato o ricercato esclusivamente utilizzando il valore part.mpnr, deve essere un Oggetto/Array e almeno uno dei seguenti campi deve essere compilato:
                              • manufacturer.id
                              • manufacturer.name
                              • @@ -12886,21 +12900,21 @@ Notare che non è possibile impersonare un utente disattivato. Quando si prova a manufacturer.id Opzionale - Intero (Integer) - Intero (Integer) > 0. Corrisponde all'ID numerico interno del produttore. + Numero intero + Numero intero > 0. Corrisponde all'ID interno numerico del produttore. manufacturer.name Opzionale - Stringa (String) - Stringa non vuota se manufacturer.id non è fornito. + Stringa + Stringa non vuota se il campo manufacturer.id non è compilato. part.category Opzionale Oggetto/Array - Se presente, deve essere un oggetto/un array e almeno uno dei campi deve essere compilato: + Se è necessario modificare la categoria della parte, deve essere un Oggetto/Array e almeno uno dei seguenti campi deve essere compilato:
                                • category.id
                                • category.name
                                • @@ -12910,14 +12924,139 @@ Notare che non è possibile impersonare un utente disattivato. Quando si prova a category.id Opzionale - Intero (Integer) - Intero (Integer) > 0. Corrisponde all'ID numerico interno della categoria del componente. + Numero intero + Numero intero > 0. Corrisponde all'ID interno numerico della categoria della parte. category.name Opzionale - Stringa (String) - Stringa non vuota se category.id non è fornito. + Stringa + Stringa non vuota se il campo category.id non è compilato. + + + + ]]> + + + + + + assembly.bom_import.template.csv.exptected_columns + Colonne possibili: + + + + + assembly.bom_import.template.csv.table + + + + + Colonna + Condizione + Tipo di dati + Descrizione + + + + + quantity + Campo obbligatorio + Numero decimale (Float) + Deve essere compilato e contenere un valore decimale (Float) maggiore di 0.0. + + + name + Opzionale + Stringa + Il nome dell'elemento all'interno dell'assemblaggio. + + + Colonne che iniziano con part_ + + Se è necessario assegnare una parte, almeno una delle colonne seguenti deve essere compilata: +
                                    +
                                  • part_id
                                  • +
                                  • part_mpnr
                                  • +
                                  • part_ipn
                                  • +
                                  • part_name
                                  • +
                                  + + + + part_id + Opzionale + Numero intero + Numero intero > 0. Corrisponde all'ID interno numerico del componente nel database. + + + part_mpnr + Opzionale + Stringa + Deve essere compilato se le colonne part_id, part_ipn o part_name non sono compilate. + + + part_ipn + Opzionale + Stringa + Deve essere compilato se le colonne part_id, part_mpnr o part_name non sono compilate. + + + part_name + Opzionale + Stringa + Deve essere compilato se le colonne part_id, part_mpnr o part_ipn non sono compilate. + + + part_description + Opzionale + Stringa + Sarà trasferita e sostituirà il valore esistente della descrizione se viene fornita una stringa non vuota. + + + Colonne che iniziano con part_manufacturer_ + + Se il produttore del componente deve essere modificato o ricercato esclusivamente tramite part_mpnr, almeno una delle seguenti colonne deve essere compilata: +
                                    +
                                  • part_manufacturer_id
                                  • +
                                  • part_manufacturer_name
                                  • +
                                  + + + + part_manufacturer_id + Opzionale + Numero intero + Numero intero > 0. Corrisponde all'ID interno numerico del produttore. + + + part_manufacturer_name + Opzionale + Stringa + Deve essere compilata se il campo part_manufacturer_id non è fornito. + + + Colonne che iniziano con part_category_ + + Se è necessario modificare la categoria della parte, almeno una delle seguenti colonne deve essere compilata: +
                                    +
                                  • part_category_id
                                  • +
                                  • part_category_name
                                  • +
                                  + + + + part_category_id + Opzionale + Numero intero + Numero intero > 0. Corrisponde all'ID interno numerico della categoria del componente. + + + part_category_name + Opzionale + Stringa + Deve essere compilata se il campo part_category_id non è fornito. @@ -12942,61 +13081,61 @@ Notare che non è possibile impersonare un utente disattivato. Quando si prova a
                                  - - assembly.bom_import.template.kicad_pcbnew.table - - - - - Campo - Condizione - Tipo di Dati - Descrizione - - - - - Id - Opzionale - Intero - Campo libero. Un numero identificativo univoco per ogni componente. - - - Designator - Opzionale - Stringa - Campo libero. Un riferimento univoco al componente su PCB, ad esempio "R1" per il resistore 1.
                                  Utilizzato come nome della posizione nella voce componenti all'interno dell'assemblaggio. - - - Package - Opzionale - Stringa - Campo libero. L'involucro o il fattore di forma del componente, ad esempio "0805" per i resistori SMD.
                                  Non incluso nelle informazioni del componente nell'assemblaggio. - - - Quantity - Obbligatorio - Intero - Il numero di componenti identici richiesti per creare un'istanza dell'assemblaggio.
                                  Utilizzato come quantità nella voce componenti dell'assemblaggio. - - - Designation - Obbligatorio - Stringa - Descrizione o funzione del componente, ad esempio valore resistore "10kΩ" o valore condensatore "100nF".
                                  Utilizzato come nome nella voce componenti dell'assemblaggio. - - - Supplier and ref - Opzionale - Stringa - Campo libero. Può contenere, ad esempio, informazioni specifiche del fornitore.
                                  Utilizzato come nota nelle informazioni del componente nell'assemblaggio. - - - - ]]> -
                                  -
                                  + + assembly.bom_import.template.kicad_pcbnew.table + + + + + Campo + Condizione + Tipo di Dati + Descrizione + + + + + Id + Opzionale + Intero + Campo libero. Un numero identificativo univoco per ogni componente. + + + Designator + Opzionale + Stringa + Campo libero. Un riferimento univoco al componente su PCB, ad esempio "R1" per il resistore 1.
                                  Utilizzato come nome della posizione nella voce componenti all'interno dell'assemblaggio. + + + Package + Opzionale + Stringa + Campo libero. L'involucro o il fattore di forma del componente, ad esempio "0805" per i resistori SMD.
                                  Non incluso nelle informazioni del componente nell'assemblaggio. + + + Quantity + Obbligatorio + Intero + Il numero di componenti identici richiesti per creare un'istanza dell'assemblaggio.
                                  Utilizzato come quantità nella voce componenti dell'assemblaggio. + + + Designation + Obbligatorio + Stringa + Descrizione o funzione del componente, ad esempio valore resistore "10kΩ" o valore condensatore "100nF".
                                  Utilizzato come nome nella voce componenti dell'assemblaggio. + + + Supplier and ref + Opzionale + Stringa + Campo libero. Può contenere, ad esempio, informazioni specifiche del fornitore.
                                  Utilizzato come nota nelle informazioni del componente nell'assemblaggio. + + + + ]]> +
                                  +
                                  diff --git a/translations/messages.ja.xlf b/translations/messages.ja.xlf index a8f5f915..fb64a0f0 100644 --- a/translations/messages.ja.xlf +++ b/translations/messages.ja.xlf @@ -9188,6 +9188,12 @@ Exampletown アセンブリ用 JSON + + + assembly.bom_import.type.csv + アセンブリ用のCSV + + assembly.bom_import.type.kicad_pcbnew @@ -9212,6 +9218,12 @@ Exampletown アセンブリ用 JSON テンプレート + + + assembly.import_bom.template.header.csv + アセンブリ用のCSVインポートテンプレート + + assembly.import_bom.template.header.kicad_pcbnew @@ -9271,24 +9283,26 @@ Exampletown quantity - 必須 + 必須項目 浮動小数点数 (Float) - 指定され、0.0より大きい浮動小数点値 (Float) を含む必要があります。 + 入力必須で、0.0よりも大きい浮動小数点数 (Float) を含む必要があります。 name 任意 - 文字列 (String) - 指定されている場合、空でない文字列でなければなりません。 + 文字列 + 指定されている場合、空でない文字列でなければなりません。アセンブリ内のアイテムの名前。 part 任意 オブジェクト/配列 - 指定された場合、オブジェクト/配列であり、以下のフィールドのうち少なくとも1つが入力されている必要があります: + 部品を割り当てる必要がある場合、これはオブジェクト/配列であり、次のフィールドのいずれかを少なくとも1つ入力する必要があります:
                                  • part.id
                                  • +
                                  • part.mpnr
                                  • +
                                  • part.ipn
                                  • part.name
                                  @@ -9297,38 +9311,38 @@ Exampletown part.id 任意 整数 (Integer) - 整数 (Integer) > 0。部品の Part-DB 内部数値 ID に対応します。 - - - part.name - 任意 - 文字列 (String) - part.mpnr または part.ipn が指定されていない場合、空でない文字列でなければなりません。 + 0より大きい整数。データベース内の部品の内部数値IDに対応します。 part.mpnr 任意 - 文字列 (String) - part.name または part.ipn が指定されていない場合、空でない文字列でなければなりません。 + 文字列 + part.id、part.ipn、または part.name が入力されていない場合、空でない文字列。 part.ipn 任意 - 文字列 (String) - part.name または part.mpnr が指定されていない場合、空でない文字列でなければなりません。 + 文字列 + part.id、part.mpnr、または part.name が入力されていない場合、空でない文字列。 + + + part.name + 任意 + 文字列 + part.id、part.mpnr、または part.ipn が入力されていない場合、空でない文字列。 part.description 任意 文字列または null - 指定されている場合、空でない文字列または null でなければなりません。 + 指定されている場合、空でない文字列または null である必要があります。この値は部品の既存の値を上書きします。 part.manufacturer 任意 オブジェクト/配列 - 指定されている場合、オブジェクト/配列であり、以下のフィールドのうち少なくとも1つが入力されている必要があります: + 部品のメーカーを変更する場合、または part.mpnr の値を利用して一意に検索する場合、これはオブジェクト/配列であり、次のフィールドのいずれかを少なくとも1つ入力する必要があります:
                                  • manufacturer.id
                                  • manufacturer.name
                                  • @@ -9339,20 +9353,20 @@ Exampletown manufacturer.id 任意 整数 (Integer) - 整数 (Integer) > 0。製造元の内部数値 ID に対応します。 + 0より大きい整数。メーカーの内部数値IDに対応します。 manufacturer.name 任意 - 文字列 (String) - manufacturer.id が指定されていない場合、空でない文字列でなければなりません。 + 文字列 + manufacturer.id が提供されていない場合、空でない文字列。 part.category 任意 オブジェクト/配列 - 指定されている場合、オブジェクト/配列であり、以下のフィールドのうち少なくとも1つが入力されている必要があります: + 部品のカテゴリーを変更する場合、これはオブジェクト/配列であり、次のフィールドのいずれかを少なくとも1つ入力する必要があります:
                                    • category.id
                                    • category.name
                                    • @@ -9363,13 +9377,138 @@ Exampletown category.id 任意 整数 (Integer) - 整数 (Integer) > 0。コンポーネントカテゴリの内部数値 ID に対応します。 + 0より大きい整数。部品のカテゴリーに対応する内部数値ID。 category.name 任意 - 文字列 (String) - category.id が指定されていない場合、空でない文字列でなければなりません。 + 文字列 + category.id が提供されていない場合、空でない文字列。 + + + + ]]> + + + + + + assembly.bom_import.template.csv.exptected_columns + 可能なカラム: + + + + + assembly.bom_import.template.csv.table + + + + + カラム + 条件 + データ型 + 説明 + + + + + quantity + 必須項目 + 浮動小数点数 (Float) + 入力必須で、0.0よりも大きい浮動小数点数 (Float) を含む必要があります。 + + + name + 任意 + 文字列 + アセンブリ内のアイテムの名前。 + + + part_ で始まるカラム + + 部品を割り当てる必要がある場合、次のカラムのいずれかが少なくとも1つ入力されなければなりません: +
                                        +
                                      • part_id
                                      • +
                                      • part_mpnr
                                      • +
                                      • part_ipn
                                      • +
                                      • part_name
                                      • +
                                      + + + + part_id + 任意 + 整数 (Integer) + 0より大きい整数。データベース内の部品の内部数値ID。 + + + part_mpnr + 任意 + 文字列 + part_id、part_ipn、または part_name が入力されていない場合に入力される必要があります。 + + + part_ipn + 任意 + 文字列 + part_id、part_mpnr、または part_name が入力されていない場合に入力される必要があります。 + + + part_name + 任意 + 文字列 + part_id、part_mpnr、または part_ipn が入力されていない場合に入力される必要があります。 + + + part_description + 任意 + 文字列 + 指定されている場合、部品の説明既存の値を上書きする非空の文字列。 + + + part_manufacturer_ で始まるカラム + + 部品の製造元を変更する場合、または part_mpnr を利用して一意に検索する場合、次のカラムのいずれかを少なくとも1つ入力する必要があります: +
                                        +
                                      • part_manufacturer_id
                                      • +
                                      • part_manufacturer_name
                                      • +
                                      + + + + part_manufacturer_id + 任意 + 整数 (Integer) + 0より大きい整数。製造元の内部数値ID。 + + + part_manufacturer_name + 任意 + 文字列 + part_manufacturer_id が入力されていない場合、入力される必要があります。 + + + part_category_ で始まるカラム + + 部品のカテゴリーを変更する場合、次のカラムのいずれかを少なくとも1つ入力する必要があります: +
                                        +
                                      • part_category_id
                                      • +
                                      • part_category_name
                                      • +
                                      + + + + part_category_id + 任意 + 整数 (Integer) + 0より大きい整数。部品のカテゴリーに対応する内部数値ID。 + + + part_category_name + 任意 + 文字列 + part_category_id が提供されていない場合、入力される必要があります。 @@ -9384,71 +9523,71 @@ Exampletown
                                      - - assembly.bom_import.template.kicad_pcbnew.exptected_columns.note - - 注意: カテゴリ管理から特定のコンポーネントへのマッピングは行われません。

                                      - ]]> -
                                      -
                                      + + assembly.bom_import.template.kicad_pcbnew.exptected_columns.note + + 注意: カテゴリ管理から特定のコンポーネントへのマッピングは行われません。

                                      + ]]> +
                                      +
                                      - - assembly.bom_import.template.kicad_pcbnew.table - - - - - フィールド - 条件 - データ型 - 説明 - - - - - Id - 任意 - 整数 - 自由形式のフィールド。各コンポーネントのユニークな識別番号。 - - - Designator - 任意 - 文字列 - 自由形式のフィールド。PCB上のコンポーネントごとの一意のリファレンス識別子。例: 抵抗 "R1"。
                                      アセンブリ内の部品エントリの配置名として使用。 - - - Package - 任意 - 文字列 - 自由形式のフィールド。コンポーネントのパッケージまたはフォームファクタ。例: 表面実装抵抗器 "0805"。
                                      アセンブリ内の部品エントリ情報には含まれません。 - - - Quantity - 必須 - 整数 - アセンブリの一つのインスタンスを作るために必要な同一部品の数。
                                      アセンブリの部品情報で数量として使用。 - - - Designation - 必須 - 文字列 - コンポーネントの説明や機能。例: 抵抗の値 "10kΩ" やコンデンサの値 "100nF"。
                                      アセンブリの部品情報で名称として使用。 - - - Supplier and ref - 任意 - 文字列 - 自由形式フィールド。例: 供給元に関する特定の情報を含む場合がある。
                                      アセンブリの部品情報の注記として使用。 - - - - ]]> -
                                      -
                                      + + assembly.bom_import.template.kicad_pcbnew.table + + + + + フィールド + 条件 + データ型 + 説明 + + + + + Id + 任意 + 整数 + 自由形式のフィールド。各コンポーネントのユニークな識別番号。 + + + Designator + 任意 + 文字列 + 自由形式のフィールド。PCB上のコンポーネントごとの一意のリファレンス識別子。例: 抵抗 "R1"。
                                      アセンブリ内の部品エントリの配置名として使用。 + + + Package + 任意 + 文字列 + 自由形式のフィールド。コンポーネントのパッケージまたはフォームファクタ。例: 表面実装抵抗器 "0805"。
                                      アセンブリ内の部品エントリ情報には含まれません。 + + + Quantity + 必須 + 整数 + アセンブリの一つのインスタンスを作るために必要な同一部品の数。
                                      アセンブリの部品情報で数量として使用。 + + + Designation + 必須 + 文字列 + コンポーネントの説明や機能。例: 抵抗の値 "10kΩ" やコンデンサの値 "100nF"。
                                      アセンブリの部品情報で名称として使用。 + + + Supplier and ref + 任意 + 文字列 + 自由形式フィールド。例: 供給元に関する特定の情報を含む場合がある。
                                      アセンブリの部品情報の注記として使用。 + + + + ]]> +
                                      +
                                      diff --git a/translations/messages.nl.xlf b/translations/messages.nl.xlf index f98e9c78..7cca5975 100644 --- a/translations/messages.nl.xlf +++ b/translations/messages.nl.xlf @@ -1150,6 +1150,12 @@ JSON voor assemblage + + + assembly.bom_import.type.csv + CSV voor een assemblage + + assembly.bom_import.type.kicad_pcbnew @@ -1174,6 +1180,12 @@ JSON-sjabloon voor assemblage + + + assembly.import_bom.template.header.csv + CSV-importsjabloon voor een assemblage + + assembly.import_bom.template.header.kicad_pcbnew @@ -1235,22 +1247,24 @@ quantity Verplicht veld Kommagetal (Float) - Moet opgegeven zijn en bevat een kommagetal (Float) dat groter is dan 0,0. + Moet worden ingevuld en een kommagetal (Float) bevatten dat groter is dan 0,0. name Optioneel - String - Indien aanwezig, moet het een niet-lege string zijn. + Tekst + Wanneer ingevuld, moet het een niet-lege tekst zijn. De naam van het item binnen de assemblage. part Optioneel Object/Array - Indien opgegeven, moet het een object/array zijn en ten minste één van de velden ingevuld zijn: + Als een onderdeel moet worden toegewezen, moet dit een object/array zijn en moet ten minste één van de volgende velden worden ingevuld:
                                      • part.id
                                      • +
                                      • part.mpnr
                                      • +
                                      • part.ipn
                                      • part.name
                                      @@ -1258,39 +1272,39 @@ part.id Optioneel - Geheel getal (Integer) - Geheel getal (Integer) > 0. Komt overeen met de interne numerieke ID van het onderdeel in de Part-DB. - - - part.name - Optioneel - String - Niet-lege string, indien geen part.mpnr- of part.ipn-vermelding is gegeven. + Hele getal + Een geheel getal > 0. Komt overeen met de interne numerieke ID van het onderdeel in de database. part.mpnr Optioneel - String - Niet-lege string, indien geen part.name- of part.ipn-vermelding is gegeven. + Tekst + Niet-lege tekst, wanneer part.id, part.ipn of part.name niet zijn ingevuld. part.ipn Optioneel - String - Niet-lege string, indien geen part.name- of part.mpnr-vermelding is gegeven. + Tekst + Niet-lege tekst wanneer part.id, part.mpnr of part.name niet zijn ingevuld. + + + part.name + Optioneel + Tekst + Niet-lege tekst, wanneer part.id, part.mpnr of part.ipn niet zijn ingevuld. part.description Optioneel - String of null - Indien aanwezig, moet het een niet-lege string zijn of null. + Tekst of null + Indien ingevuld, moet het een niet-lege tekst of null zijn. Deze waarde vervangt de bestaande waarde in het onderdeel. part.manufacturer Optioneel Object/Array - Indien aanwezig, moet het een object/array zijn en ten minste één van de velden ingevuld zijn: + Als de fabrikant van het onderdeel moet worden gewijzigd of uniek moet worden opgezocht met de waarde part.mpnr, moet dit een object/array zijn en moet ten minste één van de volgende velden worden ingevuld:
                                      • manufacturer.id
                                      • manufacturer.name
                                      • @@ -1300,21 +1314,21 @@ manufacturer.id Optioneel - Geheel getal (Integer) - Geheel getal (Integer) > 0. Komt overeen met de interne numerieke ID van de fabrikant. + Hele getal + Een geheel getal > 0. Komt overeen met de interne numerieke ID van de fabrikant. manufacturer.name Optioneel - String - Niet-lege string, indien geen manufacturer.id-vermelding is gegeven. + Tekst + Niet-lege tekst als manufacturer.id niet is ingevuld. part.category Optioneel Object/Array - Indien aanwezig, moet het een object/array zijn en ten minste één van de velden ingevuld zijn: + Als de categorie van het onderdeel moet worden gewijzigd, moet dit een object/array zijn en moet ten minste één van de volgende velden worden ingevuld:
                                        • category.id
                                        • category.name
                                        • @@ -1324,14 +1338,139 @@ category.id Optioneel - Geheel getal (Integer) - Geheel getal (Integer) > 0. Komt overeen met de interne numerieke ID van de categorie van het onderdeel. + Hele getal + Een geheel getal > 0. Komt overeen met de interne numerieke ID van de categorie van het onderdeel. category.name Optioneel - String - Niet-lege string, indien geen category.id-vermelding is gegeven. + Tekst + Niet-lege tekst als category.id niet is ingevuld. + + + + ]]> + + + + + + assembly.bom_import.template.csv.exptected_columns + Mogelijke kolommen: + + + + + assembly.bom_import.template.csv.table + + + + + Kolom + Voorwaarde + Gegevenstype + Beschrijving + + + + + quantity + Verplicht veld + Kommagetal (Float) + Moet worden ingevuld en moet een kommagetal (Float) bevatten dat groter is dan 0,0. + + + name + Optioneel + Tekst + De naam van het item binnen de assemblage. + + + Kolommen die beginnen met part_ + + Als een onderdeel moet worden toegewezen, moet ten minste één van de volgende kolommen worden ingevuld: +
                                            +
                                          • part_id
                                          • +
                                          • part_mpnr
                                          • +
                                          • part_ipn
                                          • +
                                          • part_name
                                          • +
                                          + + + + part_id + Optioneel + Hele getal + Een geheel getal > 0. Komt overeen met de interne numerieke ID van het onderdeel in de database. + + + part_mpnr + Optioneel + Tekst + Moet worden ingevuld als part_id, part_ipn of part_name niet zijn ingevuld. + + + part_ipn + Optioneel + Tekst + Moet worden ingevuld als part_id, part_mpnr of part_name niet zijn ingevuld. + + + part_name + Optioneel + Tekst + Moet worden ingevuld als part_id, part_mpnr of part_ipn niet zijn ingevuld. + + + part_description + Optioneel + Tekst + Wordt overgenomen en vervangt de bestaande waarde van de beschrijving als er een niet-lege tekst wordt opgegeven. + + + Kolommen die beginnen met part_manufacturer_ + + Als de fabrikant van een onderdeel moet worden gewijzigd of uniek moet worden gezocht via part_mpnr, moet ten minste één van de volgende kolommen worden ingevuld: +
                                            +
                                          • part_manufacturer_id
                                          • +
                                          • part_manufacturer_name
                                          • +
                                          + + + + part_manufacturer_id + Optioneel + Hele getal + Een geheel getal > 0. Komt overeen met de interne numerieke ID van de fabrikant. + + + part_manufacturer_name + Optioneel + Tekst + Moet worden ingevuld als part_manufacturer_id niet wordt opgegeven. + + + Kolommen die beginnen met part_category_ + + Als de categorie van een onderdeel moet worden gewijzigd, moet ten minste één van de volgende kolommen worden ingevuld: +
                                            +
                                          • part_category_id
                                          • +
                                          • part_category_name
                                          • +
                                          + + + + part_category_id + Optioneel + Hele getal + Een geheel getal > 0. Komt overeen met de interne numerieke ID van de categorie van het onderdeel. + + + part_category_name + Optioneel + Tekst + Moet worden ingevuld als part_category_id niet wordt opgegeven. @@ -1346,71 +1485,71 @@
                                          - - assembly.bom_import.template.kicad_pcbnew.exptected_columns.note - - Opmerking: Er wordt geen mapping uitgevoerd met specifieke componenten uit de categoriebeheer.

                                          - ]]> -
                                          + + assembly.bom_import.template.kicad_pcbnew.exptected_columns.note + + Opmerking: Er wordt geen mapping uitgevoerd met specifieke componenten uit de categoriebeheer.

                                          + ]]> +
                                          - - assembly.bom_import.template.kicad_pcbnew.table - - - - - Veld - Voorwaarde - Gegevenstype - Beschrijving - - - - - Id - Optioneel - Integer - Vrij veld. Een unieke identificatienummer voor elk onderdeel. - - - Designator - Optioneel - String - Vrij veld. Een unieke referentienaam voor het onderdeel op de PCB, bijvoorbeeld "R1" voor weerstand 1.
                                          Wordt gebruikt als positioneringsnaam in de onderdelenlijst van de assemblage. - - - Package - Optioneel - String - Vrij veld. De behuizing of vormfactor van het onderdeel, bijvoorbeeld "0805" voor SMD-weerstanden.
                                          Wordt niet opgenomen in de onderdelenlijst binnen de assemblage. - - - Quantity - Vereist - Integer - Het aantal identieke onderdelen dat nodig is om een assemblage-instantie te creëren.
                                          Wordt gebruikt als hoeveelheid in de onderdelenlijst binnen de assemblage. - - - Designation - Vereist - String - De beschrijving of functie van het onderdeel, zoals weerstandwaarde "10kΩ" of condensatorwaarde "100nF".
                                          Wordt gebruikt als de naam in de onderdelenlijst binnen de assemblage. - - - Supplier and ref - Optioneel - String - Vrij veld. Kan bijvoorbeeld specifieke informatie over leveranciers bevatten.
                                          Wordt gebruikt als notitie in de onderdelenlijst binnen de assemblage. - - - - ]]> -
                                          -
                                          + + assembly.bom_import.template.kicad_pcbnew.table + + + + + Veld + Voorwaarde + Gegevenstype + Beschrijving + + + + + Id + Optioneel + Integer + Vrij veld. Een unieke identificatienummer voor elk onderdeel. + + + Designator + Optioneel + String + Vrij veld. Een unieke referentienaam voor het onderdeel op de PCB, bijvoorbeeld "R1" voor weerstand 1.
                                          Wordt gebruikt als positioneringsnaam in de onderdelenlijst van de assemblage. + + + Package + Optioneel + String + Vrij veld. De behuizing of vormfactor van het onderdeel, bijvoorbeeld "0805" voor SMD-weerstanden.
                                          Wordt niet opgenomen in de onderdelenlijst binnen de assemblage. + + + Quantity + Vereist + Integer + Het aantal identieke onderdelen dat nodig is om een assemblage-instantie te creëren.
                                          Wordt gebruikt als hoeveelheid in de onderdelenlijst binnen de assemblage. + + + Designation + Vereist + String + De beschrijving of functie van het onderdeel, zoals weerstandwaarde "10kΩ" of condensatorwaarde "100nF".
                                          Wordt gebruikt als de naam in de onderdelenlijst binnen de assemblage. + + + Supplier and ref + Optioneel + String + Vrij veld. Kan bijvoorbeeld specifieke informatie over leveranciers bevatten.
                                          Wordt gebruikt als notitie in de onderdelenlijst binnen de assemblage. + + + + ]]> +
                                          +
                                          diff --git a/translations/messages.pl.xlf b/translations/messages.pl.xlf index d1a09507..86894d99 100644 --- a/translations/messages.pl.xlf +++ b/translations/messages.pl.xlf @@ -12613,6 +12613,12 @@ Należy pamiętać, że nie możesz udawać nieaktywnych użytkowników. Jeśli JSON dla zespołu + + + assembly.bom_import.type.csv + CSV dla zestawienia + + assembly.bom_import.type.kicad_pcbnew @@ -12637,6 +12643,12 @@ Należy pamiętać, że nie możesz udawać nieaktywnych użytkowników. Jeśli Szablon importu JSON dla zespołu + + + assembly.import_bom.template.header.csv + Szablon importu CSV dla zespołu + + assembly.import_bom.template.header.kicad_pcbnew @@ -12696,24 +12708,26 @@ Należy pamiętać, że nie możesz udawać nieaktywnych użytkowników. Jeśli quantity - Wymagane - Typ zmiennoprzecinkowy (Float) - Musi być obecne i zawierać wartość zmiennoprzecinkową (Float) większą niż 0,0. + Pole obowiązkowe + Liczba zmiennoprzecinkowa (Float) + Musi być wypełnione i zawierać liczbę zmiennoprzecinkową (Float) większą niż 0,0. name Opcjonalne - Ciąg znaków (String) - Jeśli obecne, musi być niepustym ciągiem znaków. + Tekst + Jeśli określono, musi to być niepusty tekst. Nazwa elementu w ramach montażu. part Opcjonalne Obiekt/Tablica - Jeśli podane, musi być obiektem/tablicą i co najmniej jedno z poniższych pól musi być wypełnione: + Jeśli konieczne jest przypisanie części, musi to być Obiekt/Tablica, a przynajmniej jedno z poniższych pól powinno być wypełnione:
                                          • part.id
                                          • +
                                          • part.mpnr
                                          • +
                                          • part.ipn
                                          • part.name
                                          @@ -12721,39 +12735,39 @@ Należy pamiętać, że nie możesz udawać nieaktywnych użytkowników. Jeśli part.id Opcjonalne - Liczba całkowita (Integer) - Liczba całkowita (Integer) > 0. Odpowiada wewnętrznemu numerowi ID komponentu w Part-DB. - - - part.name - Opcjonalne - Ciąg znaków (String) - Niepusty ciąg znaków, jeśli part.mpnr ani part.ipn nie są podane. + Liczba całkowita + Liczba całkowita > 0. Odpowiada wewnętrznemu numerycznemu ID części w bazie danych. part.mpnr Opcjonalne - Ciąg znaków (String) - Niepusty ciąg znaków, jeśli part.name ani part.ipn nie są podane. + Tekst + Niepusty tekst, jeśli pola part.id, part.ipn lub part.name nie są wypełnione. part.ipn Opcjonalne - Ciąg znaków (String) - Niepusty ciąg znaków, jeśli part.name ani part.mpnr nie są podane. + Tekst + Niepusty tekst, jeśli pola part.id, part.mpnr lub part.name nie są wypełnione. + + + part.name + Opcjonalne + Tekst + Niepusty tekst, jeśli pola part.id, part.mpnr lub part.ipn nie są wypełnione. part.description Opcjonalne - Ciąg znaków lub null - Jeśli obecne, musi być niepustym ciągiem znaków lub null. + Tekst lub null + Jeśli określono, musi to być niepusty tekst lub null. Ta wartość nadpisze istniejącą wartość w części. part.manufacturer Opcjonalne Obiekt/Tablica - Jeśli obecne, musi być obiektem/tablicą i co najmniej jedno z poniższych pól musi być wypełnione: + Jeśli producent części ma zostać zmieniony lub wyszukany unikalnie za pomocą wartości part.mpnr, musi to być Obiekt/Tablica i przynajmniej jedno z poniższych pól powinno być wypełnione:
                                          • manufacturer.id
                                          • manufacturer.name
                                          • @@ -12763,21 +12777,21 @@ Należy pamiętać, że nie możesz udawać nieaktywnych użytkowników. Jeśli manufacturer.id Opcjonalne - Liczba całkowita (Integer) - Liczba całkowita (Integer) > 0. Odpowiada wewnętrznemu identyfikatorowi numerowemu producenta. + Liczba całkowita + Liczba całkowita > 0. Odpowiada wewnętrznemu numerycznemu ID producenta. manufacturer.name Opcjonalne - Ciąg znaków (String) - Niepusty ciąg znaków, jeśli manufacturer.id nie jest podane. + Tekst + Niepusty tekst, jeśli pole manufacturer.id nie jest wypełnione. part.category Opcjonalne Obiekt/Tablica - Jeśli obecne, musi być obiektem/tablicą i co najmniej jedno z poniższych pól musi być wypełnione: + Jeśli konieczna jest zmiana kategorii części, musi to być Obiekt/Tablica i przynajmniej jedno z poniższych pól powinno być wypełnione:
                                            • category.id
                                            • category.name
                                            • @@ -12787,14 +12801,139 @@ Należy pamiętać, że nie możesz udawać nieaktywnych użytkowników. Jeśli category.id Opcjonalne - Liczba całkowita (Integer) - Liczba całkowita (Integer) > 0. Odpowiada wewnętrznemu numerowi ID kategorii komponentu. + Liczba całkowita + Liczba całkowita > 0. Odpowiada wewnętrznemu numerycznemu ID kategorii części. category.name Opcjonalne - Ciąg znaków (String) - Niepusty ciąg znaków, jeśli category.id nie jest podane. + Tekst + Niepusty tekst, jeśli pole category.id nie jest wypełnione. + + + + ]]> + + + + + + assembly.bom_import.template.csv.exptected_columns + Możliwe kolumny: + + + + + assembly.bom_import.template.csv.table + + + + + Kolumna + Warunek + Typ danych + Opis + + + + + quantity + Pole obowiązkowe + Liczba zmiennoprzecinkowa (Float) + Musi być wypełnione i zawierać liczbę zmiennoprzecinkową (Float) większą niż 0,0. + + + name + Opcjonalne + Tekst + Nazwa elementu w ramach montażu. + + + Kolumny zaczynające się od part_ + + Jeśli konieczne jest przypisanie części, przynajmniej jedna z poniższych kolumn powinna być wypełniona: +
                                                +
                                              • part_id
                                              • +
                                              • part_mpnr
                                              • +
                                              • part_ipn
                                              • +
                                              • part_name
                                              • +
                                              + + + + part_id + Opcjonalne + Liczba całkowita + Liczba całkowita > 0. Odpowiada wewnętrznemu numerycznemu ID części w bazie danych. + + + part_mpnr + Opcjonalne + Tekst + Musi być wypełnione, gdy kolumny part_id, part_ipn lub part_name nie są wypełnione. + + + part_ipn + Opcjonalne + Tekst + Musi być wypełnione, gdy kolumny part_id, part_mpnr lub part_name nie są wypełnione. + + + part_name + Opcjonalne + Tekst + Musi być wypełnione, gdy kolumny part_id, part_mpnr lub part_ipn nie są wypełnione. + + + part_description + Opcjonalne + Tekst + Zostanie przeniesione i zastąpi istniejącą wartość opisu, jeśli określono niepusty tekst. + + + Kolumny zaczynające się od part_manufacturer_ + + Jeśli producent części musi zostać zmieniony lub wyszukany unikalnie za pomocą part_mpnr, przynajmniej jedna z poniższych kolumn powinna być wypełniona: +
                                                +
                                              • part_manufacturer_id
                                              • +
                                              • part_manufacturer_name
                                              • +
                                              + + + + part_manufacturer_id + Opcjonalne + Liczba całkowita + Liczba całkowita > 0. Odpowiada wewnętrznemu numerycznemu ID producenta. + + + part_manufacturer_name + Opcjonalne + Tekst + Musi być wypełnione, jeśli part_manufacturer_id nie jest określony. + + + Kolumny zaczynające się od part_category_ + + Jeśli konieczna jest zmiana kategorii części, przynajmniej jedna z poniższych kolumn powinna być wypełniona: +
                                                +
                                              • part_category_id
                                              • +
                                              • part_category_name
                                              • +
                                              + + + + part_category_id + Opcjonalne + Liczba całkowita + Liczba całkowita > 0. Odpowiada wewnętrznemu numerycznemu ID kategorii części. + + + part_category_name + Opcjonalne + Tekst + Musi być wypełnione, jeśli part_category_id nie jest określone. @@ -12809,71 +12948,71 @@ Należy pamiętać, że nie możesz udawać nieaktywnych użytkowników. Jeśli
                                              - - assembly.bom_import.template.kicad_pcbnew.exptected_columns.note - - Uwaga: Nie wykonano mapowania z określonymi komponentami z zarządzania kategoriami.

                                              - ]]> -
                                              -
                                              + + assembly.bom_import.template.kicad_pcbnew.exptected_columns.note + + Uwaga: Nie wykonano mapowania z określonymi komponentami z zarządzania kategoriami.

                                              + ]]> +
                                              +
                                              - - assembly.bom_import.template.kicad_pcbnew.table - - - - - Pole - Warunek - Typ Danych - Opis - - - - - Id - Opcjonalne - Liczba całkowita - Pole dowolne. Unikalny numer identyfikacyjny dla każdego komponentu. - - - Designator - Opcjonalne - Tekst - Pole dowolne. Jednoznaczny znacznik referencyjny komponentu na PCB, np. "R1" dla rezystora 1.
                                              Używane jako nazwa pozycji w pozycji komponentu w montażu. - - - Package - Opcjonalne - Tekst - Pole dowolne. Obudowa lub forma komponentu, np. "0805" dla rezystorów SMD.
                                              Niewykorzystywane w pozycji komponentu w montażu. - - - Quantity - Wymagane - Liczba całkowita - Liczba identycznych komponentów potrzebna do utworzenia jednej instancji montażu.
                                              Używane jako ilość w pozycji komponentu w montażu. - - - Designation - Wymagane - Tekst - Opis lub funkcja komponentu, np. wartość rezystora "10kΩ" lub wartość kondensatora "100nF".
                                              Używane jako nazwa w pozycji komponentu w montażu. - - - Supplier and ref - Opcjonalne - Tekst - Pole dowolne. Może zawierać np. specyficzne informacje o dostawcy.
                                              Używane jako notatka w pozycji komponentu w montażu. - - - - ]]> -
                                              -
                                              + + assembly.bom_import.template.kicad_pcbnew.table + + + + + Pole + Warunek + Typ Danych + Opis + + + + + Id + Opcjonalne + Liczba całkowita + Pole dowolne. Unikalny numer identyfikacyjny dla każdego komponentu. + + + Designator + Opcjonalne + Tekst + Pole dowolne. Jednoznaczny znacznik referencyjny komponentu na PCB, np. "R1" dla rezystora 1.
                                              Używane jako nazwa pozycji w pozycji komponentu w montażu. + + + Package + Opcjonalne + Tekst + Pole dowolne. Obudowa lub forma komponentu, np. "0805" dla rezystorów SMD.
                                              Niewykorzystywane w pozycji komponentu w montażu. + + + Quantity + Wymagane + Liczba całkowita + Liczba identycznych komponentów potrzebna do utworzenia jednej instancji montażu.
                                              Używane jako ilość w pozycji komponentu w montażu. + + + Designation + Wymagane + Tekst + Opis lub funkcja komponentu, np. wartość rezystora "10kΩ" lub wartość kondensatora "100nF".
                                              Używane jako nazwa w pozycji komponentu w montażu. + + + Supplier and ref + Opcjonalne + Tekst + Pole dowolne. Może zawierać np. specyficzne informacje o dostawcy.
                                              Używane jako notatka w pozycji komponentu w montażu. + + + + ]]> +
                                              +
                                              diff --git a/translations/messages.ru.xlf b/translations/messages.ru.xlf index 429a82ec..ac04ed29 100644 --- a/translations/messages.ru.xlf +++ b/translations/messages.ru.xlf @@ -12713,6 +12713,12 @@ JSON для сборки + + + assembly.bom_import.type.csv + CSV для сборки + + assembly.bom_import.type.kicad_pcbnew @@ -12737,6 +12743,12 @@ Шаблон импорта JSON для сборки + + + assembly.import_bom.template.header.csv + Шаблон импорта CSV для сборки + + assembly.import_bom.template.header.kicad_pcbnew @@ -12796,64 +12808,66 @@ quantity - Обязательное - Дробное число (Float) - Поле должно быть заполнено и содержать дробное значение (Float), большее 0,0. + Обязательное поле + Число с плавающей точкой (Float) + Должно быть заполнено и содержать число с плавающей точкой (Float) больше 0,0. name - Опциональное - Строка (String) - Если присутствует, должно быть непустой строкой. + Необязательное + Строка + Если указано, должно быть непустой строкой. Имя элемента внутри сборки. part - Опциональное + Необязательное Объект/Массив - Если указано, должно быть объектом/массивом, и хотя бы одно из следующих полей должно быть заполнено: + Если необходимо назначить деталь, это должен быть объект/массив, и должно быть заполнено хотя бы одно из следующих полей:
                                              • part.id
                                              • +
                                              • part.mpnr
                                              • +
                                              • part.ipn
                                              • part.name
                                              part.id - Опциональное - Целое число (Integer) - Целое число (Integer) > 0. Соответствует внутреннему цифровому идентификатору компонента в Part-DB. - - - part.name - Опциональное - Строка (String) - Непустая строка, если part.mpnr или part.ipn не указаны. + Необязательное + Целое число + Целое число > 0. Соответствует внутреннему числовому идентификатору детали в базе данных. part.mpnr - Опциональное - Строка (String) - Непустая строка, если part.name или part.ipn не указаны. + Необязательное + Строка + Непустая строка, если part.id, part.ipn или part.name не указаны. part.ipn - Опциональное - Строка (String) - Непустая строка, если part.name или part.mpnr не указаны. + Необязательное + Строка + Непустая строка, если part.id, part.mpnr или part.name не указаны. + + + part.name + Необязательное + Строка + Непустая строка, если part.id, part.mpnr или part.ipn не указаны. part.description - Опциональное + Необязательное Строка или null - Если присутствует, должно быть непустой строкой или null. + Если указано, должно быть непустой строкой или null. Это значение перезаписывает существующее значение в детали. part.manufacturer - Опциональное + Необязательное Объект/Массив - Если присутствует, должно быть объектом/массивом, и хотя бы одно из следующих полей должно быть заполнено: + Если необходимо изменить производителя детали или уникально найти по значению part.mpnr, это должен быть объект/массив, и должно быть заполнено хотя бы одно из следующих полей:
                                              • manufacturer.id
                                              • manufacturer.name
                                              • @@ -12862,22 +12876,22 @@ manufacturer.id - Опциональное - Целое число (Integer) - Целое число (Integer) > 0. Соответствует внутреннему идентификатору производителя. + Необязательное + Целое число + Целое число > 0. Соответствует внутреннему числовому идентификатору производителя. manufacturer.name - Опциональное - Строка (String) + Необязательное + Строка Непустая строка, если manufacturer.id не указано. part.category - Опциональное + Необязательное Объект/Массив - Если присутствует, должно быть объектом/массивом, и хотя бы одно из следующих полей должно быть заполнено: + Если необходимо изменить категорию детали, это должен быть объект/массив, и должно быть заполнено хотя бы одно из следующих полей:
                                                • category.id
                                                • category.name
                                                • @@ -12886,14 +12900,14 @@ category.id - Опциональное - Целое число (Integer) - Целое число (Integer) > 0. Соответствует внутреннему цифровому идентификатору категории компонента. + Необязательное + Целое число + Целое число > 0. Соответствует внутреннему числовому идентификатору категории детали. category.name - Опциональное - Строка (String) + Необязательное + Строка Непустая строка, если category.id не указано. @@ -12902,6 +12916,131 @@ + + + assembly.bom_import.template.csv.exptected_columns + Возможные столбцы: + + + + + assembly.bom_import.template.csv.table + + + + + Столбец + Условие + Тип данных + Описание + + + + + quantity + Обязательное поле + Число с плавающей точкой (Float) + Должно быть заполнено и содержать число с плавающей точкой (Float), больше 0,0. + + + name + Необязательное + Строка + Название элемента в рамках сборки. + + + Столбцы, начинающиеся с part_ + + Если необходимо назначить деталь, то хотя бы один из следующих столбцов должен быть заполнен: +
                                                    +
                                                  • part_id
                                                  • +
                                                  • part_mpnr
                                                  • +
                                                  • part_ipn
                                                  • +
                                                  • part_name
                                                  • +
                                                  + + + + part_id + Необязательное + Целое число + Целое число > 0. Соответствует внутреннему числовому ID детали в базе данных. + + + part_mpnr + Необязательное + Строка + Должно быть заполнено, если part_id, part_ipn или part_name не указаны. + + + part_ipn + Необязательное + Строка + Должно быть заполнено, если part_id, part_mpnr или part_name не указаны. + + + part_name + Необязательное + Строка + Должно быть заполнено, если part_id, part_mpnr или part_ipn не указаны. + + + part_description + Необязательное + Строка + Если указано, заменяет существующее значение описания деталя не пустой строкой. + + + Столбцы, начинающиеся с part_manufacturer_ + + Если необходимо указать производителя детали или найти деталь уникально по part_mpnr, должно быть заполнено хотя бы одно из следующих полей: +
                                                    +
                                                  • part_manufacturer_id
                                                  • +
                                                  • part_manufacturer_name
                                                  • +
                                                  + + + + part_manufacturer_id + Необязательное + Целое число + Целое число > 0. Соответствует внутреннему числовому ID производителя. + + + part_manufacturer_name + Необязательное + Строка + Должно быть заполнено, если part_manufacturer_id не указано. + + + Столбцы, начинающиеся с part_category_ + + Если необходимо изменить категорию детали, должно быть заполнено хотя бы одно из следующих полей: +
                                                    +
                                                  • part_category_id
                                                  • +
                                                  • part_category_name
                                                  • +
                                                  + + + + part_category_id + Необязательное + Целое число + Целое число > 0. Соответствует внутреннему числовому ID категории детали. + + + part_category_name + Необязательное + Строка + Должно быть заполнено, если part_category_id не указано. + + + + ]]> +
                                                  +
                                                  +
                                                  assembly.bom_import.template.kicad_pcbnew.exptected_columns @@ -12909,71 +13048,71 @@ - - assembly.bom_import.template.kicad_pcbnew.exptected_columns.note - - Примечание: Сопоставление с конкретными компонентами из управления категориями не выполняется.

                                                  - ]]> -
                                                  -
                                                  + + assembly.bom_import.template.kicad_pcbnew.exptected_columns.note + + Примечание: Сопоставление с конкретными компонентами из управления категориями не выполняется.

                                                  + ]]> +
                                                  +
                                                  - - assembly.bom_import.template.kicad_pcbnew.table - - - - - Поле - Условие - Тип данных - Описание - - - - - Id - Опционально - Целое - Свободное поле. Уникальный идентификационный номер для каждого компонента. - - - Package - Designator - Строка - Свободное поле. Уникальная ссылочная метка компонента на печатной плате, например, "R1" для резистора 1.
                                                  Используется как наименование позиции в компоненте сборки. - - - Package - Опционально - Строка - Свободное поле. Тип корпуса или форм-фактор компонента, например, "0805" для SMD-резисторов.
                                                  Не включается в информацию о компоненте сборки. - - - Quantity - Обязательно - Целое - Количество одинаковых компонентов, необходимых для создания одной версии сборки.
                                                  Используется как количество в информации о компоненте сборки. - - - Designation - Обязательно - Строка - Описание или функция компонента, например, значение резистора "10kΩ" или значение конденсатора "100nF".
                                                  Используется как наименование в информации о компоненте сборки. - - - Supplier and ref - Опционально - Строка - Свободное поле. Может содержать, например, информацию о конкретных поставщиках.
                                                  Используется как примечание в информации о компоненте сборки. - - - - ]]> -
                                                  -
                                                  + + assembly.bom_import.template.kicad_pcbnew.table + + + + + Поле + Условие + Тип данных + Описание + + + + + Id + Опционально + Целое + Свободное поле. Уникальный идентификационный номер для каждого компонента. + + + Package + Designator + Строка + Свободное поле. Уникальная ссылочная метка компонента на печатной плате, например, "R1" для резистора 1.
                                                  Используется как наименование позиции в компоненте сборки. + + + Package + Опционально + Строка + Свободное поле. Тип корпуса или форм-фактор компонента, например, "0805" для SMD-резисторов.
                                                  Не включается в информацию о компоненте сборки. + + + Quantity + Обязательно + Целое + Количество одинаковых компонентов, необходимых для создания одной версии сборки.
                                                  Используется как количество в информации о компоненте сборки. + + + Designation + Обязательно + Строка + Описание или функция компонента, например, значение резистора "10kΩ" или значение конденсатора "100nF".
                                                  Используется как наименование в информации о компоненте сборки. + + + Supplier and ref + Опционально + Строка + Свободное поле. Может содержать, например, информацию о конкретных поставщиках.
                                                  Используется как примечание в информации о компоненте сборки. + + + + ]]> +
                                                  +
                                                  diff --git a/translations/messages.zh.xlf b/translations/messages.zh.xlf index 7e90daa2..42656622 100644 --- a/translations/messages.zh.xlf +++ b/translations/messages.zh.xlf @@ -12598,6 +12598,12 @@ Element 3 JSON 文件(组件) + + + assembly.bom_import.type.csv + 装配的CSV + + assembly.bom_import.type.kicad_pcbnew @@ -12622,6 +12628,12 @@ Element 3 装配 JSON 导入模板 + + + assembly.import_bom.template.header.csv + 用于装配的CSV导入模板 + + assembly.import_bom.template.header.kicad_pcbnew @@ -12681,24 +12693,26 @@ Element 3 quantity - 必填 + 必填字段 浮点数 (Float) - 必须存在,并包含大于 0.0 的浮点值 (Float)。 + 必须填写且包含大于 0.0 的浮点数 (Float)。 name 可选 - 字符串 (String) - 如果存在,必须是非空字符串。 + 文本 + 如果填写,必须是非空文本。表示装配中的项目名称。 part 可选 对象/数组 - 如果提供,则必须是对象/数组,并且以下字段中至少有一个被填写: + 如果需要分配零件,它必须是一个对象/数组,并且至少需要填写以下字段之一:
                                                  • part.id
                                                  • +
                                                  • part.mpnr
                                                  • +
                                                  • part.ipn
                                                  • part.name
                                                  @@ -12706,39 +12720,39 @@ Element 3 part.id 可选 - 整数 (Integer) - 整数 (Integer) > 0。表示组件在 Part-DB 中的内部数字 ID。 - - - part.name - 可选 - 字符串 (String) - 如果未提供 part.mpnr 或 part.ipn,则必须是非空字符串。 + 整数 + 一个大于 0 的整数。对应数据库中零件的内部数字ID。 part.mpnr 可选 - 字符串 (String) - 如果未提供 part.name 或 part.ipn,则必须是非空字符串。 + 文本 + 如果 part.id、part.ipn 或 part.name 未填写,则必须是非空文本。 part.ipn 可选 - 字符串 (String) - 如果未提供 part.name 或 part.mpnr,则必须是非空字符串。 + 文本 + 如果 part.id、part.mpnr 或 part.name 未填写,则必须是非空文本。 + + + part.name + 可选 + 文本 + 如果 part.id、part.mpnr 或 part.ipn 未填写,则必须是非空文本。 part.description 可选 - 字符串或 null - 如果存在,必须是非空字符串或 null。 + 文本或 null + 如果填写,必须是非空文本或 null。该值将替换零件中的现有值。 part.manufacturer 可选 对象/数组 - 如果存在,则必须是对象/数组,并且以下字段中至少有一个被填写: + 如果需要更改零件制造商或通过值 part.mpnr 唯一查找零件,它必须是一个对象/数组,并且至少需要填写以下字段之一:
                                                  • manufacturer.id
                                                  • manufacturer.name
                                                  • @@ -12748,21 +12762,21 @@ Element 3 manufacturer.id 可选 - 整数 (Integer) - 整数 (Integer) > 0。表示制造商的内部数字 ID。 + 整数 + 一个大于 0 的整数。对应制造商的内部数字 ID。 manufacturer.name 可选 - 字符串 (String) - 如果未提供 manufacturer.id,则必须是非空字符串。 + 文本 + 如果 manufacturer.id 未填写,则必须是非空文本。 part.category 可选 对象/数组 - 如果存在,则必须是对象/数组,并且以下字段中至少有一个被填写: + 如果需要更改零件的类别,它必须是一个对象/数组,并且至少需要填写以下字段之一:
                                                    • category.id
                                                    • category.name
                                                    • @@ -12772,14 +12786,139 @@ Element 3 category.id 可选 - 整数 (Integer) - 整数 (Integer) > 0。表示组件类别的内部数字 ID。 + 整数 + 一个大于 0 的整数。对应零件类别的内部数字 ID。 category.name 可选 - 字符串 (String) - 如果未提供 category.id,则必须是非空字符串。 + 文本 + 如果 category.id 未填写,则必须是非空文本。 + + + + ]]> + + + + + + assembly.bom_import.template.csv.exptected_columns + 可用列: + + + + + assembly.bom_import.template.csv.table + + + + + 列名 + 条件 + 数据类型 + 描述 + + + + + quantity + 必填字段 + 浮点数 (Float) + 必须填写且包含大于 0.0 的浮点数 (Float)。 + + + name + 可选 + 文本 + 装配中的项目名称。 + + + 以 part_ 开头的列 + + 如果需要分配零件,则至少需要填写以下列之一: +
                                                        +
                                                      • part_id
                                                      • +
                                                      • part_mpnr
                                                      • +
                                                      • part_ipn
                                                      • +
                                                      • part_name
                                                      • +
                                                      + + + + part_id + 可选 + 整数 + 一个大于 0 的整数。对应数据库中零件的内部数字 ID。 + + + part_mpnr + 可选 + 文本 + 如果 part_id、part_ipn 或 part_name 未填写,则必须是非空文本。 + + + part_ipn + 可选 + 文本 + 如果 part_id、part_mpnr 或 part_name 未填写,则必须是非空文本。 + + + part_name + 可选 + 文本 + 如果 part_id、part_mpnr 或 part_ipn 未填写,则必须是非空文本。 + + + part_description + 可选 + 文本 + 如果指定,将取代现有描述值,且必须为非空文本。 + + + 以 part_manufacturer_ 开头的列 + + 如果需要更改零件的制造商或通过 part_mpnr 唯一查找,至少需要填写以下列之一: +
                                                        +
                                                      • part_manufacturer_id
                                                      • +
                                                      • part_manufacturer_name
                                                      • +
                                                      + + + + part_manufacturer_id + 可选 + 整数 + 一个大于 0 的整数。对应制造商的内部数字 ID。 + + + part_manufacturer_name + 可选 + 文本 + 如果 part_manufacturer_id 未填写,则必须是非空文本。 + + + 以 part_category_ 开头的列 + + 如果需要更改零件的类别,则至少需要填写以下列之一: +
                                                        +
                                                      • part_category_id
                                                      • +
                                                      • part_category_name
                                                      • +
                                                      + + + + part_category_id + 可选 + 整数 + 一个大于 0 的整数。对应零件类别的内部数字 ID。 + + + part_category_name + 可选 + 文本 + 如果 part_category_id 未填写,则必须是非空文本。 diff --git a/translations/validators.cs.xlf b/translations/validators.cs.xlf index 46471d02..699b5d2f 100644 --- a/translations/validators.cs.xlf +++ b/translations/validators.cs.xlf @@ -371,6 +371,18 @@ Neplatný kód. Zkontrolujte, zda je vaše ověřovací aplikace správně nastavena a zda je čas správně nastaven jak na serveru, tak na ověřovacím zařízení.
                                                      + + + validator.bom_importer.invalid_import_type + Neplatný typ importu! + + + + + validator.bom_importer.invalid_file_extension + Neplatná přípona souboru "%extension%" pro typ importu "%importType%". Povolené přípony souborů: %allowedExtensions%. + + assembly.bom_entry.part_already_in_bom @@ -389,57 +401,57 @@ Musíte vybrat součást nebo nastavit název pro nesoučást! - + - validator.bom_importer.json.quantity.required + validator.bom_importer.json_csv.quantity.required Musíte zadat množství > 0! - + - validator.bom_importer.json.quantity.float + validator.bom_importer.json_csv.quantity.float očekává se jako float větší než 0,0 - + - validator.bom_importer.json.parameter.string.notEmpty + validator.bom_importer.json_csv.parameter.string.notEmpty očekává se jako neprázdný řetězec - + - validator.bom_importer.json.parameter.string.notEmpty.null + validator.bom_importer.json_csv.parameter.string.notEmpty.null očekává se jako neprázdný řetězec nebo null - + - validator.bom_importer.json.parameter.array + validator.bom_importer.json_csv.parameter.array očekává se jako pole (array) - + - validator.bom_importer.json.parameter.subproperties + validator.bom_importer.json_csv.parameter.subproperties musí mít alespoň jeden z následujících pod-parametrů: %propertyString% - + - validator.bom_importer.json.parameter.notFoundFor + validator.bom_importer.json_csv.parameter.notFoundFor nenalezeno pro %value% - + - validator.bom_importer.json.parameter.noExactMatch + validator.bom_importer.json_csv.parameter.noExactMatch se přesně neshoduje. Pro import zadáno: %importValue%, nalezeno (%foundId%): %foundValue% - + - validator.bom_importer.json.parameter.manufacturerOrCategoryWithSubProperties + validator.bom_importer.json_csv.parameter.manufacturerOrCategoryWithSubProperties musí obsahovat jako pod-parametr buď: "id" jako celé číslo větší než 0 nebo "name" jako neprázdný řetězec diff --git a/translations/validators.da.xlf b/translations/validators.da.xlf index 88ec6784..056871bb 100644 --- a/translations/validators.da.xlf +++ b/translations/validators.da.xlf @@ -347,6 +347,18 @@ Denne leverandørstregkodeværdi er allerede brugt til en anden beholdning. Stregkoden skal være unik! + + + validator.bom_importer.invalid_import_type + Ugyldig importtype! + + + + + validator.bom_importer.invalid_file_extension + Ugyldig filtypenavn "%extension%" for importtypen "%importType%". Tilladte filtypenavne: %allowedExtensions%. + + assembly.bom_entry.part_already_in_bom @@ -365,57 +377,57 @@ Du skal vælge en del eller sætte et navn for en ikke-del! - + - validator.bom_importer.json.quantity.required + validator.bom_importer.json_csv.quantity.required Du skal angive en mængde > 0! - + - validator.bom_importer.json.quantity.float + validator.bom_importer.json_csv.quantity.float forventet som en float større end 0,0 - + - validator.bom_importer.json.parameter.string.notEmpty + validator.bom_importer.json_csv.parameter.string.notEmpty forventet som en ikke-tom streng - + - validator.bom_importer.json.parameter.string.notEmpty.null + validator.bom_importer.json_csv.parameter.string.notEmpty.null forventet som en ikke-tom streng eller null - + - validator.bom_importer.json.parameter.array + validator.bom_importer.json_csv.parameter.array forventet som en array - + - validator.bom_importer.json.parameter.subproperties + validator.bom_importer.json_csv.parameter.subproperties skal have mindst én af følgende underparametre: %propertyString% - + - validator.bom_importer.json.parameter.notFoundFor + validator.bom_importer.json_csv.parameter.notFoundFor ikke fundet for %value% - + - validator.bom_importer.json.parameter.noExactMatch + validator.bom_importer.json_csv.parameter.noExactMatch stemmer ikke helt overens. Givet til import: %importValue%, fundet (%foundId%): %foundValue% - + - validator.bom_importer.json.parameter.manufacturerOrCategoryWithSubProperties + validator.bom_importer.json_csv.parameter.manufacturerOrCategoryWithSubProperties skal indeholde som en underparameter enten: "id" som et heltal større end 0 eller "name" som en ikke-tom streng diff --git a/translations/validators.de.xlf b/translations/validators.de.xlf index 6e03e870..822ddaae 100644 --- a/translations/validators.de.xlf +++ b/translations/validators.de.xlf @@ -371,6 +371,18 @@ Ungültiger Code. Überprüfen Sie, ob die Authenticator App korrekt eingerichtet ist und ob der Server und das Gerät beide die korrekte Uhrzeit eingestellt haben. + + + validator.bom_importer.invalid_import_type + Ungültiger Importtyp! + + + + + validator.bom_importer.invalid_file_extension + Ungültige Dateierweiterung "%extension%" für den Importtyp "%importType%". Erlaubte Dateierweiterungen: %allowedExtensions%. + + assembly.bom_entry.part_already_in_bom @@ -389,57 +401,57 @@ Sie müssen ein Bauteil auswählen, oder einen Namen für den Eintrag setzen! - + - validator.bom_importer.json.quantity.required + validator.bom_importer.json_csv.quantity.required Sie müssen eine Stückzahl > 0 angeben! - + - validator.bom_importer.json.quantity.float + validator.bom_importer.json_csv.quantity.float wird als float größer als 0.0 erwartet - + - validator.bom_importer.json.parameter.string.notEmpty + validator.bom_importer.json_csv.parameter.string.notEmpty als nicht leere Zeichenkette erwartet - + - validator.bom_importer.json.parameter.string.notEmpty.null + validator.bom_importer.json_csv.parameter.string.notEmpty.null als nicht leere Zeichenkette oder null erwartet - + - validator.bom_importer.json.parameter.array + validator.bom_importer.json_csv.parameter.array als array erwartet - + - validator.bom_importer.json.parameter.subproperties + validator.bom_importer.json_csv.parameter.subproperties muss mindestens eines der folgenden Unter-Parameter haben: %propertyString% - + - validator.bom_importer.json.parameter.notFoundFor + validator.bom_importer.json_csv.parameter.notFoundFor nicht gefunden für %value% - + - validator.bom_importer.json.parameter.noExactMatch + validator.bom_importer.json_csv.parameter.noExactMatch stimmt nicht genau überein. Für den Import gegeben: %importValue%, gefunden (%foundId%): %foundValue% - + - validator.bom_importer.json.parameter.manufacturerOrCategoryWithSubProperties + validator.bom_importer.json_csv.parameter.manufacturerOrCategoryWithSubProperties muss entweder als Unter-Parameter zugewiesen haben: "id" als Ganzzahl größer als 0 oder "name" als nicht leere Zeichenfolge diff --git a/translations/validators.el.xlf b/translations/validators.el.xlf index 318ba892..bb78c799 100644 --- a/translations/validators.el.xlf +++ b/translations/validators.el.xlf @@ -13,6 +13,18 @@ Det er kun tilladt at vælge én del eller en samling. Venligst tilpas dit valg! + + + validator.bom_importer.invalid_import_type + Μη έγκυρος τύπος εισαγωγής! + + + + + validator.bom_importer.invalid_file_extension + Μη έγκυρη επέκταση αρχείου "%extension%" για τον τύπο εισαγωγής "%importType%". Επιτρεπόμενες επεκτάσεις αρχείων: %allowedExtensions%. + + assembly.bom_entry.part_already_in_bom @@ -31,57 +43,57 @@ Πρέπει να επιλέξετε ένα εξάρτημα ή να βάλετε ένα όνομα για ένα μη εξάρτημα! - + - validator.bom_importer.json.quantity.required + validator.bom_importer.json_csv.quantity.required Πρέπει να εισαγάγετε ποσότητα > 0! - + - validator.bom_importer.json.quantity.float + validator.bom_importer.json_csv.quantity.float αναμένεται ως δεκαδικός αριθμός (float) μεγαλύτερος από 0,0 - + - validator.bom_importer.json.parameter.string.notEmpty + validator.bom_importer.json_csv.parameter.string.notEmpty αναμένεται ως μη κενή συμβολοσειρά - + - validator.bom_importer.json.parameter.string.notEmpty.null + validator.bom_importer.json_csv.parameter.string.notEmpty.null αναμένεται ως μη κενή συμβολοσειρά ή null - + - validator.bom_importer.json.parameter.array + validator.bom_importer.json_csv.parameter.array αναμένεται ως array - + - validator.bom_importer.json.parameter.subproperties + validator.bom_importer.json_csv.parameter.subproperties πρέπει να έχει τουλάχιστον μία από τις ακόλουθες υπο-παραμέτρους: %propertyString% - + - validator.bom_importer.json.parameter.notFoundFor + validator.bom_importer.json_csv.parameter.notFoundFor δεν βρέθηκε για %value% - + - validator.bom_importer.json.parameter.noExactMatch + validator.bom_importer.json_csv.parameter.noExactMatch δεν ταιριάζει απόλυτα. Δόθηκε για εισαγωγή: %importValue%, βρέθηκε (%foundId%): %foundValue% - + - validator.bom_importer.json.parameter.manufacturerOrCategoryWithSubProperties + validator.bom_importer.json_csv.parameter.manufacturerOrCategoryWithSubProperties πρέπει να περιέχει ως υπο-παράμετρο είτε: "id" ως ακέραιο αριθμό μεγαλύτερο από 0 είτε "name" ως μη κενή συμβολοσειρά diff --git a/translations/validators.en.xlf b/translations/validators.en.xlf index 93640fff..4c53ed18 100644 --- a/translations/validators.en.xlf +++ b/translations/validators.en.xlf @@ -371,6 +371,18 @@ Invalid code. Check that your authenticator app is set up correctly and that both the server and authentication device has the time set correctly. + + + validator.bom_importer.invalid_import_type + Invalid import type! + + + + + validator.bom_importer.invalid_file_extension + Invalid file extension "%extension%" for import type %importType%". Allowed file extensions: %allowedExtensions%. + + assembly.bom_entry.part_already_in_bom @@ -389,57 +401,57 @@ __validator.assembly.bom_entry.name_or_part_needed - + - validator.bom_importer.json.quantity.required + validator.bom_importer.json_csv.quantity.required you must specify a quantity > 0! - + - validator.bom_importer.json.quantity.float + validator.bom_importer.json_csv.quantity.float expected as float greater than 0.0 - + - validator.bom_importer.json.parameter.string.notEmpty + validator.bom_importer.json_csv.parameter.string.notEmpty expected as non-empty string - + - validator.bom_importer.json.parameter.string.notEmpty.null + validator.bom_importer.json_csv.parameter.string.notEmpty.null als nicht leere Zeichenkette oder null erwartet - + - validator.bom_importer.json.parameter.array + validator.bom_importer.json_csv.parameter.array expectd as array - + - validator.bom_importer.json.parameter.subproperties + validator.bom_importer.json_csv.parameter.subproperties must have at least one of the following sub-properties: %propertyString% - + - validator.bom_importer.json.parameter.notFoundFor + validator.bom_importer.json_csv.parameter.notFoundFor not found for %value% - + - validator.bom_importer.json.parameter.noExactMatch + validator.bom_importer.json_csv.parameter.noExactMatch does not match exactly. Given for import: %importValue%, found (%foundId%): %foundValue% - + - validator.bom_importer.json.parameter.manufacturerOrCategoryWithSubProperties + validator.bom_importer.json_csv.parameter.manufacturerOrCategoryWithSubProperties must have either assigned as sub-property: "id" as an integer greater than 0, or "name" as a non-empty string diff --git a/translations/validators.fr.xlf b/translations/validators.fr.xlf index cde3672f..957a4791 100644 --- a/translations/validators.fr.xlf +++ b/translations/validators.fr.xlf @@ -209,6 +209,18 @@ Seule une pièce ou un assemblage peut être sélectionné. Veuillez ajuster votre sélection! + + + validator.bom_importer.invalid_import_type + Type d'importation invalide ! + + + + + validator.bom_importer.invalid_file_extension + Extension de fichier "%extension%" invalide pour le type d'importation "%importType%". Extensions de fichier autorisées : %allowedExtensions%. + + assembly.bom_entry.part_already_in_bom @@ -227,57 +239,57 @@ Vous devez sélectionner une pièce ou attribuer un nom pour un non-élément! - + - validator.bom_importer.json.quantity.required + validator.bom_importer.json_csv.quantity.required Vous devez entrer une quantité > 0 ! - + - validator.bom_importer.json.quantity.float + validator.bom_importer.json_csv.quantity.float attendu comme un nombre décimal (float) supérieur à 0,0 - + - validator.bom_importer.json.parameter.string.notEmpty + validator.bom_importer.json_csv.parameter.string.notEmpty attendu comme une chaîne de caractères non vide - + - validator.bom_importer.json.parameter.string.notEmpty.null + validator.bom_importer.json_csv.parameter.string.notEmpty.null attendu comme une chaîne de caractères non vide ou null - + - validator.bom_importer.json.parameter.array + validator.bom_importer.json_csv.parameter.array attendu comme un tableau (array) - + - validator.bom_importer.json.parameter.subproperties + validator.bom_importer.json_csv.parameter.subproperties doit contenir au moins l'un des sous-paramètres suivants : %propertyString% - + - validator.bom_importer.json.parameter.notFoundFor + validator.bom_importer.json_csv.parameter.notFoundFor non trouvé pour %value% - + - validator.bom_importer.json.parameter.noExactMatch + validator.bom_importer.json_csv.parameter.noExactMatch ne correspond pas exactement. Donné pour l'importation : %importValue%, trouvé (%foundId%) : %foundValue% - + - validator.bom_importer.json.parameter.manufacturerOrCategoryWithSubProperties + validator.bom_importer.json_csv.parameter.manufacturerOrCategoryWithSubProperties doit contenir comme sous-paramètre soit : "id" comme entier supérieur à 0 ou "name" comme chaîne de caractères non vide diff --git a/translations/validators.hr.xlf b/translations/validators.hr.xlf index 98872420..639dff8b 100644 --- a/translations/validators.hr.xlf +++ b/translations/validators.hr.xlf @@ -365,6 +365,18 @@ Neispravan kod. Provjerite je li vaša aplikacija za autentifikaciju ispravno postavljena i jesu li poslužitelj i uređaj za autentifikaciju ispravno postavili vrijeme. + + + validator.bom_importer.invalid_import_type + Nevažeći tip uvoza! + + + + + validator.bom_importer.invalid_file_extension + Nevažeća ekstenzija datoteke "%extension%" za tip uvoza "%importType%". Dopuštene ekstenzije datoteka: %allowedExtensions%. + + assembly.bom_entry.part_already_in_bom @@ -383,57 +395,57 @@ Morate odabrati dio ili unijeti naziv za nedio! - + - validator.bom_importer.json.quantity.required + validator.bom_importer.json_csv.quantity.required Morate unijeti količinu > 0! - + - validator.bom_importer.json.quantity.float + validator.bom_importer.json_csv.quantity.float očekuje se decimalni broj (float) veći od 0,0 - + - validator.bom_importer.json.parameter.string.notEmpty + validator.bom_importer.json_csv.parameter.string.notEmpty očekuje se kao neprazan niz znakova - + - validator.bom_importer.json.parameter.string.notEmpty.null + validator.bom_importer.json_csv.parameter.string.notEmpty.null očekuje se kao neprazan niz znakova ili null - + - validator.bom_importer.json.parameter.array + validator.bom_importer.json_csv.parameter.array očekuje se kao niz - + - validator.bom_importer.json.parameter.subproperties + validator.bom_importer.json_csv.parameter.subproperties mora sadržavati barem jedan od sljedećih pod-parametara: %propertyString% - + - validator.bom_importer.json.parameter.notFoundFor + validator.bom_importer.json_csv.parameter.notFoundFor nije pronađeno za %value% - + - validator.bom_importer.json.parameter.noExactMatch + validator.bom_importer.json_csv.parameter.noExactMatch ne podudara se točno. Uneseno za uvoz: %importValue%, pronađeno (%foundId%): %foundValue% - + - validator.bom_importer.json.parameter.manufacturerOrCategoryWithSubProperties + validator.bom_importer.json_csv.parameter.manufacturerOrCategoryWithSubProperties mora sadržavati kao pod-parametar bilo: "id" kao cijeli broj veći od 0 ili "name" kao neprazan niz znakova diff --git a/translations/validators.it.xlf b/translations/validators.it.xlf index 63ca86d7..a1b9b2f0 100644 --- a/translations/validators.it.xlf +++ b/translations/validators.it.xlf @@ -365,6 +365,18 @@ Codice non valido. Controlla che la tua app di autenticazione sia impostata correttamente e che sia il server che il dispositivo di autenticazione abbiano l'ora impostata correttamente. + + + validator.bom_importer.invalid_import_type + Tipo di importazione non valido! + + + + + validator.bom_importer.invalid_file_extension + Estensione del file "%extension%" non valida per il tipo di importazione "%importType%". Estensioni consentite: %allowedExtensions%. + + assembly.bom_entry.part_already_in_bom @@ -383,57 +395,57 @@ È necessario selezionare una parte o inserire un nome per un non-parte! - + - validator.bom_importer.json.quantity.required + validator.bom_importer.json_csv.quantity.required Devi inserire una quantità > 0! - + - validator.bom_importer.json.quantity.float + validator.bom_importer.json_csv.quantity.float atteso come numero decimale (float) maggiore di 0,0 - + - validator.bom_importer.json.parameter.string.notEmpty + validator.bom_importer.json_csv.parameter.string.notEmpty atteso come stringa non vuota - + - validator.bom_importer.json.parameter.string.notEmpty.null + validator.bom_importer.json_csv.parameter.string.notEmpty.null atteso come stringa non vuota o null - + - validator.bom_importer.json.parameter.array + validator.bom_importer.json_csv.parameter.array atteso come array - + - validator.bom_importer.json.parameter.subproperties + validator.bom_importer.json_csv.parameter.subproperties deve avere almeno uno dei seguenti sotto-parametri: %propertyString% - + - validator.bom_importer.json.parameter.notFoundFor + validator.bom_importer.json_csv.parameter.notFoundFor non trovato per %value% - + - validator.bom_importer.json.parameter.noExactMatch + validator.bom_importer.json_csv.parameter.noExactMatch non corrisponde esattamente. Valore dato per l'importazione: %importValue%, trovato (%foundId%): %foundValue% - + - validator.bom_importer.json.parameter.manufacturerOrCategoryWithSubProperties + validator.bom_importer.json_csv.parameter.manufacturerOrCategoryWithSubProperties deve contenere come sotto-parametro: "id" come intero maggiore di 0 o "name" come stringa non vuota diff --git a/translations/validators.ja.xlf b/translations/validators.ja.xlf index c0b54117..4a36a79a 100644 --- a/translations/validators.ja.xlf +++ b/translations/validators.ja.xlf @@ -209,6 +209,18 @@ 部品またはアセンブリのみ選択可能です。選択内容を調整してください! + + + validator.bom_importer.invalid_import_type + 無効なインポートタイプです! + + + + + validator.bom_importer.invalid_file_extension + インポートタイプ "%importType%" に対して無効なファイル拡張子 "%extension%"。許可されているファイル拡張子: %allowedExtensions%。 + + assembly.bom_entry.part_already_in_bom @@ -227,57 +239,57 @@ 部品を選択するか、非部品の名前を入力する必要があります! - + - validator.bom_importer.json.quantity.required + validator.bom_importer.json_csv.quantity.required 数量 > 0 を入力する必要があります! - + - validator.bom_importer.json.quantity.float + validator.bom_importer.json_csv.quantity.float 0.0 より大きい小数 (float) である必要があります - + - validator.bom_importer.json.parameter.string.notEmpty + validator.bom_importer.json_csv.parameter.string.notEmpty 空でない文字列が期待されます - + - validator.bom_importer.json.parameter.string.notEmpty.null + validator.bom_importer.json_csv.parameter.string.notEmpty.null 空でない文字列または null が期待されます - + - validator.bom_importer.json.parameter.array + validator.bom_importer.json_csv.parameter.array 配列として期待されます - + - validator.bom_importer.json.parameter.subproperties + validator.bom_importer.json_csv.parameter.subproperties 以下のサブパラメーターのいずれかを含む必要があります:%propertyString% - + - validator.bom_importer.json.parameter.notFoundFor + validator.bom_importer.json_csv.parameter.notFoundFor %value% に対する項目が見つかりません - + - validator.bom_importer.json.parameter.noExactMatch + validator.bom_importer.json_csv.parameter.noExactMatch 完全には一致しません。インポートされた値:%importValue%、見つかった値 (%foundId%):%foundValue% - + - validator.bom_importer.json.parameter.manufacturerOrCategoryWithSubProperties + validator.bom_importer.json_csv.parameter.manufacturerOrCategoryWithSubProperties サブパラメーターとして次のいずれかを含む必要があります:"id" は 0 より大きい整数、または "name" は空でない文字列 diff --git a/translations/validators.pl.xlf b/translations/validators.pl.xlf index d417757d..e80dd23b 100644 --- a/translations/validators.pl.xlf +++ b/translations/validators.pl.xlf @@ -365,6 +365,18 @@ Nieprawidłowy kod. Sprawdź, czy aplikacja uwierzytelniająca jest poprawnie skonfigurowana i czy zarówno serwer, jak i urządzenie uwierzytelniające mają poprawnie ustawiony czas. + + + validator.bom_importer.invalid_import_type + Nieprawidłowy typ importu! + + + + + validator.bom_importer.invalid_file_extension + Nieprawidłowe rozszerzenie pliku "%extension%" dla typu importu "%importType%". Dozwolone rozszerzenia plików: %allowedExtensions%. + + assembly.bom_entry.part_already_in_bom @@ -383,57 +395,57 @@ Musisz wybrać element lub przypisać nazwę dla elementu niestandardowego! - + - validator.bom_importer.json.quantity.required + validator.bom_importer.json_csv.quantity.required Musisz wprowadzić ilość > 0! - + - validator.bom_importer.json.quantity.float + validator.bom_importer.json_csv.quantity.float oczekiwano liczby zmiennoprzecinkowej (float) większej od 0,0 - + - validator.bom_importer.json.parameter.string.notEmpty + validator.bom_importer.json_csv.parameter.string.notEmpty oczekiwano jako niepusty ciąg znaków - + - validator.bom_importer.json.parameter.string.notEmpty.null + validator.bom_importer.json_csv.parameter.string.notEmpty.null oczekiwano jako niepusty ciąg znaków lub null - + - validator.bom_importer.json.parameter.array + validator.bom_importer.json_csv.parameter.array oczekiwano jako tablicę - + - validator.bom_importer.json.parameter.subproperties + validator.bom_importer.json_csv.parameter.subproperties musi zawierać co najmniej jeden z następujących podparametrów: %propertyString% - + - validator.bom_importer.json.parameter.notFoundFor + validator.bom_importer.json_csv.parameter.notFoundFor nie znaleziono dla %value% - + - validator.bom_importer.json.parameter.noExactMatch + validator.bom_importer.json_csv.parameter.noExactMatch brak dokładnego dopasowania. Wprowadzone do importu: %importValue%, znalezione (%foundId%): %foundValue% - + - validator.bom_importer.json.parameter.manufacturerOrCategoryWithSubProperties + validator.bom_importer.json_csv.parameter.manufacturerOrCategoryWithSubProperties musi zawierać jako podparametr: "id" jako liczbę całkowitą większą od 0 lub "name" jako niepusty ciąg znaków diff --git a/translations/validators.ru.xlf b/translations/validators.ru.xlf index 625aea24..48f0737e 100644 --- a/translations/validators.ru.xlf +++ b/translations/validators.ru.xlf @@ -365,6 +365,18 @@ Неверный код. Проверьте, что приложение аутентификации настроено правильно и что на сервере и устройстве аутентификации установлено правильное время. + + + validator.bom_importer.invalid_import_type + Недопустимый тип импорта! + + + + + validator.bom_importer.invalid_file_extension + Недопустимое расширение файла "%extension%" для типа импорта "%importType%". Допустимые расширения файлов: %allowedExtensions%. + + assembly.bom_entry.part_already_in_bom @@ -383,57 +395,57 @@ Необходимо выбрать деталь или ввести название для недетали! - + - validator.bom_importer.json.quantity.required + validator.bom_importer.json_csv.quantity.required Необходимо указать количество > 0! - + - validator.bom_importer.json.quantity.float + validator.bom_importer.json_csv.quantity.float ожидается число с плавающей запятой (float), большее 0,0 - + - validator.bom_importer.json.parameter.string.notEmpty + validator.bom_importer.json_csv.parameter.string.notEmpty ожидается непустая строка - + - validator.bom_importer.json.parameter.string.notEmpty.null + validator.bom_importer.json_csv.parameter.string.notEmpty.null ожидается непустая строка или null - + - validator.bom_importer.json.parameter.array + validator.bom_importer.json_csv.parameter.array ожидается массив - + - validator.bom_importer.json.parameter.subproperties + validator.bom_importer.json_csv.parameter.subproperties должен содержать хотя бы один из следующих под-параметров: %propertyString% - + - validator.bom_importer.json.parameter.notFoundFor + validator.bom_importer.json_csv.parameter.notFoundFor не найдено для %value% - + - validator.bom_importer.json.parameter.noExactMatch + validator.bom_importer.json_csv.parameter.noExactMatch точное совпадение отсутствует. Указано для импорта: %importValue%, найдено (%foundId%): %foundValue% - + - validator.bom_importer.json.parameter.manufacturerOrCategoryWithSubProperties + validator.bom_importer.json_csv.parameter.manufacturerOrCategoryWithSubProperties должен содержать под-параметр: "id" как целое число больше 0 или "name" как непустая строка diff --git a/translations/validators.zh.xlf b/translations/validators.zh.xlf index 5093ce98..dea45ccc 100644 --- a/translations/validators.zh.xlf +++ b/translations/validators.zh.xlf @@ -353,6 +353,18 @@ 由于技术限制,在32位系统中无法选择2038年1月19日之后的日期! + + + validator.bom_importer.invalid_import_type + 无效的导入类型! + + + + + validator.bom_importer.invalid_file_extension + 导入类型“%importType%”的文件扩展名“%extension%”无效。允许的扩展名: %allowedExtensions%。 + + assembly.bom_entry.part_already_in_bom @@ -371,57 +383,57 @@ 必须选择零件或为非零件指定名称! - + - validator.bom_importer.json.quantity.required + validator.bom_importer.json_csv.quantity.required 必须输入数量 > 0! - + - validator.bom_importer.json.quantity.float + validator.bom_importer.json_csv.quantity.float 应为大于 0.0 的浮点数 (float) - + - validator.bom_importer.json.parameter.string.notEmpty + validator.bom_importer.json_csv.parameter.string.notEmpty 应为非空字符串 - + - validator.bom_importer.json.parameter.string.notEmpty.null + validator.bom_importer.json_csv.parameter.string.notEmpty.null 应为非空字符串或 null - + - validator.bom_importer.json.parameter.array + validator.bom_importer.json_csv.parameter.array 应为数组 - + - validator.bom_importer.json.parameter.subproperties + validator.bom_importer.json_csv.parameter.subproperties 必须包含以下子参数之一:%propertyString% - + - validator.bom_importer.json.parameter.notFoundFor + validator.bom_importer.json_csv.parameter.notFoundFor 未找到对应值 %value% - + - validator.bom_importer.json.parameter.noExactMatch + validator.bom_importer.json_csv.parameter.noExactMatch 未精确匹配。用于导入的值:%importValue%,找到的值 (%foundId%):%foundValue% - + - validator.bom_importer.json.parameter.manufacturerOrCategoryWithSubProperties + validator.bom_importer.json_csv.parameter.manufacturerOrCategoryWithSubProperties 必须包含子参数:"id" 为大于 0 的整数,或 "name" 为非空字符串