4 require_once 'Pman/Roo.php';
6 class Pman_Xtuple_Import_CreditMemo extends Pman_Roo
10 * get .. same as roo...
16 if (HTML_FlexyFramework::get()->cli) {
19 return parent::getAuth();
25 PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
26 $this->jerr("INVALID");
27 //DB_DataObject::DebugLevel(1);
28 require_once 'File/Convert.php';
29 $fc = new File_Convert('/tmp/sku.csv', 'text/csv');
30 //var_Dump($img->getStoreName());
31 $csv = $fc->convert('text/csv');
32 $this->importCsv($csv);
39 $this->sessionState(0); // turn off the session..
41 $this->transObj = DB_DataObject::Factory('custinfo');
43 $this->transObj->query('BEGIN');
45 PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
47 if (empty($_REQUEST['onid'])) {
48 $this->jerr('no order found');
53 $img = DB_DataObject::Factory('images');
56 'ontable' => 'ipshead'
58 $img->onUpload(false);
60 require_once 'File/Convert.php';
61 $fc = new File_Convert($img->getStoreName(), $img->mimetype );
62 $csv = $fc->convert('text/csv');
63 $this->importCsv($csv);
65 function importCsv($csv)
68 ini_set("auto_detect_line_endings", true);
70 $req = array('ITEM CODE', 'QTY', 'PRICE');
72 $fh = fopen($csv, 'r');
74 $this->jerr("invalid file");
77 // we need to break this into cols..
80 while(false !== ($n = fgetcsv($fh,10000, ',', '"'))) {
86 $cols[] = strtoupper(trim($k));
93 if (!in_array($r,$cols)) {
102 foreach($cols as $i=>$k) {
109 $this->jerr("could not find a row with Item Code, Qty and Price");
114 $cmhead = DB_DataObject::Factory('cmhead');
115 if (!$cmhead->get($_REQUEST['onid'])) {
116 $this->jerr("order is not valid");
119 //DB_DataObject::debugLevel(1);
122 foreach($rows as $row)
124 if (!strlen(trim(implode('', array_values($row))))) {
127 if (!strlen(trim($row['ITEM CODE']))) {
128 $missing[] = implode('', array_values($row));
132 $item = DB_DataObject::factory('item')->lookupSKU($row['ITEM CODE']);
135 $missing[] = $row['ITEM CODE'];
138 if (!empty($missing)) {
142 $citem = DB_DataObject::Factory('cmitem');
143 $citem->setFrom($citem->defaults());
144 $citem->setFrom(array(
145 'cmitem_cmhead_id' => $cmhead->pid(),
146 'cmitem_itemsite_id' => $item->itemsite()->pid(),
147 'cmitem_qtycredit' => $row['QTY'],
148 'cmitem_qtyreturned' => $row['QTY'],
149 'cmitem_unitprice' => $row['PRICE'],
150 'cmitem_comments' => $item->item_descrip1,
151 'cmitem_linenumber' => $this->nextline($cmhead)
157 if (!empty($missing)) {
158 $this->jerr("missing these codes : " . implode("\n", $missing));
161 $this->jok("IMPORTED");
167 function nextline($cmhead)
169 static $line = false;
170 if ($line !== false) {
174 $t = DB_DataObject::Factory('cmitem');
176 $t->cmitem_cmhead_id = $cmhead->pid();
177 $t->selectAdd('MAX(cmitem_linenumber) as cmitem_linenumber');
178 if (!$t->find(true)) {
182 $line = $t->cmitem_linenumber +1;