Fix #7123 - getting abra ready to test
[Pman.Xtuple] / Import / VendAddrInfo.php
1 <?php
2
3
4 require_once 'Pman/Roo.php';
5
6 class Pman_Xtuple_Import_VendAddrInfo extends Pman_Roo
7 {
8     
9     function getAuth()
10     {
11         if (HTML_FlexyFramework::get()->cli) {
12             return true;
13         }
14         return parent::getAuth();
15     }
16     
17     
18     function post()
19     {   
20         
21         PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
22
23         $this->sessionState(0); // turn off the session..
24         
25         $img = DB_DataObject::Factory('images');
26         $img->setFrom(array(
27             'onid' => 0,
28             'ontable' => 'ipshead'
29         ));
30         $img->onUpload(false);
31         
32         require_once 'File/Convert.php';
33         $fc = new File_Convert($img->getStoreName(), $img->mimetype );
34         $csv = $fc->convert('text/csv');
35         
36         $this->importCsv($csv);
37     }
38     function importCsv($csv)
39     {
40         
41         ini_set('memory_limit', '1024M');
42         
43         ini_set("auto_detect_line_endings", true);
44
45         if(empty($_REQUEST['vend_id'])){
46             $this->jerr('Missing vendor');
47         }
48         
49         $vend = DB_DataObject::factory('vendinfo');
50         if(!$vend->get($_REQUEST['vend_id'])){
51             $this->jerr('Invalid vendor');
52         }
53         
54         $fh = fopen($csv, 'r');
55         if (!$fh) {
56             $this->jerr("invalid file");
57         }
58         
59         $req = array(
60             'CODE', 'DISTRICT2_CHI', 'DISTRICT2_ENG', 'CHI ADDRESS', 'ENG ADDRESS', 
61         );
62         
63         $cols = false;
64         $rows = array();
65         
66         while(false !== ($n = fgetcsv($fh,10000, ',', '"'))) {
67             if (!$cols) {
68                 
69                 $cols = array();
70                 foreach($n as $k) {
71                     $cols[] = strtoupper(trim($k));
72                 }
73                 if (empty($cols)) {
74                     continue;
75                 }
76                 foreach($req as $r) {
77                     if (!in_array($r,$cols)) {
78                         $cols = false;
79                         break;
80                     }
81                 }
82                 continue;
83             }
84             foreach($cols as $i=>$k) {
85                 $row[$k] = $n[$i];
86             }
87             $rows[] = $row;
88         }
89         
90         if (empty($cols)) {
91             $this->jerr("could not find a row with " . implode(' / ', $req));
92         }
93         
94         fclose($fh);
95         
96         $errors = array();
97         $count = 0;
98         
99         foreach($rows as $row){
100             $vendaddrinfo = DB_DataObject::factory('vendaddrinfo');
101             if($vendaddrinfo->get('vendaddr_code', $row['CODE'])){
102                 continue;
103             }
104             
105             $addr = DB_DataObject::factory('addr');
106             $addr->setFrom(array(
107                 'addr_active' => true,
108                 'addr_city' => $row['DISTRICT2_ENG'],
109                 'addr_line1' => $row['ENG ADDRESS'],
110                 'addr_line2' => $row['CHI ADDRESS'],
111             ));
112             $addr->genNumber();
113             $addr->insert();
114             
115             if(!$addr->addr_id){
116                 $errors[] = $row['CODE'];
117                 continue;
118             }
119             
120             $vendaddrinfo = DB_DataObject::factory('vendaddrinfo');
121             $vendaddrinfo->setFrom(array(
122                 'vendaddr_vend_id' => $vend->pid(),
123                 'vendaddr_code' => $row['CODE'],
124                 'vendaddr_name' => $row['CODE'],
125                 'vendaddr_addr_id' => $addr->pid(),
126                 'vendaddr_taxzone_id' => $vend->vend_taxzone_id
127             ));
128             
129             $vendaddrinfo->insert();
130             
131             if(!$vendaddrinfo->vendaddr_id){
132                 $errors[] = $row['CODE'];
133             }
134             
135             $count++;
136         }
137         
138         if(!empty($errors)){
139             $this->jerr("Below code got error : \n" . implode("\n", $errors));
140         }
141         
142         $this->jok('data imported successfully! total : ' . $count);
143     }
144     
145 }