fmsystem-commits
[Top][All Lists]
Advanced

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

[Fmsystem-commits] [10613] property: new export for agresso


From: Sigurd Nes
Subject: [Fmsystem-commits] [10613] property: new export for agresso
Date: Wed, 19 Dec 2012 11:13:39 +0000

Revision: 10613
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=10613
Author:   sigurdne
Date:     2012-12-19 11:13:39 +0000 (Wed, 19 Dec 2012)
Log Message:
-----------
property: new export for agresso

Modified Paths:
--------------
    trunk/property/inc/export/default/Agresso

Modified: trunk/property/inc/export/default/Agresso
===================================================================
--- trunk/property/inc/export/default/Agresso   2012-12-19 07:54:58 UTC (rev 
10612)
+++ trunk/property/inc/export/default/Agresso   2012-12-19 11:13:39 UTC (rev 
10613)
@@ -3,7 +3,7 @@
        * phpGroupWare - property: a Facilities Management System.
        *
        * @author Sigurd Nes <address@hidden>
-       * @copyright Copyright (C) 2003,2004,2005,2006,2007 Free Software 
Foundation, Inc. http://www.fsf.org/
+       * @copyright Copyright (C) 
2003,2004,2005,2006,2007,2008,2009,2010,2011,2012 Free Software Foundation, 
Inc. http://www.fsf.org/
        * This file is part of phpGroupWare.
        *
        * phpGroupWare is free software; you can redistribute it and/or modify
@@ -35,21 +35,22 @@
        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;
+
+               protected $old_files_deleted;
+               protected $debug;
                protected $orders_affected = array();
-               
-               function export_conv()
+               protected $db;
+               protected $db2;
+               protected $soXport;
+               protected $config;
+
+               function __construct()
                {
-                       $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('admin.soconfig',$GLOBALS['phpgw']->locations->get_id('property', 
'.invoice'));
-                       $this->bocommon                 = 
CreateObject('property.bocommon');
-                       $this->db               = $this->bocommon->new_db();    
                
+                       $this->db               = & $GLOBALS['phpgw']->db;
+                       $this->join     = & $this->db->join;
+                       $this->db2              = clone($this->db);
+                       $this->soXport  = CreateObject('property.soXport');
+                       $this->config   = 
CreateObject('admin.soconfig',$GLOBALS['phpgw']->locations->get_id('property', 
'.invoice'));
                }
 
                function 
select_periods_with_invoice_to_transfer($pre_transfer='')
@@ -62,7 +63,7 @@
                        {
                                $sql= "SELECT DISTINCT periode from fm_ecobilag 
WHERE budsjettsigndato is not null and (saksigndato is not null or 
oppsynsigndato is not null) and utbetalingsigndato is not null";
                        }
-                       
+
                        $periode = array();
                        $this->db->query($sql,__LINE__,__FILE__);
                        while ($this->db->next_record())
@@ -172,10 +173,6 @@
                                        $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;
                                case 'postgres':
                                        $datepart_year          = 
"date_part('year',overftid)";
                                        $datepart_month         = 
"date_part('month',overftid)";
@@ -184,7 +181,7 @@
                        }
 
 
-                       $sql="select * from fm_ecobilagoverf where 
filnavn='$Filnavn' and $datepart_year=$year and $datepart_month=$month and 
$datepart_day= $day";
+               $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;
@@ -245,7 +242,7 @@
                                $i++;
                        }
                        return $invoice_roleback;
-               }
+           }
 
 
                //rollback function
@@ -285,7 +282,7 @@
                                $BilagOverf['item_type'],
                                $BilagOverf['item_id'],
                                );
-                       
+
                        $values = $this->db->validate_insert($values);
 
                        $sql= "INSERT INTO fm_ecobilag 
(project_id,kostra_id,pmwrkord_code,bilagsnr,splitt,kildeid,kidnr,typeid,"
@@ -323,17 +320,17 @@
 
                                foreach ($periodes as $periode)
                                {
-                                       $receipt['message'][]= array('msg' => 
$this->OverforPeriode($batchid,$periode,$download,$pre_transfer));
+                                       
$this->OverforPeriode($batchid,$periode,$download,$pre_transfer);
                                }
                        }
 
                        $pre_transfer=False;
-                       
+
                        $periodes = 
$this->select_periods_with_invoice_to_transfer($pre_transfer);
 
                        foreach ($periodes as $periode)
                        {
-                               $receipt['message'][]= array('msg' => 
$this->OverforPeriode($batchid,$periode,$download,$pre_transfer,$force_period_year));
+                               
$this->OverforPeriode($batchid,$periode,$download,$pre_transfer,$force_period_year);
                        }
 
                        //Lagre melding
@@ -342,24 +339,34 @@
                                $this->log_end($batchid); //Lagre melding
                        }
 
+                       if (!$download=='on')
+                       {
+                               $GLOBALS['phpgw_info']['flags']['noheader'] = 
true;
+                               $GLOBALS['phpgw_info']['flags']['nofooter'] = 
true;
+                               $GLOBALS['phpgw_info']['flags']['xslt_app'] = 
false;
+                               $GLOBALS['phpgw_info']['flags']['noframework'] 
= true;
+                               echo '&nbsp<a 
href="'.$GLOBALS['phpgw']->link('/index.php',array('menuaction'=> 
'property.uiXport.export')) . '">' . lang('Back') . '</a></br>';
+                               $GLOBALS['phpgw']->common->phpgw_exit();
+                       }
+
                        return $receipt;
                }
