phpgroupware-cvs
[Top][All Lists]
Advanced

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

[Phpgroupware-cvs] property/inc/export Agresso,1.25


From: sigurdne
Subject: [Phpgroupware-cvs] property/inc/export Agresso,1.25
Date: Thu, 20 Oct 2005 11:08:00 +0200

Update of property/inc/export

Modified Files:
     Branch: MAIN
            Agresso lines: +1022 -1022

Log Message:
*** empty log message ***

====================================================
Index: property/inc/export/Agresso
diff -u property/inc/export/Agresso:1.24 property/inc/export/Agresso:1.25
--- property/inc/export/Agresso:1.24    Wed Sep 14 10:21:49 2005
+++ property/inc/export/Agresso Thu Oct 20 09:08:48 2005
@@ -1,1022 +1,1022 @@
-<?php
-       /**
-       * phpGroupWare - property: a Facilities Management System.
-       *
-       * @author Sigurd Nes <address@hidden>
-       * @copyright Copyright (C) 2003-2005 Free Software Foundation, Inc. 
http://www.fsf.org/
-       * @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$
-       */
-
-       /**
-        * 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.
-
-               var $old_files_deleted;
-               var $debug;
-
-               function export_conv()
-               {
-                       $GLOBALS['phpgw_info']['flags']['currentapp']   =       
'property';
-                       $this->currentapp               = 
$GLOBALS['phpgw_info']['flags']['currentapp'];
-                       $this->db                       = $GLOBALS['phpgw']->db;
-
-                       $this->soXport = CreateObject('property.soXport');
-                       $this->config = 
CreateObject('phpgwapi.config','property');
-                       $this->config->read_repository();
-                       $this->bocommon                 = 
CreateObject($this->currentapp.'.bocommon');
-
-               }
-
-               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 ";
-                       }
-
-                       $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->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_roleback($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':
-                                       $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');
-
-                               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'],
-                               );
-
-                       $values = $this->bocommon->validate_db_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,belop,godkjentbelop)"
-                       . " values ($values,"
-                       . $this->bocommon->moneyformat($BilagOverf['belop']) . 
","
-                       . 
$this->bocommon->moneyformat($BilagOverf['godkjentbelop']) . ")";
-
-                       $this->db->query($sql,__LINE__,__FILE__);
-               }
-
-
-               //Oppdater beløp på arbeidsordre operator="-" ved tilbakerulling
-               function 
correct_actual_cost($pmwrkord_code,$Belop,$actual_cost_field,$operator)
-               {
-                       $Belop=$Belop/100;
-
-                       $sql="update fm_workorder set 
$actual_cost_field=$actual_cost_field $operator $Belop where 
id='$pmwrkord_code'";
-                       $this->db->query($sql,__LINE__,__FILE__);
-               }
-
-
-               function overfor($download,$pre_transfer='')
-               {
-
-//                     $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)
-                       {
-                               $periode = 
$this->select_periods_with_invoice_to_transfer($pre_transfer);
-
-                               for ($i=0;$i<count($periode);$i++)
-                               {
-
-                                       $receipt['message'][]= array('msg' => 
$this->OverforPeriode($batchid,$periode[$i],$download,$pre_transfer));
-                               }
-                       }
-
-
-                       $pre_transfer=False;
-
-                       $periode = 
$this->select_periods_with_invoice_to_transfer($pre_transfer);
-
-                       for ($i=0;$i<count($periode);$i++)
-                       {
-
-                               $receipt['message'][]= array('msg' => 
$this->OverforPeriode($batchid,$periode[$i],$download,$pre_transfer));
-                       }
-
-
-
-                       //Lagre melding
-                       if ($download=='on' || $pre_transfer)
-                       {
-                               $this->log_end($batchid); //Lagre melding
-                       }
-
-                       return $receipt;
-               }
-
-               function errorhandler($error_desr)
-               {
-                       $this->db->transaction_abort();
-
-                       $meld = $error_desr;
-
-                       //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_roleback($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'])
-                               {
-                                       if ($BilagOverf[$i]['artid']==1)
-                                       {
-                                               $Belop = sprintf("%01.2f", 
$BilagOverf[$i]['ordrebelop'])*100;
-                                       }
-                                       else
-                                       {
-                                               $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->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. SEP . $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;
-               }
-
-               function 
OverforPeriode($batchid,$periode,$download,$pre_transfer='')
-               {
-                       $BilagId = 'NULL';
-
-                       //Bestem filnavn
-
-                       $this->db->transaction_begin();
-
-                       $Filnavn = $this->LagFilnavn($batchid,$pre_transfer);
-                       if (!$Filnavn)
-                       {
-                               $message='LagFilnavn'.lang('Alle løpenr for 
filnavn er i bruk!');
-                               $this->errorhandler($message);
-                               return $message;
-                       }
-
-                       //Test om filen kan opprettes og skrives til
-                       if (@fopen($Filnavn, "wb"))
-                       {
-                               unlink($Filnavn);
-                       }
-                       else
-                       {
-                               $message='kan ikke lagre til fil: '. $Filnavn 
.'<br>';
-                               return $message;
-                       }
-
-                       //Velg ut alle hoved bilag som skal overføres
-
-                       
$oRsBilag=$this->soXport->hoved_bilag($periode,$pre_transfer);
-
-                       $bilag_count= count($oRsBilag);
-                       for ($k=0;$k<$bilag_count;$k++)
-                       {
-                               $tranfser_bilag[] = $oRsBilag[$k]['bilagsnr'];
-
-                               //Bestem belops felt
-                               if ($oRsBilag[$k]['splitt']==0)
-                               {
-                                       //Bilaget er ikke splittet
-                                       if ($oRsBilag[$k]['godkjentbelop'] <> 
$oRsBilag[$k]['belop'])
-                                       {
-                                               $BelopFelt = 'godkjentbelop';
-                                               //Logg til avviks tabell
-                                               if ($download=='on' && 
!$pre_transfer)
-                                               {
-//                                                     
$this->soXport->log_to_deviation_table($oRsBilag[$k]);
-                                               }
-                                       }
-                                       else
-                                       {
-                                               $BelopFelt = 'belop';
-                                       }
-                               }
-
-                               //Bilaget er splittet
-                               if ($oRsBilag[$k]['godkjentbelop'] == 
$oRsBilag[$k]['belop'])
-                               {
-                                       $BelopFelt = 'godkjentbelop';
-                               }
-                               else
-                               {
-                                        //Ikke lovlig
-                                       $message = lang('Avvik mellom 
fakturabeløp og godkjent beløp på splittet faktura!');
-                                       $this->errorhandler($message);
-                                       return $message;
-                               }
-
-                               $Belop_motpost =$oRsBilag[$k][$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($oRsBilag[$k]['fakturadato']));// verdi: Dato, type: date, 
plass: 251 - 258
-                               $Bilagsdato     = 
date(Ymd,strtotime($oRsBilag[$k]['fakturadato'])) ;// verdi: Dato, type: date, 
plass: 259 - 266
-                               $Bilagsnr       = 
sprintf("%-9s",substr($oRsBilag[$k]['bilagsnr'],-8));// verdi: Bilagsnummer, 
type: i4, plass: 267 - 275
-               //              $Periode        = 
sprintf("%06s",date(Y,strtotime($oRsBilag[$k]['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($oRsBilag[$k]['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        = 
sprintf("%06s",date(Y,strtotime($oRsBilag[$k]['fakturadato'])) . 
sprintf("%02d",$periode));// verdi: Periode, type: i4, plass: 276 - 281
-                                       $Bilagsart      = 
sprintf("%2s",'FD');// verdi: , type: c2, plass: 15 - 16
-                                       $Forfall        = 
date(Ymd,strtotime($oRsBilag[$k]['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",$oRsBilag[$k]['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",$oRsBilag[$k]['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",$oRsBilag[$k]['saksbehandler']);// verdi: Blank, type: c6, 
plass: 424 - 429
-
-                               $vendor_info = 
$this->get_vendor_info($oRsBilag[$k]['spvend_code']);
-
-                               if(!$vendor_info['org_nr'])
-                               {
-                                       $message = 'mangler org_nr for 
reskontronr: ' . $oRsBilag[$k]['spvend_code'];
-                                       $this->errorhandler($message);
-                                       return $message;
-                               }
-
-                               if(!$vendor_info['konto_nr'])
-                               {
-                                       $message = 'mangler konto for 
reskontronr: ' . $oRsBilag[$k]['spvend_code'];
-                                       $this->errorhandler($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
-                               $Betalingsmåte  = 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
-
-
-                               //Velg ut alle underbilag
-                               
$oRsUnderbilag=$this->soXport->select_underbilag($oRsBilag[$k]['bilagsnr']);
-
-
-                               $underbilag_count= count($oRsUnderbilag);
-                               $last_record = $underbilag_count - 1;
-
-                               for ($i=0;$i<$underbilag_count;$i++)
-                               {
-                                       $BilagId = $oRsUnderbilag[$i]['id'];
-
-                                       $Belop = 
$oRsUnderbilag[$i][$BelopFelt]*100;
-                                       $Belop_ = $Belop;
-
-                                       if($Belop < 0)
-                                       {
-                                               $Belop = abs($Belop);
-                                               $Belop = 
sprintf("%019s",$Belop);
-
-                                               if ($oRsUnderbilag[$i]['artid'] 
== 2)
-                                               {
-                                                       $Belop = '+' . $Belop;
-
-                                               }
-                                               else
-                                               {
-                                                       $Belop = '-' . $Belop;
-                                               }
-
-                                       }
-                                       else
-                                       {
-                                               $Belop = 
sprintf("%019s",$Belop);
-
-                                               if ($oRsUnderbilag[$i]['artid'] 
== 2)
-                                               {
-                                                       $Belop = '-' . $Belop;
-
-                                               }
-                                               else
-                                               {
-                                                       $Belop = '+' . $Belop;
-                                               }
-                                       }
-
-
-                                       if($oRsUnderbilag[$i]['pmwrkord_code'])
-                                       {
-
-                                               //Oppdater beløp på arbeidsordre
-                                               if ($download=='on' && 
!$pre_transfer)
-                                               {
-                                                       if 
($oRsUnderbilag[$i]['dimd'] % 2 == 0)
-                                                       {
-                                                               
$actual_cost_field='act_mtrl_cost';
-                                                       }
-                                                       else
-                                                       {
-                                                               
$actual_cost_field='act_vendor_cost';
-                                                       }
-                                                       $operator='+';
-
-                                                       if(!$this->debug)
-                                                       {
-                                                               
$this->correct_actual_cost($oRsUnderbilag[$i]['pmwrkord_code'],$Belop_,$actual_cost_field,$operator);
-                                                       }
-                                               }
-                                       }
-
-                                       //Overfør til fm_ecobilagoverf
-
-                                       $oRsOverfBilag=$oRsUnderbilag[$i];
-                                       $oRsOverfBilag['filnavn']= 
basename($Filnavn);
-                                       
$oRsOverfBilag['ordrebelop']=$oRsUnderbilag[$i][$BelopFelt];
-
-
-                                       //dersom det mangler budsjett konto - 
kun aktuelt for ikke godkjent - sett konto til 2899999
-
-                                       if(!$oRsOverfBilag['spbudact_code'] && 
$pre_transfer)
-                                       {
-                                               $oRsOverfBilag['spbudact_code'] 
= 12304361;
-                                       }
-
-
-                                       //dersom ikke gyldig objekt - kun 
aktuelt for ikke godkjent - sett objekt til 9999
-
-                                       if(!($oRsOverfBilag['kostra_id']>0) && 
$pre_transfer)
-                                       {
-                                               $oRsOverfBilag['kostra_id'] = 
26550;
-                                               $oRsOverfBilag['mvakode'] = 0;
-                                               $oRsOverfBilag['dima'] = 9999;
-                                       }
-
-                                       $Konto          = 
sprintf("%-8s",$oRsOverfBilag['spbudact_code']);// verdi: Art, type: c8, plass: 
21 - 28
-                                       $Dim_1          = sprintf("%-8s",'');// 
verdi: Ansvarssted, type: c8, plass: 29 - 36
-                                       $Dim_2          = 
sprintf("%-8s",$oRsOverfBilag['kostra_id']);// verdi: Tjeneste, type: c8, 
plass: 37 - 44
-
-                                       if($pre_transfer)
-                                       {
-                                               $Dim_3          = 
sprintf("%-8s",substr($oRsOverfBilag['dima'],0,4));// verdi: Objekt, type: c8, 
plass: 45 - 52
-                                       }
-                                       else
-                                       {
-                                               $Dim_3          = 
sprintf("%-8s",substr($oRsOverfBilag['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",$oRsOverfBilag['project_id']);// verdi: Prosjekt, type: c12, 
plass: 61 - 72
-                                       $Dim_6          = 
sprintf("%-4s",$oRsOverfBilag['dimd']);// verdi: Blank, type: c4, plass: 73 - 76
-                                       $Dim_7          = sprintf("%-4s",'');// 
verdi: Blank, type: c4, plass: 77 - 80
-
-                                       
$Avgiftskode=sprintf("%-2s",$oRsOverfBilag['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($oRsOverfBilag['pmwrkord_code'])
-                                       {
-                                               $Tekst  = 
sprintf("%-50s",substr($this->get_order_title($oRsOverfBilag['pmwrkord_code']),0,50));//sprintf("%-50s",substr($oRsOverfBilag['merknad'],0,50));//
 verdi: Tekst, type: text (50), plass: 201 - 250
-                                       }
-                                       else
-                                       {
-                                               $Tekst  = 
sprintf("%-50s",'');//sprintf("%-50s",substr($oRsOverfBilag['merknad'],0,50));//
 verdi: Tekst, type: text (50), plass: 201 - 250
-                                       }
-
-                                       $Fakturanr      = 
sprintf("%-15s",$oRsOverfBilag['fakturanr']);// verdi: Fakturanr, type: c15, 
plass: 283 - 297
-
-                                       $Ordrenummer    = 
sprintf("%-9s",$oRsOverfBilag['pmwrkord_code']);// verdi: Infodoc ordrenr, 
type: i4, plass: 342 - 350
-
-
-                                       //Kopier verdier
-                                       if ($download=='on' && !$pre_transfer 
&& !$this->debug)
-                                       {
-                                               
$this->soXport->add_OverfBilag($oRsOverfBilag);
-                                       }
-
-                                       //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 . $Betalingsmåte 
. $Mva_reg_nr . $Postnummer . $Val_dok ."\r\n";
-
-                                       if($i==$last_record)
-                                       {
-                                               $Konto          = 
sprintf("%-8s",'2327010');// verdi: Art, type: c8, plass: 21 - 28
-                                               $Dim_1          = 
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($oRsOverfBilag['merknad'],0,50));//
 verdi: Tekst, type: text (50), plass: 201 - 250
-
-                                               if($Belop_motpost < 0)
-                                               {
-                                                       $Belop_motpost = 
sprintf("%019s",abs($Belop_motpost));
-
-                                                       if 
($oRsUnderbilag[$i]['artid'] == 2)
-                                                       {
-                                                               $Belop_motpost 
= '-' . $Belop_motpost;
-
-                                                       }
-                                                       else
-                                                       {
-                                                               $Belop_motpost 
= '+' . $Belop_motpost;
-                                                       }
-                                               }
-                                               else
-                                               {
-                                                       $Belop_motpost = 
sprintf("%019s",$Belop_motpost);
-
-                                                       if 
($oRsUnderbilag[$i]['artid'] == 2)
-                                                       {
-                                                               $Belop_motpost 
= '+' . $Belop_motpost;
-
-                                                       }
-                                                       else
-                                                       {
-                                                               $Belop_motpost 
= '-' . $Belop_motpost;
-                                                       }
-                                               }
-
-                                               $Transtype      = 'AP';// 
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 . 
$Betalingsmåte . $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($oRsUnderbilag[$i]['id']);
-                                               //Logg transaksjon
-                                               
$this->soXport->log_transaction($batchid,$BilagId,lang('Invoice tranferred'));
-                                       }
-
-                                       $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['invoice_export_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 overført:'.$antall . ' , fil: ' . $Filnavn;
-                               }
-                               else
-                               {
-                                       $this->db->transaction_abort();
-                                       $message = 'Noe gikk galt med 
overføring av godkjendte fakturaer!';
-                               }
-                       }
-                       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['invoice_export_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 = 'Ankomstregistrering: 
periode: '.$Periode.' antall bilag/underbilag overført:'.$antall . ' , fil: ' . 
$Filnavn;
-                               }
-                               else
-                               {
-                                       $this->db->transaction_abort();
-                                       $message = 'Noe gikk galt med 
ankomstregistrering!';
-                               }
-                       }
-                       else:
-                       {
-                               $message = $buffer;
-                               $this->db->transaction_abort();
-
-                       }
-                       endif;
-
-                       return $message;
-               }
-
-               function transfer($buffer,$Filnavn,$batchid,$tranfser_bilag)
-               {
-
-                       
if($this->config->config_data['invoice_export_method']=='ftp')
-                       {
-                               $ftp    = $this->phpftp_connect();
-
-                               $basedir = 
$this->config->config_data['invoice_ftp_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['invoice_ftp_host'];
-                       $user = $this->config->config_data['invoice_ftp_user'];
-                       $pass = $this->config->config_data['invoice_ftp_pw'];
-
-//                     echo "connecting to $host with $user and $pass\n <br>";
-                       $ftp = ftp_connect($host);
-                       if($ftp)
-                       {
-                               if (ftp_login($ftp,$user,$pass))
-                               {
-                                       return $ftp;
-                               }
-                       }
-               }
-       }
-?>
+<?php
+       /**
+       * phpGroupWare - property: a Facilities Management System.
+       *
+       * @author Sigurd Nes <address@hidden>
+       * @copyright Copyright (C) 2003-2005 Free Software Foundation, Inc. 
http://www.fsf.org/
+       * @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$
+       */
+
+       /**
+        * 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.
+
+               var $old_files_deleted;
+               var $debug;
+
+               function export_conv()
+               {
+                       $GLOBALS['phpgw_info']['flags']['currentapp']   =       
'property';
+                       $this->currentapp               = 
$GLOBALS['phpgw_info']['flags']['currentapp'];
+                       $this->db                       = $GLOBALS['phpgw']->db;
+
+                       $this->soXport = CreateObject('property.soXport');
+                       $this->config = 
CreateObject('phpgwapi.config','property');
+                       $this->config->read_repository();
+                       $this->bocommon                 = 
CreateObject($this->currentapp.'.bocommon');
+
+               }
+
+               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 ";
+                       }
+
+                       $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->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_roleback($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':
+                                       $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');
+
+                               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'],
+                               );
+
+                       $values = $this->bocommon->validate_db_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,belop,godkjentbelop)"
+                       . " values ($values,"
+                       . $this->bocommon->moneyformat($BilagOverf['belop']) . 
","
+                       . 
$this->bocommon->moneyformat($BilagOverf['godkjentbelop']) . ")";
+
+                       $this->db->query($sql,__LINE__,__FILE__);
+               }
+
+
+               //Oppdater beløp på arbeidsordre operator="-" ved tilbakerulling
+               function 
correct_actual_cost($pmwrkord_code,$Belop,$actual_cost_field,$operator)
+               {
+                       $Belop=$Belop/100;
+
+                       $sql="update fm_workorder set 
$actual_cost_field=$actual_cost_field $operator $Belop where 
id='$pmwrkord_code'";
+                       $this->db->query($sql,__LINE__,__FILE__);
+               }
+
+
+               function overfor($download,$pre_transfer='')
+               {
+
+//                     $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)
+                       {
+                               $periode = 
$this->select_periods_with_invoice_to_transfer($pre_transfer);
+
+                               for ($i=0;$i<count($periode);$i++)
+                               {
+
+                                       $receipt['message'][]= array('msg' => 
$this->OverforPeriode($batchid,$periode[$i],$download,$pre_transfer));
+                               }
+                       }
+
+
+                       $pre_transfer=False;
+
+                       $periode = 
$this->select_periods_with_invoice_to_transfer($pre_transfer);
+
+                       for ($i=0;$i<count($periode);$i++)
+                       {
+
+                               $receipt['message'][]= array('msg' => 
$this->OverforPeriode($batchid,$periode[$i],$download,$pre_transfer));
+                       }
+
+
+
+                       //Lagre melding
+                       if ($download=='on' || $pre_transfer)
+                       {
+                               $this->log_end($batchid); //Lagre melding
+                       }
+
+                       return $receipt;
+               }
+
+               function errorhandler($error_desr)
+               {
+                       $this->db->transaction_abort();
+
+                       $meld = $error_desr;
+
+                       //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_roleback($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'])
+                               {
+                                       if ($BilagOverf[$i]['artid']==1)
+                                       {
+                                               $Belop = sprintf("%01.2f", 
$BilagOverf[$i]['ordrebelop'])*100;
+                                       }
+                                       else
+                                       {
+                                               $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->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. SEP . $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;
+               }
+
+               function 
OverforPeriode($batchid,$periode,$download,$pre_transfer='')
+               {
+                       $BilagId = 'NULL';
+
+                       //Bestem filnavn
+
+                       $this->db->transaction_begin();
+
+                       $Filnavn = $this->LagFilnavn($batchid,$pre_transfer);
+                       if (!$Filnavn)
+                       {
+                               $message='LagFilnavn'.lang('Alle løpenr for 
filnavn er i bruk!');
+                               $this->errorhandler($message);
+                               return $message;
+                       }
+
+                       //Test om filen kan opprettes og skrives til
+                       if (@fopen($Filnavn, "wb"))
+                       {
+                               unlink($Filnavn);
+                       }
+                       else
+                       {
+                               $message='kan ikke lagre til fil: '. $Filnavn 
.'<br>';
+                               return $message;
+                       }
+
+                       //Velg ut alle hoved bilag som skal overføres
+
+                       
$oRsBilag=$this->soXport->hoved_bilag($periode,$pre_transfer);
+
+                       $bilag_count= count($oRsBilag);
+                       for ($k=0;$k<$bilag_count;$k++)
+                       {
+                               $tranfser_bilag[] = $oRsBilag[$k]['bilagsnr'];
+
+                               //Bestem belops felt
+                               if ($oRsBilag[$k]['splitt']==0)
+                               {
+                                       //Bilaget er ikke splittet
+                                       if ($oRsBilag[$k]['godkjentbelop'] <> 
$oRsBilag[$k]['belop'])
+                                       {
+                                               $BelopFelt = 'godkjentbelop';
+                                               //Logg til avviks tabell
+                                               if ($download=='on' && 
!$pre_transfer)
+                                               {
+//                                                     
$this->soXport->log_to_deviation_table($oRsBilag[$k]);
+                                               }
+                                       }
+                                       else
+                                       {
+                                               $BelopFelt = 'belop';
+                                       }
+                               }
+
+                               //Bilaget er splittet
+                               if ($oRsBilag[$k]['godkjentbelop'] == 
$oRsBilag[$k]['belop'])
+                               {
+                                       $BelopFelt = 'godkjentbelop';
+                               }
+                               else
+                               {
+                                        //Ikke lovlig
+                                       $message = lang('Avvik mellom 
fakturabeløp og godkjent beløp på splittet faktura!');
+                                       $this->errorhandler($message);
+                                       return $message;
+                               }
+
+                               $Belop_motpost =$oRsBilag[$k][$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($oRsBilag[$k]['fakturadato']));// verdi: Dato, type: date, 
plass: 251 - 258
+                               $Bilagsdato     = 
date(Ymd,strtotime($oRsBilag[$k]['fakturadato'])) ;// verdi: Dato, type: date, 
plass: 259 - 266
+                               $Bilagsnr       = 
sprintf("%-9s",substr($oRsBilag[$k]['bilagsnr'],-8));// verdi: Bilagsnummer, 
type: i4, plass: 267 - 275
+               //              $Periode        = 
sprintf("%06s",date(Y,strtotime($oRsBilag[$k]['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($oRsBilag[$k]['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        = 
sprintf("%06s",date(Y,strtotime($oRsBilag[$k]['fakturadato'])) . 
sprintf("%02d",$periode));// verdi: Periode, type: i4, plass: 276 - 281
+                                       $Bilagsart      = 
sprintf("%2s",'FD');// verdi: , type: c2, plass: 15 - 16
+                                       $Forfall        = 
date(Ymd,strtotime($oRsBilag[$k]['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",$oRsBilag[$k]['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",$oRsBilag[$k]['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",$oRsBilag[$k]['saksbehandler']);// verdi: Blank, type: c6, 
plass: 424 - 429
+
+                               $vendor_info = 
$this->get_vendor_info($oRsBilag[$k]['spvend_code']);
+
+                               if(!$vendor_info['org_nr'])
+                               {
+                                       $message = 'mangler org_nr for 
reskontronr: ' . $oRsBilag[$k]['spvend_code'];
+                                       $this->errorhandler($message);
+                                       return $message;
+                               }
+
+                               if(!$vendor_info['konto_nr'])
+                               {
+                                       $message = 'mangler konto for 
reskontronr: ' . $oRsBilag[$k]['spvend_code'];
+                                       $this->errorhandler($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
+                               $Betalingsmåte  = 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
+
+
+                               //Velg ut alle underbilag
+                               
$oRsUnderbilag=$this->soXport->select_underbilag($oRsBilag[$k]['bilagsnr']);
+
+
+                               $underbilag_count= count($oRsUnderbilag);
+                               $last_record = $underbilag_count - 1;
+
+                               for ($i=0;$i<$underbilag_count;$i++)
+                               {
+                                       $BilagId = $oRsUnderbilag[$i]['id'];
+
+                                       $Belop = 
$oRsUnderbilag[$i][$BelopFelt]*100;
+                                       $Belop_ = $Belop;
+
+                                       if($Belop < 0)
+                                       {
+                                               $Belop = abs($Belop);
+                                               $Belop = 
sprintf("%019s",$Belop);
+
+                                               if ($oRsUnderbilag[$i]['artid'] 
== 2)
+                                               {
+                                                       $Belop = '+' . $Belop;
+
+                                               }
+                                               else
+                                               {
+                                                       $Belop = '-' . $Belop;
+                                               }
+
+                                       }
+                                       else
+                                       {
+                                               $Belop = 
sprintf("%019s",$Belop);
+
+                                               if ($oRsUnderbilag[$i]['artid'] 
== 2)
+                                               {
+                                                       $Belop = '-' . $Belop;
+
+                                               }
+                                               else
+                                               {
+                                                       $Belop = '+' . $Belop;
+                                               }
+                                       }
+
+
+                                       if($oRsUnderbilag[$i]['pmwrkord_code'])
+                                       {
+
+                                               //Oppdater beløp på arbeidsordre
+                                               if ($download=='on' && 
!$pre_transfer)
+                                               {
+                                                       if 
($oRsUnderbilag[$i]['dimd'] % 2 == 0)
+                                                       {
+                                                               
$actual_cost_field='act_mtrl_cost';
+                                                       }
+                                                       else
+                                                       {
+                                                               
$actual_cost_field='act_vendor_cost';
+                                                       }
+                                                       $operator='+';
+
+                                                       if(!$this->debug)
+                                                       {
+                                                               
$this->correct_actual_cost($oRsUnderbilag[$i]['pmwrkord_code'],$Belop_,$actual_cost_field,$operator);
+                                                       }
+                                               }
+                                       }
+
+                                       //Overfør til fm_ecobilagoverf
+
+                                       $oRsOverfBilag=$oRsUnderbilag[$i];
+                                       $oRsOverfBilag['filnavn']= 
basename($Filnavn);
+                                       
$oRsOverfBilag['ordrebelop']=$oRsUnderbilag[$i][$BelopFelt];
+
+
+                                       //dersom det mangler budsjett konto - 
kun aktuelt for ikke godkjent - sett konto til 2899999
+
+                                       if(!$oRsOverfBilag['spbudact_code'] && 
$pre_transfer)
+                                       {
+                                               $oRsOverfBilag['spbudact_code'] 
= 12304361;
+                                       }
+
+
+                                       //dersom ikke gyldig objekt - kun 
aktuelt for ikke godkjent - sett objekt til 9999
+
+                                       if(!($oRsOverfBilag['kostra_id']>0) && 
$pre_transfer)
+                                       {
+                                               $oRsOverfBilag['kostra_id'] = 
26550;
+                                               $oRsOverfBilag['mvakode'] = 0;
+                                               $oRsOverfBilag['dima'] = 9999;
+                                       }
+
+                                       $Konto          = 
sprintf("%-8s",$oRsOverfBilag['spbudact_code']);// verdi: Art, type: c8, plass: 
21 - 28
+                                       $Dim_1          = 
sprintf("%-8s",$oRsOverfBilag['district_id']);// verdi: Ansvarssted, type: c8, 
plass: 29 - 36
+                                       $Dim_2          = 
sprintf("%-8s",$oRsOverfBilag['kostra_id']);// verdi: Tjeneste, type: c8, 
plass: 37 - 44
+
+                                       if($pre_transfer)
+                                       {
+                                               $Dim_3          = 
sprintf("%-8s",substr($oRsOverfBilag['dima'],0,4));// verdi: Objekt, type: c8, 
plass: 45 - 52
+                                       }
+                                       else
+                                       {
+                                               $Dim_3          = 
sprintf("%-8s",substr($oRsOverfBilag['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",$oRsOverfBilag['project_id']);// verdi: Prosjekt, type: c12, 
plass: 61 - 72
+                                       $Dim_6          = 
sprintf("%-4s",$oRsOverfBilag['dimd']);// verdi: Blank, type: c4, plass: 73 - 76
+                                       $Dim_7          = sprintf("%-4s",'');// 
verdi: Blank, type: c4, plass: 77 - 80
+
+                                       
$Avgiftskode=sprintf("%-2s",$oRsOverfBilag['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($oRsOverfBilag['pmwrkord_code'])
+                                       {
+                                               $Tekst  = 
sprintf("%-50s",substr($this->get_order_title($oRsOverfBilag['pmwrkord_code']),0,50));//sprintf("%-50s",substr($oRsOverfBilag['merknad'],0,50));//
 verdi: Tekst, type: text (50), plass: 201 - 250
+                                       }
+                                       else
+                                       {
+                                               $Tekst  = 
sprintf("%-50s",'');//sprintf("%-50s",substr($oRsOverfBilag['merknad'],0,50));//
 verdi: Tekst, type: text (50), plass: 201 - 250
+                                       }
+
+                                       $Fakturanr      = 
sprintf("%-15s",$oRsOverfBilag['fakturanr']);// verdi: Fakturanr, type: c15, 
plass: 283 - 297
+
+                                       $Ordrenummer    = 
sprintf("%-9s",$oRsOverfBilag['pmwrkord_code']);// verdi: Infodoc ordrenr, 
type: i4, plass: 342 - 350
+
+
+                                       //Kopier verdier
+                                       if ($download=='on' && !$pre_transfer 
&& !$this->debug)
+                                       {
+                                               
$this->soXport->add_OverfBilag($oRsOverfBilag);
+                                       }
+
+                                       //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 . $Betalingsmåte 
. $Mva_reg_nr . $Postnummer . $Val_dok ."\r\n";
+
+                                       if($i==$last_record)
+                                       {
+                                               $Konto          = 
sprintf("%-8s",'2327010');// verdi: Art, type: c8, plass: 21 - 28
+                                               $Dim_1          = 
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($oRsOverfBilag['merknad'],0,50));//
 verdi: Tekst, type: text (50), plass: 201 - 250
+
+                                               if($Belop_motpost < 0)
+                                               {
+                                                       $Belop_motpost = 
sprintf("%019s",abs($Belop_motpost));
+
+                                                       if 
($oRsUnderbilag[$i]['artid'] == 2)
+                                                       {
+                                                               $Belop_motpost 
= '-' . $Belop_motpost;
+
+                                                       }
+                                                       else
+                                                       {
+                                                               $Belop_motpost 
= '+' . $Belop_motpost;
+                                                       }
+                                               }
+                                               else
+                                               {
+                                                       $Belop_motpost = 
sprintf("%019s",$Belop_motpost);
+
+                                                       if 
($oRsUnderbilag[$i]['artid'] == 2)
+                                                       {
+                                                               $Belop_motpost 
= '+' . $Belop_motpost;
+
+                                                       }
+                                                       else
+                                                       {
+                                                               $Belop_motpost 
= '-' . $Belop_motpost;
+                                                       }
+                                               }
+
+                                               $Transtype      = 'AP';// 
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 . 
$Betalingsmåte . $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($oRsUnderbilag[$i]['id']);
+                                               //Logg transaksjon
+                                               
$this->soXport->log_transaction($batchid,$BilagId,lang('Invoice tranferred'));
+                                       }
+
+                                       $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['invoice_export_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 overført:'.$antall . ' , fil: ' . $Filnavn;
+                               }
+                               else
+                               {
+                                       $this->db->transaction_abort();
+                                       $message = 'Noe gikk galt med 
overføring av godkjendte fakturaer!';
+                               }
+                       }
+                       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['invoice_export_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 = 'Ankomstregistrering: 
periode: '.$Periode.' antall bilag/underbilag overført:'.$antall . ' , fil: ' . 
$Filnavn;
+                               }
+                               else
+                               {
+                                       $this->db->transaction_abort();
+                                       $message = 'Noe gikk galt med 
ankomstregistrering!';
+                               }
+                       }
+                       else:
+                       {
+                               $message = $buffer;
+                               $this->db->transaction_abort();
+
+                       }
+                       endif;
+
+                       return $message;
+               }
+
+               function transfer($buffer,$Filnavn,$batchid,$tranfser_bilag)
+               {
+
+                       
if($this->config->config_data['invoice_export_method']=='ftp')
+                       {
+                               $ftp    = $this->phpftp_connect();
+
+                               $basedir = 
$this->config->config_data['invoice_ftp_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['invoice_ftp_host'];
+                       $user = $this->config->config_data['invoice_ftp_user'];
+                       $pass = $this->config->config_data['invoice_ftp_pw'];
+
+//                     echo "connecting to $host with $user and $pass\n <br>";
+                       $ftp = ftp_connect($host);
+                       if($ftp)
+                       {
+                               if (ftp_login($ftp,$user,$pass))
+                               {
+                                       return $ftp;
+                               }
+                       }
+               }
+       }
+?>






reply via email to

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