fmsystem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Fmsystem-commits] [11550] property:add new import scheme


From: Sigurd Nes
Subject: [Fmsystem-commits] [11550] property:add new import scheme
Date: Fri, 20 Dec 2013 14:12:33 +0000

Revision: 11550
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=11550
Author:   sigurdne
Date:     2013-12-20 14:12:32 +0000 (Fri, 20 Dec 2013)
Log Message:
-----------
property:add new import scheme

Added Paths:
-----------
    trunk/property/inc/import/default/Import_fra_Service_EBF

Added: trunk/property/inc/import/default/Import_fra_Service_EBF
===================================================================
--- trunk/property/inc/import/default/Import_fra_Service_EBF                    
        (rev 0)
+++ trunk/property/inc/import/default/Import_fra_Service_EBF    2013-12-20 
14:12:32 UTC (rev 11550)
@@ -0,0 +1,302 @@
+<?php
+       /**
+       * phpGroupWare - property: a Facilities Management System.
+       *
+       * @author Sigurd Nes <address@hidden>
+       * @copyright Copyright (C) 2003,2004,2005,2006,2007 Free Software 
Foundation, Inc. http://www.fsf.org/
+       * This file is part of phpGroupWare.
+       *
+       * phpGroupWare is free software; you can redistribute it and/or modify
+       * it under the terms of the GNU General Public License as published by
+       * the Free Software Foundation; either version 2 of the License, or
+       * (at your option) any later version.
+       *
+       * phpGroupWare is distributed in the hope that it will be useful,
+       * but WITHOUT ANY WARRANTY; without even the implied warranty of
+       * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+       * GNU General Public License for more details.
+       *
+       * You should have received a copy of the GNU General Public License
+       * along with phpGroupWare; if not, write to the Free Software
+       * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 
 USA
+       *
+       * @license http://www.gnu.org/licenses/gpl.html GNU General Public 
License
+       * @internal Development of this application was funded by 
http://www.bergen.kommune.no/bbb_/ekstern/
+       * @package property
+       * @subpackage import
+       * @version $Id: Import_fra_Service,v 1.19 2007/03/18 16:33:16 sigurdne 
Exp $
+       */
+
+       /**
+        * Description
+        * @package property
+        */
+
+       class import_conv
+       {
+               var $currentrecord = array(); //used for buffering to allow uid 
lines to go first
+               var $id = -1;
+               var $kildeid=1;
+               var $splitt=0;
+               var $type = 'csv';
+               var $header_count = 18;
+               var $soXport;
+               var $invoice;
+
+               var $import = array(
+                       'Bestilling' => 'pmwrkord_code', 
+                       'Fakt. Nr' => 'fakturanr',
+                       'Konto' => 'spbudact_code',
+                       'Objekt' => 'dima',
+                       'DIM 6' => 'dimd',//utgår fra import - kopieres fra 
kategori
+                       'MVA' => 'mvakode',
+                       'Tjeneste'=> 'kostra_id',
+                       'Belop [kr]' => 'belop'
+                       );
+
+               var $header = array('Bestilling','Fakt. 
Nr','Konto','Objekt','DIM 6','MVA','Belop [kr]');
+
+               function import_conv()
+               {
+                       $this->db                               = 
clone($GLOBALS['phpgw']->db);
+                       $this->soXport                  = 
CreateObject('property.soXport');     
+                       $this->invoice                  = 
CreateObject('property.boinvoice');
+                       $this->bocommon                 = 
CreateObject('property.bocommon');
+                       $this->dateformat               = 
$GLOBALS['phpgw']->db->date_format();
+                       $this->datetimeformat   = 
$GLOBALS['phpgw']->db->datetime_format();
+                       $this->next_bilagsnr    = 
$this->invoice->next_bilagsnr();
+               }
+
+               function import($invoice_common,$download)
+               {
+                       $tsvfile        = $invoice_common['tsvfile'];
+
+                       $conv_type      = $invoice_common['conv_type'];
+                       $buffer = array();
+
+//-----------
+
+                       phpgw::import_class('phpgwapi.phpexcel');
+
+                       $objPHPExcel = PHPExcel_IOFactory::load($tsvfile);
+
+                       $data = 
$objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
+
+                       $result = array();
+
+                       $rows = count($data)+1;
+
+                       for ($row = $this->header_count; $row < $rows; $row++ )
+                       {
+                               $this->currentrecord = array();
+
+                               $j=0;
+                               foreach($data[$row] as $key => $_dummy)
+                               {
+                                       $value = 
$objPHPExcel->getActiveSheet()->getCellByColumnAndRow($j,$row)->getCalculatedValue();
+
+                                       if ($name = 
$this->import[$this->header[$j]])
+                                       {
+                                               
+                                               $value = 
str_replace(array('\n','\r'),array('<BR>',''),$value);
+                                               $this->currentrecord += 
array($name => $value);
+                                       }
+                                       $j++;
+                               }
+
+                               if($this->currentrecord['fakturanr'] && 
$this->currentrecord['belop']) // fakturanr og beløp
+                               {
+                                       ++$this->id;
+                                       $buffer = 
$this->import_end_record($buffer,$invoice_common);
+                               }
+                       }
+
+//----------
+
+                       if(!$download)
+                       {
+                               $buffer = 
$this->import_end_file($buffer,$invoice_common['bilagsnr']);
+                       }
+
+                       return $buffer;
+               }
+               
+
+               function import_end_record($buffer,$invoice_common)
+               {
+                       $buffer[$this->id] = array();
+
+                       foreach ($this->currentrecord as $name => $value)
+                       {
+                               if($name=='belop')
+                               {
+                                       $value = str_replace('kr','',$value);
+                                       $value = str_replace(' ','',$value);
+                                       $value = str_replace(',','.',$value);
+                                       
+                                       if( $invoice_common['art'] == 2 ) // 
kreditnota
+                                       {
+                                               $value = -1 * abs($value);
+                                       }
+                                       
+                                       $buffer[$this->id]['godkjentbelop'] = 
$value;
+                               }
+                               if($name=='pmwrkord_code')
+                               {
+                                       
if(!$this->soXport->check_order((int)$value))
+                                       {
+                                               $value='';
+                                       }
+                                       else
+                                       {
+                                               $workorder = 
execMethod('property.soworkorder.read_single', (int)$value);
+                                               
$buffer[$this->id]['project_id'] = 
$this->soXport->get_project((int)$value);//Agresso prosjekt
+                                               $buffer[$this->id]['dime']      
= $workorder['cat_id']; // Dim 6
+                                               $buffer[$this->id]['dimb']      
= $workorder['ecodimb']; // Ansvarssted
+                                       }
+                               }
+
+                               if($name=='spbudact_code')
+                               {
+                                       continue;
+                               //      $value = 
$this->check_spbudact_code($value);
+
+                               }
+
+                               if($name=='dima')
+                               {
+                                       $value = $this->check_dima($value);
+                                       $buffer[$this->id]['loc1'] = 
$loc1=substr($value,0,4);
+                               }
+
+                               if($name=='mvakode')
+                               {
+                                       if( $invoice_common['auto_tax'])
+                                       {
+                                               $value = 
(int)$this->soXport->auto_tax($buffer[$this->id]['loc1']);
+                                       }
+                                       else
+                                       {
+                                               $value = (int) $value;
+                                       }
+                               }
+                               
+                               $buffer[$this->id][$name] = $value;
+                       }
+
+                       $buffer[$this->id]['bilagsnr'] = $this->next_bilagsnr;
+                       $buffer[$this->id]['splitt'] = $this->splitt;
+                       $buffer[$this->id]['kildeid'] = $this->kildeid;
+                       $buffer[$this->id]['kidnr'] = $invoice_common['kid_nr'];
+                       $buffer[$this->id]['typeid'] = $invoice_common['type'];
+                       $buffer[$this->id]['periode'] = 
$invoice_common['syear'] . sprintf("%02d",$invoice_common['smonth']);
+                       $buffer[$this->id]['regtid'] = 
date($this->datetimeformat);
+                       $buffer[$this->id]['artid'] = $invoice_common['art'];
+                       $buffer[$this->id]['spvend_code'] = 
$invoice_common['vendor_id'];
+                       $buffer[$this->id]['oppsynsmannid'] = 
$invoice_common['janitor'];
+                       $buffer[$this->id]['saksbehandlerid'] = 
$invoice_common['supervisor'];
+                       $buffer[$this->id]['budsjettansvarligid'] = 
$invoice_common['budget_responsible'];
+                       
+                       $buffer[$this->id]['dimd'] = $buffer[$this->id]['dime'];
+
+                       $invoice_date = 
date($this->dateformat,mktime(2,0,0,$invoice_common['smonth'],$invoice_common['sday'],$invoice_common['syear']));
+
+                       if($invoice_common['num_days'])
+                       {
+                               $payment_date = 
date($this->dateformat,mktime(2,0,0,$invoice_common['smonth'],$invoice_common['sday'],$invoice_common['syear'])+(86400*$invoice_common['num_days']));
+                       }
+                       else
+                       {
+                               $payment_date = 
date($this->dateformat,mktime(2,0,0,$invoice_common['emonth'],$invoice_common['eday'],$invoice_common['eyear']));
                       
+                       }
+
+                       $buffer[$this->id]['fakturadato'] = $invoice_date;
+                       $buffer[$this->id]['forfallsdato'] = $payment_date;
+
+
+                       if($workorder)
+                       {
+                               $buffer[$this->id]['spbudact_code'] = 
$workorder['b_account_id'];
+                       }
+                       else
+                       {
+                               $buffer[$this->id]['spbudact_code'] = '123014'; 
                
+                       }
+
+                       if($invoice_common['auto_tax'])
+                       {
+                               $buffer[$this->id]['mvakode'] = 
$this->soXport->tax_b_account_override($buffer[$this->id]['mvakode'] 
,$buffer[$this->id]['spbudact_code']);
+                               $buffer[$this->id]['mvakode'] = 
$this->soXport->tax_vendor_override($buffer[$this->id]['mvakode'] 
,$buffer[$this->id]['spvend_code']);
+                       }
+
+                       $buffer[$this->id]['kostra_id'] = 
$this->soXport->get_kostra_id($buffer[$this->id]['loc1']);
+
+                       if(!isset($buffer[$this->id]['fakturanr']) || 
!$buffer[$this->id]['fakturanr']) // fakturanr
+                       {
+                               $buffer[$this->id]['dimb'] = 
$invoice_common['invoice_num'];
+                       }
+
+                       if(!isset($buffer[$this->id]['dimb']) || 
!$buffer[$this->id]['dimb']) // Ansvarssted
+                       {
+                               $buffer[$this->id]['dimb'] = 
$invoice_common['dim_b'];
+                       }
+                       
+
+                       return $buffer;
+               }
+               
+               function check_spbudact_code($id)
+               {
+                       $b_account='';
+                       $this->db->query("select id from fm_b_account where 
id='$id'");
+                       $this->db->next_record();
+                       if ($this->db->f('id'))
+                       { 
+                               $b_account = $this->db->f('id');
+                       }
+                       else
+                       {
+                               $this->db->query("select id from 
fm_b_account_convert where old_id='$id'");
+                               $this->db->next_record();
+                               $b_account = $this->db->f('id');
+                       }
+                       
+                       return $b_account;
+               }
+
+               function check_dima($id)
+               {
+                       $loc1=substr($id,0,4);
+                       $loc2=substr($id,4,2);
+                       
+                       $this->db->query("select loc1 from fm_location1 where 
loc1='$loc1' AND ((fm_location1.category <> 99) OR (fm_location1.category IS 
NULL))");
+                       $this->db->next_record();
+                       if ($this->db->f('loc1'))
+                       { 
+                               $dima = $this->db->f('loc1');
+                               
+                               if ($loc2)
+                               {
+                                       $this->db->query("select location_code 
from fm_location2 where loc1='$loc1' AND loc2='$loc2'  AND 
((fm_location2.category <> 99) OR (fm_location2.category IS NULL))");
+                                       $this->db->next_record();
+                                       if ($this->db->f('location_code'))
+                                       { 
+                                               $dima = 
str_replace('-','',$this->db->f('location_code'));
+                                       }
+                                       else
+                                       {
+                                               unset($dima);
+                                       }
+                               }
+                       }
+                       
+                       return $dima;
+               }
+
+               function import_end_file($buffer,$bilagsnr)
+               {
+                       $num    = $this->soXport->add($buffer);
+                       $receipt['message'][]= array('msg' => 
lang('Successfully imported %1 records into your invoice register.',$num).' 
'.lang('ID').': '. $bilagsnr);
+                       return $receipt;
+               }
+       }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]