-               
+
                function errorhandler($batchid,$error_desr)
                {
                        $this->db->transaction_abort();
 
                        $meld = $error_desr;
-               
+
                        //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);
@@ -367,7 +374,7 @@
                        $y=strpos($dateformat,'y');
                        $d=strpos($dateformat,'d');
                        $m=strpos($dateformat,'m');
-       
+
                        $dateparts = explode('/', $Dato);
                        $day = $dateparts[$d];
                        $month = $dateparts[$m];
@@ -377,24 +384,24 @@
                        {
                                $Dato=$date1;
                        }
-       
+
                        $Dato= date("M d Y",$Dato);
        */
-                       
+
                        
$BilagOverf=$this->select_invoice_rollback($day,$month,$year,$Filnavn);
                        $this->db->transaction_begin();
 
                        for ($i=0;$i<count($BilagOverf);$i++)
                        {
                                $this->bilag_update_overf($BilagOverf[$i]);
-                               
-               
+
+
                                if($BilagOverf[$i]['pmwrkord_code'])
                                {
                                        
$orders_affected[$BilagOverf[$i]['pmwrkord_code']] = true;
 
                                        $Belop = sprintf("%01.2f", 
$BilagOverf[$i]['ordrebelop'])*100;
-                               
+
                                        if ($BilagOverf[$i]['dimd'] % 2 == 0)
                                        {
                                                
$actual_cost_field='act_mtrl_cost';
@@ -403,25 +410,25 @@
                                        {
                                                
$actual_cost_field='act_vendor_cost';
                                        }
-               
+
                                        $operator='-';
 
                                        
$this->soXport->correct_actual_cost($BilagOverf[$i]['pmwrkord_code'],$Belop,$actual_cost_field,$operator);
                                }
-               
+
                                //Slett fra avviks tabell
                        //      
$this->soXport->delete_avvik($BilagOverf[$i]['bilagsnr']);
-               
+
                                //Slett fra arkiv
                                
$this->soXport->delete_invoice($BilagOverf[$i]['bilagsnr']);
-               
+
                                $antall = $antall + 1;
                        }
-               
+
                        if($antall > 0)
-                       {               
-                               $fil_katalog = 
$this->config->config_data['export']['path'];                    
-                       
+                       {
+                               $fil_katalog = 
$this->config->config_data['export']['path'];
+
                                if(unlink ($fil_katalog. '/' . $Filnavn))
                                {
                                        $this->db->transaction_commit();
@@ -432,7 +439,7 @@
                                {
                                        $this->db->transaction_abort();
                                        $receipt['message'][]= array('msg' => 
'Noe gikk galt!');
-                               }                                               
        
+                               }
                        }
                        else
                        {
@@ -440,14 +447,14 @@
                        }
                        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)
@@ -456,7 +463,7 @@
                                        {
                                                @unlink($fil_katalog . '/FDA_' 
. $i. '.TXT');
                                        }
-                                       
+                                
                                        $this->old_files_deleted= True;
                                }
 
@@ -465,13 +472,13 @@
                                do
                                {
                                        $Filnavn = $fil_katalog . '/FDA_' . $i. 
'.TXT';
-                               
+
                                        //Sjekk om filen eksisterer
                                        If (!file_exists($Filnavn))
                                        {
                                                return $Filnavn;
                                        }
-                               
+
                                        $i++;
                                }
                                while  ($i < 13);
@@ -485,27 +492,167 @@
                                do
                                {
                                        $Filnavn = $fil_katalog . '/FDB' . 
date("dmy") . '_' . sprintf("%02s",$i) . '.TXT';
-                               
+
                                        //Sjekk om filen eksisterer
                                        If (!file_exists($Filnavn))
                                        {
                                                return $Filnavn;
                                        }
-                               
+
                                        $i++;
                                }
                                while  ($continue);
                        }
-                       
-                       
+
+
                        //Ingen løpenr er ledige, gi feilmelding
                        return False;
                }
