[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Fmsystem-commits] [17332] Thirdparty: update NLSH
From: |
sigurdne |
Subject: |
[Fmsystem-commits] [17332] Thirdparty: update NLSH |
Date: |
Sat, 18 Nov 2017 11:37:45 -0500 (EST) |
Revision: 17332
http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=17332
Author: sigurdne
Date: 2017-11-18 11:37:45 -0500 (Sat, 18 Nov 2017)
Log Message:
-----------
Thirdparty: update NLSH
Modified Paths:
--------------
thirdparty/PE_custom/NLSH/property/inc/export/Nordlandssykehuset_HF/Agresso_X114
Added Paths:
-----------
thirdparty/PE_custom/NLSH/property/inc/cron/Nordlandssykehuset_HF/Import_fra_agresso_X205.php
Removed Paths:
-------------
thirdparty/PE_custom/NLSH/property/inc/cron/Nordlandssykehuset_HF/Import_fra_agresso_X205_BK.php
Copied:
thirdparty/PE_custom/NLSH/property/inc/cron/Nordlandssykehuset_HF/Import_fra_agresso_X205.php
(from rev 17322, trunk/property/inc/cron/default/Import_fra_agresso_X205.php)
===================================================================
---
thirdparty/PE_custom/NLSH/property/inc/cron/Nordlandssykehuset_HF/Import_fra_agresso_X205.php
(rev 0)
+++
thirdparty/PE_custom/NLSH/property/inc/cron/Nordlandssykehuset_HF/Import_fra_agresso_X205.php
2017-11-18 16:37:45 UTC (rev 17332)
@@ -0,0 +1,788 @@
+<?php
+ /**
+ * phpGroupWare - property: a Facilities Management System.
+ *
+ * @author Sigurd Nes <address@hidden>
+ * @copyright Copyright (C) 2003,2004,2005,2006,2007 Free Software
Foundation, Inc. http://www.fsf.org/
+ * 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 import
+ * @version $Id$
+ */
+ /**
+ * Filteret benytter format X205 for integrasjon mellom Contempus
Invoice og ClockWork Logistics.
+ * Formatet sender innskannede fakturaer fra Contempus til ClockWork -
og Portico Estate
+ * @package property
+ */
+ include_class('property', 'cron_parent', 'inc/cron/');
+
+ class Import_fra_agresso_X205 extends property_cron_parent
+ {
+
+ protected $auto_tax = true;
+ protected $mvakode = '';
+ protected $kildeid = 1;
+ protected $splitt = 0;
+ protected $soXport;
+ protected $invoice;
+ protected $default_kostra_id = 9999; //dummy
+ protected $debug = false;
+ protected $skip_import = false;
+ protected $skip_email = false;
+ protected $export;
+ protected $skip_update_voucher_id = false;
+
+ function __construct()
+ {
+ parent::__construct();
+
+ $this->function_name = get_class($this);
+ $this->sub_location = lang('invoice');
+ $this->function_msg = 'Importer faktura fra Agresso';
+
+ $this->soXport = CreateObject('property.soXport');
+ $this->invoice = CreateObject('property.soinvoice');
+ $this->responsible =
CreateObject('property.soresponsible');
+ $this->bocommon = CreateObject('property.bocommon');
+
+ $this->dateformat = $this->db->date_format();
+ $this->datetimeformat = $this->db->datetime_format();
+ $this->config = CreateObject('admin.soconfig',
$GLOBALS['phpgw']->locations->get_id('property', '.invoice'));
+ $this->send = CreateObject('phpgwapi.send');
+
+ include (PHPGW_SERVER_ROOT .
"/property/inc/export/{$GLOBALS['phpgw_info']['user']['domain']}/Agresso_X114");
+ $this->export = new export_conv;
+
+ $now = time() +
(int)$GLOBALS['phpgw_info']['user']['preferences']['common']['tz_offset'] *
3600;
+
+ $now_hour = date('G', $now);
+ $now_day = date('N', $now);
+
+ if (($now_hour < 6 || $now_hour > 17) || $now_day > 5)
+ {
+
+ $this->skip_email = true;
+ }
+ }
+
+ public function execute()
+ {
+ if
(isset($this->config->config_data['import']['check_archive']) &&
$this->config->config_data['import']['check_archive'])
+ {
+ $this->check_archive();
+ }
+
+ $this->get_files();
+ $dirname =
$this->config->config_data['import']['local_path'];
+ // prevent path traversal
+ if (preg_match('/\./', $dirname) || !is_dir($dirname))
+ {
+ return array();
+ }
+
+ $file_list = array();
+ $dir = new DirectoryIterator($dirname);
+ if (is_object($dir))
+ {
+ foreach ($dir as $file)
+ {
+ if ($file->isDot() || !$file->isFile()
|| !$file->isReadable() || strcasecmp(end(explode(".", $file->getPathname())),
'xml') != 0)
+ {
+ continue;
+ }
+
+ $file_list[] =
(string)"{$dirname}/{$file}";
+ }
+ }
+
+ if (is_writable("{$dirname}/archive"))
+ {
+ foreach ($file_list as $file)
+ {
+ $this->skip_update_voucher_id = false;
+ $this->db->transaction_begin();
+ $bilagsnr = $this->import($file);
+ if ($this->debug)
+ {
+ _debug_array("Behandler fil:
{$file}");
+ _debug_array("Bilagsnr:
{$bilagsnr}");
+ }
+
+ if ($bilagsnr)
+ {
+ // move file
+ $_file = basename($file);
+ $movefrom =
"{$dirname}/{$_file}";
+ $moveto =
"{$dirname}/archive/{$_file}";
+
+ if (is_file($moveto))
+ {
+ @unlink($moveto);//in
case of duplicates
+ }
+
+ $ok = @rename($movefrom,
$moveto);
+ if (!$ok) // Should never
happen.
+ {
+
$this->db->transaction_abort();
+
$this->receipt['error'][] = array('msg' => "Kunne ikke flytte importfil til
arkiv, Bilag {$bilagsnr} er slettet");
+ }
+ else
+ {
+
$this->db->transaction_commit();
+ }
+ }
+ else
+ {
+ $this->db->transaction_abort();
+ }
+ }
+ }
+ else
+ {
+ $this->receipt['error'][] = array('msg' =>
"Arkiv katalog '{$dirname}/archive/' ikke er ikke skrivbar - kontakt
systemadminstrator for å korrigere");
+ }
+
+ $this->remind();
+ }
+
+ protected function check_archive()
+ {
+ $dirname =
$this->config->config_data['import']['local_path'];
+
+ if (preg_match('/\./', $dirname) || !is_dir($dirname))
+ {
+ return array();
+ }
+
+ $archive = "{$dirname}/archive";
+ $file_list = array();
+ $dir = new DirectoryIterator($archive);
+ if (is_object($dir))
+ {
+ foreach ($dir as $file)
+ {
+ if ($file->isDot() || !$file->isFile()
|| !$file->isReadable() || strcasecmp(end(explode(".", $file->getPathname())),
'xml') != 0)
+ {
+ continue;
+ }
+
+ $file_list[] = (string)$file;
+ }
+ }
+
+ foreach ($file_list as $file)
+ {
+ $file_parts = explode('_', basename($file,
'.xml'));
+ $external_voucher_id = $file_parts[2];
+
+ $duplicate = false;
+ $sql = "SELECT bilagsnr FROM fm_ecobilag WHERE
external_voucher_id = '{$external_voucher_id}'";
+ $this->db->query($sql, __LINE__, __FILE__);
+ if ($this->db->next_record())
+ {
+ $duplicate = true;
+ }
+
+ $sql = "SELECT bilagsnr FROM fm_ecobilagoverf
WHERE external_voucher_id = '{$external_voucher_id}'";
+ $this->db->query($sql, __LINE__, __FILE__);
+ if ($this->db->next_record())
+ {
+ $duplicate = true;
+ }
+
+ if (!$duplicate)
+ {
+ rename("{$archive}/{$file}",
"{$dirname}/{$file}");
+ $this->receipt['message'][] =
array('msg' => "fil tilbakeført fra arkiv til importkø:
{$external_voucher_id}");
+ }
+ }
+ }
+
+ protected function remind()
+ {
+ if
(!isset($GLOBALS['phpgw_info']['server']['smtp_server']) ||
!$GLOBALS['phpgw_info']['server']['smtp_server'])
+ {
+ return;
+ }
+
+ if ($this->skip_email || $this->debug)
+ {
+ return;
+ }
+
+ // max. one mail each day
+ if
((int)$GLOBALS['phpgw_info']['server']['invoice_mail_reminder_time'] < (time()
- (3600 * 24)))
+ {
+ $toarray = array();
+ $sql = 'SELECT DISTINCT oppsynsmannid as
responsible FROM fm_ecobilag WHERE oppsynsigndato IS NULL AND oppsynsmannid IS
NOT NULL AND saksigndato IS NULL';
+ $this->db->query($sql, __LINE__, __FILE__);
+ while ($this->db->next_record())
+ {
+ $toarray[$this->db->f('responsible')] =
true;
+ }
+ $sql = 'SELECT DISTINCT saksbehandlerid as
responsible FROM fm_ecobilag WHERE saksigndato IS NULL AND saksbehandlerid IS
NOT NULL AND oppsynsigndato IS NULL';
+ $this->db->query($sql, __LINE__, __FILE__);
+ while ($this->db->next_record())
+ {
+ $toarray[$this->db->f('responsible')] =
true;
+ }
+ $sql = 'SELECT DISTINCT budsjettansvarligid as
responsible FROM fm_ecobilag WHERE saksigndato IS NOT NULL AND budsjettsigndato
IS NULL AND budsjettansvarligid IS NOT NULL';
+ $this->db->query($sql, __LINE__, __FILE__);
+
+ while ($this->db->next_record())
+ {
+ $toarray[$this->db->f('responsible')] =
true;
+ }
+
+ $subject = 'Du har faktura til behandling';
+
+
+ $from = "Ikke svar<address@hidden>";
+
+ foreach ($toarray as $lid => $dummy)
+ {
+ $prefs =
$this->bocommon->create_preferences('property',
$GLOBALS['phpgw']->accounts->name2id($lid));
+ if (isset($prefs['email']) &&
$prefs['email'])
+ {
+ $body = '<a href ="' .
$GLOBALS['phpgw']->link('/index.php', array('menuaction' =>
'property.uiinvoice2.index',
+ 'voucher_id' =>
$bilagsnr, 'user_lid' => $lid), false, true) . '">Link til
fakturabehandling</a>';
+ try
+ {
+ $rc =
$this->send->msg('email', $prefs['email'], $subject, stripslashes($body), '',
'', '', $from, '', 'html');
+ }
+ catch (phpmailerException $e)
+ {
+
$this->receipt['error'][] = array('msg' => $e->getMessage());
+ }
+ }
+ }
+ // save time of mail, to not send to many mails
+ $config = createObject('phpgwapi.config',
'phpgwapi');
+ $config->read_repository();
+ $config->value('invoice_mail_reminder_time',
time());
+ $config->save_repository();
+ }
+ }
+
+ protected function get_files()
+ {
+ $server = $this->config->config_data['common']['host'];
+ $user = $this->config->config_data['common']['user'];
+ $password =
$this->config->config_data['common']['password'];
+ $directory_remote =
rtrim($this->config->config_data['import']['remote_basedir'], '/');
+ $directory_local =
rtrim($this->config->config_data['import']['local_path'], '/');
+ $port = 22;
+
+ if (!function_exists("ssh2_connect"))
+ {
+ die("function ssh2_connect doesn't exist");
+ }
+ if (!($connection = ssh2_connect($server, $port)))
+ {
+ echo "fail: unable to establish connection\n";
+ }
+ else
+ {
+ // try to authenticate with username root,
password secretpassword
+ if (!ssh2_auth_password($connection, $user,
$password))
+ {
+ echo "fail: unable to authenticate\n";
+ }
+ else
+ {
+ // allright, we're in!
+ echo "okay: logged in...<br/>";
+
+ // Enter "sftp" mode
+ $sftp = @ssh2_sftp($connection);
+
+ // Scan directory
+ $files = array();
+ echo "Scanning
{$directory_remote}<br/>";
+ // $dir =
"ssh2.sftp://$sftp$directory_remote";
+ $dir = "ssh2.sftp://" . (int)$sftp .
"$directory_remote";
+ $handle = opendir($dir);
+ while (false !== ($file =
readdir($handle)))
+ {
+ if (is_dir($file))
+ {
+ echo "Directory:
$file<br/>";
+ continue;
+ }
+
+ /*
if ($this->debug)
+ {
+ $size =
filesize("ssh2.sftp://$sftp$directory_remote/$file");
+ echo "File $file Size:
$size<br/>";
+
+ $stream =
@fopen("ssh2.sftp://$sftp$directory_remote/$file", 'r');
+ $contents = fread($stream,
filesize("ssh2.sftp://$sftp$directory_remote/$file"));
+ @fclose($stream);
+ echo "CONTENTS:
$contents<br/><br/>";
+ }
+ */
+ $files[] = $file;
+ }
+
+ if ($this->debug)
+ {
+ _debug_array($files);
+ }
+ else
+ {
+ foreach ($files as $file_name)
+ {
+ if (stripos($file_name,
'Px205') === 0)
+ {
+ //
_debug_array($file_name);
+ $file_remote =
"{$directory_remote}/{$file_name}";
+ $file_local =
"{$directory_local}/{$file_name}";
+
+ $stream =
fopen("ssh2.sftp://" . (int)$sftp . "$file_remote", 'r');
+ $contents =
fread($stream, filesize("ssh2.sftp://" . (int)$sftp . "$file_remote"));
+ fclose($stream);
+
+ $fp =
fopen($file_local, "wb");
+ fwrite($fp,
$contents);
+
+ if (fclose($fp))
+ {
+ echo
"File remote: {$file_remote} was copied to local: $file_local<br/>";
+ if
(ssh2_sftp_unlink($sftp, "{$directory_remote}/archive/{$file_name}"))
+ {
+
echo "Deleted duplicate File remote:
{$directory_remote}/archive/{$file_name}<br/>";
+ }
+ if
(ssh2_sftp_rename($sftp, $file_remote,
"{$directory_remote}/archive/{$file_name}"))
+ {
+
echo "File remote: {$file_remote} was moved to remote:
{$directory_remote}/archive/{$file_name}<br/>";
+ }
+ else
+ {
+
echo "ERROR! File remote: {$file_remote} failed to move to remote:
{$directory_remote}/archive/{$file_name}<br/>";
+
if (unlink($file_local))
+
{
+
echo "Lokal file was deleted: {$file_local}<br/>";
+
}
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ protected function import( $file )
+ {
+// $valid_data= False;
+
+ $buffer = array();
+ $bilagsnr = false;
+
+ $xmlparse = CreateObject('property.XmlToArray');
+ $xmlparse->setEncoding('UTF-8');
+ $var_result = $xmlparse->parseFile($file);
+
+ set_time_limit(300);
+
+ if (isset($var_result['INVOICES']) &&
is_array($var_result['INVOICES']))
+ {
+ $regtid = date($this->datetimeformat);
+
+ $i = 0;
+ $_data =
$var_result['INVOICES'][0]['INVOICE'][0]['INVOICEHEADER'][0];
+
+//_debug_array($_data);
+//die();
+
+ $_data['ARRIVAL']; // => 2009.05.28
+ $_data['CLIENT.CODE']; // => 14
+ $_data['EXCHANGERATE']; // => 1
+ $_data['LOCALAMOUNT']; // => 312500
+ $_data['LOCALVATAMOUNT']; // => 62500
+ $_data['PAYAMOUNT']; // => 0
+ $_data['POSTATUSUPDATED']; // => 0
+ $_data['PURCHASEORDERSTATUS.CODE']; // =>
WaitForMatch
+ $_data['SUPPLIER.BANKGIRO']; // => 70580621110
+ $_data['VATAMOUNT']; // => 62500
+
+ $bilagsnr_ut = isset($_data['VOUCHERID']) ?
$_data['VOUCHERID'] : ''; // FIXME: innkommende bilagsnummer?
+
+ $fakturanr = $_data['SUPPLIERREF'];
+ $fakturadato = date($this->dateformat,
strtotime(str_replace('.', '-', $_data['INVOICEDATE'])));
+ $forfallsdato = date($this->dateformat,
strtotime(str_replace('.', '-', $_data['MATURITY'])));
+ $periode = '';
+ $belop = $_data['AMOUNT'] / 100;
+
+ if (!abs($belop) > 0)
+ {
+ $this->receipt['message'][] =
array('msg' => "Beløpet er 0 for Skanningreferanse: {$_data['SCANNINGNO']},
FakturaNr: {$fakturanr}, fil: {$file}");
+ $belop = (float)0.0001; // imported as
0.00
+ }
+
+ if ($belop < 0)
+ {
+ $buffer[$i]['artid'] = 2;
+ }
+ else
+ {
+ $buffer[$i]['artid'] = 1;
+ }
+
+ $kidnr = $_data['KIDNO'];
+ $_order_id = $_data['PURCHASEORDERNO'];
+ $merknad = '';
+ $line_text = '';
+ $order_id = '';
+ $buffer[$i]['project_id'] = '';
+
+ $order_info =
$this->get_order_info($_order_id); // henter default verdier selv om
$_order_id ikke er gyldig.
+
+ if (!$_order_id)
+ {
+ $merknad = 'Mangler bestillingsnummer';
+ $this->receipt['error'][] = array('msg'
=> $merknad);
+ }
+ else if (!ctype_digit($_order_id))
+ {
+ $merknad = "bestillingsnummeret er på
feil format: {$_order_id}";
+ $this->receipt['error'][] = array('msg'
=> $merknad);
+ }
+ else if (!$order_info['order_exist'])
+ {
+ $merknad = 'bestillingsnummeret ikke
gyldig: ' . $_order_id;
+ $this->receipt['error'][] = array('msg'
=> "{$merknad}, fil: {$file}");
+ }
+ else
+ {
+ $buffer[$i]['project_id'] =
$this->soXport->get_project($_order_id);
+ $order_id = $_order_id;
+ }
+
+ $buffer[$i]['external_ref'] =
$_data['SCANNINGNO'];
+ $buffer[$i]['external_voucher_id'] =
$_data['KEY']; // => 1400050146
+ $buffer[$i]['pmwrkord_code'] = $order_id;
+ $buffer[$i]['fakturanr'] = $fakturanr;
+ $buffer[$i]['periode'] = $periode;
+ $buffer[$i]['forfallsdato'] = $forfallsdato;
+ $buffer[$i]['fakturadato'] = $fakturadato;
+ $buffer[$i]['belop'] = $belop;
+ $buffer[$i]['currency'] =
$_data['CURRENCY.CURRENCYID'];
+ $buffer[$i]['godkjentbelop'] = $belop;
+
+ $buffer[$i]['kidnr'] = $kidnr;
+ $buffer[$i]['bilagsnr_ut'] = $bilagsnr_ut;
+ $buffer[$i]['referanse'] = "ordre: {$order_id}";
+
+ $buffer[$i]['dima'] = $order_info['dima'];
+ $buffer[$i]['dimb'] = $order_info['dimb'];
+ $buffer[$i]['dime'] = $order_info['dime'];
+ $buffer[$i]['loc1'] = $order_info['loc1'];
+ $buffer[$i]['line_text'] = $order_info['title'];
+
+ $buffer[$i]['mvakode'] = $this->mvakode;
+
+ if ($buffer[$i]['loc1'] && $this->auto_tax)
+ {
+ $mvakode =
$this->soXport->auto_tax($buffer[$i]['loc1']);
+
+ if ($mvakode)
+ {
+ $buffer[$i]['mvakode'] =
$mvakode;
+ }
+ }
+
+ $update_voucher = false;
+ $sql = "SELECT bilagsnr, bilagsnr_ut FROM
fm_ecobilag WHERE external_ref = '{$_data['SCANNINGNO']}'";
+ $this->db->query($sql, __LINE__, __FILE__);
+ if ($this->db->next_record())
+ {
+ $this->skip_update_voucher_id = true;
+ $update_voucher = true;
+ $_bilagsnr_ut =
$this->db->f('bilagsnr_ut');
+ $bilagsnr = $this->db->f('bilagsnr');
+
+ $buffer[$i]['bilagsnr'] = $bilagsnr;
+ $buffer[$i]['bilagsnr_ut'] =
$_bilagsnr_ut;
+
+ $this->receipt['message'][] =
array('msg' => "Oppdatert med nye data i arbeidsregister:
{$_data['SCANNINGNO']}");
+ }
+
+ $sql = "SELECT bilagsnr, bilagsnr_ut FROM
fm_ecobilagoverf WHERE external_ref = '{$_data['SCANNINGNO']}'";
+ $this->db->query($sql, __LINE__, __FILE__);
+ if ($this->db->next_record())
+ {
+ $this->skip_update_voucher_id = true;
+ $update_voucher = true;
+ $_bilagsnr_ut =
$this->db->f('bilagsnr_ut');
+ $bilagsnr = $this->db->f('bilagsnr');
+ $__bilagsnr = $_bilagsnr_ut ?
$_bilagsnr_ut : $bilagsnr;
+
+ $buffer[$i]['bilagsnr'] = $bilagsnr;
+ $buffer[$i]['bilagsnr_ut'] =
$_bilagsnr_ut;
+
+ if ($_bilagsnr_ut)
+ {
+ $receipt =
$this->export->RullTilbake(false, false, $_bilagsnr_ut);
+ }
+ else
+ {
+ $receipt =
$this->export->RullTilbake(false, false, false, $bilagsnr);
+ }
+
+ if (isset($receipt['message']))
+ {
+ $this->receipt['message'][] =
array('msg' => "Bilag rullet tilbake fra historikk : {$__bilagsnr}");
+ }
+ else
+ {
+ $this->receipt['error'][] =
array('msg' => "Bilag ikke rullet tilbake fra historikk : {$__bilagsnr},
Skanningreferanse: {$_data['SCANNINGNO']}, FakturaNr: {$fakturanr}");
+ }
+ unset($_bilagsnr_ut);
+ }
+
+ $vendor_id = $_data['SUPPLIER.CODE'];
+
+ $sql = 'SELECT id FROM fm_vendor WHERE id = ' .
(int)$vendor_id;
+ $this->db->query($sql, __LINE__, __FILE__);
+
+ if (!$_data['SUPPLIER.CODE'])
+ {
+ $this->receipt['error'][] = array('msg'
=> "LeverandørId ikke angitt for faktura: {$_data['SCANNINGNO']}");
+ $this->skip_import = true;
+ }
+ else if (!$this->db->next_record())
+ {
+ $this->receipt['error'][] = array('msg'
=> "Importeres ikke: Ikke gyldig LeverandørId: {$_data['SUPPLIER.CODE']},
Skanningreferanse: {$_data['SCANNINGNO']}, FakturaNr: {$fakturanr}, fil:
{$file}");
+ $this->skip_import = true;
+
+ $to =
isset($this->config->config_data['import']['email_on_error']) &&
$this->config->config_data['import']['email_on_error'] ?
$this->config->config_data['import']['email_on_error'] : '';
+
+ if ($to && !$this->skip_email)
+ {
+ $from = "Ikke
svar<address@hidden>";
+ $body = "Ikke gyldig
leverandør, id: {$_data['SUPPLIER.CODE']}</br>";
+ $body .= '<a href ="' .
$GLOBALS['phpgw']->link('/index.php', array('menuaction' =>
'property.uigeneric.edit',
+ 'appname' =>
'property', 'type' => 'vendor'), false, true) . '">Link til å legge inn ny
leverandør</a>';
+
+ try
+ {
+ $rc =
$this->send->msg('email', $to, 'Ikke gyldig leverandør ved import av faktura
til Portico', $body, '', '', '', $from, '', 'html');
+ if ($rc)
+ {
+
$this->receipt['message'][] = array('msg' => "epost sendt til {$to}");
+ }
+ }
+ catch (phpmailerException $e)
+ {
+
$this->receipt['error'][] = array('msg' => $e->getMessage());
+ }
+ }
+ }
+ else if ($order_info['vendor_id'] != $vendor_id)
+ {
+ $this->receipt['message'][] =
array('msg' => 'Ikke samsvar med leverandør på bestilling og mottatt faktura');
+ }
+
+ if ($this->auto_tax)
+ {
+ $buffer[$i]['mvakode'] =
$this->soXport->tax_b_account_override($buffer[$i]['mvakode'],
$order_info['spbudact_code']);
+ $buffer[$i]['mvakode'] =
$this->soXport->tax_vendor_override($buffer[$i]['mvakode'], $vendor_id);
+ }
+
+ $buffer[$i]['kostra_id'] =
$this->default_kostra_id;//$this->soXport->get_kostra_id($buffer[$i]['loc1']);
+
+ $buffer[$i]['merknad'] = $merknad;
+ $buffer[$i]['splitt'] = $this->splitt;
+ $buffer[$i]['kildeid'] = $this->kildeid;
+ $buffer[$i]['spbudact_code'] =
$order_info['spbudact_code'];
+ $buffer[$i]['typeid'] =
isset($invoice_common['type']) && $invoice_common['type'] ?
$invoice_common['type'] : 1;
+ $buffer[$i]['regtid'] = $regtid;
+
+ $buffer[$i]['spvend_code'] = $vendor_id;
+
+ if (isset($order_info['janitor']) &&
$order_info['janitor'])
+ {
+ $buffer[$i]['oppsynsmannid'] =
$order_info['janitor'];
+ }
+
+ if (isset($order_info['supervisor']) &&
$order_info['supervisor'])
+ {
+ $buffer[$i]['saksbehandlerid'] =
$order_info['supervisor'];
+ }
+
+ if (isset($order_info['budget_responsible']) &&
$order_info['budget_responsible'])
+ {
+ $buffer[$i]['budsjettansvarligid'] =
$order_info['budget_responsible'];
+ }
+ }
+
+//_debug_array($buffer);
+//_debug_array($this->receipt);
+//_debug_array($order_info['toarray']);
+ if ($this->debug && $this->skip_import)
+ {
+ _debug_array("Skip import - file: {$file}");
+ }
+
+ if ($this->skip_import)
+ {
+ $this->skip_import = false;
+ return false;
+ }
+ else
+ {
+ if ($update_voucher && $bilagsnr)
+ {
+ $this->db->query("DELETE FROM
fm_ecobilag WHERE external_ref = '{$_data['SCANNINGNO']}'", __LINE__, __FILE__);
+ }
+
+ if (!$bilagsnr)
+ {
+ $bilagsnr =
$this->invoice->next_bilagsnr();
+
+ foreach ($buffer as &$entry)
+ {
+ $entry['bilagsnr'] = $bilagsnr;
+ }
+ }
+
+ if ($order_info['toarray'] &&
(!$this->skip_email || !$this->debug))
+ {
+
+ $from = "Ikke svar<address@hidden>";
+
+ $to = implode(';',
$order_info['toarray']);
+
+ if
(isset($GLOBALS['phpgw_info']['server']['smtp_server']) &&
$GLOBALS['phpgw_info']['server']['smtp_server'])
+ {
+ $subject = 'Ny faktura venter
på behandling';
+ $body = '<a href ="' .
$GLOBALS['phpgw']->link('/index.php', array('menuaction' =>
'property.uiinvoice2.index',
+ 'voucher_id' =>
$bilagsnr, 'query' => $bilagsnr, 'user_lid' => 'all'), false, true) . '">Link
til fakturabehandling</a>';
+
+ try
+ {
+ $rc =
$this->send->msg('email', $to, $subject, stripslashes($body), '', $cc, $bcc,
$from, '', 'html');
+ }
+ catch (phpmailerException $e)
+ {
+
$this->receipt['error'][] = array('msg' => $e->getMessage());
+ }
+ }
+ else
+ {
+ $this->receipt['error'][] =
array('msg' => lang('SMTP server is not set! (admin section)'));
+ }
+ }
+
+ $GLOBALS['phpgw']->db->Exception_On_Error =
true;
+
+ try
+ {
+ $bilagsnr =
$this->import_end_file($buffer);
+ }
+ catch (Exception $e)
+ {
+ if ($e)
+ {
+
$GLOBALS['phpgw']->log->error(array(
+ 'text' =>
'import_fra_agresso_X205::import() : error when trying to execute
import_end_file(): %1',
+ 'p1' =>
$e->getMessage(),
+ 'p2' => '',
+ 'line' => __LINE__,
+ 'file' => __FILE__
+ ));
+ $this->receipt['error'][] =
array('msg' => $e->getMessage());
+ }
+ return false;
+ }
+
+ $GLOBALS['phpgw']->db->Exception_On_Error =
false;
+ return $bilagsnr;
+ }
+ }
+
+ function get_order_info( $order_id = '' )
+ {
+ $order_info = array();
+ $toarray = array();
+ $order_id = (int)$order_id;
+ $sql = "SELECT
fm_workorder.location_code,fm_workorder.vendor_id,fm_workorder.account_id,fm_project.ecodimb,fm_workorder.category,
fm_workorder.user_id,fm_workorder.title"
+ . " FROM fm_workorder {$this->join} fm_project
ON fm_workorder.project_id = fm_project.id WHERE fm_workorder.id = {$order_id}";
+ $this->db->query($sql, __LINE__, __FILE__);
+ if ($this->db->next_record())
+ {
+ $order_info['order_exist'] = true;
+ }
+ if ($this->db->f('location_code'))
+ {
+ $parts = explode('-',
$this->db->f('location_code'));
+ $order_info['dima'] = implode('', $parts);
+ $order_info['loc1'] = $parts[0];
+ }
+
+ $order_info['vendor_id'] = $this->db->f('vendor_id');
+ $order_info['spbudact_code'] =
$this->db->f('account_id');
+ $order_info['dimb'] = $this->db->f('ecodimb');
+ $order_info['dime'] = $this->db->f('category');
+ $order_info['title'] = $this->db->f('title', true);
+
+ $janitor_user_id = $this->db->f('user_id');
+ $order_info['janitor'] =
$GLOBALS['phpgw']->accounts->get($janitor_user_id)->lid;
+ $supervisor_user_id =
$this->invoice->get_default_dimb_role_user(2, $order_info['dimb']);
+ if ($supervisor_user_id)
+ {
+ $order_info['supervisor'] =
$GLOBALS['phpgw']->accounts->get($supervisor_user_id)->lid;
+ }
+
+ $budget_responsible_user_id =
$this->invoice->get_default_dimb_role_user(3, $order_info['dimb']);
+ if ($budget_responsible_user_id)
+ {
+ $order_info['budget_responsible'] =
$GLOBALS['phpgw']->accounts->get($budget_responsible_user_id)->lid;
+ }
+
+ if (!$order_info['budget_responsible'])
+ {
+ $order_info['budget_responsible'] =
isset($this->config->config_data['import']['budget_responsible']) &&
$this->config->config_data['import']['budget_responsible'] ?
$this->config->config_data['import']['budget_responsible'] : 'karhal';
+ }
+
+ $order_info['toarray'] = $toarray;
+ return $order_info;
+ }
+
+ function import_end_file( $buffer )
+ {
+ $num = $this->soXport->add($buffer,
$this->skip_update_voucher_id);
+ if ($this->debug)
+ {
+ _debug_array("import_end_file() ");
+ echo 'buffer: ';
+ _debug_array($buffer);
+ _debug_array("num: {$num}");
+ }
+
+ if ($num > 0)
+ {
+ $this->receipt['message'][] = array('msg' =>
"Importert {$num} poster til bilag {$buffer[0]['bilagsnr']}, SCANNINGNO:
{$buffer[0]['external_ref']}, KEY: {$buffer[0]['external_voucher_id']}");
+ return $buffer[0]['bilagsnr'];
+ }
+ return false;
+ }
+ }
\ No newline at end of file
Deleted:
thirdparty/PE_custom/NLSH/property/inc/cron/Nordlandssykehuset_HF/Import_fra_agresso_X205_BK.php
===================================================================
---
thirdparty/PE_custom/NLSH/property/inc/cron/Nordlandssykehuset_HF/Import_fra_agresso_X205_BK.php
2017-11-18 16:26:59 UTC (rev 17331)
+++
thirdparty/PE_custom/NLSH/property/inc/cron/Nordlandssykehuset_HF/Import_fra_agresso_X205_BK.php
2017-11-18 16:37:45 UTC (rev 17332)
@@ -1,871 +0,0 @@
-<?php
- /**
- * phpGroupWare - property: a Facilities Management System.
- *
- * @author Sigurd Nes <address@hidden>
- * @copyright Copyright (C) 2003,2004,2005,2006,2007 Free Software
Foundation, Inc. http://www.fsf.org/
- * 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 import
- * @version $Id: Import_fra_agresso_X205.php 14726 2016-02-11 20:07:07Z
sigurdne $
- */
- /**
- * Filteret benytter format X205 for integrasjon mellom Contempus
Invoice og ClockWork Logistics.
- * Formatet sender innskannede fakturaer fra Contempus til ClockWork -
og Portico Estate
- * @package property
- */
- include_class('property', 'cron_parent', 'inc/cron/');
-
- class Import_fra_agresso_X205_BK extends property_cron_parent
- {
-
- protected $auto_tax = false;
- protected $mvakode = 0;
- protected $kildeid = 1;
- protected $splitt = 0;
- protected $soXport;
- protected $invoice;
- protected $default_kostra_id = 9999; //dummy
- protected $debug = false;
- protected $skip_import = false;
- protected $skip_email = false;
- protected $export;
- protected $skip_update_voucher_id = false;
- protected $order_id;
-
- function __construct()
- {
- parent::__construct();
-
- $this->function_name = get_class($this);
- $this->sub_location = lang('invoice');
- $this->function_msg = 'Importer faktura fra Agresso';
-
- $this->soXport = CreateObject('property.soXport');
- $this->invoice = CreateObject('property.soinvoice');
- $this->responsible =
CreateObject('property.soresponsible');
- $this->bocommon = CreateObject('property.bocommon');
-
- $this->dateformat = $this->db->date_format();
- $this->datetimeformat = $this->db->datetime_format();
- $this->config = CreateObject('admin.soconfig',
$GLOBALS['phpgw']->locations->get_id('property', '.invoice'));
- }
-
- public function execute()
- {
- $this->get_files();
- $dirname =
$this->config->config_data['import']['local_path'];
- // prevent path traversal
- if (preg_match('/\./', $dirname) || !is_dir($dirname))
- {
- return array();
- }
-
- $file_list = array();
- $dir = new DirectoryIterator($dirname);
- if (is_object($dir))
- {
- foreach ($dir as $file)
- {
- if ($file->isDot() || !$file->isFile()
|| !$file->isReadable() || strcasecmp(end(explode(".", $file->getPathname())),
'xml') != 0)
- {
- continue;
- }
-
- if(preg_match('/^X205/i', (string)$file
))
- {
- $file_list[] =
(string)"{$dirname}/{$file}";
- }
- }
- }
-
- if (is_writable("{$dirname}/arkiv"))
- {
- foreach ($file_list as $file)
- {
- $this->skip_update_voucher_id = false;
- $this->db->transaction_begin();
- $bilagsnr = $this->import($file);
- if ($this->debug)
- {
- _debug_array("Behandler fil:
{$file}");
- _debug_array("Bilagsnr:
{$bilagsnr}");
- }
-
- if ($bilagsnr)
- {
- // move file
- $_file = basename($file);
- $movefrom =
"{$dirname}/{$_file}";
- $moveto =
"{$dirname}/arkiv/{$_file}";
-
- if (is_file($moveto))
- {
- @unlink($moveto);//in
case of duplicates
- }
-
- $ok = @rename($movefrom,
$moveto);
- if (!$ok) // Should never
happen.
- {
-
$this->db->transaction_abort();
-
$this->receipt['error'][] = array('msg' => "Kunne ikke flytte importfil til
arkiv, Bilag {$bilagsnr} er slettet");
- }
- else
- {
-
$this->db->transaction_commit();
-
phpgwapi_cache::system_clear('property', "budget_order_{$this->order_id}");
- }
- }
- else
- {
- $this->db->transaction_abort();
- }
- }
- }
- else
- {
- $this->receipt['error'][] = array('msg' =>
"Arkiv katalog '{$dirname}/arkiv/' ikke er ikke skrivbar - kontakt
systemadminstrator for å korrigere");
- }
-
- }
-
-
- protected function get_files()
- {
- $method =
$this->config->config_data['common']['method'];
- if($method == 'local')
- {
- return;
- }
-
- $server = $this->config->config_data['common']['host'];
- $user = $this->config->config_data['common']['user'];
- $password =
$this->config->config_data['common']['password'];
- $directory_remote =
rtrim($this->config->config_data['import']['remote_basedir'], '/');
- $directory_local =
rtrim($this->config->config_data['import']['local_path'], '/');
-
-
- try
- {
- $connection = ftp_connect($server);
- }
- catch (Exception $e)
- {
- $this->receipt['error'][] = array('msg' =>
$e->getMessage());
- }
-
- // try to authenticate with username root, password
secretpassword
- if (!ftp_login($connection, $user, $password))
- {
- echo "fail: unable to authenticate\n";
- }
- else
- {
- // allright, we're in!
- echo "okay: logged in...<br/>";
-
- if (!ftp_chdir($connection, $directory_remote))
- {
- echo ("Change Dir Failed:
$dir<BR>\r\n");
- return false;
- }
-
- // Scan directory
- $files = array();
- echo "Scanning {$directory_remote}<br/>";
-
- $files = ftp_nlist($connection, '.');
-
- if ($this->debug)
- {
- _debug_array($files);
- }
-
- foreach ($files as $file_name)
- {
- if ($this->debug)
- {
-
_debug_array('preg_match("/xml$/i",' . $file_name . ': ' .
preg_match('/xml$/i', $file_name));
- }
-
- if(preg_match('/^X205/i',
(string)$file_name ))
- {
- $file_remote = $file_name;
- $file_local =
"{$directory_local}/{$file_name}";
-
- if (ftp_get($connection,
$file_local, $file_remote, FTP_ASCII))
- {
- ftp_delete( $connection
, "arkiv/{$file_remote}");
-
- if
(ftp_rename($connection, $file_remote, "arkiv/{$file_remote}"))
- {
- echo "File
remote: {$file_remote} was moved to archive: arkiv/{$file_remote}<br/>";
- echo "File
remote: {$file_remote} was copied to local: $file_local<br/>";
- }
- else
- {
- echo "ERROR!
File remote: {$file_remote} failed to move from remote:
{$directory_remote}/arkiv/{$file_name}<br/>";
- if
(unlink($file_local))
- {
- echo
"Lokal file was deleted: {$file_local}<br/>";
- }
- }
- }
- else
- {
- echo "Feiler på
ftp_fget()<br/>";
- }
- }
- }
- }
- }
-
- protected function check_storage_dir($files_path)
- {
- if (is_dir($files_path) && is_writable($files_path) &&
is_readable($files_path) )
- {
- return true;
- }
- }
-
- protected function create_storage_dir($files_path)
- {
- $dirMode = 0777;
- if (!mkdir($files_path, $dirMode, true))
- {
- // failed to create the directory
- throw new Exception(sprintf('Failed to create
file storage "%s".', $files_path));
- }
-
- chmod($files_path, $dirMode);
- return true;
- }
-
- protected function import( $file )
- {
- $buffer = array();
- $bilagsnr = false;
-
- $xml = new SimpleXMLElement(file_get_contents( $file ));
-
- $_data = array(
- 'KEY' =>
$xml->xpath('//INVOICES/INVOICE/INVOICEHEADER/KEY'),
- 'ATTACHMENT' =>
$xml->xpath('//INVOICES/INVOICE/INVOICEHEADER/ATTACHMENT'),
- 'AMOUNT' =>
$xml->xpath('//INVOICES/INVOICE/INVOICEHEADER/AMOUNT'),
- 'CLIENT.CODE' =>
$xml->xpath('//INVOICES/INVOICE/INVOICEHEADER/CLIENT.CODE'),
- 'CURRENCY.CURRENCYID' =>
$xml->xpath('//INVOICES/INVOICE/INVOICEHEADER/CURRENCY.CURRENCYID'),
- 'EXCHANGERATE' =>
$xml->xpath('//INVOICES/INVOICE/INVOICEHEADER/EXCHANGERATE'),
- 'INVOICEDATE' =>
$xml->xpath('//INVOICES/INVOICE/INVOICEHEADER/INVOICEDATE'),
- 'LOCALAMOUNT' =>
$xml->xpath('//INVOICES/INVOICE/INVOICEHEADER/LOCALAMOUNT'),
- 'LOCALVATAMOUNT' =>
$xml->xpath('//INVOICES/INVOICE/INVOICEHEADER/LOCALVATAMOUNT'),
- 'MATURITY' =>
$xml->xpath('//INVOICES/INVOICE/INVOICEHEADER/MATURITY'),
- 'PAYAMOUNT' =>
$xml->xpath('//INVOICES/INVOICE/INVOICEHEADER/PAYAMOUNT'),
- 'POSTATUSUPDATED' =>
$xml->xpath('//INVOICES/INVOICE/INVOICEHEADER/POSTATUSUPDATED'),
- 'PURCHASEORDERNO' =>
$xml->xpath('//INVOICES/INVOICE/INVOICEHEADER/PURCHASEORDERNO'),
- 'SUPPLIERBANKGIRO' =>
$xml->xpath('//INVOICES/INVOICE/INVOICEHEADER/SUPPLIERBANKGIRO'),
- 'SUPPLIER.CODE' =>
$xml->xpath('//INVOICES/INVOICE/INVOICEHEADER/SUPPLIER.CODE'),
- 'SUPPLIERREF' =>
$xml->xpath('//INVOICES/INVOICE/INVOICEHEADER/SUPPLIERREF'),
- 'VATAMOUNT' =>
$xml->xpath('//INVOICES/INVOICE/INVOICEHEADER/VATAMOUNT')
- );
-
- foreach ($_data as $key => & $__data)
- {
- $__data = (string) $__data[0];
- }
-
- set_time_limit(300);
-
- if (!empty($_data['KEY']))
- {
- $regtid = date($this->datetimeformat);
-
- $i = 0;
- if(!empty($_data['ATTACHMENT']))
- {
- $attachment =
base64_decode($_data['ATTACHMENT']);
-// _debug_array($_data);
- $directory_local =
rtrim($this->config->config_data['import']['local_path'], '/');
- $directory_attachment =
"{$directory_local}/attachment/{$_data['KEY']}";
-
if(!$this->check_storage_dir($directory_attachment))
- {
-
$this->create_storage_dir($directory_attachment);
- }
-
- $tmpfname = tempnam('', 'attachment');
-// _debug_array($tmpfname);
-
- $handle = fopen($tmpfname, "w");
- fwrite($handle, $attachment);
- fclose($handle);
- $zip = new ZipArchive;
- if ($zip->open($tmpfname) === true)
- {
- for($j = 0; $j <
$zip->numFiles; $j++)
- {
- $filename =
$zip->getNameIndex($j);
-// _debug_array("{$directory_attachment}/{$filename}");
-
copy("zip://".$tmpfname."#".$filename, "{$directory_attachment}/{$filename}");
- }
- $zip->close();
- }
- unlink($tmpfname);
- }
-
- $_data['ARRIVAL']; // => 2009.05.28
- $_data['CLIENT.CODE']; // => 14
- $_data['EXCHANGERATE']; // => 1
- $_data['LOCALAMOUNT']; // => 312500
- $_data['LOCALVATAMOUNT']; // => 62500
- $_data['PAYAMOUNT']; // => 0
- $_data['POSTATUSUPDATED']; // => 0
- $_data['PURCHASEORDERSTATUS.CODE']; // =>
WaitForMatch
- $_data['SUPPLIER.BANKGIRO']; // => 70580621110
- $_data['VATAMOUNT']; // => 62500
-
- $bilagsnr_ut = isset($_data['VOUCHERID']) ?
$_data['VOUCHERID'] : ''; // FIXME: innkommende bilagsnummer?
-
- $fakturanr = $_data['SUPPLIERREF'];
- $fakturadato = date($this->dateformat,
strtotime(str_replace('.', '-', $_data['INVOICEDATE'])));
- $forfallsdato = date($this->dateformat,
strtotime(str_replace('.', '-', $_data['MATURITY'])));
- $periode = '';
- $belop = $_data['AMOUNT'] / 100;
-
- if (!abs($belop) > 0)
- {
- $this->receipt['message'][] =
array('msg' => "Beløpet er 0 for Skanningreferanse: {$_data['SCANNINGNO']},
FakturaNr: {$fakturanr}, fil: {$file}");
- $belop = (float)0.0001; // imported as
0.00
- }
-
- if ($belop < 0)
- {
- $buffer[$i]['artid'] = 2;
- }
- else
- {
- $buffer[$i]['artid'] = 1;
- }
-
- $kidnr = $_data['KIDNO'];
- $_order_id = $_data['PURCHASEORDERNO'];
- $merknad = '';
- $line_text = '';
- $order_id = '';
- $buffer[$i]['project_id'] = '';
-
- $order_info =
$this->get_order_info($_order_id); // henter default verdier selv om
$_order_id ikke er gyldig.
-
- if (!$_order_id)
- {
- $merknad = 'Mangler bestillingsnummer';
- $this->receipt['error'][] = array('msg'
=> $merknad);
- }
- else if (!ctype_digit($_order_id))
- {
- $merknad = "bestillingsnummeret er på
feil format: {$_order_id}";
- $this->receipt['error'][] = array('msg'
=> $merknad);
- }
- else if (!$order_info['order_exist'])
- {
- $merknad = 'bestillingsnummeret ikke
gyldig: ' . $_order_id;
- $this->receipt['error'][] = array('msg'
=> "{$merknad}, fil: {$file}");
- }
- else
- {
- $buffer[$i]['project_id'] =
$this->soXport->get_project($_order_id);
- $order_id = $_order_id;
- $this->order_id = $order_id;
- }
-
- $buffer[$i]['external_voucher_id'] =
$_data['KEY']; // => 1400050146
- $buffer[$i]['pmwrkord_code'] = $order_id;
- $buffer[$i]['fakturanr'] = $fakturanr;
- $buffer[$i]['periode'] = $periode;
- $buffer[$i]['forfallsdato'] = $forfallsdato;
- $buffer[$i]['fakturadato'] = $fakturadato;
- $buffer[$i]['belop'] = $belop;
- $buffer[$i]['currency'] =
$_data['CURRENCY.CURRENCYID'];
- $buffer[$i]['godkjentbelop'] = $belop;
-
- $buffer[$i]['kidnr'] = $kidnr;
- $buffer[$i]['bilagsnr_ut'] = $bilagsnr_ut;
- $buffer[$i]['referanse'] = "ordre: {$order_id}";
-
- $buffer[$i]['dima'] = $order_info['dima'];
- $buffer[$i]['dimb'] = $order_info['dimb'];
- $buffer[$i]['dime'] = $order_info['dime'];
- $buffer[$i]['loc1'] = $order_info['loc1'];
- $buffer[$i]['line_text'] = $order_info['title'];
-
- $buffer[$i]['mvakode'] =
$order_info['tax_code'];
-
- if ($buffer[$i]['loc1'] &&
!$buffer[$i]['mvakode'])
- {
- $mvakode =
$this->soXport->auto_tax($buffer[$i]['loc1']);
-
- if ($mvakode)
- {
- $buffer[$i]['mvakode'] =
$mvakode;
- }
- }
-
- $update_voucher = false;
- $receive_order_performed = false;
- $sql = "SELECT bilagsnr, bilagsnr_ut FROM
fm_ecobilag WHERE external_voucher_id = '{$_data['KEY']}'";
- $this->db->query($sql, __LINE__, __FILE__);
- if ($this->db->next_record())
- {
- $this->skip_update_voucher_id = true;
- $update_voucher = true;
- $receive_order_performed = true;
- $bilagsnr = $this->db->f('bilagsnr');
- $buffer[$i]['bilagsnr'] = $bilagsnr;
- $this->receipt['message'][] =
array('msg' => "Oppdatert med nye data i arbeidsregister: ordre = {$_order_id},
bilag = {$_data['KEY']}");
- }
-
- $sql = "SELECT bilagsnr FROM fm_ecobilagoverf
WHERE external_voucher_id = '{$_data['KEY']}'";
- $this->db->query($sql, __LINE__, __FILE__);
- if ($this->db->next_record())
- {
- $this->skip_update_voucher_id = true;
- $update_voucher = true;
- $receive_order_performed = true;
- $bilagsnr = $this->db->f('bilagsnr');
-
- $buffer[$i]['bilagsnr'] = $bilagsnr;
-
- $receipt = $this->rollback($bilagsnr);
-
- if (isset($receipt['message']))
- {
- $this->receipt['message'][] =
array('msg' => "Bilag rullet tilbake fra historikk : {$bilagsnr}");
- }
- else
- {
- $this->receipt['error'][] =
array('msg' => "Bilag ikke rullet tilbake fra historikk : {$bilagsnr},
Skanningreferanse: {$_data['KEY']}, FakturaNr: {$fakturanr}");
- }
- }
-
- $vendor_id = $_data['SUPPLIER.CODE'];
-
- $sql = 'SELECT id FROM fm_vendor WHERE id = ' .
(int)$vendor_id;
- $this->db->query($sql, __LINE__, __FILE__);
-
- if (!$_data['SUPPLIER.CODE'])
- {
- $this->receipt['error'][] = array('msg'
=> "LeverandørId ikke angitt for faktura: {$_data['SCANNINGNO']}");
- $this->skip_import = true;
- }
- else if (!$this->db->next_record())
- {
- $this->receipt['error'][] = array('msg'
=> "Importeres ikke: Ikke gyldig LeverandørId: {$_data['SUPPLIER.CODE']},
Skanningreferanse: {$_data['SCANNINGNO']}, FakturaNr: {$fakturanr}, fil:
{$file}");
- $this->skip_import = true;
-
- }
- else if ($order_info['vendor_id'] != $vendor_id)
- {
- $this->receipt['message'][] =
array('msg' => 'Ikke samsvar med leverandør på bestilling og mottatt faktura');
- }
-
- $buffer[$i]['kostra_id'] =
$order_info['service_id'];
-
- $buffer[$i]['merknad'] = $merknad;
- $buffer[$i]['splitt'] = $this->splitt;
- $buffer[$i]['kildeid'] = $this->kildeid;
- $buffer[$i]['spbudact_code'] =
$order_info['spbudact_code'];
- $buffer[$i]['typeid'] =
isset($invoice_common['type']) && $invoice_common['type'] ?
$invoice_common['type'] : 1;
- $buffer[$i]['regtid'] = $regtid;
-
- $buffer[$i]['spvend_code'] = $vendor_id;
-
- if (isset($order_info['janitor']) &&
$order_info['janitor'])
- {
- $buffer[$i]['oppsynsmannid'] =
$order_info['janitor'];
- }
-
- if (isset($order_info['supervisor']) &&
$order_info['supervisor'])
- {
- $buffer[$i]['saksbehandlerid'] =
$order_info['supervisor'];
- }
-
- if (isset($order_info['budget_responsible']) &&
$order_info['budget_responsible'])
- {
- $buffer[$i]['budsjettansvarligid'] =
$order_info['budget_responsible'];
- }
- }
-
-//_debug_array($buffer);
-//_debug_array($this->receipt);
-//_debug_array($order_info['toarray']);
- if ($this->debug && $this->skip_import)
- {
- _debug_array("Skip import - file: {$file}");
- }
-
- if ($this->skip_import)
- {
- $this->skip_import = false;
- return false;
- }
- else
- {
- if ($update_voucher && $bilagsnr)
- {
- $this->db->query("DELETE FROM
fm_ecobilag WHERE external_voucher_id = '{$_data['KEY']}'", __LINE__, __FILE__);
- }
-
- if (!$bilagsnr)
- {
- $bilagsnr =
$this->invoice->next_bilagsnr();
-
- foreach ($buffer as &$entry)
- {
- $entry['bilagsnr'] = $bilagsnr;
- }
- }
-
- $GLOBALS['phpgw']->db->Exception_On_Error =
true;
-
- try
- {
- $bilagsnr =
$this->import_end_file($buffer);
-
- if(!$receive_order_performed &&
$this->config->config_data['export']['auto_receive_order'])
- {
- $received_amount =
$this->get_total_received((int)$order_id);
-
- $received_amount =
$received_amount * 0.8; //shave off 25 % tax from the top.
-
- $order_type =
$this->bocommon->socommon->get_order_type($order_id);
-
- switch ($order_type)
- {
- case 'workorder':
- $received =
createObject('property.boworkorder')->receive_order( (int)$order_id,
$received_amount );
- break;
- case 'ticket':
- $received =
createObject('property.botts')->receive_order( (int)$order_id, $received_amount
);
- break;
- default:
- throw new
Exception('Order type not supported');
- }
- }
-
- }
- catch (Exception $e)
- {
- if ($e)
- {
-
$GLOBALS['phpgw']->log->error(array(
- 'text' =>
'import_fra_agresso_X205::import() : error when trying to execute
import_end_file(): %1',
- 'p1' =>
$e->getMessage(),
- 'p2' => '',
- 'line' => __LINE__,
- 'file' => __FILE__
- ));
- $this->receipt['error'][] =
array('msg' => $e->getMessage());
- }
- return false;
- }
-
- $GLOBALS['phpgw']->db->Exception_On_Error =
false;
- return $bilagsnr;
- }
- }
-
- function get_total_received( $order_id )
- {
- $amount = 0;
- $sql = "SELECT sum(godkjentbelop) AS amount FROM
fm_ecobilag WHERE pmwrkord_code = {$order_id}";
- $this->db->query($sql, __LINE__, __FILE__);
- $this->db->next_record();
- $amount += (float)$this->db->f('amount');
- $sql = "SELECT sum(godkjentbelop) AS amount FROM
fm_ecobilagoverf WHERE pmwrkord_code = {$order_id}";
- $this->db->query($sql, __LINE__, __FILE__);
- $this->db->next_record();
- $amount += (float)$this->db->f('amount');
- return $amount;
- }
-
- function get_order_info( $order_id = 0 )
- {
- $order_id = (int)$order_id;
-
- $this->db->query("SELECT type FROM fm_orders WHERE id =
$order_id", __LINE__, __FILE__);
- $this->db->next_record();
- $order_type = $this->db->f('type');
-
- $order_info = array();
- $toarray = array();
-
- switch ($order_type)
- {
- case 'ticket':
- $sql = "SELECT
fm_tts_tickets.location_code,"
- . " fm_tts_tickets.vendor_id,"
- . " fm_tts_tickets.b_account_id
as account_id,"
- . " fm_tts_tickets.ecodimb,"
- . " fm_tts_tickets.service_id,"
- . " fm_tts_tickets.tax_code,"
- . " fm_tts_tickets.cat_id as
category,"
- . " fm_tts_tickets.ordered_by
as user_id,"
- . " fm_tts_tickets.subject as
title"
- . " FROM fm_tts_tickets"
- . " WHERE
fm_tts_tickets.order_id = {$order_id}";
-
- break;
- case 'workorder':
- $sql = "SELECT
fm_workorder.location_code,"
- . " fm_workorder.vendor_id,"
- . " fm_workorder.account_id,"
- . " fm_project.ecodimb as
project_ecodimb,"
- . " fm_workorder.ecodimb,"
- . " fm_workorder.category,"
- . " fm_workorder.user_id,"
- . " fm_workorder.service_id,"
- . " fm_workorder.tax_code,"
- . " fm_workorder.title"
- . " FROM fm_workorder
{$this->join} fm_project ON fm_workorder.project_id = fm_project.id"
- . " WHERE fm_workorder.id =
{$order_id}";
- break;
-
- default:
- throw new Exception("{$order_type} not
supported");
- break;
- }
-
- $this->db->query($sql, __LINE__, __FILE__);
- if ($this->db->next_record())
- {
- $order_info['order_exist'] = true;
- }
- if ($this->db->f('location_code'))
- {
- $parts = explode('-',
$this->db->f('location_code'));
- $order_info['dima'] = implode('', $parts);
- $order_info['loc1'] = $parts[0];
- }
-
- $order_info['vendor_id'] = $this->db->f('vendor_id');
- $order_info['spbudact_code'] =
$this->db->f('account_id');
- $ecodimb = $this->db->f('ecodimb');
- $order_info['dimb'] = $ecodimb ? $ecodimb :
$this->db->f('project_ecodimb');
- $order_info['dime'] = $this->db->f('category');
- $order_info['title'] = $this->db->f('title', true);
- $order_info['service_id'] = $this->db->f('service_id');
- $order_info['tax_code'] = $this->db->f('tax_code');
-
- $janitor_user_id = $this->db->f('user_id');
- $order_info['janitor'] =
$GLOBALS['phpgw']->accounts->get($janitor_user_id)->lid;
- $supervisor_user_id =
$this->invoice->get_default_dimb_role_user(2, $order_info['dimb']);
- if ($supervisor_user_id)
- {
- $order_info['supervisor'] =
$GLOBALS['phpgw']->accounts->get($supervisor_user_id)->lid;
- }
-
- $budget_responsible_user_id =
$this->invoice->get_default_dimb_role_user(3, $order_info['dimb']);
- if ($budget_responsible_user_id)
- {
- $order_info['budget_responsible'] =
$GLOBALS['phpgw']->accounts->get($budget_responsible_user_id)->lid;
- }
-
- if (!$order_info['budget_responsible'])
- {
- $order_info['budget_responsible'] =
isset($this->config->config_data['import']['budget_responsible']) &&
$this->config->config_data['import']['budget_responsible'] ?
$this->config->config_data['import']['budget_responsible'] : 'karhal';
- }
-
- $order_info['toarray'] = $toarray;
- return $order_info;
- }
-
- function import_end_file( $buffer )
- {
- try
- {
- $num = $this->soXport->add($buffer,
$this->skip_update_voucher_id);
- }
- catch (Exception $e)
- {
- throw $e;
- }
-
- if ($this->debug)
- {
- _debug_array("import_end_file() ");
- echo 'buffer: ';
- _debug_array($buffer);
- _debug_array("num: {$num}");
- }
-
- if ($num > 0)
- {
- $this->receipt['message'][] = array('msg' =>
"Importert {$num} poster til bilag {$buffer[0]['bilagsnr']}, KEY:
{$buffer[0]['external_voucher_id']}");
- return $buffer[0]['bilagsnr'];
- }
- return false;
- }
- /**
- * rollback er initiert fra import-filteret
- * @param integer $rollback_internal_voucher
- * @return array Receipt
- */
- public function rollback( $rollback_internal_voucher )
- {
- $voucher =
$this->select_invoice_rollback($rollback_internal_voucher);
-
- if ($this->db->get_transaction())
- {
- $this->global_lock = true;
- }
- else
- {
- $this->global_lock = false;
- $this->db->transaction_begin();
- }
-
- foreach ($voucher as $line)
- {
- //$this->bilag_update_overf($line);
-
- if ($line['pmwrkord_code'])
- {
-
$orders_affected[$line['pmwrkord_code']] = true;
-
- $Belop = sprintf("%01.2f",
$line['ordrebelop']) * 100;
-
- if ($line['dimd'] % 2 == 0)
- {
- $actual_cost_field =
'act_mtrl_cost';
- }
- else
- {
- $actual_cost_field =
'act_vendor_cost';
- }
-
- $operator = '-';
-
-
$this->soXport->correct_actual_cost($line['pmwrkord_code'], $Belop,
$actual_cost_field, $operator);
- }
-
- //Slett fra avviks tabell
- //
$this->soXport->delete_avvik($line['bilagsnr']);
- //Slett fra arkiv
-
$this->soXport->delete_invoice($line['bilagsnr']);
- }
-
- $antall = count($voucher);
- if ($antall > 0)
- {
- if ( $rollback_internal_voucher)
- {
- if (!$this->global_lock)
- {
- $this->db->transaction_commit();
- }
-
- $receipt['message'][] = array('msg' =>
$antall . ' ' . lang('bilag/underbilag rullet tilbake'));
- }
- else
- {
- $this->db->transaction_abort();
- $receipt['error'][] = array('msg' =>
'Noe gikk galt!');
- }
- }
- else
- {
- if (!$this->global_lock)
- {
- $this->db->transaction_commit();
- }
-
- $receipt['error'][] = array('msg' =>
lang('Sorry - No hits'));
- }
- return $receipt;
- }
-
- protected function select_invoice_rollback(
$rollback_internal_voucher )
- {
- if ($rollback_internal_voucher)
- {
- $rollback_internal_voucher =
(int)$rollback_internal_voucher;
- $sql = "SELECT * FROM fm_ecobilagoverf WHERE
bilagsnr = {$rollback_internal_voucher} AND manual_record IS NULL";
- }
- else
- {
- return array();
- }
- $this->db->query($sql, __LINE__, __FILE__);
-
- $invoice_rollback = array();
- while ($this->db->next_record())
- {
- $invoice_rollback[] = array (
- 'id' => $this->db->f('id'),
- 'bilagsnr' => $this->db->f('bilagsnr'),
- 'bilagsnr_ut' =>
$this->db->f('bilagsnr_ut'),
- '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'),
- 'periodization' =>
$this->db->f('periodization'),
- 'periodization_start' =>
$this->db->f('periodization_start'),
- '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' =>
(int)$this->db->f('godkjentbelop') == 0 ? $this->db->f('belop') :
$this->db->f('godkjentbelop'), //restore original amount
- 'spvend_code' =>
$this->db->f('spvend_code'),
- 'dima' => $this->db->f('dima'),
- 'loc1' => $this->db->f('loc1'),
- 'dimb' => $this->db->f('dimb'),
- 'mvakode' => $this->db->f('mvakode'),
- 'dimd' => $this->db->f('dimd'),
- 'dime' => $this->db->f('dime'),
- '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'), // må anvises på nytt etter tilbakerulling
- 'merknad' => $this->db->f('merknad',
true),
- 'line_text' =>
$this->db->f('line_text', true),
- 'splitt' => $this->db->f('splitt'),
- 'ordrebelop' =>
$this->db->f('ordrebelop'),
- // 'utbetalingid' =>
$this->db->f('utbetalingid'),
- // 'utbetalingsigndato' =>
$this->db->f('utbetalingsigndato'),
- 'external_ref' =>
$this->db->f('external_ref'),
- 'external_voucher_id' =>
$this->db->f('external_voucher_id'),
- 'currency' => $this->db->f('currency'),
- 'process_log' =>
$this->db->f('process_log', true),
- 'process_code' =>
$this->db->f('process_code'),
- );
- }
-
- return $invoice_rollback;
- }
-
- }
\ No newline at end of file
Modified:
thirdparty/PE_custom/NLSH/property/inc/export/Nordlandssykehuset_HF/Agresso_X114
===================================================================
---
thirdparty/PE_custom/NLSH/property/inc/export/Nordlandssykehuset_HF/Agresso_X114
2017-11-18 16:26:59 UTC (rev 17331)
+++
thirdparty/PE_custom/NLSH/property/inc/export/Nordlandssykehuset_HF/Agresso_X114
2017-11-18 16:37:45 UTC (rev 17332)
@@ -98,7 +98,7 @@
$_lag_seconds -= phpgwapi_datetime::user_timezone();
-//_debug_array($period_transition);
+//_debug_array($period_transition);
$time = time();
$timestamp_at_start_month = mktime($hour = 0, $minute =
0, $second = 0, $month = date("n"), $day = 0, $year = date("Y"));
@@ -1097,7 +1097,7 @@
break;
case 'ssh';
$sftp = ssh2_sftp($connection);
- $stream =
@fopen("ssh2.sftp://$sftp$remote_file", 'w');
+ $stream = @fopen("ssh2.sftp://"
. (int)$sftp . "$remote_file", 'w');
$data_to_send =
@file_get_contents($Filnavn);
fwrite($stream, $data_to_send);
$transfer_ok = @fclose($stream);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Fmsystem-commits] [17332] Thirdparty: update NLSH,
sigurdne <=