Initial xentral_oss_20.3.c9ffacf
This commit is contained in:
@@ -0,0 +1,553 @@
|
||||
<?php
|
||||
class TransferBase {
|
||||
/**
|
||||
* @var int $id
|
||||
*/
|
||||
public $id;
|
||||
/**
|
||||
* @var ApplicationCore $app
|
||||
*/
|
||||
public $app;
|
||||
/** @var array */
|
||||
protected $transferdata;
|
||||
/** @var array */
|
||||
protected $stucture;
|
||||
/** @var array */
|
||||
protected $settings;
|
||||
/** @var Uebertragungen|null */
|
||||
protected $transferModule;
|
||||
|
||||
/**
|
||||
* TransferBase constructor.
|
||||
*
|
||||
* @param Application $app
|
||||
* @param int $id
|
||||
*/
|
||||
public function __construct($app, $id)
|
||||
{
|
||||
$this->app = $app;
|
||||
$this->id = $id;
|
||||
$this->getSettings();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $settings
|
||||
*/
|
||||
public function setSettings($settings)
|
||||
{
|
||||
$this->settings = $settings;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function capability()
|
||||
{
|
||||
return [
|
||||
'functions' => [
|
||||
'file_transfer' => true,
|
||||
'send_documents' => true,
|
||||
'send_articles' => true,
|
||||
'send_storage' => true,
|
||||
'send_tracking' => true,
|
||||
'send_sales_report' => true,
|
||||
'receive_documents' => true,
|
||||
'receive_articles' => true,
|
||||
'receive_storage' => true,
|
||||
'receive_tracking' => true,
|
||||
'receive_sales_report' => true,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param null|Uebertragungen $transferModul
|
||||
*
|
||||
* @return Uebertragungen|null
|
||||
*/
|
||||
public function getTransferModul($transferModul = null)
|
||||
{
|
||||
if($transferModul !== null && $transferModul instanceof Uebertragungen) {
|
||||
$this->transferModule = $transferModul;
|
||||
return $this->transferModule;
|
||||
}
|
||||
if($this->transferModule === null) {
|
||||
$this->transferModule = $this->app->erp->LoadModul('uebertragungen');
|
||||
}
|
||||
|
||||
return $this->transferModule;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $requestId
|
||||
* @param string $status
|
||||
* @param string $message
|
||||
* @param string $doctype
|
||||
* @param int $doctypeId
|
||||
* @param int $fileId
|
||||
* @param int $monitorId
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function setRequestItemStatus(
|
||||
$requestId, $status, $message = '', $doctype = '', $doctypeId = 0, $fileId = 0, $monitorId = 0
|
||||
)
|
||||
{
|
||||
$requestItem = $this->app->DB->SelectRow(
|
||||
sprintf(
|
||||
'SELECT * FROM api_request WHERE id = %d',
|
||||
$requestId
|
||||
)
|
||||
);
|
||||
if(empty($requestItem)) {
|
||||
return 0;
|
||||
}
|
||||
$requestStatus = stripos($status, 'error')!==false?'error':$status;
|
||||
$this->app->DB->Update(
|
||||
sprintf(
|
||||
"UPDATE api_request SET status = '%s' WHERE id = %d",
|
||||
$this->app->DB->real_escape_string($requestStatus),
|
||||
$requestId
|
||||
)
|
||||
);
|
||||
$transferModule = $this->getTransferModul();
|
||||
if($transferModule === null) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return $transferModule->AddUbertragungMonitorLog(
|
||||
$this->id,
|
||||
$fileId,
|
||||
$requestId,
|
||||
$status,
|
||||
$message,
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
$doctype,
|
||||
$doctypeId,
|
||||
$monitorId
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param mixed $value
|
||||
*
|
||||
* @return mixed|null
|
||||
*/
|
||||
public function setSetting($name, $value) {
|
||||
$this->getSettings();
|
||||
$this->settings[$name] = $value;
|
||||
$oldSettingsString = $this->app->DB->Select(
|
||||
sprintf(
|
||||
'SELECT `einstellungen_json` FROM `uebertragungen_account` WHERE `id` = %d LIMIT 1',
|
||||
$this->id
|
||||
)
|
||||
);
|
||||
$isOldSettingValid = false;
|
||||
if(!empty($oldSettingsString)) {
|
||||
$oldSettings = json_decode($oldSettingsString, true);
|
||||
if(is_array($oldSettings)) {
|
||||
$isOldSettingValid = true;
|
||||
}
|
||||
}
|
||||
$this->app->erp->StartChangeLog('uebertragungen_account', $this->id);
|
||||
$this->app->DB->Update(
|
||||
sprintf(
|
||||
"UPDATE `uebertragungen_account` SET `einstellungen_json` = '%s' WHERE `id` = %d LIMIT 1",
|
||||
$this->app->DB->real_escape_string(json_encode($this->settings)), $this->id
|
||||
)
|
||||
);
|
||||
$this->app->erp->WriteChangeLog();
|
||||
if(!$isOldSettingValid) {
|
||||
return $this->getSettings();
|
||||
}
|
||||
|
||||
$newSettings = $this->app->DB->Select(
|
||||
sprintf(
|
||||
'SELECT `einstellungen_json` FROM `uebertragungen_account` WHERE `id` = %d LIMIT 1',
|
||||
$this->id
|
||||
)
|
||||
);
|
||||
|
||||
if(!empty($newSettings)) {
|
||||
$newSettings = json_decode($newSettings, true);
|
||||
if(is_array($newSettings)) {
|
||||
return $this->getSettings();
|
||||
}
|
||||
}
|
||||
$this->app->erp->StartChangeLog('uebertragungen_account', $this->id);
|
||||
$this->app->DB->Update(
|
||||
sprintf(
|
||||
"UPDATE `uebertragungen_account` SET `einstellungen_json` = '%s' WHERE `id` = %d LIMIT 1",
|
||||
$this->app->DB->real_escape_string($oldSettingsString), $this->id
|
||||
)
|
||||
);
|
||||
$this->app->erp->WriteChangeLog();
|
||||
|
||||
return $this->getSettings();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed|null
|
||||
*/
|
||||
public function getSettings()
|
||||
{
|
||||
if($this->id <= 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
$this->transferdata = $this->app->DB->SelectRow(
|
||||
'SELECT a.*, o.uebertragungen_account_id, o.client_id, o.client_secret, o.expiration_date, o.url, o.access_token
|
||||
FROM `uebertragungen_account` AS `a`
|
||||
LEFT JOIN `uebertragungen_account_oauth` AS `o` ON o.uebertragungen_account_id = a.id
|
||||
WHERE a.id = ' . $this->id
|
||||
);
|
||||
if(!empty($this->app->DB->error())) {
|
||||
$this->transferdata = $this->app->DB->SelectRow(
|
||||
'SELECT a.*
|
||||
FROM `uebertragungen_account` AS `a`
|
||||
WHERE a.id = ' . $this->id
|
||||
);
|
||||
}
|
||||
if(!empty($this->transferdata['einstellungen_json']))
|
||||
{
|
||||
$this->settings = @json_decode($this->transferdata['einstellungen_json'], true);
|
||||
}elseif(!empty($this->stucture)){
|
||||
foreach($this->stucture as $name => $val)
|
||||
{
|
||||
if(isset($val['default']))
|
||||
{
|
||||
$this->settings[$name] = $val['default'];
|
||||
}
|
||||
}
|
||||
}
|
||||
if(empty($this->settings))
|
||||
{
|
||||
$this->settings = null;
|
||||
}
|
||||
|
||||
return $this->settings;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getTransferData()
|
||||
{
|
||||
if(empty($this->transferdata)) {
|
||||
$this->getSettings();
|
||||
}
|
||||
|
||||
return $this->transferdata;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return null
|
||||
*/
|
||||
public function SettingsStructure()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array|null
|
||||
*/
|
||||
public function getStructure()
|
||||
{
|
||||
$this->stucture = $this->SettingsStructure();
|
||||
if($this->app->erp->ModulVorhanden('TransferSmarty')) {
|
||||
$this->stucture = array_merge($this->stucture, [
|
||||
'useincommingconverter' => [
|
||||
'typ' => 'checkbox',
|
||||
'bezeichnung' => 'Eingangskonverter verwenden',
|
||||
],
|
||||
'incommingtemplate' => [
|
||||
'typ' => 'textarea',
|
||||
'size'=> 40,
|
||||
'rows'=> 6,
|
||||
'bezeichnung'=>'Eingang Template:',
|
||||
'tag' => 'disabled="disabled" style="background-color:#ccc; " ',
|
||||
'info' => '<input style="vertical-align: top" type="button" value="bearbeiten" id="editincommingtemplate" />',
|
||||
],
|
||||
'incommingdata' => [
|
||||
'typ' => 'hidden',
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
return $this->stucture;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $file
|
||||
* @param Uebertragungen $transferModul
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function convertIncomming($file, $transferModul)
|
||||
{
|
||||
if(!empty($this->settings['useincommingconverter']) && !empty($this->settings['incommingtemplate'])) {
|
||||
$obj = $this->app->loadModule('TranferSmarty');
|
||||
if(empty($obj) || !method_exists($obj, 'convertIncomingFile')) {
|
||||
return $file;
|
||||
}
|
||||
$obj->setSettings($this->settings);
|
||||
try {
|
||||
$file = $this->convertIncomingFile($file);
|
||||
}
|
||||
catch(Exception $e) {
|
||||
$fileId = $transferModul->GetFileId($this->id, $file, false);
|
||||
$transferModul->AddUbertragungMonitorLog($this->id, $fileId,0,'xml_parseerror', '');
|
||||
}
|
||||
}
|
||||
|
||||
return $file;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $target
|
||||
* @param null|array $struktur
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function Settings($target = 'return', $struktur = null)
|
||||
{
|
||||
if(!$this->id)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
if($struktur === null){
|
||||
$struktur = $this->getStructure();
|
||||
} else {
|
||||
$this->stucture = $struktur;
|
||||
}
|
||||
$this->getSettings();
|
||||
if($this->app->Secure->GetPOST('speichern'))
|
||||
{
|
||||
$uebertragungen_account = $this->transferdata;
|
||||
$json = $this->settings;
|
||||
$modul = $uebertragungen_account['xml_pdf'];
|
||||
if(!empty($struktur)){
|
||||
foreach ($struktur as $name => $val) {
|
||||
if($modul === $this->app->Secure->GetPOST('xml_pdf')){
|
||||
$json[$name] = $this->app->Secure->GetPOST($name, '', '', 1);
|
||||
}
|
||||
|
||||
if(isset($val['replace'])){
|
||||
switch ($val['replace']) {
|
||||
case 'lieferantennummer':
|
||||
$json[$name] = $this->app->erp->ReplaceLieferantennummer(1, $json[$name], 1);
|
||||
break;
|
||||
case 'shop':
|
||||
$json[$name] = explode(' ', $json[$name]);
|
||||
$json[$name] = reset($json[$name]);
|
||||
break;
|
||||
case 'lagerplatz':
|
||||
$json[$name] = $this->app->erp->ReplaceLagerPlatz(1, $json[$name], 1);
|
||||
break;
|
||||
case 'Layoutvorlage':
|
||||
$json[$name] = explode(' ', $json[$name]);
|
||||
$json[$name] = (int)reset($json[$name]);
|
||||
break;
|
||||
case 'artikelnummer':
|
||||
$tmp = trim($json[$name]);
|
||||
$rest = explode(' ',$tmp);
|
||||
$rest = $rest[0];
|
||||
$json[$name] = $this->app->DB->Select(
|
||||
sprintf(
|
||||
"SELECT id
|
||||
FROM artikel
|
||||
WHERE nummer='%s' AND nummer!='' AND geloescht=0
|
||||
ORDER BY projekt = %d DESC
|
||||
LIMIT 1",
|
||||
$rest, $this->transferdata['projekt']
|
||||
)
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$json_str = $this->app->DB->real_escape_string(json_encode($json));
|
||||
$this->app->erp->StartChangeLog('uebertragungen_account', $this->id);
|
||||
$this->app->DB->Update("UPDATE `uebertragungen_account` SET `einstellungen_json` = '$json_str' WHERE `id` = '".$this->id."' LIMIT 1");
|
||||
$this->app->erp->WriteChangeLog();
|
||||
}
|
||||
$id = $this->id;
|
||||
|
||||
$json = $this->app->DB->Select("SELECT einstellungen_json FROM uebertragungen_account WHERE id = '$id' LIMIT 1");
|
||||
if(!empty($json))
|
||||
{
|
||||
$json = json_decode($json, true);
|
||||
}else{
|
||||
$json = null;
|
||||
}
|
||||
|
||||
foreach($struktur as $name => $val) {
|
||||
$changed = false;
|
||||
if(isset($val['default']) && !isset($json[$name])) {
|
||||
$changed = true;
|
||||
$json[$name] = $val['default'];
|
||||
}
|
||||
}
|
||||
if(!empty($changed)) {
|
||||
$json_str = $this->app->DB->real_escape_string(json_encode($json));
|
||||
$this->app->erp->StartChangeLog('uebertragungen_account', $this->id);
|
||||
$this->app->DB->Update("UPDATE `uebertragungen_account` SET `einstellungen_json` = '$json_str' WHERE `id` = '".$this->id."' LIMIT 1");
|
||||
$this->app->erp->WriteChangeLog();
|
||||
}
|
||||
|
||||
if(!empty($struktur)) {
|
||||
$html = '</table>
|
||||
</fieldset><fieldset class="modulespecific"><legend>{|Übertragungenspezifische Einstellungen|}</legend>
|
||||
';
|
||||
foreach($struktur as $name => $val) {
|
||||
if(empty($val['typ']) || $val['typ'] !== 'hidden') {
|
||||
continue;
|
||||
}
|
||||
|
||||
$html .= '<input type="hidden" name="'.$name.'" id="'.$name.'" value="'
|
||||
.(!isset($json[$name])?'':htmlspecialchars($json[$name], ENT_QUOTES | ENT_HTML5)).'" />';
|
||||
|
||||
}
|
||||
$html .= '<table width="100%">
|
||||
<tr><td width="300">';
|
||||
}
|
||||
else{
|
||||
$html = '';
|
||||
}
|
||||
|
||||
$first = true;
|
||||
foreach($struktur as $name => $val) {
|
||||
$tdtag = !empty($val['tdtag'])?$val['tdtag']:'';
|
||||
$oneCol = !empty($val['onecol']);
|
||||
$typ = 'text';
|
||||
if(!empty($val['typ'])) {
|
||||
$typ = $val['typ'];
|
||||
if($typ === 'hidden') {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if(isset($val['heading'])) {
|
||||
$html .= '<tr><td colspan="2"><b>'.html_entity_decode($val['heading']).'</b></td></tr>';
|
||||
}
|
||||
if($oneCol) {
|
||||
$html .= '<tr><td valign="top" colspan="2"'.(!empty($tdtag)?' '.$tdtag.' ':'').'>' . ($first ? '<input type="hidden" name="modul_name" value="' . $this->app->DB->Select("SELECT modul FROM versandarten WHERE id = '$id' LIMIT 1") . '" />' : '') . (empty($val['bezeichnung']) ? $name : $val['bezeichnung']) . '<br />';
|
||||
}
|
||||
else{
|
||||
$html .= '<tr><td valign="top">' . ($first ? '<input type="hidden" name="modul_name" value="' . $this->app->DB->Select("SELECT modul FROM versandarten WHERE id = '$id' LIMIT 1") . '" />' : '') . (empty($val['bezeichnung']) ? $name : $val['bezeichnung']) . '</td><td'.(!empty($tdtag)?' '.$tdtag.' ':'').'>';
|
||||
}
|
||||
|
||||
$tag = !empty($val['tag'])?$val['tag']:'';
|
||||
|
||||
$placeholder = !empty($val['placeholder'])?$val['placeholder']:'';
|
||||
$size = !empty($val['size'])?$val['size']:'';
|
||||
$rows = !empty($val['rows'])?$val['rows']:'';
|
||||
|
||||
if(isset($val['replace'])) {
|
||||
switch($val['replace']) {
|
||||
case 'lieferantennummer':
|
||||
$json[$name] = $this->app->erp->ReplaceLieferantennummer(0,$json[$name],0);
|
||||
if($target !== 'return')
|
||||
{
|
||||
$this->app->YUI->AutoComplete($name, 'lieferant', 1);
|
||||
}
|
||||
break;
|
||||
case 'lagerplatz':
|
||||
$json[$name] = $this->app->erp->ReplaceLagerPlatz(0, $json[$name], 0);
|
||||
if($target !== 'return') {
|
||||
$this->app->YUI->AutoComplete($name, 'lagerplatz', 0);
|
||||
}
|
||||
break;
|
||||
case 'artikelnummer':
|
||||
$json[$name] = $this->app->erp->ReplaceArtikel(0,$json[$name],0);
|
||||
if($target !== 'return') {
|
||||
$this->app->YUI->AutoComplete($name, 'artikelnummer', 1);
|
||||
}
|
||||
break;
|
||||
case 'shop':
|
||||
$json[$name] .= ($json[$name]?' '.$this->app->DB->Select("SELECT bezeichnung FROM shopexport WHERE id = '".(int)$json[$name]."'"):'');
|
||||
if($target !== 'return') {
|
||||
$this->app->YUI->AutoComplete($name, 'shopnameid');
|
||||
}
|
||||
break;
|
||||
case 'Layoutvorlage':
|
||||
$json[$name] = (int)$json[$name];
|
||||
if($json[$name] <= 0) {
|
||||
$json[$name] = '';
|
||||
}
|
||||
else {
|
||||
$json[$name] = (string)$this->app->DB->Select(
|
||||
sprintf(
|
||||
"SELECT CONCAT(`id`,' ', `name`) FROM `layoutvorlagen` WHERE `id` = %d ",
|
||||
$json[$name]
|
||||
)
|
||||
);
|
||||
}
|
||||
if($target !== 'return') {
|
||||
$this->app->YUI->AutoComplete($name, 'layoutvorlage');
|
||||
}
|
||||
break;
|
||||
case 'etiketten':
|
||||
if($target !== 'return') {
|
||||
$this->app->YUI->AutoComplete($name, 'etiketten');
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch($typ) {
|
||||
case 'textarea':
|
||||
$html .= '<textarea '.(!empty($tag)?' '.$tag.' ':'').(!empty($size)?' cols="'.$size.'" ':'').' '.(!empty($rows)?' rows="'.$rows.'" ':'').' '.(!empty($placeholder)?' placeholder="'.$placeholder.'" ':'').' name="'.$name.'" id="'.$name.'">'.(!isset($json[$name])?'':$json[$name]).'</textarea>';
|
||||
break;
|
||||
case 'checkbox':
|
||||
$html .= '<input type="checkbox" name="'.$name.'" id="'.$name.'" value="1" '.((isset($json[$name]) && $json[$name])?' checked="checked" ':'').' />';
|
||||
break;
|
||||
case 'select':
|
||||
$html .= '<select name="'.$name.'">';
|
||||
if(isset($val['optionen']) && is_array($val['optionen'])) {
|
||||
foreach($val['optionen'] as $k => $v) {
|
||||
$html .= '<option value="'.$k.'"'.($k == (isset($json[$name])?$json[$name]:'')?' selected="selected" ':'').'>'.$v.'</option>';
|
||||
}
|
||||
}
|
||||
$html .= '</select>';
|
||||
break;
|
||||
case 'submit':
|
||||
if(isset($val['text'])) {
|
||||
$html .= '<form method="POST"><input type="submit" name="'.$name.'" value="'.$val['text'].'"></form>';
|
||||
}
|
||||
break;
|
||||
case 'custom':
|
||||
if(isset($val['function'])) {
|
||||
$tmpfunction = $val['function'];
|
||||
if(method_exists($this, $tmpfunction)) {
|
||||
$html .= $this->$tmpfunction();
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if($typ === 'time' || $typ === 'zeit') {
|
||||
$this->app->YUI->TimePicker($name);
|
||||
}elseif($typ === 'date' || $typ === 'datum') {
|
||||
$this->app->YUI->DatePicker($name);
|
||||
}
|
||||
$html .= '<input '.(!empty($placeholder)?' placeholder="'.$placeholder.'" ':'').' type="text" '.(!empty($val['size'])?' size="'.$val['size'].'" ':'').' name="'.$name.'" id="'.$name.'" value="'.(!isset($json[$name])?'':$json[$name]).'" />';
|
||||
break;
|
||||
}
|
||||
if(isset($val['info']) && $val['info'])
|
||||
{
|
||||
$html .= ' <i>'.$val['info'].'</i>';
|
||||
}
|
||||
|
||||
$html .= '</td></tr>';
|
||||
$first = false;
|
||||
}
|
||||
|
||||
if($target !== 'return'){
|
||||
$this->app->Tpl->Add($target, $html);
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user