-               
+
+
+               private function 
get_vouchers_to_transfer($periode,$pre_transfer=false)
+               {
+                       if($pre_transfer)
+                       {
+                               $sql= "SELECT sum(belop) as belop, fakturanr, 
bilagsnr FROM fm_ecobilag WHERE periode='{$periode}' AND utbetalingsigndato IS 
NULL GROUP BY bilagsnr, fakturanr";
+                       }
+                       else
+                       {
+                               $sql="SELECT sum(belop) as belop, fakturanr, 
bilagsnr FROM fm_ecobilag WHERE periode='{$periode}' AND budsjettsigndato IS 
NOT NULL AND ( saksigndato IS NOT NULL OR oppsynsigndato IS NOT NULL ) AND 
utbetalingsigndato IS NOT NULL group by bilagsnr, fakturanr";
+                       }
+
+                       $this->db->query($sql,__LINE__,__FILE__);
+
+                       $values = array();
+                       while ($this->db->next_record())
+                       {
+                               $values[] = array
+                               (
+                                       'belop'         => 
$this->db->f('belop'),
+                                       'bilagsnr'      => 
$this->db->f('bilagsnr'),
+                                       'fakturanr' => 
$this->db->f('fakturanr'),
+                               );
+                       }
+
+
+                       foreach ($values as &$entry)
+                       {
+                               $sql= "SELECT fm_ecobilag.*,fm_ecouser.initials 
as saksbehandler FROM fm_ecobilag {$this->join} fm_ecouser ON 
fm_ecobilag.budsjettansvarligid=fm_ecouser.lid"
+                               . " WHERE bilagsnr='{$entry['bilagsnr']}' AND 
fakturanr = '{$entry['fakturanr']}'";
+
+                               $this->db->query($sql,__LINE__,__FILE__);
+                               $this->db->next_record();
+
+                               $entry['id']                                    
= $this->db->f('id');
+                               $entry['kidnr']                                 
= $this->db->f('kidnr');
+                               $entry['typeid']                                
= $this->db->f('typeid');
+                               $entry['kildeid']                               
= $this->db->f('kildeid');
+                               $entry['pmwrkord_code']                 = 
$this->db->f('pmwrkord_code');
+                               $entry['fakturadato']                   = 
$this->db->f('fakturadato');
+                               $entry['periode']                               
= $this->db->f('periode');
+                               $entry['forfallsdato']                  = 
$this->db->f('forfallsdato');
+                               $entry['fakturanr']                             
= $this->db->f('fakturanr');
+                               $entry['spbudact_code']                 = 
$this->db->f('spbudact_code');
+                               $entry['regtid']                                
= $this->db->f('regtid');
+                               $entry['artid']                                 
= $this->db->f('artid');
+                               $entry['godkjentbelop']                 = 
$entry['belop'];
+                               $entry['spvend_code']                   = 
$this->db->f('spvend_code');
+                               $entry['dima']                                  
= $this->db->f('dima');
+                               $entry['dimb']                                  
= $this->db->f('dimb');
+                               $entry['mvakode']                               
= $this->db->f('mvakode');
+                               $entry['dimd']                                  
= $this->db->f('dimd');
+                               $entry['dime']                                  
= $this->db->f('dime');
+                               $entry['oppsynsmannid']                 = 
$this->db->f('oppsynsmannid');
+                               $entry['saksbehandlerid']               = 
$this->db->f('saksbehandlerid');
+                               $entry['budsjettansvarligid']   = 
$this->db->f('budsjettansvarligid');
+                               $entry['oppsynsigndato']                = 
$this->db->f('oppsynsigndato');
+                               $entry['saksigndato']                   = 
$this->db->f('saksigndato');
+                               $entry['budsjettsigndato']              = 
$this->db->f('budsjettsigndato');
+                               $entry['merknad']                               
= $this->db->f('merknad');
+                               $entry['line_text']                             
= $this->db->f('line_text');
+                               $entry['splitt']                                
= $this->db->f('splitt');
+                               $entry['utbetalingid']                  = 
$this->db->f('utbetalingid');
+                               $entry['utbetalingsigndato']    = 
$this->db->f('utbetalingsigndato');
+                               $entry['saksbehandler']                 = 
$this->db->f('saksbehandler');
+                               $entry['invoice_line']                          
= $this->get_invoice($entry['bilagsnr'], $entry['fakturanr']);
+
+                       }
+
+                       return $values;
+               }
+
+
+               //Velg ut alle underbilag
+
+               private function get_invoice($bilagsnr, $fakturanr)
+               {
+                       if(!$fakturanr)
+                       {
+                               throw new Exception('Mangler fakturanr');
+                       }
+
+                       $sql= "SELECT fm_ecobilag.* 
,fm_part_of_town.district_id"
+                       . " FROM (fm_location1 {$this->join} fm_part_of_town ON 
fm_location1.part_of_town_id = fm_part_of_town.part_of_town_id)"
+                       . " {$this->join} fm_ecobilag ON fm_location1.loc1 = 
fm_ecobilag.loc1"
+                       . " WHERE bilagsnr='$bilagsnr' AND fakturanr = 
'{$fakturanr}'";
+
+                       $this->db2->query($sql,__LINE__,__FILE__);
+
+                       $values = array();
+                       while ($this->db2->next_record())
+                       {
+                               $values[] = array
+                               (
+                                       'id'                                    
=> $this->db2->f('id'),
+                                       'bilagsnr'                              
=> $this->db2->f('bilagsnr'),
+                                       'kidnr'                                 
=> $this->db2->f('kidnr'),
+                                       'typeid'                                
=> $this->db2->f('typeid'),
+                                       'kildeid'                               
=> $this->db2->f('kildeid'),
+                                       'pmwrkord_code'                 => 
$this->db2->f('pmwrkord_code'),
+                                       'belop'                                 
=> $this->db2->f('belop'),
+                                       'fakturadato'                   => 
$this->db2->f('fakturadato'),
+                                       'periode'                               
=> $this->db2->f('periode'),
+                                       'forfallsdato'                  => 
$this->db2->f('forfallsdato'),
+                                       'fakturanr'                             
=> $this->db2->f('fakturanr'),
+                                       'spbudact_code'                 => 
$this->db2->f('spbudact_code'),
+                                       'regtid'                                
=> $this->db2->f('regtid'),
+                                       'artid'                                 
=> $this->db2->f('artid'),
+                                       'godkjentbelop'                 => 
$this->db2->f('godkjentbelop'),
+                                       'spvend_code'                   => 
$this->db2->f('spvend_code'),
+                                       'dima'                                  
=> $this->db2->f('dima'),
+                                       'loc1'                                  
=> $this->db2->f('loc1'),
+                                       'dimb'                                  
=> $this->db2->f('dimb'),
+                                       'mvakode'                               
=> $this->db2->f('mvakode'),
+                                       'dimd'                                  
=> $this->db2->f('dimd'),
+                                       'dime'                                  
=> $this->db2->f('dime'),
+                                       'project_id'                    => 
$this->db2->f('project_id'),
+                                       'kostra_id'                             
=> $this->db2->f('kostra_id'),
+                                       'oppsynsmannid'                 => 
$this->db2->f('oppsynsmannid'),
+                                       'saksbehandlerid'               => 
$this->db2->f('saksbehandlerid'),
+                                       'budsjettansvarligid'   => 
$this->db2->f('budsjettansvarligid'),
+                                       'oppsynsigndato'                => 
$this->db2->f('oppsynsigndato'),
+                                       'saksigndato'                   => 
$this->db2->f('saksigndato'),
+                                       'budsjettsigndato'              => 
$this->db2->f('budsjettsigndato'),
+                                       'merknad'                               
=> $this->db2->f('merknad'),
+                                       'line_text'                             
=> $this->db2->f('line_text'),
+                                       'splitt'                                
=> $this->db2->f('splitt'),
+                                       'utbetalingid'                  => 
$this->db2->f('utbetalingid'),
+                                       'utbetalingsigndato'    => 
$this->db2->f('utbetalingsigndato'),
+                                       'district_id'                   => 
$this->db2->f('district_id'),
+                                       'item_type'                             
=> $this->db2->f('item_type'),
+                                       'item_id'                               
=> $this->db2->f('item_id')
+                               );
+
+                       }
+
+                       return $values;
+               }
+
+
                function 
