3 require_once 'Pman/Roo.php';
5 class Pman_Xtuple_Import_ShopVendors extends Pman_Roo
9 if (HTML_FlexyFramework::get()->cli) {
12 return parent::getAuth();
17 $this->transObj = DB_DataObject::Factory('vendinfo');
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 $this->importCsv($csv);
36 function importCsv($csv)
38 ini_set("auto_detect_line_endings", true);
40 $fh = fopen($csv, 'r');
42 $this->jerr("invalid file");
46 'TYPE','CODE', 'DISTRICT1_CHI', 'DISTRICT1_ENG',
47 'DISTRICT2_CHI', 'DISTRICT2_ENG', 'CHI ADDRESS', 'ENG ADDRESS',
53 while(false !== ($n = fgetcsv($fh,10000, ',', '"'))) {
58 $cols[] = strtoupper(trim($k));
64 if (!in_array($r,$cols)) {
71 foreach($cols as $i=>$k) {
72 $row[$k] = trim($n[$i]);
78 $this->jerr("could not find a row with " . implode(' / ', $req));
86 foreach($rows as $row){
88 $vendinfo = DB_DataObject::factory('vendinfo');
90 if(!$vendinfo->get('vend_name', $row['TYPE'])){
92 $vendinfo = DB_DataObject::factory('vendinfo');
93 $vendinfo->setFrom(array(
94 'vend_name' => $row['TYPE'],
95 'vend_number' => preg_replace('/[^a-z0-9]/i', '', $row['TYPE']),
96 'vend_vendtype_id' => $vendinfo->sqlValue("getvendtypeid('PICKUPS'::text)")
98 foreach ($vendinfo->defaults() as $k => $v){
99 if(!isset($vendinfo->$k)){
108 $vendaddrinfo = DB_DataObject::factory('vendaddrinfo');
109 if($vendaddrinfo->get('vendaddr_code', $row['CODE'])){
113 $addr = DB_DataObject::factory('addr');
114 $addr->setFrom(array(
115 'addr_active' => true,
116 'addr_city' => $row['DISTRICT2_ENG'],
117 'addr_line1' => $row['ENG ADDRESS'],
118 'addr_line2' => $row['CHI ADDRESS'],
124 $errors[] = $row['CODE'];
128 $vendaddrinfo = DB_DataObject::factory('vendaddrinfo');
129 $vendaddrinfo->setFrom(array(
130 'vendaddr_vend_id' => $vendinfo->pid(),
131 'vendaddr_code' => $row['CODE'],
132 'vendaddr_name' => $row['CODE'],
133 'vendaddr_addr_id' => $addr->pid(),
134 'vendaddr_taxzone_id' => $vendinfo->vend_taxzone_id
137 $vendaddrinfo->insert();
139 if(!$vendaddrinfo->vendaddr_id){
140 $errors[] = $row['CODE'];
148 $this->jerr("Below code got error : \n" . implode("\n", $errors));
151 $this->jok('data imported successfully! total : ' . $count);