return $manufacturer;
}
+function xls_configure($workbook, $worksheet)
+{
+ global $col_id_to_xls_num, $csv_infos;
+
+ /* Configration des couleurs de cellules. */
+ xls_set_colors($workbook);
+
+ foreach ($csv_infos as $key => $value) {
+ $width = $value['width'];
+
+ /* Ajustement de la largeur de chaque colonne. */
+ if ($width) {
+ /* S'assure que la colonne a été exportée dans le fichier CSV. */
+ if (isset($col_id_to_xls_num[$key])) {
+ $worksheet->setColumn($col_id_to_xls_num[$key], $col_id_to_xls_num[$key],
+ $width);
+ } else {
+ echo "Colonne '$key' manquante.\n";
+ }
+ }
+ }
+
+ $worksheet->setLandscape();
+ $worksheet->setPaper(PAPER_US_LETTER);
+}
+
+/*
+ * value: clé
+ * c: Numéro de colonne dans le fichier CSV.
+ * xls_c: Numéro de colonne dans Excel.
+ */
+function determine_col_index($value, $c, $xls_c)
+{
+ global $col_id_to_num, $col_num_to_id, $col_id_to_xls_num;
+
+ $col_id_to_num[$value] = $c;
+ $col_num_to_id[$c] = $value;
+ $col_id_to_xls_num[$value] = $xls_c;
+}
+
+/* Conversion colonne numérique à lettre:
+ * 0 -> A
+ * 1 -> B
+ * ...
+ */
+function col_to_letter($c)
+{
+ $c = intval($c + 1); /* c part à 0. */
+
+ if ($c <= 0)
+ return '';
+
+ $letter = '';
+
+ while($c != 0) {
+ $p = ($c - 1) % 26;
+ $c = intval(($c - $p) / 26);
+ $letter = chr(65 + $p) . $letter;
+ }
+
+ return $letter;
+}
+
+function bom_import_source($filename)
+{
+ global $col_id_to_num, $num, $row_num, $add_cost, $csv_infos, $entete, $data;
+
+ $handle = fopen($filename, "r");
+
+ if ($handle == FALSE) {
+ echo "Error opening file: " . $filename . "\n";
+ exit(1);
+ }
+
+ /* Read and import BOM source file. */
+ while (($row = fgetcsv($handle, 1024, ',')) !== false) {
+ $num = count($row);
+
+ if ($num < 2) {
+ /* Ligne vide. */
+ continue;
+ }
+
+ if ($row_num == 1) {
+ /* Entête. */
+
+ if ($add_cost == true) {
+ /* Ajout colonne temporaire pour le total cost. */
+ $row[$num] = "TotalCost";
+ $num++;
+ }
+
+ /* Ajout colonne temporaire selon le type de composant. Cela est
+ * nécessaire pour faire le tri correctement. */
+ $row[$num] = "Type";
+ $num++;
+
+ /* Index de la prochaine colonne disponible pour affichage. */
+ $k = 0;
+
+ for ($c = 0; $c < $num; $c++) {
+ $id = $row[$c];
+
+ determine_col_index($id, $c, $k);
+
+ if (isset($csv_infos[$id])) {
+ if ($csv_infos[$id]['width'] != 0) {
+ $nom = $csv_infos[$id]['nom'];
+
+ $entete[$k] = $nom;
+
+ $k++;
+ }
+ } else {
+ echo "Colonne '$id' non supportée.\n";
+ }
+ }
+ } else {
+ $ref_prefix2 = substr($row[$col_id_to_num[DESIGNATOR_COL_NAME]], 0, 2);
+ $company_pn = substr($row[$col_id_to_num[COMPANY_PN_COL_NAME]], 0, 1); /* Pour les vieux BOMs qui n'ont pas
+ * l'attribut NOPOP. */
+ if (($ref_prefix2 == "MH") ||
+ ($ref_prefix2 == "TP") ||
+ ($ref_prefix2 == "FI") ||
+ (array_key_exists(ASSEMBLY_COL_NAME, $col_id_to_num) && ($row[$col_id_to_num[ASSEMBLY_COL_NAME]] == DO_NOT_POPULATE_KEYWORD)) ||
+ ($company_pn == "*")) {
+ /* Enlève les composants non désirés. */
+ continue;
+ }
+
+ $ref_prefix = substr($ref_prefix2, 0, 1);
+ $row[$col_id_to_num['Type']] = $ref_prefix;
+ $data[] = $row;
+ }
+
+ $row_num++;
+ }
+
+ fclose($handle);
+}
+
?>