fmsystem-commits
[Top][All Lists]
Advanced

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

[Fmsystem-commits] [11540] property: add export scheme


From: Sigurd Nes
Subject: [Fmsystem-commits] [11540] property: add export scheme
Date: Tue, 17 Dec 2013 12:42:20 +0000

Revision: 11540
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=11540
Author:   sigurdne
Date:     2013-12-17 12:40:48 +0000 (Tue, 17 Dec 2013)
Log Message:
-----------
property: add export scheme

Added Paths:
-----------
    trunk/property/inc/export/default/Agresso_Bergen_Kostfordeling

Added: trunk/property/inc/export/default/Agresso_Bergen_Kostfordeling
===================================================================
--- trunk/property/inc/export/default/Agresso_Bergen_Kostfordeling              
                (rev 0)
+++ trunk/property/inc/export/default/Agresso_Bergen_Kostfordeling      
2013-12-17 12:40:48 UTC (rev 11540)
@@ -0,0 +1,1158 @@
+<?php
+       /**
+       * phpGroupWare - property: a Facilities Management System.
+       *
+       * @author Sigurd Nes <address@hidden>
+       * @copyright Copyright (C) 
2003,2004,2005,2006,2007,2008,2009,2010,2011,2012 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 export
+       * @version $Id: Agresso 11369 2013-10-11 15:29:13Z sigurdne $
+       */
+
+       /**
+        * Description
+        * @package property
+        */
+
+       class export_conv
+       {
+               //var $fil_katalog='c:/temp'; //On windows use 
"//computername/share/filename" or "\\\\computername\share\filename" to check 
files on network shares.
+
+               protected $old_files_deleted;
+               protected $debug;
+               protected $orders_affected = array();
+               protected $db;
+               protected $db2;
+               protected $soXport;
+               protected $config;
+
+               function __construct()
+               {
+                       $this->db               = & $GLOBALS['phpgw']->db;
+                       $this->join     = & $this->db->join;
+                       $this->db2              = clone($this->db);
+                       $this->soXport  = CreateObject('property.soXport');
+                       $this->config   = 
CreateObject('admin.soconfig',$GLOBALS['phpgw']->locations->get_id('property', 
'.invoice'));
+               }
+
+               function 
select_periods_with_invoice_to_transfer($pre_transfer='')
+               {
+                       if($pre_transfer)
+                       {
+                               $sql= "SELECT DISTINCT periode from fm_ecobilag 
WHERE utbetalingsigndato IS NULL";
+                       }
+                       else
+                       {
+                               $sql= "SELECT DISTINCT periode from fm_ecobilag 
WHERE budsjettsigndato is not null and (saksigndato is not null or 
oppsynsigndato is not null) and utbetalingsigndato is not null";
+                       }
+
+                       $periode = array();
+                       $this->db->query($sql,__LINE__,__FILE__);
+                       while ($this->db->next_record())
+                       {
+                               $periode[]      = $this->db->f('periode');
+                       }
+
+                       return $periode;
+               }
+
+               function log_end($batchid)
+               {
+                       $tid=date($this->soXport->datetimeformat);
+                       $sql= "insert into fm_ecologg (batchid,melding,tid) 
values ('$batchid','End transfer','$tid')";
+                       $this->db->query($sql,__LINE__,__FILE__);
+               }
+
+               function log_error($batchid,$error_desr)
+               {
+                       $tid=date($this->soXport->datetimeformat);
+                       $sql= "insert into fm_ecologg 
(batchid,ecobilagid,status,melding,tid) values 
('$batchid',NULL,0,'$error_desr','$tid')";
+                       $this->db->query($sql,__LINE__,__FILE__);
+               }
+
+               function increment_batchid()
+               {
+
+                       $this->db->query("update fm_idgenerator  set value = 
value + 1 where name = 'Ecobatchid'",__LINE__,__FILE__);
+                       $this->db->query("select value from fm_idgenerator  
where name = 'Ecobatchid'",__LINE__,__FILE__);
+                       $this->db->next_record();
+                       $bilagsnr = $this->db->f('value');
+                       return $bilagsnr;
+
+               }
+
+               function next_batchid()
+               {
+
+                       $this->db->query("select value from fm_idgenerator  
where name = 'Ecobatchid'",__LINE__,__FILE__);
+                       $this->db->next_record();
+                       $batchid = $this->db->f('value')+1;
+
+                       return $batchid;
+               }
+
+               //Lagre start melding
+               function log_start($batchid)
+               {
+                       $tid=date($this->soXport->datetimeformat);
+                       $sql= "insert into fm_ecologg (batchid,melding,tid) 
values ('$batchid','Start transfer','$tid')";
+                       $this->db->query($sql,__LINE__,__FILE__);
+               }
+
+               function get_vendor_info($vendor_id='')
+               {
+                       $sql = "select org_nr,konto_nr from fm_vendor where 
id='$vendor_id'";
+                       $this->db->query($sql,__LINE__,__FILE__);
+                       $this->db->next_record();
+
+                       $vendor_info= array(
+                               'org_nr' => $this->db->f('org_nr'),
+                               'konto_nr' => $this->db->f('konto_nr')
+                               );
+
+                       return $vendor_info;
+               }
+
+               function get_order_title($order_id='')
+               {
+                       $sql = "select type from fm_orders where 
id='$order_id'";
+                       $this->db->query($sql,__LINE__,__FILE__);
+                       $this->db->next_record();
+
+                       switch($this->db->f('type'))
+                       {
+                               case 'workorder':
+                                       $sql2 = "select title from fm_workorder 
where id='$order_id'";
+                                       
$this->db->query($sql2,__LINE__,__FILE__);
+                                       $this->db->next_record();
+                                       $order_title = $this->db->f('title');
+                                       break;
+                               case 's_agreement':
+                                       $sql2 = "select descr as title from 
fm_s_agreement where id='$order_id'";
+                                       
$this->db->query($sql2,__LINE__,__FILE__);
+                                       $this->db->next_record();
+                                       $order_title = $this->db->f('title');
+                                       break;
+                       }
+
+                       return $order_title;
+               }
+
+
+               function select_invoice_rollback($day,$month,$year,$Filnavn)
+               {
+
+                       switch($GLOBALS['phpgw_info']['server']['db_type'])
+                       {
+                               case 'mssql':
+                                       $datepart_year          = 
"datepart(year,overftid)";
+                                       $datepart_month         = 
"datepart(month,overftid)";
+                                       $datepart_day           = 
"datepart(day,overftid)";
+                                       break;
+                               case 'mysql':
+                                       $datepart_year          = 
"YEAR(overftid)";
+                                       $datepart_month         = 
"MONTH(overftid)";
+                                       $datepart_day           = 
"DAYOFMONTH(overftid)";
+                                       break;
+                               case 'pgsql':
+                               case 'postgres':
+                                       $datepart_year          = 
"date_part('year',overftid)";
+                                       $datepart_month         = 
"date_part('month',overftid)";
+                                       $datepart_day           = 
"date_part('day',overftid)";
+                                       break;
+                       }
+
+
+               $sql = "SELECT * FROM fm_ecobilagoverf WHERE filnavn='$Filnavn' 
and $datepart_year=$year and $datepart_month=$month and $datepart_day= $day";
+                       $this->db->query($sql,__LINE__,__FILE__);
+
+                       $i = 0;
+                       while ($this->db->next_record())
+                       {
+                               $invoice_roleback[$i]['id']     = 
$this->db->f('id');
+                               $invoice_roleback[$i]['bilagsnr']       = 
$this->db->f('bilagsnr');
+                               $invoice_roleback[$i]['kidnr']  = 
$this->db->f('kidnr');
+                               $invoice_roleback[$i]['typeid'] = 
$this->db->f('typeid');
+                               $invoice_roleback[$i]['kildeid']        = 
$this->db->f('kildeid');
+                               $invoice_roleback[$i]['pmwrkord_code']  = 
$this->db->f('pmwrkord_code');
+                               $invoice_roleback[$i]['belop']  = 
$this->db->f('belop');
+                               $invoice_roleback[$i]['fakturadato']    = 
$this->db->f('fakturadato');
+                               $invoice_roleback[$i]['periode']        = 
$this->db->f('periode');
+                               $invoice_roleback[$i]['forfallsdato']   = 
$this->db->f('forfallsdato');
+                               $invoice_roleback[$i]['fakturanr']      = 
$this->db->f('fakturanr');
+                               $invoice_roleback[$i]['spbudact_code']  = 
$this->db->f('spbudact_code');
+                               $invoice_roleback[$i]['regtid'] = 
$this->db->f('regtid');
+                               $invoice_roleback[$i]['artid']  = 
$this->db->f('artid');
+                               $invoice_roleback[$i]['godkjentbelop']  = 
$this->db->f('godkjentbelop');
+                               $invoice_roleback[$i]['spvend_code']    = 
$this->db->f('spvend_code');
+                               $invoice_roleback[$i]['dima']   = 
$this->db->f('dima');
+                               $invoice_roleback[$i]['loc1']   = 
$this->db->f('loc1');
+                               $invoice_roleback[$i]['dimb']   = 
$this->db->f('dimb');
+                               $invoice_roleback[$i]['mvakode']        = 
$this->db->f('mvakode');
+                               $invoice_roleback[$i]['dimd']   = 
$this->db->f('dimd');
+                               $invoice_roleback[$i]['project_id']     = 
$this->db->f('project_id');
+                               $invoice_roleback[$i]['kostra_id']      = 
$this->db->f('kostra_id');
+                               $invoice_roleback[$i]['item_type']      = 
$this->db->f('item_type');
+                               $invoice_roleback[$i]['item_id']        = 
$this->db->f('item_id');
+
+                               if($this->db->f('oppsynsmannid'))
+                               {
+                                       $invoice_roleback[$i]['oppsynsmannid']  
= $this->db->f('oppsynsmannid');
+                               }
+                               if($this->db->f('saksbehandlerid'))
+                               {
+                                       
$invoice_roleback[$i]['saksbehandlerid']        = 
$this->db->f('saksbehandlerid');
+                               }
+
+                               $invoice_roleback[$i]['budsjettansvarligid']    
= $this->db->f('budsjettansvarligid');
+
+                               if($this->db->f('oppsynsigndato'))
+                               {
+                                       $invoice_roleback[$i]['oppsynsigndato'] 
= $this->db->f('oppsynsigndato');
+                               }
+                               if($this->db->f('saksigndato'))
+                               {
+                                       $invoice_roleback[$i]['saksigndato']    
= $this->db->f('saksigndato');
+                               }
+
+                               $invoice_roleback[$i]['budsjettsigndato']       
= $this->db->f('budsjettsigndato');
+                               $invoice_roleback[$i]['merknad']        = 
$this->db->f('merknad');
+                               $invoice_roleback[$i]['splitt'] = 
$this->db->f('splitt');
+                               $invoice_roleback[$i]['ordrebelop']     = 
$this->db->f('ordrebelop');
+                               $invoice_roleback[$i]['utbetalingid']   = 
$this->db->f('utbetalingid');
+                               $invoice_roleback[$i]['utbetalingsigndato']     
= $this->db->f('utbetalingsigndato');
+                               $i++;
+                       }
+                       return $invoice_roleback;
+           }
+
+
+               //rollback function
+               function bilag_update_overf($BilagOverf)
+               {
+                       $values= array(
+                               $BilagOverf['project_id'],
+                               $BilagOverf['kostra_id'],
+                               $BilagOverf['pmwrkord_code'],
+                               $BilagOverf['bilagsnr'],
+                               $BilagOverf['splitt'],
+                               $BilagOverf['kildeid'],
+                               $BilagOverf['kidnr'],
+                               $BilagOverf[typeid],
+                               $BilagOverf['fakturadato'],
+                               $BilagOverf['forfallsdato'],
+                               $BilagOverf['regtid'],
+                               $BilagOverf['artid'],
+                               $BilagOverf['spvend_code'],
+                               $BilagOverf['dimb'],
+                               $BilagOverf['oppsynsmannid'],
+                               $BilagOverf['saksbehandlerid'],
+                               $BilagOverf['budsjettansvarligid'],
+                               $BilagOverf['fakturanr'],
+                               $BilagOverf['spbudact_code'],
+                               $BilagOverf['dima'],
+                               $BilagOverf['loc1'],
+                               $BilagOverf['dimd'],
+                               $BilagOverf['mvakode'],
+                               $BilagOverf['periode'],
+                               
$this->db->db_addslashes($BilagOverf['merknad']),
+                               $BilagOverf['utbetalingid'],
+                               $BilagOverf['oppsynsigndato'],
+                               $BilagOverf['saksigndato'],
+                               $BilagOverf['budsjettsigndato'],
+                               $BilagOverf['utbetalingsigndato'],
+                               $BilagOverf['item_type'],
+                               $BilagOverf['item_id'],
+                               );
+
+                       $values = $this->db->validate_insert($values);
+
+                       $sql= "INSERT INTO fm_ecobilag 
(project_id,kostra_id,pmwrkord_code,bilagsnr,splitt,kildeid,kidnr,typeid,"
+                       . " 
fakturadato,forfallsdato,regtid,artid,spvend_code,dimb,oppsynsmannid,"
+                       . " 
saksbehandlerid,budsjettansvarligid,fakturanr,spbudact_code,dima,loc1,dimd,mvakode,"
+                       . " 
periode,merknad,utbetalingid,oppsynsigndato,saksigndato,budsjettsigndato,utbetalingsigndato,item_type,item_id,belop,godkjentbelop)"
+                       . " values ($values,"
+                       . $this->db->money_format($BilagOverf['belop']) . ","
+                       . $this->db->money_format($BilagOverf['godkjentbelop']) 
. ")";
+
+                       $this->db->query($sql,__LINE__,__FILE__);
+               }
+
+               function 
overfor($download,$pre_transfer='',$force_period_year='')
+               {
+
+//                     $download = 'on';
+//                     $download = False;
+                       $pre_transfer=True;
+//                     $this->debug=True;
+
+                       //Generer batch ID
+                       $batchid = $this->soXport->next_batchid();
+                       if ($download=='on')
+                       {
+                               $this->increment_batchid();
+                               //Lagre melding
+                               $this->log_start($batchid);
+                       }
+
+                       //Velg ut alle perioder som har bilag som skal overføres
+                       if ($pre_transfer)
+                       {
+                               $periodes = 
$this->select_periods_with_invoice_to_transfer($pre_transfer);
+
+                               foreach ($periodes as $periode)
+                               {
+                                       
$this->OverforPeriode($batchid,$periode,$download,$pre_transfer);
+                               }
+                       }
+
+                       $pre_transfer=False;
+
+                       $periodes = 
$this->select_periods_with_invoice_to_transfer($pre_transfer);
+
+                       foreach ($periodes as $periode)
+                       {
+                               
$this->OverforPeriode($batchid,$periode,$download,$pre_transfer,$force_period_year);
+                       }
+
+                       //Lagre melding
+                       if ($download=='on' || $pre_transfer)
+                       {
+                               $this->log_end($batchid); //Lagre melding
+                       }
+
+                       if (!$download=='on')
+                       {
+                               $GLOBALS['phpgw_info']['flags']['noheader'] = 
true;
+                               $GLOBALS['phpgw_info']['flags']['nofooter'] = 
true;
+                               $GLOBALS['phpgw_info']['flags']['xslt_app'] = 
false;
+                               $GLOBALS['phpgw_info']['flags']['noframework'] 
= true;
+                               echo '&nbsp<a 
href="'.$GLOBALS['phpgw']->link('/index.php',array('menuaction'=> 
'property.uiXport.export')) . '">' . lang('Back') . '</a></br>';
+                               $GLOBALS['phpgw']->common->phpgw_exit();
+                       }
+
+                       return $receipt;
+               }
+
+               function errorhandler($batchid,$error_desr)
+               {
+                       $this->db->transaction_abort();
+
+                       $meld = $error_desr;
+
+                       phpgwapi_cache::message_set($error_desr, 'error'); 
+                       //Vis feilmelding
+//                     echo $meld;
+
+                       //Lagre feilmelding
+                       $this->log_error($batchid,$error_desr);
+               }
+
+               function RullTilbake($Filnavn,$Dato)
+               {
+                       $dateformat = 
strtolower($GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat']);
+                       $dateformat = str_replace(".","",$dateformat);
+                       $dateformat = str_replace("-","",$dateformat);
+                       $dateformat = str_replace("/","",$dateformat);
+                       $y=strpos($dateformat,'y');
+                       $d=strpos($dateformat,'d');
+                       $m=strpos($dateformat,'m');
+
+                       $dateparts = explode('/', $Dato);
+                       $day = $dateparts[$d];
+                       $month = $dateparts[$m];
+                       $year = $dateparts[$y];
+        /*             $date1 = mktime (2,0,0,$month,$day,$year);
+                       if ($date1)
+                       {
+                               $Dato=$date1;
+                       }
+
+                       $Dato= date("M d Y",$Dato);
+       */
+
+                       
$BilagOverf=$this->select_invoice_rollback($day,$month,$year,$Filnavn);
+                       $this->db->transaction_begin();
+
+                       for ($i=0;$i<count($BilagOverf);$i++)
+                       {
+                               $this->bilag_update_overf($BilagOverf[$i]);
+
+
+                               if($BilagOverf[$i]['pmwrkord_code'])
+                               {
+                                       
$orders_affected[$BilagOverf[$i]['pmwrkord_code']] = true;
+
+                                       $Belop = sprintf("%01.2f", 
$BilagOverf[$i]['ordrebelop'])*100;
+
+                                       if ($BilagOverf[$i]['dimd'] % 2 == 0)
+                                       {
+                                               
$actual_cost_field='act_mtrl_cost';
+                                       }
+                                       else
+                                       {
+                                               
$actual_cost_field='act_vendor_cost';
+                                       }
+
+                                       $operator='-';
+
+                                       
$this->soXport->correct_actual_cost($BilagOverf[$i]['pmwrkord_code'],$Belop,$actual_cost_field,$operator);
+                               }
+
+                               //Slett fra avviks tabell
+                       //      
$this->soXport->delete_avvik($BilagOverf[$i]['bilagsnr']);
+
+                               //Slett fra arkiv
+                               
$this->soXport->delete_invoice($BilagOverf[$i]['bilagsnr']);
+
+                               $antall = $antall + 1;
+                       }
+
+                       if($antall > 0)
+                       {
+                               $fil_katalog = 
$this->config->config_data['export']['path'];
+
+                               if(unlink ($fil_katalog. '/' . $Filnavn))
+                               {
+                                       $this->db->transaction_commit();
+                                       $receipt['message'][]= array('msg' => 
$antall . ' ' . lang('bilag/underbilag rullet tilbake'));
+                                       $receipt['message'][]= array('msg' => 
lang('File %1 is deleted',$Filnavn));
+                               }
+                               else
+                               {
+                                       $this->db->transaction_abort();
+                                       $receipt['message'][]= array('msg' => 
'Noe gikk galt!');
+                               }
+                       }
+                       else
+                       {
+                               $receipt['error'][]= array('msg' => lang('Sorry 
- None hits'));
+                       }
+                       return $receipt;
+               }
+
+
+               function LagFilnavn ($batchid,$pre_transfer='')
+               {
+                       if($pre_transfer)
+                       {
+                               $fil_katalog = 
$this->config->config_data['export']['pre_path'];
+
+                               // Slett gamle filer
+
+                               if(!$this->old_files_deleted)
+                               {
+                                       for ($i=0;$i<13;$i++)
+                                       {
+                                               @unlink($fil_katalog . '/FDA_' 
. $i. '.TXT');
+                                       }
+                                
+                                       $this->old_files_deleted= True;
+                               }
+
+
+                               $i = 1;
+                               do
+                               {
+                                       $Filnavn = $fil_katalog . '/FDA_' . $i. 
'.TXT';
+
+                                       //Sjekk om filen eksisterer
+                                       If (!file_exists($Filnavn))
+                                       {
+                                               return $Filnavn;
+                                       }
+
+                                       $i++;
+                               }
+                               while  ($i < 13);
+
+                       }
+                       else
+                       {
+                               $fil_katalog = 
$this->config->config_data['export']['path'];
+                               $continue = True;
+                               $i = 1;
+                               do
+                               {
+                                       $Filnavn = $fil_katalog . '/FDB' . 
date("dmy") . '_' . sprintf("%02s",$i) . '.TXT';
+
+                                       //Sjekk om filen eksisterer
+                                       If (!file_exists($Filnavn))
+                                       {
+                                               return $Filnavn;
+                                       }
+
+                                       $i++;
+                               }
+                               while  ($continue);
+                       }
+
+
+                       //Ingen løpenr er ledige, gi feilmelding
+                       return False;
+               }
+
+
+               private function 
get_vouchers_to_transfer($periode,$pre_transfer=false)
+               {
+                       if($pre_transfer)
+                       {
+                               $sql= "SELECT sum(belop) as belop, fakturanr, 
bilagsnr FROM fm_ecobilag WHERE periode='{$periode}' AND utbetalingsigndato IS 
NULL GROUP BY bilagsnr, fakturanr";
+                       }
+                       else
+                       {
+                               $sql="SELECT sum(belop) as belop, fakturanr, 
bilagsnr FROM fm_ecobilag WHERE periode='{$periode}' AND budsjettsigndato IS 
NOT NULL AND ( saksigndato IS NOT NULL OR oppsynsigndato IS NOT NULL ) AND 
utbetalingsigndato IS NOT NULL group by bilagsnr, fakturanr";
+                       }
+
+                       $this->db->query($sql,__LINE__,__FILE__);
+
+                       $values = array();
+                       while ($this->db->next_record())
+                       {
+                               $values[] = array
+                               (
+                                       'belop'         => 
$this->db->f('belop'),
+                                       'bilagsnr'      => 
$this->db->f('bilagsnr'),
+                                       'fakturanr' => 
$this->db->f('fakturanr'),
+                               );
+                       }
+
+
+                       foreach ($values as &$entry)
+                       {
+                               $sql= "SELECT fm_ecobilag.*,fm_ecouser.initials 
as saksbehandler FROM fm_ecobilag {$this->join} fm_ecouser ON 
fm_ecobilag.budsjettansvarligid=fm_ecouser.lid"
+                               . " WHERE bilagsnr='{$entry['bilagsnr']}' AND 
fakturanr = '{$entry['fakturanr']}'";
+
+                               $this->db->query($sql,__LINE__,__FILE__);
+                               $this->db->next_record();
+
+                               $entry['id']                                    
= $this->db->f('id');
+                               $entry['kidnr']                                 
= $this->db->f('kidnr');
+                               $entry['typeid']                                
= $this->db->f('typeid');
+                               $entry['kildeid']                               
= $this->db->f('kildeid');
+                               $entry['pmwrkord_code']                 = 
$this->db->f('pmwrkord_code');
+                               $entry['fakturadato']                   = 
$this->db->f('fakturadato');
+                               $entry['periode']                               
= $this->db->f('periode');
+                               $entry['forfallsdato']                  = 
$this->db->f('forfallsdato');
+                               $entry['fakturanr']                             
= $this->db->f('fakturanr');
+                               $entry['spbudact_code']                 = 
$this->db->f('spbudact_code');
+                               $entry['regtid']                                
= $this->db->f('regtid');
+                               $entry['artid']                                 
= $this->db->f('artid');
+                               $entry['godkjentbelop']                 = 
$entry['belop'];
+                               $entry['spvend_code']                   = 
$this->db->f('spvend_code');
+                               $entry['dima']                                  
= $this->db->f('dima');
+                               $entry['dimb']                                  
= $this->db->f('dimb');
+                               $entry['mvakode']                               
= $this->db->f('mvakode');
+                               $entry['dimd']                                  
= $this->db->f('dimd');
+                               $entry['dime']                                  
= $this->db->f('dime');
+                               $entry['oppsynsmannid']                 = 
$this->db->f('oppsynsmannid');
+                               $entry['saksbehandlerid']               = 
$this->db->f('saksbehandlerid');
+                               $entry['budsjettansvarligid']   = 
$this->db->f('budsjettansvarligid');
+                               $entry['oppsynsigndato']                = 
$this->db->f('oppsynsigndato');
+                               $entry['saksigndato']                   = 
$this->db->f('saksigndato');
+                               $entry['budsjettsigndato']              = 
$this->db->f('budsjettsigndato');
+                               $entry['merknad']                               
= $this->db->f('merknad');
+                               $entry['line_text']                             
= $this->db->f('line_text');
+                               $entry['splitt']                                
= $this->db->f('splitt');
+                               $entry['utbetalingid']                  = 
$this->db->f('utbetalingid');
+                               $entry['utbetalingsigndato']    = 
$this->db->f('utbetalingsigndato');
+                               $entry['saksbehandler']                 = 
$this->db->f('saksbehandler');
+                               $entry['invoice_line']                          
= $this->get_invoice($entry['bilagsnr'], $entry['fakturanr']);
+
+                       }
+
+                       return $values;
+               }
+
+
+               //Velg ut alle underbilag
+
+               private function get_invoice($bilagsnr, $fakturanr)
+               {
+                       if(!$fakturanr)
+                       {
+                               throw new Exception('Mangler fakturanr');
+                       }
+
+                       $sql= "SELECT fm_ecobilag.* 
,fm_part_of_town.district_id"
+                       . " FROM (fm_location1 {$this->join} fm_part_of_town ON 
fm_location1.part_of_town_id = fm_part_of_town.part_of_town_id)"
+                       . " {$this->join} fm_ecobilag ON fm_location1.loc1 = 
fm_ecobilag.loc1"
+                       . " WHERE bilagsnr='$bilagsnr' AND fakturanr = 
'{$fakturanr}'";
+
+                       $this->db2->query($sql,__LINE__,__FILE__);
+
+                       $values = array();
+                       while ($this->db2->next_record())
+                       {
+                               $values[] = array
+                               (
+                                       'id'                                    
=> $this->db2->f('id'),
+                                       'bilagsnr'                              
=> $this->db2->f('bilagsnr'),
+                                       'kidnr'                                 
=> $this->db2->f('kidnr'),
+                                       'typeid'                                
=> $this->db2->f('typeid'),
+                                       'kildeid'                               
=> $this->db2->f('kildeid'),
+                                       'pmwrkord_code'                 => 
$this->db2->f('pmwrkord_code'),
+                                       'belop'                                 
=> $this->db2->f('belop'),
+                                       'fakturadato'                   => 
$this->db2->f('fakturadato'),
+                                       'periode'                               
=> $this->db2->f('periode'),
+                                       'forfallsdato'                  => 
$this->db2->f('forfallsdato'),
+                                       'fakturanr'                             
=> $this->db2->f('fakturanr'),
+                                       'spbudact_code'                 => 
$this->db2->f('spbudact_code'),
+                                       'regtid'                                
=> $this->db2->f('regtid'),
+                                       'artid'                                 
=> $this->db2->f('artid'),
+                                       'godkjentbelop'                 => 
$this->db2->f('godkjentbelop'),
+                                       'spvend_code'                   => 
$this->db2->f('spvend_code'),
+                                       'dima'                                  
=> $this->db2->f('dima'),
+                                       'loc1'                                  
=> $this->db2->f('loc1'),
+                                       'dimb'                                  
=> $this->db2->f('dimb'),
+                                       'mvakode'                               
=> $this->db2->f('mvakode'),
+                                       'dimd'                                  
=> $this->db2->f('dimd'),
+                                       'dime'                                  
=> $this->db2->f('dime'),
+                                       'project_id'                    => 
$this->db2->f('project_id'),
+                                       'kostra_id'                             
=> $this->db2->f('kostra_id'),
+                                       'oppsynsmannid'                 => 
$this->db2->f('oppsynsmannid'),
+                                       'saksbehandlerid'               => 
$this->db2->f('saksbehandlerid'),
+                                       'budsjettansvarligid'   => 
$this->db2->f('budsjettansvarligid'),
+                                       'oppsynsigndato'                => 
$this->db2->f('oppsynsigndato'),
+                                       'saksigndato'                   => 
$this->db2->f('saksigndato'),
+                                       'budsjettsigndato'              => 
$this->db2->f('budsjettsigndato'),
+                                       'merknad'                               
=> $this->db2->f('merknad'),
+                                       'line_text'                             
=> $this->db2->f('line_text'),
+                                       'splitt'                                
=> $this->db2->f('splitt'),
+                                       'utbetalingid'                  => 
$this->db2->f('utbetalingid'),
+                                       'utbetalingsigndato'    => 
$this->db2->f('utbetalingsigndato'),
+                                       'district_id'                   => 
$this->db2->f('district_id'),
+                                       'item_type'                             
=> $this->db2->f('item_type'),
+                                       'item_id'                               
=> $this->db2->f('item_id')
+                               );
+
+                       }
+
+                       return $values;
+               }
+
+
+               function 
OverforPeriode($batchid,$periode,$download,$pre_transfer='',$force_period_year='')
+               {
+                       $BilagId = 'NULL';
+
+                       //Bestem filnavn
+
+
+                       $Filnavn = $this->LagFilnavn($batchid,$pre_transfer);
+                       if (!$Filnavn)
+                       {
+                               $message='LagFilnavn: Alle loepenr for filnavn 
er i bruk';
+                               $this->errorhandler($batchid,$message);
+                               phpgwapi_cache::message_set($message, 'error'); 
+                               return false;
+                       }
+
+                       //Test om filen kan opprettes og skrives til
+                       if (@fopen($Filnavn, "wb"))
+                       {
+                               unlink($Filnavn);
+                       }
+                       else
+                       {
+                               phpgwapi_cache::message_set('kan ikke lagre til 
fil: '. $Filnavn, 'error'); 
+                               return false;
+                       }
+
+                       //Velg ut alle hoved bilag som skal overføres
+
+                       $this->db->transaction_begin();
+
+                       $oRsBilag =  
$this->get_vouchers_to_transfer($periode,$pre_transfer);
+
+                       $buffer = '';
+
+                       foreach($oRsBilag as $invoice)
+                       {
+
+                               $tranfser_bilag[] = $invoice['bilagsnr'];
+
+                               //Bestem belops felt
+                               if ($invoice['splitt']==0)
+                               {
+                                       //Bilaget er ikke splittet
+                                       if ($invoice['godkjentbelop'] <> 
$invoice['belop'])
+                                       {
+                                               $BelopFelt = 'godkjentbelop';
+                                               //Logg til avviks tabell
+                                               if ($download=='on' && 
!$pre_transfer)
+                                               {
+//                                                     
$this->soXport->log_to_deviation_table($invoice);
+                                               }
+                                       }
+                                       else
+                                       {
+                                               $BelopFelt = 'belop';
+                                       }
+                               }
+
+                               //Bilaget er splittet
+                               if ($invoice['godkjentbelop'] == 
$invoice['belop'])
+                               {
+                                       $BelopFelt = 'godkjentbelop';
+                               }
+                               else
+                               {
+                                        //Ikke lovlig
+                                       $message = lang('Avvik mellom 
fakturabelop og godkjent belop pa splittet faktura!');
+                                       $this->errorhandler($batchid,$message);
+                                       return $message;
+                               }
+
+                               $Belop_motpost =$invoice[$BelopFelt] *100; 
+
+                               //Skriv hovedbilag
+
+                               $Buntnr         = 
sprintf("%-12s",basename($Filnavn,".TXT"));// verdi: MMDDFL, type: c12, plass: 
1 - 12
+                               $Forsystem      = 'BI';// verdi: BI, type: c2, 
plass: 13 - 14
+
+                               $Transtype      = 'GL';// verdi: GL, type: c2, 
plass: 17 - 18
+                               $Firmakode      = sprintf("%-2s",'BB');// 
verdi: Firmakode, type: c2, plass: 19 - 20
+
+                               $Valuteringsdato= 
date(Ymd,strtotime($invoice['fakturadato']));// verdi: Dato, type: date, plass: 
251 - 258
+                               $Bilagsdato     = 
date(Ymd,strtotime($invoice['fakturadato'])) ;// verdi: Dato, type: date, 
plass: 259 - 266
+                               $Bilagsnr       = 
sprintf("%-9s",substr($invoice['bilagsnr'],-8));// verdi: Bilagsnummer, type: 
i4, plass: 267 - 275
+               //              $_periode       = 
sprintf("%06s",date(Y,strtotime($invoice['fakturadato'])) . 
sprintf("%02d",$periode));// verdi: Periode, type: i4, plass: 276 - 281
+                               $ESL            = sprintf("%1s",'');// verdi: 
Blank, type: i+C481, plass: 282 - 282
+
+                               if($pre_transfer)
+                               {
+                                       if(abs(date('m',time()) - $periode) >1)
+                                       {
+                                               $temp_period = date('m',time()) 
-1;
+
+                                               if($temp_period == 0)
+                                               {
+                                                       $temp_period =1;
+                                               }
+
+                                               $temp_year = date('Y',time());
+                                       }
+                                       else
+                                       {
+                                               $temp_period = $periode;
+                                               $temp_year = 
date('Y',strtotime($invoice['fakturadato']));
+                                       }
+
+                                       $_periode       = 
sprintf("%06s",$temp_year . sprintf("%02d",$temp_period));// verdi: Periode, 
type: i4, plass: 276 - 281
+                                       $Bilagsart      = 
sprintf("%2s",'FF');// verdi: , type: c2, plass: 15 - 16
+                                       $Forfall        = '20991231';// verdi: 
Forfallsdato , type: date, plass: 298 - 305
+                               }
+                               else
+                               {
+                                       $_periode       = $periode;
+
+                                       $Bilagsart      = 
sprintf("%2s",'FD');// verdi: , type: c2, plass: 15 - 16
+                                       $Forfall        = 
date(Ymd,strtotime($invoice['forfallsdato']));// verdi: Forfallsdato , type: 
date, plass: 298 - 305
+                               }
+
+                               $Rab_forf       = sprintf("%-8s",'');// verdi: 
Blank, type: date, plass: 306 - 313
+                               $Rabatt         = sprintf("%020s",'');// verdi: 
Blank, type: money, plass: 314 - 333
+                               $Avt_Kon        = sprintf("%-8s",'');// verdi: 
Blank, type: c8, plass: 334 - 341
+
+                               $Kid            = 
sprintf("%-27s",$invoice['kidnr']);// verdi: Kid, type: c27, plass: 351 - 377
+                               $Bet_overforing = sprintf("%-2s",'');// verdi: 
Blank, type: c2, plass: 378 - 379
+                               $Status         = 'N';// verdi: N, type: c1, 
plass: 380 - 380
+                               $Resk_type      = 'P';// verdi: Blank, type: 
c1, plass: 381 - 381
+                               $Resk_nr        = 
sprintf("%-9s",$invoice['spvend_code']);// verdi: Blank., type: i4, plass: 382 
- 390
+                               $Forskudd       = '0';// verdi: 0, type: i1, 
plass: 391 - 391
+                               $Fakturaref     = '000000000';// verdi: 0, 
type: i4, plass: 392 - 400
+                               $Fakturaref     = '000000000';// verdi: 0, 
type: i4, plass: 401 - 409
+                               $Inkassokode    = sprintf("%-6s",'');// verdi: 
Blank, type: c6, plass: 410 - 415
+                               $Bet_mottager   = sprintf("%-8s",'');// verdi: 
Blank, type: c8, plass: 416 - 423
+                               $Att_ansvarlig  = 
sprintf("%-6s",utf8_decode($invoice['saksbehandler']));// verdi: Blank, type: 
c6, plass: 424 - 429
+
+                               $vendor_info = 
$this->get_vendor_info($invoice['spvend_code']);
+
+                               if(!$vendor_info['org_nr'])
+                               {
+                                       $message = 'mangler org_nr for 
reskontronr: ' . $invoice['spvend_code'];
+                                       $this->errorhandler($batchid,$message);
+                                       return $message;
+                               }
+
+                               if(!$vendor_info['konto_nr'])
+                               {
+                                       $message = 'mangler konto for 
reskontronr: ' . $invoice['spvend_code'];
+                                       $this->errorhandler($batchid,$message);
+                                       return $message;
+                               }
+
+                               $Resk_navn      = 
sprintf("%-50s",$vendor_info['org_nr']);// verdi: Fødselsnr, type: c50, plass: 
430 - 479
+                               $Postadresse    = sprintf("%-160s",'');// 
verdi: Blank, type: c160, plass: 480 - 639
+                               $Stat_Provins   = sprintf("%-50s",'');// verdi: 
Blank, type: c50, plass: 640 - 689
+                               $Sted           = sprintf("%-50s",'');// verdi: 
Blank, type: c50, plass: 690 - 739
+                               $Bank_Postgiro_kontonr = 
sprintf("%-35s",str_replace(" ","",$vendor_info['konto_nr']));// verdi: 
konto_nr, type: c35, plass: 740 - 774
+                               $Betalingsmate  = sprintf("%-2s",'');// verdi: 
Blank, type: c2, plass: 775 - 776
+                               $Mva_reg_nr     = sprintf("%-25s",'');// verdi: 
Blank, type: c25, plass: 777 - 801
+                               $Postnummer     = sprintf("%-15s",'');// verdi: 
Blank, type: c15, plass: 802 - 816
+                               $Val_dok        = sprintf("%-3s",'');// verdi: 
Blank, type: c3, plass: 817 - 819
+
+
+                               $underbilag_count= 
count($invoice['invoice_line']);
+                               $last_record = $underbilag_count - 1;
+
+                               //Velg ut alle underbilag
+                               foreach($invoice['invoice_line'] as $_key => 
$invoice_line)
+                               {
+
+                                       $BilagId = $invoice_line['id'];
+
+                                       $Belop = $invoice_line[$BelopFelt]*100;
+                                       $Belop_ = $Belop;
+
+                                       if($Belop < 0)
+                                       {
+                                               $Belop = abs($Belop);
+                                               $Belop = 
sprintf("%019s",$Belop);
+                                               $Belop = '-' . $Belop;
+                                       }
+                                       else
+                                       {
+                                               $Belop = 
sprintf("%019s",$Belop);
+                                               $Belop = '+' . $Belop;
+                                       }
+
+
+                                       if($invoice_line['pmwrkord_code'])
+                                       {
+
+                                               
$orders_affected[$BilagOverf[$i]['pmwrkord_code']] = true;
+
+                                               //Oppdater beløp på arbeidsordre
+                                               if ($download=='on' && 
!$pre_transfer)
+                                               {
+                                                       if 
($invoice_line['dimd'] % 2 == 0)
+                                                       {
+                                                               
$actual_cost_field='act_mtrl_cost';
+                                                       }
+                                                       else
+                                                       {
+                                                               
$actual_cost_field='act_vendor_cost';
+                                                       }
+                                                       $operator='+';
+
+                                                       if(!$this->debug)
+                                                       {
+                                                               
$this->soXport->correct_actual_cost($invoice_line['pmwrkord_code'],$Belop_,$actual_cost_field,$operator);
+                                                       }
+                                               }
+                                       }
+
+                                       //Overfør til fm_ecobilagoverf
+                                       $invoice_line['filnavn']= 
basename($Filnavn);
+                                       
$invoice_line['ordrebelop']=$invoice_line[$BelopFelt];
+
+                                       //dersom det mangler budsjett konto - 
kun aktuelt for ikke godkjent - sett konto til 2899999
+
+                                       if(!$invoice_line['spbudact_code'] && 
$pre_transfer)
+                                       {
+                                               $invoice_line['spbudact_code'] 
= 12304361;
+                                       }
+
+
+                                       //dersom ikke gyldig objekt - kun 
aktuelt for ikke godkjent - sett objekt til 9999
+
+                                       if(!($invoice_line['kostra_id']>0) && 
$pre_transfer)
+                                       {
+                                               $invoice_line['kostra_id'] = 
26550;
+                                               $invoice_line['mvakode'] = 0;
+                                               $invoice_line['dima'] = 9999;
+                                       }
+
+                                       $Konto          = 
sprintf("%08s",$invoice_line['spbudact_code']);// verdi: Art, type: c8, plass: 
21 - 28
+                                       $Dim_1          = 
sprintf("%08s",$invoice_line['dimb']);// verdi: Ansvarssted, type: c8, plass: 
29 - 36
+                                       $Dim_2          = 
sprintf("%-8s",$invoice_line['kostra_id']);// verdi: Tjeneste, type: c8, plass: 
37 - 44
+
+                                       if($pre_transfer)
+                                       {
+                                               $Dim_3          = 
sprintf("%-8s",substr($invoice_line['dima'],0,4));// verdi: Objekt, type: c8, 
plass: 45 - 52
+                                       }
+                                       else
+                                       {
+                                               $Dim_3          = 
sprintf("%-8s",substr($invoice_line['dima'],0,6));// verdi: Objekt-bygg, type: 
c8, plass: 45 - 52
+                                       }
+
+
+                                       $Dim_4          = sprintf("%-8s",'');// 
verdi: Ressurs, type: c8, plass: 53 - 60
+                                       $Dim_5          = 
sprintf("%-12s",$invoice_line['project_id']);// verdi: Prosjekt, type: c12, 
plass: 61 - 72
+
+//FIXME 'dime' må legges inn...
+                                       $Dim_6          = 
sprintf("%-4s",$invoice_line['dime']);// Kategori, type: c4, plass: 73 - 76
+
+                                       $Dim_7          = sprintf("%-4s",'');// 
verdi: Blank, type: c4, plass: 77 - 80
+
+                                       
$Avgiftskode=sprintf("%-2s",$invoice_line['mvakode']);// verdi: Avgiftskode, 
type: c2, plass: 81 - 82
+
+                                       $Avgiftssystem  = sprintf("%2s",'');// 
verdi: Blank, type: c2, plass: 83 - 84
+                                       $Valutakode     ='NOK';// verdi: NOK, 
type: c3, plass: 85 - 87
+                                       $Debet_Kredit   = sprintf("%2s",'');// 
verdi: Blank, type: i2, plass: 88 - 89
+                                       $Valutabelop    = $Belop;// verdi: 
Beløp, type: money, plass: 90 - 109
+                                       $Belop_i_firmavaluta=$Belop;// verdi: 
Beløp, type: money, plass: 110 - 129
+                                       $Antall         = sprintf("%11s",'');// 
verdi: Blank, type: i4, plass: 130 - 140
+                                       $Belop2         = sprintf("%20s",'');// 
verdi: Blank, type: f8, plass: 141 - 160
+                                       $Belop3         = sprintf("%20s",'');// 
verdi: Blank, type: money, plass: 161 - 180
+
+                               //      $Belop4 (også kalt "money3" )blir brukt 
for identifisere overføring på tvers av filer.
+                                       $Belop4         = 
sprintf("%20s",$batchid);// verdi: Blank, type: money, plass: 181 - 200 - 
batch_id høyre justert
+
+/*
+                                       if($invoice_line['pmwrkord_code'])
+                                       {
+                                               $Tekst  = 
sprintf("%-50s",substr(utf8_decode($this->get_order_title($invoice_line['pmwrkord_code'])),0,50));//sprintf("%-50s",substr($invoice_line['merknad'],0,50));//
 verdi: Tekst, type: text (50), plass: 201 - 250
+                                       }
+                                       else
+                                       {
+                                               $Tekst  = 
sprintf("%-50s",'');//sprintf("%-50s",substr($invoice_line['merknad'],0,50));// 
verdi: Tekst, type: text (50), plass: 201 - 250
+                                       }
+*/
+                                       $Tekst  = 
sprintf("%-50s",substr($invoice_line['fakturanr'],0,50));
+
+                                       $Fakturanr      = 
sprintf("%-15s",substr(utf8_decode($invoice_line['fakturanr']), 0, 15));// 
verdi: Fakturanr, type: c15, plass: 283 - 297
+
+                                       $Ordrenummer    = 
sprintf("%-9s",$invoice_line['pmwrkord_code']);// verdi: Infodoc ordrenr, type: 
i4, plass: 342 - 350
+
+
+                                       //Kopier verdier
+                                       if ($download=='on' && !$pre_transfer 
&& !$this->debug)
+                                       {
+                                               
$this->soXport->add_OverfBilag($invoice_line);
+                                       }
+
+                                       //Skriv til fil
+
+                                       $buffer .= $Buntnr . $Forsystem . 
$Bilagsart . $Transtype . $Firmakode . $Konto . $Dim_1 . $Dim_2 . $Dim_3 . 
$Dim_4 . 
+                                       $Dim_5 . $Dim_6 . $Dim_7 . $Avgiftskode 
. $Avgiftssystem . $Valutakode . $Debet_Kredit . $Valutabelop . 
+                                       $Belop_i_firmavaluta . $Antall . 
$Belop2 . $Belop3 . $Belop4 . $Tekst . $Valuteringsdato . $Bilagsdato . 
+                                       $Bilagsnr . $_periode . $ESL . 
$Fakturanr . $Forfall . $Rab_forf . $Rabatt . $Avt_Kon . $Ordrenummer . 
+                                       $Kid . $Bet_overforing . $Status . 
$Resk_type . $Resk_nr . $Forskudd . $Fakturaref . $Fakturaref . 
+                                       $Inkassokode . $Bet_mottager . 
$Att_ansvarlig . $Resk_navn . $Postadresse . $Stat_Provins . $Sted . 
+                                       $Bank_Postgiro_kontonr . $Betalingsmate 
. $Mva_reg_nr . $Postnummer . $Val_dok ."\r\n";
+
+                                       if($_key==$last_record)
+                                       {
+                                               $Konto          = 
sprintf("%-8s",'2139915');// verdi: Art, type: c8, plass: 21 - 28
+                                               $Dim_1          = 
sprintf("%08s",$invoice_line['dimb']);//sprintf("%-8s",'');// verdi: 
Ansvarssted, type: c8, plass: 29 - 36
+                                               $Dim_2          = 
sprintf("%-8s",'');// verdi: Tjeneste, type: c8, plass: 37 - 44
+                                               $Dim_3          = 
sprintf("%-8s",'');// verdi: Objekt, type: c8, plass: 45 - 52
+                                               $Dim_4          = 
sprintf("%-8s",'');// verdi: Ressurs, type: c8, plass: 53 - 60
+                                               $Dim_5          = 
sprintf("%-12s",'');// verdi: Prosjekt, type: c12, plass: 61 - 72
+                                               $Dim_6          = 
sprintf("%-4s",'');// verdi: Blank, type: c4, plass: 73 - 76
+                                               $Dim_7          = 
sprintf("%-4s",'');// verdi: Blank, type: c4, plass: 77 - 80
+                                               $Fakturanr      = 
sprintf("%-15s",'');// verdi: Fakturanr, type: c15, plass: 283 - 297
+                                               $Ordrenummer    = 
sprintf("%-9s",'');// verdi: Infodoc ordrenr, type: i4, plass: 342 - 350
+                                       //      $Tekst          = 
sprintf("%-50s",'');//sprintf("%-50s",substr($invoice_line['merknad'],0,50));// 
verdi: Tekst, type: text (50), plass: 201 - 250
+                                               $Tekst          = 
sprintf("%-50s",substr($invoice_line['fakturanr'],0,50));// verdi: Tekst, type: 
text (50), plass: 201 - 250
+
+                                               //Ikke fortegnskifte for 
kostfordeling (GL)
+                                               if($Belop_motpost < 0)
+                                               {
+                                                       $Belop_motpost = 
sprintf("%019s",abs($Belop_motpost));
+                                                       $Belop_motpost = '-' . 
$Belop_motpost;
+                                               }
+                                               else
+                                               {
+                                                       $Belop_motpost = 
sprintf("%019s",$Belop_motpost);
+                                                       $Belop_motpost = '+' . 
$Belop_motpost;
+
+                                               }
+
+                                               $Transtype      = 'GL';// 
verdi: GL, type: c2, plass: 17 - 18
+                                               $Valutabelop    = 
$Belop_motpost;// verdi: Beløp, type: money, plass: 90 - 109
+                                               
$Belop_i_firmavaluta=$Belop_motpost;// verdi: Beløp, type: money, plass: 110 - 
129
+
+                                               $buffer .= $Buntnr . $Forsystem 
. $Bilagsart . $Transtype . $Firmakode . $Konto . $Dim_1 . $Dim_2 . $Dim_3 . 
$Dim_4 . 
+                                               $Dim_5 . $Dim_6 . $Dim_7 . 
$Avgiftskode . $Avgiftssystem . $Valutakode . $Debet_Kredit . $Valutabelop . 
+                                               $Belop_i_firmavaluta . $Antall 
. $Belop2 . $Belop3 . $Belop4 . $Tekst . $Valuteringsdato . $Bilagsdato . 
+                                               $Bilagsnr . $_periode . $ESL . 
$Fakturanr . $Forfall . $Rab_forf . $Rabatt . $Avt_Kon . $Ordrenummer . 
+                                               $Kid . $Bet_overforing . 
$Status . $Resk_type . $Resk_nr . $Forskudd . $Fakturaref . $Fakturaref . 
+                                               $Inkassokode . $Bet_mottager . 
$Att_ansvarlig . $Resk_navn . $Postadresse . $Stat_Provins . $Sted . 
+                                               $Bank_Postgiro_kontonr . 
$Betalingsmate . $Mva_reg_nr . $Postnummer . $Val_dok ."\r\n";
+                                       }
+
+                                       //Slett post i fm_ecobilag
+                                       if ($download=='on' && !$pre_transfer 
&& !$this->debug)
+                                       {
+                                               
$this->soXport->delete_from_fm_ecobilag($invoice_line['id']);
+                                               //Logg transaksjon
+                                               
$this->soXport->log_transaction($batchid,$BilagId,lang('Invoice transferred'));
+                                       }
+
+                                       $BilagId = 'NULL';
+
+                                       $antall = $antall + 1;
+                               }
+                       }
+
+                       //Fullfør transaksjon
+
+                       if ($download=='on' && !$pre_transfer && !$this->debug):
+                       {
+                               $fp = fopen($Filnavn, "wb");
+                               fwrite($fp,$buffer);
+
+                               if(fclose($fp))
+                               {
+                                       $file_written=True;
+                               }
+
+                               if($file_written && 
$this->config->config_data['common']['method']!='ftp'):
+                               {
+                                       $transfer_ok = True;
+                               }
+                               elseif($file_written):
+                               {
+                                       $transfer_ok = 
$this->transfer($buffer,$Filnavn,$batchid,$tranfser_bilag);
+                               }
+                               endif;
+
+                               if($transfer_ok)
+                               {
+                                       $this->db->transaction_commit();
+                                       $message = 'Godkjent: periode: 
'.$_periode.' antall bilag/underbilag overfort:'.$antall . ' , fil: ' . 
$Filnavn;
+                                       phpgwapi_cache::message_set($message, 
'message'); 
+                               }
+                               else
+                               {
+                                       $this->db->transaction_abort();
+                                       $message = 'Noe gikk galt med 
overforing av godkjendte fakturaer!';
+                                       phpgwapi_cache::message_set($message, 
'error'); 
+                               }
+                       }
+                       elseif($download=='on' && $pre_transfer && 
!$this->debug):
+                       {
+
+                               $fp = fopen($Filnavn, "wb");
+                               fwrite($fp,$buffer);
+
+                               if(fclose($fp))
+                               {
+                                       $file_written=True;
+                               }
+
+                               if($file_written && 
$this->config->config_data['common']['method']!='ftp'):
+                               {
+                                       $transfer_ok = True;
+                               }
+                               elseif($file_written):
+                               {
+                                       $transfer_ok = 
$this->transfer($buffer,$Filnavn,$batchid,$tranfser_bilag);
+                               }
+                               endif;
+
+                               if($transfer_ok)
+                               {
+                                       
$this->soXport->update_actual_cost_from_archive($this->orders_affected);
+
+                                       $this->db->transaction_commit();
+                                       $message = 'Ankomstregistrering: 
periode: '.$periode.' antall bilag/underbilag overfort:'.$antall . ' , fil: ' . 
$Filnavn;
+                                       phpgwapi_cache::message_set($message, 
'message'); 
+                               }
+                               else
+                               {
+                                       $this->db->transaction_abort();
+                                       $message = 'Noe gikk galt med 
ankomstregistrering!';
+                                       phpgwapi_cache::message_set($message, 
'error'); 
+                               }
+                       }
+                       else:
+                       {
+                               $this->db->transaction_abort();
+
+                               _debug_array($Filnavn);
+                               $fp = fopen($Filnavn, "wb");
+                               fwrite($fp,$buffer);
+
+                               if(fclose($fp))
+                               {
+                                       $file_written=True;
+                               }
+
+                               echo "<pre>{$buffer}</pre>";
+                       }
+                       endif;
+               }
+
+               function transfer($buffer,$Filnavn,$batchid,$tranfser_bilag)
+               {
+
+                       
if($this->config->config_data['common']['method']=='ftp')
+                       {
+                               $ftp    = $this->phpftp_connect();
+
+                               $basedir = 
$this->config->config_data['common']['remote_basedir'];
+                               if($basedir)
+                               {
+                                       $newfile = $basedir . '/' . 
basename($Filnavn);
+                               }
+                               else
+                               {
+                                       $newfile = basename($Filnavn);
+                               }
+
+                               if (ftp_put($ftp,$newfile, $Filnavn, 
FTP_BINARY))
+                               {
+                                       for 
($i=0;$i<count($tranfser_bilag);$i++)
+                                       {
+                                               
$this->soXport->log_transaction($batchid,$tranfser_bilag[$i],lang('Invoice 
pre_transferred %1',basename($Filnavn)));
+                                       }
+                                       $transfer_ok = True;
+                               }
+                               else
+                               {
+                                       for 
($i=0;$i<count($tranfser_bilag);$i++)
+                                       {
+                                               
$this->soXport->log_transaction($batchid,$tranfser_bilag[$i],lang('Failed to 
pre_transfere %1 to agresso',basename($Filnavn)));
+                                       }
+                                       $transfer_ok = False;
+                               }
+                               if(!$transfer_ok)
+                               {
+                                       unlink($Filnavn);
+                               }
+
+                               ftp_quit($ftp);
+                       }
+                       return  $transfer_ok;
+               }
+
+               function phpftp_connect() 
+               {
+                       $host                           = 
$this->config->config_data['common']['host'];
+                       $user                           = 
$this->config->config_data['common']['user'];
+                       $password                       = 
$this->config->config_data['common']['password'];
+
+//                     echo "connecting to $host with $user and $pass\n <br>";
+                       $ftp = ftp_connect($host);
+                       if($ftp) 
+                       {
+                               if (ftp_login($ftp,$user,$password)) 
+                               {
+                                       return $ftp;
+                               }
+                       }
+               }
+       }




reply via email to

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