OverforPeriode($batchid,$periode,$download,$pre_transfer='',$force_period_year='')
                {
                        $BilagId = 'NULL';
-       
+
                        //Bestem filnavn
 
 
@@ -514,7 +661,8 @@
                        {
                                $message='LagFilnavn: Alle loepenr for filnavn 
er i bruk';
                                $this->errorhandler($batchid,$message);
-                               return $message;
+                               phpgwapi_cache::message_set($message, 'error'); 
+                               return false;
                        }
 
                        //Test om filen kan opprettes og skrives til
@@ -524,32 +672,34 @@
                        }
                        else
                        {
-                               $message='kan ikke lagre til fil: '. $Filnavn 
.'<br>';
-                               return $message;
+                               phpgwapi_cache::message_set('kan ikke lagre til 
fil: '. $Filnavn, 'error'); 
+                               return false;
                        }
-                       
+
                        //Velg ut alle hoved bilag som skal overføres
 
                        $this->db->transaction_begin();
 
-                       
$oRsBilag=$this->soXport->hoved_bilag($periode,$pre_transfer);
-                                                                       
-                       $bilag_count= count($oRsBilag);
-                       for ($k=0;$k<$bilag_count;$k++)
-                       {                               
-                               $tranfser_bilag[] = $oRsBilag[$k]['bilagsnr'];
-                               
+                       $oRsBilag =  
$this->get_vouchers_to_transfer($periode,$pre_transfer);
+
+                       $buffer = '';
+
+                       foreach($oRsBilag as $invoice)
+                       {
+
+                               $tranfser_bilag[] = $invoice['bilagsnr'];
+
                                //Bestem belops felt
-                               if ($oRsBilag[$k]['splitt']==0)
+                               if ($invoice['splitt']==0)
                                {
                                        //Bilaget er ikke splittet
-                                       if ($oRsBilag[$k]['godkjentbelop'] <> 
$oRsBilag[$k]['belop'])
+                                       if ($invoice['godkjentbelop'] <> 
$invoice['belop'])
                                        {
-                                               $BelopFelt = 'godkjentbelop';   
                
+                                               $BelopFelt = 'godkjentbelop';
                                                //Logg til avviks tabell
                                                if ($download=='on' && 
!$pre_transfer)
                                                {
-//                                                     
$this->soXport->log_to_deviation_table($oRsBilag[$k]);
+//                                                     
$this->soXport->log_to_deviation_table($invoice);
                                                }
                                        }
                                        else
@@ -557,9 +707,9 @@
                                                $BelopFelt = 'belop';
                                        }
                                }
-                               
+
                                //Bilaget er splittet
-                               if ($oRsBilag[$k]['godkjentbelop'] == 
$oRsBilag[$k]['belop'])
+                               if ($invoice['godkjentbelop'] == 
$invoice['belop'])
                                {
                                        $BelopFelt = 'godkjentbelop';
                                }
@@ -570,21 +720,21 @@
                                        $this->errorhandler($batchid,$message);
                                        return $message;
                                }
-               
-                               $Belop_motpost =$oRsBilag[$k][$BelopFelt] *100; 
 
+                               $Belop_motpost =$invoice[$BelopFelt] *100; 
+
                                //Skriv hovedbilag
 
                                $Buntnr         = 
sprintf("%-12s",basename($Filnavn,".TXT"));// verdi: MMDDFL, type: c12, plass: 
1 - 12
                                $Forsystem      = 'BI';// verdi: BI, type: c2, 
plass: 13 - 14
-                               
+
                                $Transtype      = 'GL';// verdi: GL, type: c2, 
plass: 17 - 18
                                $Firmakode      = sprintf("%-2s",'BB');// 
verdi: Firmakode, type: c2, plass: 19 - 20
 
-                               $Valuteringsdato= 
date(Ymd,strtotime($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
+                               $Valuteringsdato= 
date(Ymd,strtotime($invoice['fakturadato']));// verdi: Dato, type: date, plass: 
251 - 258
+                               $Bilagsdato     = 
date(Ymd,strtotime($invoice['fakturadato'])) ;// verdi: Dato, type: date, 
plass: 259 - 266
+                               $Bilagsnr       = 
sprintf("%-9s",substr($invoice['bilagsnr'],-8));// verdi: Bilagsnummer, type: 
i4, plass: 267 - 275
+               //              $_periode       = 
sprintf("%06s",date(Y,strtotime($invoice['fakturadato'])) . 
sprintf("%02d",$periode));// verdi: Periode, type: i4, plass: 276 - 281
                                $ESL            = sprintf("%1s",'');// verdi: 
Blank, type: i+C481, plass: 282 - 282
 
                                if($pre_transfer)
@@ -592,70 +742,60 @@
                                        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']));
+                                               $temp_year = 
date('Y',strtotime($invoice['fakturadato']));
                                        }
 
                                        $_periode       = 
sprintf("%06s",$temp_year . sprintf("%02d",$temp_period));// verdi: Periode, 
type: i4, plass: 276 - 281
                                        $Bilagsart      = 
sprintf("%2s",'FF');// verdi: , type: c2, plass: 15 - 16
-                                       $Forfall        = '20991231';// verdi: 
Forfallsdato , type: date, plass: 298 - 305                              
+                                       $Forfall        = '20991231';// verdi: 
Forfallsdato , type: date, plass: 298 - 305
                                }
                                else
                                {
-/*                             
-                                       if($force_period_year)
-                                       {
-                                               $_periode       = 
sprintf("%06s",$force_period_year . sprintf("%02d",$periode));// verdi: 
Periode, type: i4, plass: 276 - 281
-                                       }
-                                       else
-                                       {
-                                               $_periode       = 
sprintf("%06s",date(Y,strtotime($oRsBilag[$k]['fakturadato'])) . 
sprintf("%02d",$periode));// verdi: Periode, type: i4, plass: 276 - 281
-                                       }
-*/
                                        $_periode       = $periode;
-                                       
+
                                        $Bilagsart      = 
sprintf("%2s",'FD');// verdi: , type: c2, plass: 15 - 16
-                                       $Forfall        = 
date(Ymd,strtotime($oRsBilag[$k]['forfallsdato']));// verdi: Forfallsdato , 
type: date, plass: 298 - 305                              
+                                       $Forfall        = 
date(Ymd,strtotime($invoice['forfallsdato']));// verdi: Forfallsdato , type: 
date, plass: 298 - 305
                                }
 
                                $Rab_forf       = sprintf("%-8s",'');// verdi: 
Blank, type: date, plass: 306 - 313
                                $Rabatt         = sprintf("%020s",'');// verdi: 
Blank, type: money, plass: 314 - 333
                                $Avt_Kon        = sprintf("%-8s",'');// verdi: 
Blank, type: c8, plass: 334 - 341
 
-                               $Kid            = 
sprintf("%-27s",$oRsBilag[$k]['kidnr']);// verdi: Kid, type: c27, plass: 351 - 
377
+                               $Kid            = 
sprintf("%-27s",$invoice['kidnr']);// verdi: Kid, type: c27, plass: 351 - 377
                                $Bet_overforing = sprintf("%-2s",'');// verdi: 
Blank, type: c2, plass: 378 - 379
                                $Status         = 'N';// verdi: N, type: c1, 
plass: 380 - 380
                                $Resk_type      = 'P';// verdi: Blank, type: 
c1, plass: 381 - 381
-                               $Resk_nr        = 
sprintf("%-9s",$oRsBilag[$k]['spvend_code']);// verdi: Blank., type: i4, plass: 
382 - 390
+                               $Resk_nr        = 
sprintf("%-9s",$invoice['spvend_code']);// verdi: Blank., type: i4, plass: 382 
- 390
                                $Forskudd       = '0';// verdi: 0, type: i1, 
plass: 391 - 391
                                $Fakturaref     = '000000000';// verdi: 0, 
type: i4, plass: 392 - 400
                                $Fakturaref     = '000000000';// verdi: 0, 
type: i4, plass: 401 - 409
                                $Inkassokode    = sprintf("%-6s",'');// verdi: 
Blank, type: c6, plass: 410 - 415
                                $Bet_mottager   = sprintf("%-8s",'');// verdi: 
Blank, type: c8, plass: 416 - 423
-                               $Att_ansvarlig  = 
sprintf("%-6s",utf8_decode($oRsBilag[$k]['saksbehandler']));// verdi: Blank, 
type: c6, plass: 424 - 429
+                               $Att_ansvarlig  = 
sprintf("%-6s",utf8_decode($invoice['saksbehandler']));// verdi: Blank, type: 
c6, plass: 424 - 429
 
-                               $vendor_info = 
$this->get_vendor_info($oRsBilag[$k]['spvend_code']);
-                               
+                               $vendor_info = 
$this->get_vendor_info($invoice['spvend_code']);
+
                                if(!$vendor_info['org_nr'])
                                {
-                                       $message = 'mangler org_nr for 
reskontronr: ' . $oRsBilag[$k]['spvend_code'];
+                                       $message = 'mangler org_nr for 
reskontronr: ' . $invoice['spvend_code'];
                                        $this->errorhandler($batchid,$message);
                                        return $message;
                                }
 
                                if(!$vendor_info['konto_nr'])
                                {
-                                       $message = 'mangler konto for 
reskontronr: ' . $oRsBilag[$k]['spvend_code'];
+                                       $message = 'mangler konto for 
reskontronr: ' . $invoice['spvend_code'];
                                        $this->errorhandler($batchid,$message);
                                        return $message;
                                }
@@ -671,20 +811,18 @@
                                $Val_dok        = sprintf("%-3s",'');// verdi: 
Blank, type: c3, plass: 817 - 819
 
 
+                               $underbilag_count= 
count($invoice['invoice_line']);
+                               $last_record = $underbilag_count - 1;
+
                                //Velg ut alle underbilag
-                               
$oRsUnderbilag=$this->soXport->select_underbilag($oRsBilag[$k]['bilagsnr']);    
        
+                               foreach($invoice['invoice_line'] as $_key => 
$invoice_line)
+                               {
 
+                                       $BilagId = $invoice_line['id'];
 
-                               $underbilag_count= count($oRsUnderbilag);
-                               $last_record = $underbilag_count - 1;
+                                       $Belop = $invoice_line[$BelopFelt]*100;
+                                       $Belop_ = $Belop;
 
-                               for ($i=0;$i<$underbilag_count;$i++)
-                               {
-                                       $BilagId = $oRsUnderbilag[$i]['id'];
-                                       
-                                       $Belop = 
$oRsUnderbilag[$i][$BelopFelt]*100;
-                                       $Belop_ = $Belop;
-                                       
                                        if($Belop < 0)
                                        {
                                                $Belop = abs($Belop);
@@ -692,21 +830,21 @@
                                                $Belop = '-' . $Belop;
                                        }
                                        else
-                                       {                                       
+                                       {
                                                $Belop = 
sprintf("%019s",$Belop);
                                                $Belop = '+' . $Belop;
                                        }
-                                       
 
-                                       if($oRsUnderbilag[$i]['pmwrkord_code'])
+
+                                       if($invoice_line['pmwrkord_code'])
                                        {
-               
+
                                                
$orders_affected[$BilagOverf[$i]['pmwrkord_code']] = true;
 
                                                //Oppdater beløp på arbeidsordre
                                                if ($download=='on' && 
!$pre_transfer)
                                                {
-                                                       if 
($oRsUnderbilag[$i]['dimd'] % 2 == 0)
+                                                       if 
($invoice_line['dimd'] % 2 == 0)
                                                        {
                                                                
$actual_cost_field='act_mtrl_cost';
                                                        }
@@ -715,59 +853,56 @@
                                                                
$actual_cost_field='act_vendor_cost';
                                                        }
                                                        $operator='+';
-                                                       
+
                                                        if(!$this->debug)
                                                        {
-                                                               
$this->soXport->correct_actual_cost($oRsUnderbilag[$i]['pmwrkord_code'],$Belop_,$actual_cost_field,$operator);
+                                                               
$this->soXport->correct_actual_cost($invoice_line['pmwrkord_code'],$Belop_,$actual_cost_field,$operator);
                                                        }
                                                }
                                        }
-               
+
                                        //Overfør til fm_ecobilagoverf
-               
-                                       $oRsOverfBilag=$oRsUnderbilag[$i];
-                                       $oRsOverfBilag['filnavn']= 
basename($Filnavn);
-                                       
$oRsOverfBilag['ordrebelop']=$oRsUnderbilag[$i][$BelopFelt];
+                                       $invoice_line['filnavn']= 
basename($Filnavn);
+                                       
$invoice_line['ordrebelop']=$invoice_line[$BelopFelt];
 
+                                       //dersom det mangler budsjett konto - 
kun aktuelt for ikke godkjent - sett konto til 2899999
 
-                                       //dersom det mangler budsjett konto - 
kun aktuelt for ikke godkjent - sett konto til 2899999
-                                       
-                                       if(!$oRsOverfBilag['spbudact_code'] && 
$pre_transfer)
+                                       if(!$invoice_line['spbudact_code'] && 
$pre_transfer)
                                        {
-                                               $oRsOverfBilag['spbudact_code'] 
= 12304361;
+                                               $invoice_line['spbudact_code'] 
= 12304361;
                                        }
-                                       
-                                       
+
+
                                        //dersom ikke gyldig objekt - kun 
aktuelt for ikke godkjent - sett objekt til 9999
-                                       
-                                       if(!($oRsOverfBilag['kostra_id']>0) && 
$pre_transfer)
+
+                                       if(!($invoice_line['kostra_id']>0) && 
$pre_transfer)
                                        {
-                                               $oRsOverfBilag['kostra_id'] = 
26550;
-                                               $oRsOverfBilag['mvakode'] = 0;
-                                               $oRsOverfBilag['dima'] = 9999;
+                                               $invoice_line['kostra_id'] = 
26550;
+                                               $invoice_line['mvakode'] = 0;
+                                               $invoice_line['dima'] = 9999;
                                        }
-                                       
-                                       $Konto          = 
sprintf("%08s",$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
-                                       
+
+                                       $Konto          = 
sprintf("%08s",$invoice_line['spbudact_code']);// verdi: Art, type: c8, plass: 
21 - 28
+                                       $Dim_1          = 
sprintf("%8s",$invoice_line['district_id']);// verdi: Ansvarssted, type: c8, 
plass: 29 - 36
+                                       $Dim_2          = 
sprintf("%-8s",$invoice_line['kostra_id']);// verdi: Tjeneste, type: c8, plass: 
37 - 44
+
                                        if($pre_transfer)
                                        {
-                                               $Dim_3          = 
sprintf("%-8s",substr($oRsOverfBilag['dima'],0,4));// verdi: Objekt, type: c8, 
plass: 45 - 52
+                                               $Dim_3          = 
sprintf("%-8s",substr($invoice_line['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_3          = 
sprintf("%-8s",substr($invoice_line['dima'],0,6));// verdi: Objekt-bygg, type: 
c8, plass: 45 - 52
                                        }
-                                       
-                                       
+
+
                                        $Dim_4          = sprintf("%-8s",'');// 
verdi: Ressurs, type: c8, plass: 53 - 60
-                                       $Dim_5          = 
sprintf("%-12s",$oRsOverfBilag['project_id']);// verdi: Prosjekt, type: c12, 
plass: 61 - 72
-                                       $Dim_6          = 
sprintf("%-4s",$oRsOverfBilag['dimd']);// verdi: Blank, type: c4, plass: 73 - 76
+                                       $Dim_5          = 
sprintf("%-12s",$invoice_line['project_id']);// verdi: Prosjekt, type: c12, 
plass: 61 - 72
+                                       $Dim_6          = 
sprintf("%-4s",$invoice_line['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
-                                       
+                                       
$Avgiftskode=sprintf("%-2s",$invoice_line['mvakode']);// verdi: Avgiftskode, 
type: c2, plass: 81 - 82
+
                                        $Avgiftssystem  = sprintf("%2s",'');// 
verdi: Blank, type: c2, plass: 83 - 84
                                        $Valutakode     ='NOK';// verdi: NOK, 
type: c3, plass: 85 - 87
                                        $Debet_Kredit   = sprintf("%2s",'');// 
verdi: Blank, type: i2, plass: 88 - 89
@@ -781,28 +916,28 @@
                                        $Belop4         = 
sprintf("%20s",$batchid);// verdi: Blank, type: money, plass: 181 - 200 - 
batch_id høyre justert
 
 
-                                       if($oRsOverfBilag['pmwrkord_code'])
+                                       if($invoice_line['pmwrkord_code'])
                                        {
-                                               $Tekst  = 
sprintf("%-50s",substr(utf8_decode($this->get_order_title($oRsOverfBilag['pmwrkord_code'])),0,50));//sprintf("%-50s",substr($oRsOverfBilag['merknad'],0,50));//
 verdi: Tekst, type: text (50), plass: 201 - 250
+                                               $Tekst  = 
sprintf("%-50s",substr(utf8_decode($this->get_order_title($invoice_line['pmwrkord_code'])),0,50));//sprintf("%-50s",substr($invoice_line['merknad'],0,50));//
 verdi: Tekst, type: text (50), plass: 201 - 250
                                        }
                                        else
                                        {
-                                               $Tekst  = 
sprintf("%-50s",'');//sprintf("%-50s",substr($oRsOverfBilag['merknad'],0,50));//
 verdi: Tekst, type: text (50), plass: 201 - 250
+                                               $Tekst  = 
sprintf("%-50s",'');//sprintf("%-50s",substr($invoice_line['merknad'],0,50));// 
verdi: Tekst, type: text (50), plass: 201 - 250
                                        }
-                                       
-                                       $Fakturanr      = 
sprintf("%-15s",substr(utf8_decode($oRsOverfBilag['fakturanr']), 0, 15));// 
verdi: Fakturanr, type: c15, plass: 283 - 297
 
-                                       $Ordrenummer    = 
sprintf("%-9s",$oRsOverfBilag['pmwrkord_code']);// verdi: Infodoc ordrenr, 
type: i4, plass: 342 - 350
-       
-                                       
+                                       $Fakturanr      = 
sprintf("%-15s",substr(utf8_decode($invoice_line['fakturanr']), 0, 15));// 
verdi: Fakturanr, type: c15, plass: 283 - 297
+
+                                       $Ordrenummer    = 
sprintf("%-9s",$invoice_line['pmwrkord_code']);// verdi: Infodoc ordrenr, type: 
i4, plass: 342 - 350
+
+
                                        //Kopier verdier
                                        if ($download=='on' && !$pre_transfer 
&& !$this->debug)
                                        {
-                                               
$this->soXport->add_OverfBilag($oRsOverfBilag);
+                                               
$this->soXport->add_OverfBilag($invoice_line);
                                        }
-                                       
+
                                        //Skriv til fil
-                                       
+
                                        $buffer .= $Buntnr . $Forsystem . 
$Bilagsart . $Transtype . $Firmakode . $Konto . $Dim_1 . $Dim_2 . $Dim_3 . 
$Dim_4 . 
                                        $Dim_5 . $Dim_6 . $Dim_7 . $Avgiftskode 
. $Avgiftssystem . $Valutakode . $Debet_Kredit . $Valutabelop . 
                                        $Belop_i_firmavaluta . $Antall . 
$Belop2 . $Belop3 . $Belop4 . $Tekst . $Valuteringsdato . $Bilagsdato . 
@@ -811,7 +946,7 @@
                                        $Inkassokode . $Bet_mottager . 
$Att_ansvarlig . $Resk_navn . $Postadresse . $Stat_Provins . $Sted . 
                                        $Bank_Postgiro_kontonr . $Betalingsmate 
. $Mva_reg_nr . $Postnummer . $Val_dok ."\r\n";
 
-                                       if($i==$last_record)
+                                       if($_key==$last_record)
                                        {
                                                $Konto          = 
sprintf("%-8s",'2327010');// verdi: Art, type: c8, plass: 21 - 28
                                                $Dim_1          = 
sprintf("%-8s",'');// verdi: Ansvarssted, type: c8, plass: 29 - 36
@@ -821,9 +956,9 @@
                                                $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
+                                       //      $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
+                                               $Tekst          = 
sprintf("%-50s",'');//sprintf("%-50s",substr($invoice_line['merknad'],0,50));// 
verdi: Tekst, type: text (50), plass: 201 - 250
 
                                                if($Belop_motpost < 0)
                                                {
@@ -836,7 +971,7 @@
                                                        $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
@@ -847,31 +982,30 @@
                                                $Bilagsnr . $_periode . $ESL . 
$Fakturanr . $Forfall . $Rab_forf . $Rabatt . $Avt_Kon . $Ordrenummer . 
                                                $Kid . $Bet_overforing . 
$Status . $Resk_type . $Resk_nr . $Forskudd . $Fakturaref . $Fakturaref . 
                                                $Inkassokode . $Bet_mottager . 
$Att_ansvarlig . $Resk_navn . $Postadresse . $Stat_Provins . $Sted . 
-                                               $Bank_Postgiro_kontonr . 
$Betalingsmate . $Mva_reg_nr . $Postnummer . $Val_dok ."\r\n";                  
               
+                                               $Bank_Postgiro_kontonr . 
$Betalingsmate . $Mva_reg_nr . $Postnummer . $Val_dok ."\r\n";
                                        }
-                               
+
                                        //Slett post i fm_ecobilag
                                        if ($download=='on' && !$pre_transfer 
&& !$this->debug)
                                        {
-                                               
$this->soXport->delete_from_fm_ecobilag($oRsUnderbilag[$i]['id']);              
-                                               //Logg transaksjon              
+                                               
$this->soXport->delete_from_fm_ecobilag($invoice_line['id']);
+                                               //Logg transaksjon
                                                
$this->soXport->log_transaction($batchid,$BilagId,lang('Invoice transferred'));
                                        }
-               
+
                                        $BilagId = 'NULL';
-               
+
                                        $antall = $antall + 1;
                                }
                        }
-                               
+
                        //Fullfør transaksjon
-                       
-               
+
                        if ($download=='on' && !$pre_transfer && !$this->debug):
                        {
                                $fp = fopen($Filnavn, "wb");
                                fwrite($fp,$buffer);
-                               
+
                                if(fclose($fp))
                                {
                                        $file_written=True;
@@ -895,7 +1029,7 @@
                                else
                                {
                                        $this->db->transaction_abort();
-                                       $message = 'Noe gikk galt med 
overforing av godkjendte fakturaer!';                             
+                                       $message = 'Noe gikk galt med 
overforing av godkjendte fakturaer!';
                                }
                        }
                        elseif($download=='on' && $pre_transfer && 
!$this->debug):
@@ -908,7 +1042,7 @@
                                {
                                        $file_written=True;
                                }
-                               
+
                                if($file_written && 
$this->config->config_data['common']['method']!='ftp'):
                                {
                                        $transfer_ok = True;
@@ -929,27 +1063,36 @@
                                else
                                {
                                        $this->db->transaction_abort();
-                                       $message = 'Noe gikk galt med 
ankomstregistrering!';                            
+                                       $message = 'Noe gikk galt med 
ankomstregistrering!';
                                }
                        }
                        else:
                        {
-                               $message = $buffer;
                                $this->db->transaction_abort();
 
+                               _debug_array($Filnavn);
+                               $fp = fopen($Filnavn, "wb");
+                               fwrite($fp,$buffer);
+
+                               if(fclose($fp))
+                               {
+                                       $file_written=True;
+                               }
+
+                               echo "<pre>{$buffer}</pre>";
                        }
                        endif;
 
                        return $message;
                }
-               
+
                function transfer($buffer,$Filnavn,$batchid,$tranfser_bilag)
-               {                       
+               {
 
                        
if($this->config->config_data['common']['method']=='ftp')
                        {
-                               $ftp    = $this->phpftp_connect();      
-                               
+                               $ftp    = $this->phpftp_connect();
+
                                $basedir = 
$this->config->config_data['common']['remote_basedir'];
                                if($basedir)
                                {
@@ -963,7 +1106,7 @@
                                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;
@@ -971,7 +1114,7 @@
                                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;
@@ -980,7 +1123,7 @@
                                {
                                        unlink($Filnavn);
                                }
-                       
+
                                ftp_quit($ftp);
                        }
                        return  $transfer_ok;
@@ -991,7 +1134,7 @@
                        $host                           = 
$this->config->config_data['common']['host'];
                        $user                           = 
$this->config->config_data['common']['user'];
                        $password                       = 
$this->config->config_data['common']['password'];
-                       
+
 //                     echo "connecting to $host with $user and $pass\n <br>";
                        $ftp = ftp_connect($host);
                        if($ftp) 




reply via email to

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