3 require_once 'Pman/Roo.php';
5 class Pman_Xtuple_Import_Vendors 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 'ACTIVE STATUS', 'SUPPLIER', 'BALANCE', 'BALANCE TOTAL', 'COMPANY', 'MR, MRS',
47 'FIRST NAME', 'M.I.', 'LAST NAME', 'ADDRESS 1', 'ADDRESS 2', 'ADDRESS 3', 'ADDRESS 4',
48 'ADDRESS 5', 'CONTACT', 'PHONE', 'FAX', 'ALT. PHONE', 'ALT. CONTACT', 'EMAIL', 'PRINT ON CHEQUE AS',
49 'ACCOUNT NO.', 'SUPPLIER TYPE', 'TERMS', 'CREDIT LIMIT', 'TAX ID', 'NOTE'
55 while(false !== ($n = fgetcsv($fh,10000, ',', '"'))) {
60 $cols[] = strtoupper(trim($k));
62 // print_r($cols);exit;
67 if (!in_array($r,$cols)) {
74 foreach($cols as $i=>$k) {
81 $this->jerr("could not find a row with " . implode(' / ', $req));
85 $tz = DB_DataObject::Factory('taxzone');
86 $tz->whereAdd("taxzone_code != 'NO TAX'");
87 if (!$tz->find(true)) {
88 $this->jerr("could not find tax zone for taxable");
91 foreach ($rows as $row){
92 if(empty($row['SUPPLIER'])){
95 $vend = DB_DataObject::factory('vendinfo');
96 if($vend->get('vend_name',$row['SUPPLIER'])){
100 'vend_name' => $row['SUPPLIER'],
101 'vend_active' => $row['ACTIVE STATUS'] == 'Active' ? TRUE : FALSE,
102 'vend_comments' => $row['NOTE'],
103 'vend_number' => preg_replace('/[^a-z0-9]/i', '', strtoupper($row['SUPPLIER'])),
104 'vend_terms_id' => $this->terms($row['TERMS']),
105 'vend_taxzone_id' => $tz->pid(),
106 'vend_vendtype_id' => $vend->sqlValue("getvendtypeid('NORMAL'::text)"), // default set to NORMAL
107 'vend_accnt_id' => -1
108 // 'vend_addr_id' => ''
113 $this->jerr("error occur on insert vendor " . $row['SUPPLIER']);
123 function terms($terms_code)
125 $terms = DB_DataObject::factory('terms');
126 if(!$terms->get('terms_code', $terms_code)){
127 $terms->get('terms_code', 'C.O.D.');
129 return $terms->pid();