cli) { return true; } return parent::getAuth(); } function get() { PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError')); $this->jerr("INVALID"); //DB_DataObject::DebugLevel(1); require_once 'File/Convert.php'; $fc = new File_Convert('/tmp/sku.csv', 'text/csv'); //var_Dump($img->getStoreName()); $csv = $fc->convert('text/csv'); $this->importCsv($csv); } function post( ) { $this->sessionState(0); // turn off the session.. $this->transObj = DB_DataObject::Factory('custinfo'); $this->transObj->query('BEGIN'); PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError')); if (empty($_REQUEST['onid'])) { $this->jerr('no order found'); } $img = DB_DataObject::Factory('images'); $img->setFrom(array( 'onid' => 0, 'ontable' => 'ipshead' )); $img->onUpload(false); require_once 'File/Convert.php'; $fc = new File_Convert($img->getStoreName(), $img->mimetype ); $csv = $fc->convert('text/csv'); $this->importCsv($csv); } function importCsv($csv) { ini_set("auto_detect_line_endings", true); $req = array('ITEM CODE', 'QTY', 'PRICE'); $fh = fopen($csv, 'r'); if (!$fh) { $this->jerr("invalid file"); } // we need to break this into cols.. $cols = false; $rows = array(); while(false !== ($n = fgetcsv($fh,10000, ',', '"'))) { if (!$cols) { $cols = array(); foreach($n as $k) { $cols[] = strtoupper(trim($k)); } if (empty($cols)) { continue; } foreach($req as $r) { if (!in_array($r,$cols)) { $cols = false; break; } } continue; } $row = array(); foreach($cols as $i=>$k) { $row[$k] = $n[$i]; } $rows[] = $row; } if (empty($cols)) { $this->jerr("could not find a row with Item Code, Qty and Price"); } fclose($fh); $cmhead = DB_DataObject::Factory('cmhead'); if (!$cmhead->get($_REQUEST['onid'])) { $this->jerr("order is not valid"); } //DB_DataObject::debugLevel(1); $missing = array(); foreach($rows as $row) { if (!strlen(trim(implode('', array_values($row))))) { continue; } if (!strlen(trim($row['ITEM CODE']))) { $missing[] = implode('', array_values($row)); } $item = DB_DataObject::factory('item')->lookupSKU($row['ITEM CODE']); if (!$item) { $missing[] = $row['ITEM CODE']; continue; } if (!empty($missing)) { continue; } $citem = DB_DataObject::Factory('cmitem'); $citem->setFrom($citem->defaults()); $citem->setFrom(array( 'cmitem_cmhead_id' => $cmhead->pid(), 'cmitem_itemsite_id' => $item->itemsite()->pid(), 'cmitem_qtycredit' => $row['QTY'], 'cmitem_qtyreturned' => $row['QTY'], 'cmitem_unitprice' => $row['PRICE'], 'cmitem_comments' => $item->item_descrip1, 'cmitem_linenumber' => $this->nextline($cmhead) )); $citem->insert(); } if (!empty($missing)) { $this->jerr("missing these codes : " . implode("\n", $missing)); } $this->jok("IMPORTED"); } function nextline($cmhead) { static $line = false; if ($line !== false) { $line++; return $line; } $t = DB_DataObject::Factory('cmitem'); $t->selectAdd(); $t->cmitem_cmhead_id = $cmhead->pid(); $t->selectAdd('MAX(cmitem_linenumber) as cmitem_linenumber'); if (!$t->find(true)) { $line = 1; return $line; } $line = $t->cmitem_linenumber +1; return $line; } }