Magento Dbase, ecco i dbf bellezza!

E sì su Magento ho importato di tutto. I dbf però mi mancavano. Non ne sentivo parlare da anni. E invece eccoli qui tornare alla carica. Php5 ha un modulo dbase.so per la lettura e scrittura di file dbf. Fortunatamente ha pochi metodi. L’installazione è abbastanza semplice. Sono partito dai sorgenti, li ho compilati e poi ho abilitato il modulo. Il mio sistema di test utilizza una macchina Ubuntu con il sistema Vagrant.

Siccome devo avere disponibili i file li caricherò su una collection. Caricare un file dbf in una collection è abbastanza semplice.  Vi riporto il mio codice :
Supponiamo di voler creare un dbfReader generico

class Vendor_Module_Model_DbfReader {

public function __construct($fileName)
{
$this->_fileName = $fileName;

}

/**
* legge il dbf e e carica una collection
*/
public function read()
{
$collection = new Varien_Data_Collection();

if (!file_exists($this->_fileName) || !is_readable($this->_fileName)) {
Mage::throwException(‘file:’ . $this->_fileName . ‘ non esiste’);
}

$header = null;
$db = dbase_open($this->_fileName, 0);

if ($db) {
$record_numbers = dbase_numrecords($db);
for ($i = 1; $i <= $record_numbers; $i++) { $row = dbase_get_record_with_names($db, $i); $item = new Varien_Object(); $item->addData($row);
$collection->addItem($item);
}
}

return $collection;
}
}

 

A questo punto posso utilizzare la mia collection per fare delle ricerche oppure per caricare i dati del dbf in magento.

Visto che ho una collection posso utilizzare una funzione di ricerca:

public function find($key, $val)
{
return $this->_collection->getItemsByColumnValue($key, $val);
}

Oppure posso rimuovere un elemento:

public function removeItem($item){
$this->_collection->removeItemByKey($item->getId());
}

L’attività che devo svolgere non è banale. Devo importare dei file dbf che contengono dei prodotti configurabili con dei tier prices. Mi ci vuole un grosso in bocca al lupo, la strada è terribilmente in salita e il caldo di questi giorni non aiuta la mente. Nei miei “toolkit” di importazione ho affrontato diverse difficoltà. I configurabili sono complessi da gestire, soprattutto se le variabili opzioni di configurazione non sono determinate. Fortunatamente non devo creare dinamicamente i set di attributi. Questi fortunatamente sono predeterminati. Ho avuto in passato un’esperienza a riguardo, con degli attributi in 6 lingue. Un bagno di sangue degno di una moderna macelleria messicana.

Vi dirò com’è finita.

PS: scusate per l’indentazione del codice, trovero’ un modulo WP decente un giorno.

Lascia un commento