[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Fmsystem-commits] [17256] prepare for custom code outside tree
From: |
sigurdne |
Subject: |
[Fmsystem-commits] [17256] prepare for custom code outside tree |
Date: |
Wed, 1 Nov 2017 15:28:49 -0400 (EDT) |
Revision: 17256
http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=17256
Author: sigurdne
Date: 2017-11-01 15:28:49 -0400 (Wed, 01 Nov 2017)
Log Message:
-----------
prepare for custom code outside tree
Added Paths:
-----------
thirdparty/PE_custom/BK_EBF/property/inc/export/default/Agresso_Bergen_Kostfordeling
Copied:
thirdparty/PE_custom/BK_EBF/property/inc/export/default/Agresso_Bergen_Kostfordeling
(from rev 17218,
trunk/property/inc/export/default/Agresso_Bergen_Kostfordeling)
===================================================================
---
thirdparty/PE_custom/BK_EBF/property/inc/export/default/Agresso_Bergen_Kostfordeling
(rev 0)
+++
thirdparty/PE_custom/BK_EBF/property/inc/export/default/Agresso_Bergen_Kostfordeling
2017-11-01 19:28:49 UTC (rev 17256)
@@ -0,0 +1,962 @@
+<?php
+ /**
+ * phpGroupWare - property: a Facilities Management System.
+ *
+ * @author Sigurd Nes <address@hidden>
+ * @copyright Copyright (C)
2003,2004,2005,2006,2007,2008,2009,2010,2011,2012 Free Software Foundation,
Inc. http://www.fsf.org/
+ * This file is part of phpGroupWare.
+ *
+ * phpGroupWare is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * phpGroupWare is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with phpGroupWare; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA
+ *
+ * @license http://www.gnu.org/licenses/gpl.html GNU General Public
License
+ * @internal Development of this application was funded by
http://www.bergen.kommune.no/bbb_/ekstern/
+ * @package property
+ * @subpackage export
+ * @version $Id: Agresso 11369 2013-10-11 15:29:13Z sigurdne $
+ */
+
+ /**
+ * Description
+ * @package property
+ */
+ class export_conv
+ {
+
+ //var $fil_katalog='c:/temp'; //On windows use
"//computername/share/filename" or "\\\\computername\share\filename" to check
files on network shares.
+
+ protected $old_files_deleted;
+ protected $debug;
+ protected $orders_affected = array();
+ protected $db;
+ protected $db2;
+ protected $soXport;
+ protected $config;
+ protected $invoice_approval = 2;
+
+ function __construct()
+ {
+ $this->db = & $GLOBALS['phpgw']->db;
+ $this->join = & $this->db->join;
+ $this->db2 = clone($this->db);
+ $this->soXport = CreateObject('property.soXport');
+ $this->config = CreateObject('admin.soconfig',
$GLOBALS['phpgw']->locations->get_id('property', '.invoice'));
+ $this->invoice_approval =
isset($this->config->config_data['common']['invoice_approval']) &&
$this->config->config_data['common']['invoice_approval'] ?
$this->config->config_data['common']['invoice_approval'] : 2;
+ }
+
+ function select_periods_with_invoice_to_transfer()
+ {
+ if ($this->invoice_approval == 2)
+ {
+ $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";
+ }
+ else
+ {
+ $sql = "SELECT DISTINCT periode FROM
fm_ecobilag WHERE budsjettsigndato IS NOT NULL AND utbetalingsigndato IS NOT
NULL";
+ }
+
+
+ $periode = array();
+ $this->db->query($sql, __LINE__, __FILE__);
+ while ($this->db->next_record())
+ {
+ $periode[] = $this->db->f('periode');
+ }
+
+ return $periode;
+ }
+
+ function log_end( $batchid )
+ {
+ $tid = date($this->soXport->datetimeformat);
+ $sql = "insert into fm_ecologg (batchid,melding,tid)
values ('$batchid','End transfer','$tid')";
+ $this->db->query($sql, __LINE__, __FILE__);
+ }
+
+ function log_error( $batchid, $error_desr )
+ {
+ $tid = date($this->soXport->datetimeformat);
+ $sql = "insert into fm_ecologg
(batchid,ecobilagid,status,melding,tid) values
('$batchid',NULL,0,'$error_desr','$tid')";
+ $this->db->query($sql, __LINE__, __FILE__);
+ }
+
+ function increment_batchid()
+ {
+
+ $this->db->query("update fm_idgenerator set value =
value + 1 where name = 'Ecobatchid'", __LINE__, __FILE__);
+ $this->db->query("select value from fm_idgenerator
where name = 'Ecobatchid'", __LINE__, __FILE__);
+ $this->db->next_record();
+ $bilagsnr = $this->db->f('value');
+ return $bilagsnr;
+ }
+
+ function next_batchid()
+ {
+
+ $this->db->query("select value from fm_idgenerator
where name = 'Ecobatchid'", __LINE__, __FILE__);
+ $this->db->next_record();
+ $batchid = $this->db->f('value') + 1;
+
+ return $batchid;
+ }
+
+ //Lagre start melding
+ function log_start( $batchid )
+ {
+ $tid = date($this->soXport->datetimeformat);
+ $sql = "insert into fm_ecologg (batchid,melding,tid)
values ('$batchid','Start transfer','$tid')";
+ $this->db->query($sql, __LINE__, __FILE__);
+ }
+
+ function get_vendor_info( $vendor_id = '' )
+ {
+ $sql = "select org_nr,konto_nr from fm_vendor where
id='$vendor_id'";
+ $this->db->query($sql, __LINE__, __FILE__);
+ $this->db->next_record();
+
+ $vendor_info = array(
+ 'org_nr' => $this->db->f('org_nr'),
+ 'konto_nr' => $this->db->f('konto_nr')
+ );
+
+ return $vendor_info;
+ }
+
+ function get_order_title( $order_id = '' )
+ {
+ $sql = "select type from fm_orders where
id='$order_id'";
+ $this->db->query($sql, __LINE__, __FILE__);
+ $this->db->next_record();
+
+ switch ($this->db->f('type'))
+ {
+ case 'workorder':
+ $sql2 = "select title from fm_workorder
where id='$order_id'";
+ $this->db->query($sql2, __LINE__,
__FILE__);
+ $this->db->next_record();
+ $order_title = $this->db->f('title');
+ break;
+ case 's_agreement':
+ $sql2 = "select descr as title from
fm_s_agreement where id='$order_id'";
+ $this->db->query($sql2, __LINE__,
__FILE__);
+ $this->db->next_record();
+ $order_title = $this->db->f('title');
+ break;
+ }
+
+ return $order_title;
+ }
+
+ function select_invoice_rollback( $day, $month, $year, $Filnavn
)
+ {
+
+ switch ($GLOBALS['phpgw_info']['server']['db_type'])
+ {
+ case 'mssql':
+ $datepart_year =
"datepart(year,overftid)";
+ $datepart_month =
"datepart(month,overftid)";
+ $datepart_day =
"datepart(day,overftid)";
+ break;
+ case 'mysql':
+ $datepart_year = "YEAR(overftid)";
+ $datepart_month = "MONTH(overftid)";
+ $datepart_day = "DAYOFMONTH(overftid)";
+ break;
+ case 'pgsql':
+ case 'postgres':
+ $datepart_year =
"date_part('year',overftid)";
+ $datepart_month =
"date_part('month',overftid)";
+ $datepart_day =
"date_part('day',overftid)";
+ break;
+ }
+
+
+ $sql = "SELECT * FROM fm_ecobilagoverf WHERE
filnavn='$Filnavn' and $datepart_year=$year and $datepart_month=$month and
$datepart_day= $day";
+ $this->db->query($sql, __LINE__, __FILE__);
+
+ $invoice_roleback = array();
+
+ while ($this->db->next_record())
+ {
+ $invoice_roleback[] = array
+ (
+ 'id' => $this->db->f('id'),
+ 'bilagsnr' => $this->db->f('bilagsnr'),
+ 'kidnr' => $this->db->f('kidnr'),
+ 'typeid' => $this->db->f('typeid'),
+ 'kildeid' => $this->db->f('kildeid'),
+ 'pmwrkord_code' =>
$this->db->f('pmwrkord_code'),
+ 'belop' => $this->db->f('belop'),
+ 'fakturadato' =>
$this->db->f('fakturadato'),
+ 'periode' => $this->db->f('periode'),
+ 'forfallsdato' =>
$this->db->f('forfallsdato'),
+ 'fakturanr' =>
$this->db->f('fakturanr'),
+ 'spbudact_code' =>
$this->db->f('spbudact_code'),
+ 'regtid' => $this->db->f('regtid'),
+ 'artid' => $this->db->f('artid'),
+ 'godkjentbelop' =>
$this->db->f('godkjentbelop'),
+ 'spvend_code' =>
$this->db->f('spvend_code'),
+ 'dima' => $this->db->f('dima'),
+ 'loc1' => $this->db->f('loc1'),
+ 'dimb' => $this->db->f('dimb'),
+ 'dime' => $this->db->f('dime'),
+ 'mvakode' => $this->db->f('mvakode'),
+ 'dimd' => $this->db->f('dimd'),
+ 'project_id' =>
$this->db->f('project_id'),
+ 'kostra_id' =>
$this->db->f('kostra_id'),
+ 'item_type' =>
$this->db->f('item_type'),
+ 'item_id' => $this->db->f('item_id'),
+ 'oppsynsmannid' =>
$this->db->f('oppsynsmannid'),
+ 'saksbehandlerid' =>
$this->db->f('saksbehandlerid'),
+ 'budsjettansvarligid' =>
$this->db->f('budsjettansvarligid'),
+ 'oppsynsigndato' =>
$this->db->f('oppsynsigndato'),
+ 'saksigndato' =>
$this->db->f('saksigndato'),
+ 'budsjettsigndato' =>
$this->db->f('budsjettsigndato'),
+ 'merknad' => $this->db->f('merknad'),
+ 'splitt' => $this->db->f('splitt'),
+ 'ordrebelop' =>
$this->db->f('ordrebelop'),
+ 'utbetalingid' =>
$this->db->f('utbetalingid'),
+ 'utbetalingsigndato' =>
$this->db->f('utbetalingsigndato'),
+ );
+ }
+ 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['dime'],
+ $BilagOverf['mvakode'],
+ $BilagOverf['periode'],
+
$this->db->db_addslashes($BilagOverf['merknad']),
+ $BilagOverf['utbetalingid'],
+ $BilagOverf['oppsynsigndato'],
+ $BilagOverf['saksigndato'],
+ $BilagOverf['budsjettsigndato'],
+ $BilagOverf['utbetalingsigndato'],
+ $BilagOverf['item_type'],
+ $BilagOverf['item_id'],
+ );
+
+ $values = $this->db->validate_insert($values);
+
+ $sql = "INSERT INTO fm_ecobilag
(project_id,kostra_id,pmwrkord_code,bilagsnr,splitt,kildeid,kidnr,typeid,"
+ . "
fakturadato,forfallsdato,regtid,artid,spvend_code,dimb,oppsynsmannid,"
+ . "
saksbehandlerid,budsjettansvarligid,fakturanr,spbudact_code,dima,loc1,dimd,dime,mvakode,"
+ . "
periode,merknad,utbetalingid,oppsynsigndato,saksigndato,budsjettsigndato,utbetalingsigndato,item_type,item_id,belop,godkjentbelop)"
+ . " values ($values,"
+ . $this->db->money_format($BilagOverf['belop'])
. ","
+ .
$this->db->money_format($BilagOverf['godkjentbelop']) . ")";
+
+ $this->db->query($sql, __LINE__, __FILE__);
+ }
+
+ function overfor( $download, $pre_transfer = '',
$force_period_year = '' )
+ {
+
+// $download = 'on';
+// $download = False;
+// $this->debug=True;
+ //Generer batch ID
+ $batchid = $this->soXport->next_batchid();
+ if ($download == 'on')
+ {
+ $this->increment_batchid();
+ //Lagre melding
+ $this->log_start($batchid);
+ }
+
+
+ $periodes =
$this->select_periods_with_invoice_to_transfer();
+
+ foreach ($periodes as $periode)
+ {
+ $this->OverforPeriode($batchid, $periode,
$download, $force_period_year);
+ }
+
+ //Lagre melding
+ if ($download == 'on')
+ {
+ $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 ' <a href="' .
$GLOBALS['phpgw']->link('/index.php', array('menuaction' =>
'property.uiXport.export')) . '">' . lang('Back') . '</a></br>';
+ $GLOBALS['phpgw']->common->phpgw_exit();
+ }
+
+ return $receipt;
+ }
+
+ function errorhandler( $batchid, $error_desr )
+ {
+ $this->db->transaction_abort();
+
+ $meld = $error_desr;
+
+ phpgwapi_cache::message_set($error_desr, 'error');
+ //Vis feilmelding
+// echo $meld;
+ //Lagre feilmelding
+ $this->log_error($batchid, $error_desr);
+ }
+
+ function RullTilbake( $Filnavn, $Dato )
+ {
+ $dateformat =
strtolower($GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat']);
+ $dateformat = str_replace(".", "", $dateformat);
+ $dateformat = str_replace("-", "", $dateformat);
+ $dateformat = str_replace("/", "", $dateformat);
+ $y = strpos($dateformat, 'y');
+ $d = strpos($dateformat, 'd');
+ $m = strpos($dateformat, 'm');
+
+ $dateparts = explode('/', $Dato);
+ $day = $dateparts[$d];
+ $month = $dateparts[$m];
+ $year = $dateparts[$y];
+
+ $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;
+
+ $actual_cost_field = 'act_vendor_cost';
+ $operator = '-';
+
+
$this->soXport->correct_actual_cost($BilagOverf[$i]['pmwrkord_code'], $Belop,
$actual_cost_field, $operator);
+ }
+
+ //Slett fra avviks tabell
+ //
$this->soXport->delete_avvik($BilagOverf[$i]['bilagsnr']);
+ //Slett fra arkiv
+
$this->soXport->delete_invoice($BilagOverf[$i]['bilagsnr']);
+
+ $antall = $antall + 1;
+ }
+
+ if ($antall > 0)
+ {
+ $fil_katalog =
$this->config->config_data['export']['path'];
+
+ if (unlink($fil_katalog . '/' . $Filnavn))
+ {
+ $this->db->transaction_commit();
+ $receipt['message'][] = array('msg' =>
$antall . ' ' . lang('bilag/underbilag rullet tilbake'));
+ $receipt['message'][] = array('msg' =>
lang('File %1 is deleted', $Filnavn));
+ }
+ else
+ {
+ $this->db->transaction_abort();
+ $receipt['message'][] = array('msg' =>
'Noe gikk galt!');
+ }
+ }
+ else
+ {
+ $receipt['error'][] = array('msg' =>
lang('Sorry - None hits'));
+ }
+ return $receipt;
+ }
+
+ function LagFilnavn( $batchid )
+ {
+ $fil_katalog =
$this->config->config_data['export']['path'];
+ $continue = True;
+ $i = 1;
+ do
+ {
+ $Filnavn = $fil_katalog . '/FDB' . date("dmy")
. '_' . sprintf("%02s", $i) . '.TXT';
+
+ //Sjekk om filen eksisterer
+ If (!file_exists($Filnavn))
+ {
+ return $Filnavn;
+ }
+
+ $i++;
+ }
+ while ($continue);
+
+ //Ingen løpenr er ledige, gi feilmelding
+ return False;
+ }
+
+ private function get_vouchers_to_transfer( $periode )
+ {
+ if ($this->invoice_approval == 2)
+ {
+ $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";
+ }
+ else
+ {
+ $sql = "SELECT sum(belop) AS belop, fakturanr,
bilagsnr FROM fm_ecobilag WHERE periode='{$periode}' AND budsjettsigndato 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.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,
$force_period_year = '' )
+ {
+ $BilagId = 'NULL';
+
+ //Bestem filnavn
+
+
+ $Filnavn = $this->LagFilnavn($batchid);
+ if (!$Filnavn)
+ {
+ $message = 'LagFilnavn: Alle loepenr for
filnavn er i bruk';
+ $this->errorhandler($batchid, $message);
+ phpgwapi_cache::message_set($message, 'error');
+ return false;
+ }
+
+ //Test om filen kan opprettes og skrives til
+ if (@fopen($Filnavn, "wb"))
+ {
+ unlink($Filnavn);
+ }
+ else
+ {
+ phpgwapi_cache::message_set('kan ikke lagre til
fil: ' . $Filnavn, 'error');
+ return false;
+ }
+
+ //Velg ut alle hoved bilag som skal overføres
+
+ $this->db->transaction_begin();
+
+ $oRsBilag = $this->get_vouchers_to_transfer($periode);
+
+ $buffer = '';
+
+ foreach ($oRsBilag as $invoice)
+ {
+
+ $tranfser_bilag[] = $invoice['bilagsnr'];
+
+ //Bestem belops felt
+ if ($invoice['splitt'] == 0)
+ {
+ //Bilaget er ikke splittet
+ if ($invoice['godkjentbelop'] <>
$invoice['belop'])
+ {
+ $BelopFelt = 'godkjentbelop';
+ //Logg til avviks tabell
+ if ($download == 'on')
+ {
+//
$this->soXport->log_to_deviation_table($invoice);
+ }
+ }
+ else
+ {
+ $BelopFelt = 'belop';
+ }
+ }
+
+ //Bilaget er splittet
+ if ($invoice['godkjentbelop'] ==
$invoice['belop'])
+ {
+ $BelopFelt = 'godkjentbelop';
+ }
+ else
+ {
+ //Ikke lovlig
+ $message = lang('Avvik mellom
fakturabelop og godkjent belop pa splittet faktura!');
+ $this->errorhandler($batchid, $message);
+ return $message;
+ }
+
+ $Belop_motpost = $invoice[$BelopFelt] * 100;
+
+ //Skriv hovedbilag
+
+ $Buntnr = sprintf("%-12s", basename($Filnavn,
".TXT"));// verdi: MMDDFL, type: c12, plass: 1 - 12
+ $Forsystem = 'BI';// verdi: BI, type: c2,
plass: 13 - 14
+
+ $Transtype = 'GL';// verdi: GL, type: c2,
plass: 17 - 18
+ $Firmakode = sprintf("%-2s", 'BY');// verdi:
Firmakode, type: c2, plass: 19 - 20
+
+ $Valuteringsdato = date(Ymd,
strtotime($invoice['fakturadato']));// verdi: Dato, type: date, plass: 251 - 258
+ $Bilagsdato = date(Ymd,
strtotime($invoice['fakturadato']));// verdi: Dato, type: date, plass: 259 - 266
+ $Bilagsnr = sprintf("%-9s", '');// 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
+
+ $_periode = $periode;
+
+ $Bilagsart = sprintf("%2s", 'HK');// verdi: ,
type: c2, plass: 15 - 16
+ $Forfall = date(Ymd,
strtotime($invoice['forfallsdato']));// verdi: Forfallsdato , type: date,
plass: 298 - 305
+
+ $Rab_forf = sprintf("%-8s", '');// verdi:
Blank, type: date, plass: 306 - 313
+ $Rabatt = sprintf("%020s", '');// verdi: Blank,
type: money, plass: 314 - 333
+ $Avt_Kon = sprintf("%-8s", '');// verdi: Blank,
type: c8, plass: 334 - 341
+
+ $Kid = sprintf("%-27s", $invoice['kidnr']);//
verdi: Kid, type: c27, plass: 351 - 377
+ $Bet_overforing = sprintf("%-2s", '');// verdi:
Blank, type: c2, plass: 378 - 379
+ $Status = 'N';// verdi: N, type: c1, plass: 380
- 380
+// $Resk_type = 'P';// verdi: Blank,
type: c1, plass: 381 - 381
+ $Resk_type = ' ';// verdi: Blank, type: c1,
plass: 381 - 381
+// $Resk_nr = sprintf("%-9s",
$invoice['spvend_code']);// verdi: Blank., type: i4, plass: 382 - 390
+ $Resk_nr = sprintf("%-9s", '');// verdi:
Blank., type: i4, plass: 382 - 390
+
+ $Forskudd = '0';// verdi: 0, type: i1, plass:
391 - 391
+ $Fakturaref = '000000000';// verdi: 0, type:
i4, plass: 392 - 400
+ $Fakturaref = '000000000';// verdi: 0, type:
i4, plass: 401 - 409
+ $Inkassokode = sprintf("%-6s", '');// verdi:
Blank, type: c6, plass: 410 - 415
+ $Bet_mottager = sprintf("%-8s", '');// verdi:
Blank, type: c8, plass: 416 - 423
+ $Att_ansvarlig = sprintf("%-6s",
utf8_decode($invoice['saksbehandler']));// verdi: Blank, type: c6, plass: 424 -
429
+
+ $vendor_info =
$this->get_vendor_info($invoice['spvend_code']);
+
+ if (!$vendor_info['org_nr'])
+ {
+ $message = 'mangler org_nr for
reskontronr: ' . $invoice['spvend_code'];
+ $this->errorhandler($batchid, $message);
+ return $message;
+ }
+
+ if (!$vendor_info['konto_nr'])
+ {
+ $message = 'mangler konto for
reskontronr: ' . $invoice['spvend_code'];
+ $this->errorhandler($batchid, $message);
+ return $message;
+ }
+
+ $Resk_navn = sprintf("%-50s",
$vendor_info['org_nr']);// verdi: Fødselsnr, type: c50, plass: 430 - 479
+ $Postadresse = sprintf("%-160s", '');// verdi:
Blank, type: c160, plass: 480 - 639
+ $Stat_Provins = sprintf("%-50s", '');// verdi:
Blank, type: c50, plass: 640 - 689
+ $Sted = sprintf("%-50s", '');// verdi: Blank,
type: c50, plass: 690 - 739
+ $Bank_Postgiro_kontonr = sprintf("%-35s",
str_replace(" ", "", $vendor_info['konto_nr']));// verdi: konto_nr, type: c35,
plass: 740 - 774
+ $Betalingsmate = sprintf("%-2s", '');// verdi:
Blank, type: c2, plass: 775 - 776
+ $Mva_reg_nr = sprintf("%-25s", '');// verdi:
Blank, type: c25, plass: 777 - 801
+ $Postnummer = sprintf("%-15s", '');// verdi:
Blank, type: c15, plass: 802 - 816
+ $Val_dok = sprintf("%-3s", '');// verdi: Blank,
type: c3, plass: 817 - 819
+
+ $underbilag_count =
count($invoice['invoice_line']);
+ $last_record = $underbilag_count - 1;
+
+ //Velg ut alle underbilag
+ foreach ($invoice['invoice_line'] as $_key =>
$invoice_line)
+ {
+ $BilagId = $invoice_line['id'];
+
+ $Belop = $invoice_line[$BelopFelt] *
100;
+ $Belop_ = $Belop;
+
+ if ($Belop < 0)
+ {
+ $Belop = abs($Belop);
+ $Belop = sprintf("%019s",
$Belop);
+ $Belop = '-' . $Belop;
+ }
+ else
+ {
+ $Belop = sprintf("%019s",
$Belop);
+ $Belop = '+' . $Belop;
+ }
+
+ if ($invoice_line['pmwrkord_code'])
+ {
+
+
$orders_affected[$BilagOverf[$i]['pmwrkord_code']] = true;
+
+ //Oppdater beløp på arbeidsordre
+ if ($download == 'on')
+ {
+ $actual_cost_field =
'act_vendor_cost';
+
+ $operator = '+';
+
+ if (!$this->debug)
+ {
+
$this->soXport->correct_actual_cost($invoice_line['pmwrkord_code'], $Belop_,
$actual_cost_field, $operator);
+ }
+ }
+ }
+
+ //Overfør til fm_ecobilagoverf
+ $invoice_line['filnavn'] =
basename($Filnavn);
+ $invoice_line['ordrebelop'] =
$invoice_line[$BelopFelt];
+
+ $Konto = sprintf("%-8s",
$invoice_line['spbudact_code']);// verdi: Art, type: c8, plass: 21 - 28
+ $Dim_1 = sprintf("%-8s",
"0{$invoice_line['dimb']}");// 64040 verdi: Ansvarssted, type: c8, plass: 29 -
36
+ $Dim_2 = sprintf("%-8s",
$invoice_line['kostra_id']);// verdi: Tjeneste, type: c8, plass: 37 - 44
+ $Dim_3 = sprintf("%-8s",
substr($invoice_line['dima'], 0, 4));// verdi: Objekt-bygg, type: c8, plass: 45
- 52
+
+ $Dim_4 = sprintf("%-8s", '');// verdi:
Ressurs, type: c8, plass: 53 - 60
+ $Dim_5 = sprintf("%-12s",
$invoice_line['project_id']);// verdi: Prosjekt, type: c12, plass: 61 - 72
+
+ $Dim_6 = sprintf("%-4s",
$invoice_line['dimd']);// Kategori, type: c4, plass: 73 - 76
+
+ $Dim_7 = sprintf("%-4s", '');// verdi:
Blank, type: c4, plass: 77 - 80
+
+ $Avgiftskode = sprintf("%-2s",
$invoice_line['mvakode']);// verdi: Avgiftskode, type: c2, plass: 81 - 82
+
+ $Avgiftssystem = sprintf("%2s", '');//
verdi: Blank, type: c2, plass: 83 - 84
+ $Valutakode = 'NOK';// verdi: NOK,
type: c3, plass: 85 - 87
+ $Debet_Kredit = sprintf("%2s", '');//
verdi: Blank, type: i2, plass: 88 - 89
+ $Valutabelop = $Belop;// verdi: Beløp,
type: money, plass: 90 - 109
+ $Belop_i_firmavaluta = $Belop;// verdi:
Beløp, type: money, plass: 110 - 129
+ $Antall = sprintf("%11s", '');// verdi:
Blank, type: i4, plass: 130 - 140
+ $Belop2 = sprintf("%20s", '');// verdi:
Blank, type: f8, plass: 141 - 160
+ $Belop3 = sprintf("%20s", '');// verdi:
Blank, type: money, plass: 161 - 180
+ // $Belop4 (også kalt "money3"
)blir brukt for identifisere overføring på tvers av filer.
+ $Belop4 = sprintf("%20s", '');// verdi:
Blank, type: money, plass: 181 - 200 - batch_id høyre justert
+
+ $Tekst = sprintf("%-50s",
substr("{$invoice['spvend_code']}::{$invoice_line['fakturanr']}", 0, 50));
+
+ //
$Fakturanr = sprintf("%-15s", substr(utf8_decode($invoice_line['fakturanr']),
0, 15));// verdi: Fakturanr, type: c15, plass: 283 - 297
+ $Fakturanr = sprintf("%-15s", '');//
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' && !$this->debug)
+ {
+
$this->soXport->add_OverfBilag($invoice_line);
+ }
+
+ //Skriv til fil
+
+ $buffer .= $Buntnr . $Forsystem .
$Bilagsart . $Transtype . $Firmakode . $Konto . $Dim_1 . $Dim_2 . $Dim_3 .
$Dim_4 .
+ $Dim_5 . $Dim_6 . $Dim_7 .
$Avgiftskode . $Avgiftssystem . $Valutakode . $Debet_Kredit . $Valutabelop .
+ $Belop_i_firmavaluta . $Antall
. $Belop2 . $Belop3 . $Belop4 . $Tekst . $Valuteringsdato . $Bilagsdato .
+ $Bilagsnr . $_periode . $ESL .
$Fakturanr . $Forfall . $Rab_forf . $Rabatt . $Avt_Kon . $Ordrenummer .
+ $Kid . $Bet_overforing .
$Status . $Resk_type . $Resk_nr . $Forskudd . $Fakturaref . $Fakturaref .
+ $Inkassokode . $Bet_mottager .
$Att_ansvarlig . $Resk_navn . $Postadresse . $Stat_Provins . $Sted .
+ $Bank_Postgiro_kontonr .
$Betalingsmate . $Mva_reg_nr . $Postnummer . $Val_dok . "\r\n";
+
+ if ($_key == $last_record)
+ {
+ $Konto = sprintf("%-8s",
'2139915');// verdi: Art, type: c8, plass: 21 - 28
+ // $Dim_1
= sprintf("%-8s", $invoice_line['dimb']);//sprintf("%-8s",'');//
verdi: Ansvarssted, type: c8, plass: 29 - 36
+ $Dim_2 = sprintf("%-8s", '');//
verdi: Tjeneste, type: c8, plass: 37 - 44
+ $Dim_3 = sprintf("%-8s", '');//
verdi: Objekt, type: c8, plass: 45 - 52
+ $Dim_4 = sprintf("%-8s", '');//
verdi: Ressurs, type: c8, plass: 53 - 60
+ $Dim_5 = sprintf("%-12s",
'');// verdi: Prosjekt, type: c12, plass: 61 - 72
+ $Dim_6 = sprintf("%-4s", '');//
verdi: Blank, type: c4, plass: 73 - 76
+ $Dim_7 = sprintf("%-4s", '');//
verdi: Blank, type: c4, plass: 77 - 80
+ $Fakturanr = sprintf("%-15s",
'');// verdi: Fakturanr, type: c15, plass: 283 - 297
+ $Ordrenummer = sprintf("%-9s",
'');// verdi: Infodoc ordrenr, type: i4, plass: 342 - 350
+ // $Tekst =
sprintf("%-50s",'');//sprintf("%-50s",substr($invoice_line['merknad'],0,50));//
verdi: Tekst, type: text (50), plass: 201 - 250
+ // $Tekst
= sprintf("%-50s", '');// verdi: Tekst, type: text (50), plass: 201 -
250
+ //Ikke fortegnskifte for
kostfordeling (GL)
+ if ($Belop_motpost < 0)
+ {
+ $Belop_motpost =
sprintf("%019s", abs($Belop_motpost));
+ $Belop_motpost =
"+{$Belop_motpost}";
+ }
+ else
+ {
+ $Belop_motpost =
sprintf("%019s", $Belop_motpost);
+ $Belop_motpost =
"-{$Belop_motpost}";
+ }
+
+ $Transtype = 'GL';// verdi: GL,
type: c2, plass: 17 - 18
+ $Valutabelop =
$Belop_motpost;// verdi: Beløp, type: money, plass: 90 - 109
+ $Belop_i_firmavaluta =
$Belop_motpost;// verdi: Beløp, type: money, plass: 110 - 129
+
+ $buffer .= $Buntnr . $Forsystem
. $Bilagsart . $Transtype . $Firmakode . $Konto . $Dim_1 . $Dim_2 . $Dim_3 .
$Dim_4 .
+ $Dim_5 . $Dim_6 .
$Dim_7 . $Avgiftskode . $Avgiftssystem . $Valutakode . $Debet_Kredit .
$Valutabelop .
+ $Belop_i_firmavaluta .
$Antall . $Belop2 . $Belop3 . $Belop4 . $Tekst . $Valuteringsdato . $Bilagsdato
.
+ $Bilagsnr . $_periode .
$ESL . $Fakturanr . $Forfall . $Rab_forf . $Rabatt . $Avt_Kon . $Ordrenummer .
+ $Kid . $Bet_overforing
. $Status . $Resk_type . $Resk_nr . $Forskudd . $Fakturaref . $Fakturaref .
+ $Inkassokode .
$Bet_mottager . $Att_ansvarlig . $Resk_navn . $Postadresse . $Stat_Provins .
$Sted .
+ $Bank_Postgiro_kontonr
. $Betalingsmate . $Mva_reg_nr . $Postnummer . $Val_dok . "\r\n";
+ }
+
+ //Slett post i fm_ecobilag
+ if ($download == 'on' && !$this->debug)
+ {
+
$this->soXport->delete_from_fm_ecobilag($invoice_line['id']);
+ //Logg transaksjon
+
$this->soXport->log_transaction($batchid, $BilagId, lang('Invoice
transferred'));
+ }
+
+ $BilagId = 'NULL';
+
+ $antall = $antall + 1;
+ }
+ }
+
+ //Fullfør transaksjon
+
+ if ($download == 'on' && !$this->debug)
+ {
+ $fp = fopen($Filnavn, "wb");
+ fwrite($fp, $buffer);
+
+ if (fclose($fp))
+ {
+ $file_written = True;
+ }
+
+ if ($file_written &&
$this->config->config_data['common']['method'] != 'ftp')
+ {
+ $transfer_ok = True;
+ }
+ else if ($file_written)
+ {
+ $transfer_ok = $this->transfer($buffer,
$Filnavn, $batchid, $tranfser_bilag);
+ }
+
+ if ($transfer_ok)
+ {
+ $this->db->transaction_commit();
+ $message = 'Godkjent: periode: ' .
$_periode . ' antall bilag/underbilag overfort:' . $antall . ' , fil: ' .
$Filnavn;
+ phpgwapi_cache::message_set($message,
'message');
+ }
+ else
+ {
+ $this->db->transaction_abort();
+ $message = 'Noe gikk galt med
overforing av godkjendte fakturaer!';
+ phpgwapi_cache::message_set($message,
'error');
+ }
+ }
+ else
+ {
+ $this->db->transaction_abort();
+
+ _debug_array($Filnavn);
+ $fp = fopen($Filnavn, "wb");
+ fwrite($fp, $buffer);
+
+ if (fclose($fp))
+ {
+ $file_written = True;
+ }
+
+ echo "<pre>{$buffer}</pre>";
+ }
+ }
+
+ function transfer( $buffer, $Filnavn, $batchid, $tranfser_bilag
)
+ {
+
+ if ($this->config->config_data['common']['method'] ==
'ftp')
+ {
+ $ftp = $this->phpftp_connect();
+
+ $basedir =
$this->config->config_data['common']['remote_basedir'];
+ if ($basedir)
+ {
+ $newfile = $basedir . '/' .
basename($Filnavn);
+ }
+ else
+ {
+ $newfile = basename($Filnavn);
+ }
+
+ if (ftp_put($ftp, $newfile, $Filnavn,
FTP_BINARY))
+ {
+ for ($i = 0; $i <
count($tranfser_bilag); $i++)
+ {
+
$this->soXport->log_transaction($batchid, $tranfser_bilag[$i], lang('Invoice
pre_transferred %1', basename($Filnavn)));
+ }
+ $transfer_ok = True;
+ }
+ else
+ {
+ for ($i = 0; $i <
count($tranfser_bilag); $i++)
+ {
+
$this->soXport->log_transaction($batchid, $tranfser_bilag[$i], lang('Failed to
pre_transfere %1 to agresso', basename($Filnavn)));
+ }
+ $transfer_ok = False;
+ }
+ if (!$transfer_ok)
+ {
+ unlink($Filnavn);
+ }
+
+ ftp_quit($ftp);
+ }
+ return $transfer_ok;
+ }
+
+ function phpftp_connect()
+ {
+ $host = $this->config->config_data['common']['host'];
+ $user = $this->config->config_data['common']['user'];
+ $password =
$this->config->config_data['common']['password'];
+
+// echo "connecting to $host with $user and $pass\n <br>";
+ $ftp = ftp_connect($host);
+ if ($ftp)
+ {
+ if (ftp_login($ftp, $user, $password))
+ {
+ return $ftp;
+ }
+ }
+ }
+ }
\ No newline at end of file
Property changes on:
thirdparty/PE_custom/BK_EBF/property/inc/export/default/Agresso_Bergen_Kostfordeling
___________________________________________________________________
Added: svn:mergeinfo
## -0,0 +1,3 ##
+/branches/dev-syncromind/property/inc/export/default/Agresso_Bergen_Kostfordeling:13653
+/branches/dev-syncromind-2/property/inc/export/default/Agresso_Bergen_Kostfordeling:14933-16846
+/branches/stavangerkommune/property/inc/export/default/Agresso_Bergen_Kostfordeling:12743-12875,12986
\ No newline at end of property
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Fmsystem-commits] [17256] prepare for custom code outside tree,
sigurdne <=