3 require_once 'Pman/Roo.php';
5 class Pman_Xtuple_Import_JournalEntry extends Pman_Roo
10 if (HTML_FlexyFramework::get()->cli) {
13 return parent::getAuth();
18 $this->transObj = DB_DataObject::Factory('gltrans');
20 $this->transObj->query('BEGIN');
22 PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
24 $img = DB_DataObject::Factory('images');
27 'ontable' => 'ipshead'
29 $img->onUpload(false);
31 require_once 'File/Convert.php';
32 $fc = new File_Convert($img->getStoreName(), $img->mimetype );
33 $csv = $fc->convert('text/csv');
34 $this->adjustBalances($csv);
38 function adjustBalances($csv)
41 ini_set("auto_detect_line_endings", true);
43 $reference = $_REQUEST['reference'];
44 $apply_date = $_REQUEST['apply_date'];
46 $fh = fopen($csv, 'r');
48 $this->jerr("invalid file");
54 while(false !== ($n = fgetcsv($fh,10000, ',', '"'))) {
59 $cols[] = strtoupper(trim($k));
62 if (!in_array('ADJUST',$cols)) {
63 $this->jerr('Missing ADJUST value : ' . implode(' , ' , $cols));
68 foreach($cols as $i=>$k) {
71 // ignore the accnt if the adjust is 0
72 if (empty($row['ADJUST']) || $row['ADJUST'] == 0) {
79 $gl = DB_DataObject::factory('gltrans');
86 $seq = $gl->glsequence; // v_glsequence
87 foreach ($rows as $i => $row){
88 if(empty($row['NAME'])){
91 $accnt = DB_DataObject::factory('accnt');
92 if(!$accnt->get('accnt_name', $row['NAME'])){
96 $gl = DB_DataObject::factory('gltrans');
103 '{$gl->escape($reference)}',
112 if ($gl->result < 1) {
113 $this->jerr("insertIntoGLSeries INV ASS failed");
116 $gl = DB_DataObject::Factory('gltrans');
117 $gl->query("SELECT sum(glseries_amount) as result FROM glseries WHERE glseries_sequence = $seq ");
119 $sum = $gl->result; // the type here is string
122 $this->jerr('glseries amount is greater than 1.0');
126 $rounding = $sum * -1;
127 $gl = DB_DataObject::factory('gltrans');
134 '{$gl->escape($reference)}',
135 fetchMetricValue('CurrencyGainLossAccount')::integer,
143 if ($gl->result < 1) {
144 $this->jerr("rounding insertIntoGLSeries failed");
148 $gl = DB_DataObject::Factory('gltrans');
153 glseries_notes = '{$gl->escape($reference)}'
155 glseries_sequence = $seq
158 $gl = DB_DataObject::Factory('gltrans');
163 COALESCE(NULL,fetchJournalNumber('G/L'))
170 if ($gl->result < 1) {
171 $this->jerr("post GL seriese failed");