fmsystem-commits
[Top][All Lists]
Advanced

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

[Fmsystem-commits] [6931] property: new import filter


From: Sigurd Nes
Subject: [Fmsystem-commits] [6931] property: new import filter
Date: Fri, 04 Feb 2011 15:02:07 +0000

Revision: 6931
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=6931
Author:   sigurdne
Date:     2011-02-04 15:02:06 +0000 (Fri, 04 Feb 2011)
Log Message:
-----------
property: new import filter

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

Added: trunk/property/inc/import/default/efaktura_dnb_xml
===================================================================
--- trunk/property/inc/import/default/efaktura_dnb_xml                          
(rev 0)
+++ trunk/property/inc/import/default/efaktura_dnb_xml  2011-02-04 15:02:06 UTC 
(rev 6931)
@@ -0,0 +1,319 @@
+<?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_BKK_csv,v 1.8 2007/03/18 16:33:16 sigurdne 
Exp $
+       */
+
+       /**
+        * Description
+        * @package property
+        */
+
+       class import_conv
+       {
+               var $spbudact_code='12304321';
+               var $mvakode=0;
+               var $kildeid=1;
+               var $splitt=0;
+               var $soXport;
+               var $invoice;
+               var $meter_table;
+               protected $bilagsnr = array();
+
+               var $import = array
+               (
+                       'Bestilling'    => 'pmwrkord_code', 
+                       'Fakt. Nr'              => 'fakturanr',
+                       'Måler nr'              => 'maalernr',
+                       'Konto'                 => 'spbudact_code',
+                       'Objekt'                => 'dima',
+                       'Omr'                   => 'omraade',
+                       'Adresse'               => 'stedsnavn',
+                       'MVA'                   => 'mvakode',
+                       'Tjeneste'              => 'kostra_id',
+                       'Belop [kr]'    => 'belop'
+               );
+
+//             var $header = array('Fakt. Nr','Måler 
nr','Konto','Objekt','MVA','Belop [kr]','Omr','Adresse');
+
+
+               function import_conv()
+               {
+                       $this->soXport          = 
CreateObject('property.soXport');     
+                       $this->invoice          = 
CreateObject('property.boinvoice');
+                       $this->config           = 
CreateObject('phpgwapi.config','property');
+                       $this->config->read_repository();
+                       $this->meter_table = 
$this->config->config_data['meter_table'];
+
+                       $this->db                               = & 
$GLOBALS['phpgw']->db;
+                       $this->join                             = & 
$this->db->join;
+                       $this->left_join                = & 
$this->db->left_join;
+                       $this->like                             = & 
$this->db->like;
+                       $this->datetimeformat   = $this->db->datetime_format();
+                       $this->dateformat               = 
$this->db->date_format();
+               }
+
+               function import($invoice_common,$download)
+               {
+                       $tsvfile        = $invoice_common['tsvfile'];
+                       $conv_type      = $invoice_common['conv_type'];
+                       $this->bilagsnr[] = $this->invoice->next_bilagsnr();
+                       $buffer = array();
+                       $xmlparse = CreateObject('property.XmlToArray');
+                       $xmlparse->setEncoding('UTF-8');
+                       $xmlparse->setDecodesUTF8Automaticly(false);
+                       $xmlparse->setIncludesEmptyValues(true);
+                       $var_result = $xmlparse->parseFile($tsvfile);
+
+                       $i = 0;                 
+                       if(isset($var_result['Invoice']))
+                       {
+                               foreach ($var_result['Invoice'] as $invoice)
+                               {
+                                       foreach 
($invoice['InvoiceHeader'][0]['Buyer'][0]['Ref'] as $_ref)
+                                       {
+                                               if ($_ref['Code'] == 
'CustomerNumber')
+                                               {
+                                                       $kundenr = 
$_ref['Text'];
+                                               }
+                                       }
+
+                                       $supplier_orgnumber     = 
$invoice['InvoiceHeader'][0]['Supplier'][0]['OrgNumber'];
+                                       $fakturanr                      = 
$invoice['InvoiceHeader'][0]['InvoiceNumber'];
+                                       $invoice_date           = 
date($this->dateformat,strtotime($invoice['InvoiceHeader'][0]['InvoiceDate']));
+                                       $payment_date           = 
date($this->dateformat,strtotime($invoice['InvoiceHeader'][0]['Payment'][0]['DueDate']));
+                                       $periode                        = 
date('Ym',strtotime($invoice['InvoiceHeader'][0]['InvoiceDate']));
+                                       $kidnr                          = 
$invoice['InvoiceHeader'][0]['Payment'][0]['KidNumber'];
+                                       $currency                       = 
$invoice['InvoiceHeader'][0]['Payment'][0]['Currency'];
+                                       $maalepunktid           = 
$invoice['InvoiceHeader'][0]['InvoiceReferences'][0]['BuyersOrderNumber'];
+                                       $godkjentbelop          = 
$invoice['InvoiceSummary'][0]['InvoiceTotals'][0]['GrossAmount'];
+                                       $kunde_navn                     = 
$invoice['InvoiceHeader'][0]['Buyer'][0]['Name'];
+
+                                       $stedsnavn                      = 
$invoice['InvoiceHeader'][0]['Buyer'][0]['PostalAddress'][0]['Address1'] . "\n";
+                                       $stedsnavn                      .= 
$invoice['InvoiceHeader'][0]['Buyer'][0]['PostalAddress'][0]['Address2'] . "\n";
+                                       $stedsnavn                      .= 
$invoice['InvoiceHeader'][0]['Buyer'][0]['PostalAddress'][0]['PostalCode'] . 
"\n";
+                                       $stedsnavn                      .= 
$invoice['InvoiceHeader'][0]['Buyer'][0]['PostalAddress'][0]['PostalDistrict'] 
. "\n";
+                                       
+                                       $buffer[$i]['bilagsnr'] = 
max($this->bilagsnr);
+
+                                       if($godkjentbelop < 0)
+                                       {
+                                               $buffer[$i]['artid'] = 2;       
                                
+                                       }
+                                       else
+                                       {
+                                               $buffer[$i]['artid'] = 
$invoice_common['art'];
+                                       }
+
+                                       if( $invoice_common['art'] == 2 ) // 
kreditnota
+                                       {
+                                               $godkjentbelop = -1 * 
abs($godkjentbelop);
+                                       }
+
+                                       $merknad = <<<HTML
+                                       <table cellspacing="10">
+                                               <tr>
+                                                       <td>
+                                                               Målepunktid
+                                                       </td>
+                                                       <td>
+                                                               $maalepunktid
+                                                       </td>
+                                               </tr>
+                                               <tr>
+                                                       <td>
+                                                               Fakturanr
+                                                       </td>
+                                                       <td>
+                                                               $fakturanr
+                                                       </td>
+                                               </tr>
+                                               <tr>
+                                                       <td>
+                                                               Kundenr
+                                                       </td>
+                                                       <td>
+                                                               $kundenr
+                                                       </td>
+                                               </tr>
+                                               <tr>
+                                                       <td>
+                                                               Kundenavn
+                                                       </td>
+                                                       <td>
+                                                               $kunde_navn
+                                                       </td>
+                                               </tr>
+                                               <tr>
+                                                       <td>
+                                                               Adresse
+                                                       </td>
+                                                       <td>
+                                                               $stedsnavn
+                                                       </td>
+                                               </tr>
+                                       </table>
+HTML;
+
+
+                                       $merknad .= <<<HTML
+                                       <table cellspacing="10">
+                                               <tr>
+                                                       <td>
+                                                               Beskrivelse
+                                                       </td>
+                                                       <td>
+                                                               Enhetspris
+                                                       </td>
+                                                       <td>
+                                                               Beløp
+                                                       </td>
+                                                       <td>
+                                                               Mengde
+                                                       </td>
+                                                       <td>
+                                                               Enhet
+                                                       </td>
+                                               </tr>
+HTML;
+                                       
+                                       foreach($invoice['InvoiceDetails'] as 
$invoicedetails)
+                                       {
+                                               foreach 
($invoicedetails['BaseItemDetails'] as $baseitemdetails)
+                                               {
+                                                       $line = 
"<tr><td>{$baseitemdetails['Description']}</td>";
+                                                       $line .= '<td align = 
"right">'. number_format(round($baseitemdetails['UnitPrice'],2),2). "</td>";
+                                                       $line .= '<td align = 
"right">'."{$baseitemdetails['LineItemAmount']}</td>";
+                                                       $line .= '<td align = 
"right">'."{$baseitemdetails['QuantityInvoiced']}</td>";
+                                                       $line .= '<td align = 
"right">'."{$baseitemdetails['UnitOfMeasure']}</td></tr>";
+                                                       $merknad .= $line;
+                                               }
+                                       }                                       
+
+                                       $merknad .= <<<HTML
+                                       </table>
+HTML;
+                                       $buffer[$i]['merknad']                  
        = $merknad;
+
+                                       $maalerinfo     = 
$this->anleggsnr_to_objekt($maalepunktid,$this->meter_table);
+                                       $dima           = $maalerinfo['dima'];
+                                       $loc1           = $maalerinfo['loc1'];
+                                       $omraade        = 
$maalerinfo['district'];
+
+                                       if($invoice_common['auto_tax'])
+                                       {
+                                               
$mvakode=$this->soXport->auto_tax($dima);
+                                               
+                                               if($mvakode)
+                                               {
+                                                       $buffer[$i]['mvakode']  
        = $mvakode;
+                                               }
+                                               else
+                                               {
+                                                       $buffer[$i]['mvakode']  
        = $this->mvakode;
+                                               }
+                                       }
+                                       else
+                                       {
+                                               $buffer[$i]['mvakode']          
        = $this->mvakode;
+                                       }
+
+                                       $buffer[$i]['stedsnavn']                
        = $stedsnavn;
+                                       $buffer[$i]['currency']                 
        = $currency;
+                                       $buffer[$i]['fakturanr']                
        = $fakturanr;
+                                       $buffer[$i]['dima']                     
                = $dima;
+                                       $buffer[$i]['loc1']                     
                = $loc1;
+                                       $buffer[$i]['omraade']                  
        = $omraade;
+                                       $buffer[$i]['splitt']                   
        = $this->splitt;
+                                       $buffer[$i]['kildeid']                  
        = $this->kildeid;
+                                       $buffer[$i]['spbudact_code']            
= $this->spbudact_code;
+                                       $buffer[$i]['kidnr']                    
        = $kidnr;
+                                       $buffer[$i]['typeid']                   
        = $invoice_common['type'];
+                                       $buffer[$i]['fakturadato']              
        = $invoice_date;
+                                       $buffer[$i]['forfallsdato']             
        = $payment_date;
+                                       $buffer[$i]['periode']                  
        = $periode;
+                                       $buffer[$i]['regtid']                   
        = date($this->datetimeformat);
+                                       $buffer[$i]['belop']                    
        = $godkjentbelop;
+                                       $buffer[$i]['godkjentbelop']            
= $godkjentbelop;
+                                       $buffer[$i]['spvend_code']              
        = $invoice_common['vendor_id'];
+                                       $buffer[$i]['dimb']                     
                = $invoice_common['dim_b'];
+                                       $buffer[$i]['oppsynsmannid']            
= $invoice_common['janitor'];
+                                       $buffer[$i]['saksbehandlerid']          
= $invoice_common['supervisor'];
+                                       $buffer[$i]['budsjettansvarligid']      
= $invoice_common['budget_responsible'];
+
+                                       if($invoice_common['auto_tax'])
+                                       {
+                                               $buffer[$i]['mvakode']          
        = $this->soXport->tax_b_account_override($buffer[$i]['mvakode'] 
,$buffer[$i]['spbudact_code']);
+                                               $buffer[$i]['mvakode']          
        = $this->soXport->tax_vendor_override($buffer[$i]['mvakode'] 
,$buffer[$i]['spvend_code']);
+                                               $buffer[$i]['kostra_id']        
        = $this->soXport->get_kostra_id($buffer[$i]['dima']);
+                                       }
+
+                                       $i++;
+                                       $this->bilagsnr[] = 
max($this->bilagsnr)+1;
+                               }
+                       }
+
+                       if(!$download)
+                       {
+                               $buffer = $this->import_end_file($buffer);
+                       }
+
+//                     $this->header = array('Fakt. Nr','Måler 
nr','Konto','Objekt','MVA','Tjeneste','Belop [kr]','Omr','Adresse');
+                       return $buffer;
+               }
+               
+
+               function anleggsnr_to_objekt($anleggsnr,$meter_table)
+               {
+                       $sql = "SELECT 
{$meter_table}.ext_meter_id,{$meter_table}.loc1,{$meter_table}.loc2,{$meter_table}.loc3,fm_part_of_town.district_id
 "
+                       . " FROM {$meter_table} {$this->join} fm_location1 ON 
{$meter_table}.loc1 = fm_location1.loc1 $this->join "
+                         . " fm_part_of_town ON fm_location1.part_of_town_id = 
fm_part_of_town.part_of_town_id WHERE {$meter_table}.ext_system_id2 
{$this->like} '%{$anleggsnr}'";
+//     _debug_array($sql);
+                       $this->db->query($sql);
+
+                       $this->db->next_record();
+                       $loc1 = $this->db->f('loc1');
+                       $loc2 = $this->db->f('loc2');
+
+                       $maalerinfo['loc1']=$loc1;
+                       $maalerinfo['dima']=$loc1.$loc2;
+                       $maalerinfo['maalernr']=$this->db->f('ext_meter_id');
+                       $maalerinfo['district']=$this->db->f('district_id');
+                       return $maalerinfo;
+               }
+
+               function import_end_file($buffer)
+               {
+
+//_debug_array($buffer);die();
+                       $num    = $this->soXport->add($buffer);
+                       array_pop($this->bilagsnr);
+                       $bilagsnr = max($this->bilagsnr);
+                       $this->db->query("UPDATE fm_idgenerator SET VALUE 
={$bilagsnr} WHERE name = 'Bilagsnummer'");
+                       $receipt['message'][]= array('msg' => 
lang('Successfully imported %1 records into your invoice register.',$num).' 
'.lang('ID').': '. implode(',', $this->bilagsnr));
+                       return $receipt;
+               }
+       }




reply via email to

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