cli) { return true; } return parent::getAuth(); } function post() { $this->transObj = DB_DataObject::Factory('invadjgrp'); $this->transObj->query('BEGIN'); PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError')); $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'); $ret = $this->importCsv($csv); $this->jdata($ret); } function importCsv($csv) { ini_set("auto_detect_line_endings", true); $fh = fopen($csv, 'r'); if (!$fh) { $this->jerr("invalid file"); } $invadjgrp_id = $_REQUEST['invadjgrp_id']; if(!$invadjgrp_id || $invadjgrp_id < 1){ $this->jerr('invalid invadjgrp id'); } $grp = DB_DataObject::factory('invadjgrp'); if(!$grp->get($invadjgrp_id)){ $this->jerr('error occur on getting invadjgrp'); } if($grp->invadjgrp_posted){ $this->jerr('Can not update posted'); } $req = array('CODE', 'QTY'); $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; } foreach($cols as $i=>$k) { $row[$k] = $n[$i]; } $rows[] = $row; } if (empty($cols)) { $this->jerr("could not find a row with " . implode(' / ', $req)); } fclose($fh); $errmsg = array(); $ret = array(); $done = array(); foreach ($rows as $row){ if (empty($row['CODE'])) { continue; } $item = DB_DataObject::factory('item'); $item = $item->lookupSKU($row['CODE']); if (!$item) { $errmsg[] = $row['CODE']; continue; } if (isset($done[$item->item_number])) { continue; // dupes. } $done[$item->item_number] = 1; //DB_DataObject::debugLevel(1); $itemsite = $item->itemsite(); $invdetail = DB_DataObject::factory('invdetail'); $invdetail->query(" SELECT ROUND( COALESCE( invdetail_atdate( '{$grp->invadjgrp_transdate}'::date + INTERVAL '1 DAY', {$grp->invadjgrp_location_id}, {$itemsite->pid()} ) , 0) ,0) AS stock_balance "); $invdetail->fetch(); $balance = $invdetail->stock_balance; $ret[] = array( 'item_number' => $item->item_number, 'itemsite_id' => $itemsite->pid(), 'balance' => $balance, 'qty' => $row['QTY'] ); // $invadj = DB_DataObject::factory('invadj'); // $invadj->setFrom(array( // 'invadj_transdate' => $grp->invadjgrp_transdate, // 'invadj_location_id' => $grp->invadjgrp_location_id, // 'invadj_itemsite_id' => $itemsite->pid(), // 'invadj_qty_by' => $adj, // 'invadj_posted' => FALSE, // 'invadj_comments' => $grp->invadjgrp_comments, // 'invadj_voids_id' => 0, // 'invadj_voided_by_id' => 0, // 'invadj_invadjgrp_id' => $grp->pid() // )); // if(!$invadj->insert()){ // $this->jerr("Error occur on insert adjustment for {$row['CODE']}"); // } } if(count($errmsg)){ $this->jerr("MISSING ITEM : \n" . implode("\n", $errmsg)); } return $ret; } }