3 require_once 'Pman/Roo.php';
5 class Pman_Xtuple_Import_InvAdjustment extends Pman_Roo
9 if (HTML_FlexyFramework::get()->cli) {
12 return parent::getAuth();
17 $this->transObj = DB_DataObject::Factory('invadjgrp');
19 $this->transObj->query('BEGIN');
21 PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
23 $img = DB_DataObject::Factory('images');
26 'ontable' => 'ipshead'
28 $img->onUpload(false);
30 require_once 'File/Convert.php';
31 $fc = new File_Convert($img->getStoreName(), $img->mimetype );
32 $csv = $fc->convert('text/csv');
33 $ret = $this->importCsv($csv);
38 function importCsv($csv)
40 ini_set("auto_detect_line_endings", true);
42 $fh = fopen($csv, 'r');
44 $this->jerr("invalid file");
47 $invadjgrp_id = $_REQUEST['invadjgrp_id'];
49 if(!$invadjgrp_id || $invadjgrp_id < 1){
50 $this->jerr('invalid invadjgrp id');
53 $grp = DB_DataObject::factory('invadjgrp');
54 if(!$grp->get($invadjgrp_id)){
55 $this->jerr('error occur on getting invadjgrp');
58 if($grp->invadjgrp_posted){
59 $this->jerr('Can not update posted');
62 $req = array('CODE', 'QTY');
67 while(false !== ($n = fgetcsv($fh,10000, ',', '"'))) {
72 $cols[] = strtoupper(trim($k));
78 if (!in_array($r,$cols)) {
85 foreach($cols as $i=>$k) {
92 $this->jerr("could not find a row with " . implode(' / ', $req));
102 foreach ($rows as $row){
103 if (empty($row['CODE'])) {
107 $item = DB_DataObject::factory('item');
108 $item = $item->lookupSKU($row['CODE']);
110 $errmsg[] = $row['CODE'];
113 if (isset($done[$item->item_number])) {
116 $done[$item->item_number] = 1;
117 //DB_DataObject::debugLevel(1);
118 $itemsite = $item->itemsite();
121 $invdetail = DB_DataObject::factory('invdetail');
127 '{$grp->invadjgrp_transdate}'::date + INTERVAL '1 DAY',
128 {$grp->invadjgrp_location_id},
137 $balance = $invdetail->stock_balance;
140 'item_number' => $item->item_number,
141 'itemsite_id' => $itemsite->pid(),
142 'balance' => $balance,
147 // $invadj = DB_DataObject::factory('invadj');
148 // $invadj->setFrom(array(
149 // 'invadj_transdate' => $grp->invadjgrp_transdate,
150 // 'invadj_location_id' => $grp->invadjgrp_location_id,
151 // 'invadj_itemsite_id' => $itemsite->pid(),
152 // 'invadj_qty_by' => $adj,
153 // 'invadj_posted' => FALSE,
154 // 'invadj_comments' => $grp->invadjgrp_comments,
155 // 'invadj_voids_id' => 0,
156 // 'invadj_voided_by_id' => 0,
157 // 'invadj_invadjgrp_id' => $grp->pid()
159 // if(!$invadj->insert()){
160 // $this->jerr("Error occur on insert adjustment for {$row['CODE']}");
166 $this->jerr("MISSING ITEM : \n" . implode("\n", $errmsg));