[Top][All Lists]
[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;
+ }
+ }
+ }
+ }
+?>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Phpgroupware-cvs] property/inc/export Agresso,1.25,
sigurdne <=