Secure->GetGET('module') === 'einstellungen' || $app->Secure->GetGET('smodule') === 'einstellungen'; if($isSettingAction) { $maxrows = 10; } $heading = array('Bezeichnung', 'Typ', 'Projekt','Automatisch bezahlt','Verhalten wie','Modul', 'Menü'); $width = array('40%', '20%', '20%','10%','10%','10%', '1%'); $findcols = array('k.bezeichnung', 'k.type', 'p.abkuerzung',"if(k.automatischbezahlt,'Ja','')",'k.verhalten','k.modul', 'k.id'); $searchsql = array('k.bezeichnung', 'k.type','p.abkuerzung','k.modul'); $defaultorder = 2; $defaultorderdesc = 0; $menu = '
' . '' . "Conf->WFconf['defaulttheme']}/images/edit.svg\" border=\"0\">"; if(!$isSettingAction) { $menu .= ' ' . "" . "Conf->WFconf['defaulttheme']}/images/delete.svg\" border=\"0\">"; } $menu .= '
'; // SQL statement $sql = 'SELECT SQL_CALC_FOUND_ROWS k.id, ' .$app->YUI->Stroke('!k.aktiv', 'k.bezeichnung').',' .$app->YUI->Stroke('!k.aktiv', 'k.type')." as typ, if(k.projekt > 0,p.abkuerzung,''), if(k.automatischbezahlt,'Ja',''),k.verhalten,k.modul, k.id FROM `zahlungsweisen` AS `k` LEFT JOIN `projekt` AS `p` ON p.id=k.projekt"; $where = ' k.geloescht!=1 '.$app->erp->ProjektRechte(); break; } $erg = []; foreach($erlaubtevars as $k => $v) { if(isset($$v)) { $erg[$v] = $$v; } } return $erg; } /** * Zahlungsweisen constructor. * * @param Application $app * @param bool $intern */ public function __construct($app, $intern = false) { //parent::GenZahlungsweisen($app); $this->app=$app; $this->service = $this->app->Container->get('PaymentMethodService'); if($intern) { return; } $this->app->ActionHandlerInit($this); $this->app->ActionHandler("create","ZahlungsweisenCreate"); $this->app->ActionHandler("edit","ZahlungsweisenEdit"); $this->app->ActionHandler("list","ZahlungsweisenList"); $this->app->ActionHandler("delete","ZahlungsweisenDelete"); $this->app->ActionHandlerListen($app); } /** * @return array */ public function getBetaPaymentModules(): array { /** @var Appstore $appStore */ $appStore = $this->app->erp->LoadModul('appstore'); return $appStore->getBetaModulesByPrefix('zahlungsweise_'); } /** * @param string $val * * @return array|null */ function getApps($val = ''): ?array { $val = (string)$val; /** @var Appstore $appstore */ $appstore = $this->app->loadModule('appstore'); $module = $appstore->getAppsListWithPrefix('zahlungsweise_'); $modularr = $this->ZahlungsweisenSelModul('', true); if($module) { if(isset($module['installiert'])){ foreach($module['installiert'] as $k => $v) { $module['installiert'][$k]['match'] = $appstore->match($v['Bezeichnung'], $val); $module['installiert'][$k]['md5'] = md5($v['Bezeichnung']); $found[] = $v['key']; } } if(isset($module['kauf'])){ foreach($module['kauf'] as $k => $v) { $module['kauf'][$k]['match'] = $appstore->match($v['Bezeichnung'], $val); $module['kauf'][$k]['md5'] = md5($v['Bezeichnung']); $found[] = $v['key']; } } } if($modularr){ foreach($modularr as $k => $v) { if(!isset($found) || !in_array('zahlungsweise_'.$k,$found)) { $found[] = 'zahlungsweise_'.$k; $module['installiert'][] = [ 'md5'=>md5($v), 'Bezeichnung'=>$v, 'key'=>'zahlungsweise_'.$k, 'match'=>$appstore->match($v, $val), 'Icon'=>'Icons_dunkel_18.gif', ]; } } } if(isset($module['installiert']) && count($module['installiert']) > 0) { $sort = null; foreach($module['installiert'] as $k => $v)$sort[$k] = $v['Bezeichnung']; array_multisort($sort, SORT_ASC, $module['installiert']); } return $module; } /** * @return JsonResponse */ public function HandleSearchAjaxAction(): JsonResponse { $module = $this->getApps($this->app->Secure->GetPOST('val')); $anzeigen = ''; $ausblenden = ''; if($module) { if(isset($module['installiert'])) { foreach($module['installiert'] as $k => $v) { if($v['match']) { if($anzeigen != '') { $anzeigen .= ';'; } $anzeigen .= 'm'.md5($v['Bezeichnung']); } else{ if($ausblenden != '') { $ausblenden .= ';'; } $ausblenden .= 'm'.md5($v['Bezeichnung']); } } } if(isset($module['kauf'])) { foreach($module['kauf'] as $k => $v) { if($v['match']) { if($anzeigen != '') { $anzeigen .= ';'; } $anzeigen .= 'm'.md5($v['Bezeichnung']); } else{ if($ausblenden != '') { $ausblenden .= ';'; } $ausblenden .= 'm'.md5($v['Bezeichnung']); } } } } $data = [ 'anzeigen' => $anzeigen, 'ausblenden' => $ausblenden, ]; return new JsonResponse($data); } /** * @var int $shippingMethodId * * @return JsonResponse */ public function getVueShippingMethodSuccessPage($paymentMethodId): JsonResponse { $succespage = [ 'type' => 'defaultPage', 'icon' => 'add-person-icon', 'headline'=> 'Zahlungsweise angelegt', 'subHeadline'=> 'Die Zahlungsweise wurde angelegt', 'ctaButtons' => [ [ 'title' => 'Klasse', 'action' => 'close', 'link' => 'index.php?module=zahlungsweisen&action=edit&id='.$paymentMethodId ] ] ]; return new JsonResponse( ['page'=>$succespage] ); } /** * @var string $paymentModule * @var string $paymentModuleName * @var bool $returnPages * @var null|array $requiredForSubmit * * @return JsonResponse */ public function getFeatureVuePage( $paymentModule, $paymentModuleName, $returnPages = false, $requiredForSubmit = null ): JsonResponse { $autoPayed = null; $autoPayedLiability = null; $behaviour = null; if($requiredForSubmit === null) { $requiredForSubmit = $this->app->Secure->POST; } if(!isset($requiredForSubmit['step'])) { $requiredForSubmit['step'] = 2; } if(empty($requiredForSubmit['id'])) { $requiredForSubmit['id'] = 'NEW'; } if(isset($requiredForSubmit['autoPayed'])) { $autoPayed = (bool)$requiredForSubmit['autoPayed']; } if(isset($requiredForSubmit['autoPayedLiability'])) { $autoPayedLiability = (bool)$requiredForSubmit['autoPayedLiability']; } if(isset($requiredForSubmit['verhalten'])) { $behaviour = (string)$requiredForSubmit['verhalten']; } $page = [ 'type' => 'form', 'submitType' => 'submit', 'icon'=> 'password-icon', 'headline' => $paymentModuleName, 'subHeadline' => '', 'submitUrl' => 'index.php?module=zahlungsweisen&action=create&cmd=saveAssistant&paymentmodule='. $paymentModule, 'form' => $this->getFeatureForm($autoPayed, $autoPayedLiability, $behaviour), 'ctaButtons' => [ [ 'title' => 'Weiter', 'type' => 'submit', 'action' => 'submit', ], ] ]; if($returnPages) { $page['dataRequiredForSubmit'] = $requiredForSubmit; return new JsonResponse( [ 'pages' => [$page], ] ); } return new JsonResponse( [ 'page' => $page, 'dataRequiredForSubmit' => $requiredForSubmit, ] ); } /** * @var null|bool $autoPayed * @var null|bool $autoPayedLiability * @var null|string $behaviour * * @return array */ public function getFeatureForm($autoPayed = null, $autoPayedLiability = null, $behaviour = null): array { $ret = [ [ 'id' => 0, 'name' => 'projectGroup', 'inputs' => [ [ 'label' => 'Projekt Filter', 'type' => 'select', 'name' => 'projekt', 'validation' => false, 'options' => $this->getVueProjects(), ], ], ], ]; if($autoPayed === null) { $ret[] = [ 'id' => 1, 'name' => 'autoPayed', 'inputs' => [ [ 'label' => 'Autom. bezahlt (Rechnung)', 'type' => 'checkbox', 'name' => 'automatischbezahlt', 'validation' => false, ], ], ]; } if($autoPayedLiability === null){ $ret[] = [ 'id' => 2, 'name' => 'autoPayedLiabilityGroup', 'inputs' => [ [ 'label' => 'Autom. bezahlt (Verbindlichkeit)', 'type' => 'checkbox', 'name' => 'automatischbezahltverbindlichkeit', 'validation' => false, ], ], ]; } if($behaviour === null){ $ret[] = [ 'id' => 3, 'name' => 'behaviourGroup', 'inputs' => [ [ 'label' => 'Verhalten', 'type' => 'select', 'name' => 'verhalten', 'validation' => false, 'options' => $this->convertArrayToVueOptions($this->getBehaviourOptions()), ], ], ]; } return $ret; } /** * @return array */ public function getVueProjects(): array { $projects = array_merge( [0=>''], $this->app->DB->SelectPairs( sprintf( 'SELECT p.id, p.abkuerzung FROM `projekt` AS `p` WHERE p.geloescht = 0 %s ORDER BY p.abkuerzung', $this->app->erp->ProjektRechte() ) ) ); return $this->convertArrayToVueOptions($projects); } /** * @return JsonResponse */ public function HandleGetAssistantAjaxAction(): JsonResponse { $module = $this->app->Secure->GetPOST('paymentmodule'); $postData = $this->app->Secure->POST; $obj = $this->loadModule($module); if($obj === null) { return new JsonResponse(['location' => 'index.php?module=zahlungsweisen&action=create&auswahl='.$module]); } if($obj !== null && method_exists($obj, 'updatePostDataForAssistent')) { $postData = $obj->updatePostDataForAssistent($postData); } $paymentModuleName = $module; if(strpos($paymentModuleName, 'zahlungsweise_') === 0) { $paymentModuleName = substr($paymentModuleName, 14); } $paymentModuleName = str_replace('_', ' ', ucfirst($paymentModuleName)); if($obj !== null && method_exists($obj, 'GetBezeichnung')) { $paymentModuleName = $obj->GetBezeichnung(); } if(!method_exists($obj, 'getCreateForm')) { return $this->getFeatureVuePage($module, $paymentModuleName, true, $postData); } $form = $obj->getCreateForm(); if(!empty($form)) { $form[(!empty($form)?count($form):0) - 1]['link'] = [ 'link' => 'index.php?module=zahlungsweisen&action=create&auswahl=' . $module, 'title' => 'Expertenmodus', ]; } $page = [ 'type' => 'form', 'dataRequiredForSubmit' => [ 'paymentmodule' => $module, 'id' => 'NEW', ], 'submitType' => 'submit', 'icon'=> 'password-icon', 'headline' => ucfirst(substr($module, 14)), 'subHeadline' => method_exists($obj, 'getClickByClickHeadline') ?$obj->getClickByClickHeadline():'Bitte Zugangsdaten eingeben', 'submitUrl' => 'index.php?module=zahlungsweisen&action=create&cmd=saveAssistant&paymentmodule='.$module, 'form' => $form, 'ctaButtons' => [ [ 'title' => 'Weiter', 'type' => 'submit', 'action' => 'submit', ], ] ]; $ret = [ 'pages'=> [ $page ], ]; return new JsonResponse($ret); } /** * @return JsonResponse */ public function HandleSaveAssistantAjaxAction(): JsonResponse { $data = ['error' => 'Unknown error']; $paymentMethodId = $this->app->Secure->GetPOST('id','','',true); $step = (int)$this->app->Secure->GetPOST('step'); if($paymentMethodId === 'NEW') { $postData = $this->app->Secure->POST; $paymentModule = $this->app->Secure->GetPOST('paymentmodule'); /** @var Zahlungsweisenmodul $obj */ $obj = $this->loadModule($paymentModule); if(empty($paymentModule)) { $paymentModule = $this->app->Secure->GetGET('paymentmodule'); } if($obj !== null && method_exists($obj, 'AuthByAssistent')){ $json = $obj->AuthByAssistent(); if($json instanceof JsonResponse){ return $json; } } if($obj !== null && method_exists($obj, 'updatePostDataForAssistent')) { $postData = $obj->updatePostDataForAssistent($postData); } if($step < 2) { $paymentModuleName = $paymentModule; if(strpos($paymentModuleName, 'zahlungsweise_') === 0) { $paymentModuleName = substr($paymentModuleName, 14); } $paymentModuleName = str_replace('_', ' ', ucfirst($paymentModuleName)); if($obj !== null && method_exists($obj, 'GetBezeichnung')) { $paymentModuleName = $obj->GetBezeichnung(); } return $this->getFeatureVuePage($paymentModule, $paymentModuleName, false, $postData); } $createPaymentMethodResult = $this->createPaymentMethodFromModuleName( $paymentModule, (int)$this->app->Secure->GetPOST('projekt'), $this->app->Secure->GetPOST('verhalten'), !empty($this->app->Secure->GetPOST('automatischbezahlt')), !empty($this->app->Secure->GetPOST('automatischbezahltverbindlichkeit')), '' ); if(!empty($createPaymentMethodResult['id'])) { $paymentMethodId = $createPaymentMethodResult['id']; if(method_exists($obj, 'getStructureDataForClickByClickSave')) { $structureData = $obj->getStructureDataForClickByClickSave(); if(!empty($structureData)) { $this->saveCreateData($paymentMethodId, $structureData); } } $this->saveCreateData($paymentMethodId); } elseif(!empty($createShippingResult['error'])) { return new JsonResponse($createShippingResult, JsonResponse::HTTP_BAD_REQUEST); } } if((int)$paymentMethodId > 0) { return $this->getVueShippingMethodSuccessPage((int)$paymentMethodId); } return new JsonResponse($data, JsonResponse::HTTP_BAD_REQUEST); } /** * @param int $paymentMethodId * @param null|array $post */ public function saveCreateData($paymentMethodId, $post = null): void { $paymentMethodRow = $this->app->DB->SelectRow( sprintf('SELECT * FROM `zahlungsweisen` WHERE `id` = %d', $paymentMethodId) ); $paymentMethod = PaymentMethodData::fromDbState($paymentMethodRow); /** @var Zahlungsweisenmodul $obj */ $obj = $this->loadModule($paymentMethodRow['modul'], $paymentMethodId); if($obj === null) { return; } $form = []; if(method_exists($obj, 'getCreateForm')){ $form = $obj->getCreateForm(); } $data = $paymentMethod->getSettings();// json_decode($paymentMethod['einstellungen_json'], true); /*if(empty($data) || !is_array($data)) { $data = []; }*/ if($post === null && !empty($form)) { foreach($form as $row) { if(empty($row['inputs'])) { continue; } foreach($row['inputs'] as $input) { if(!empty($input['name'])){ $post[$input['name']] = !isset($this->app->Secure->POST[$input['name']]) ?null:$this->app->Secure->POST[$input['name']]; } } } } if(empty($post)) { return; } foreach($post as $key => $value) { $data[$key] = $value; } $paymentMethod->setSettings($data); $this->service->update($paymentMethod); } /** * @param string $paymentMethodModule * * @return array */ public function createPaymentMethodFromModuleName( $paymentMethodModule, $projectId, $paymentBehavior, $autoPayed, $autoPayedLiability, $text ): array { if(!$this->app->erp->ModulVorhanden($paymentMethodModule)) { return [ 'success'=>false, 'error'=>'Modul nicht vorhanden' ]; } $modules = $this->getApps(); $modul = substr($paymentMethodModule,14); $name = ucfirst($modul); if($modules['installiert']) { foreach($modules['installiert'] as $key => $installedModule) { if($installedModule['key'] === $paymentMethodModule && $installedModule['Bezeichnung'] != '') { $name = $installedModule['Bezeichnung']; } } } $type = $modul; $i = 1; $originalName = $name; while( $this->app->DB->Select( sprintf( "SELECT `id` FROM `zahlungsweisen` WHERE `type` = '%s' OR `bezeichnung` = '%s' LIMIT 1", $this->app->DB->real_escape_string($type), $this->app->DB->real_escape_string($name) ) ) ) { $i++; $type = $modul.'_'.$i; $name = $originalName.' '.$i; } try { $paymentMethod = new PaymentMethodData( 0, $modul, $name, $type, true, (int)$projectId, (string)$paymentBehavior, (bool)$autoPayed, (bool)$autoPayedLiability, (string)$text ); $id = $this->service->create($paymentMethod); } catch(Exception $e) { $id = null; } return ['id'=>$id]; } /** * @param string $module * @param int $moduleId * * @return mixed|null */ public function loadModule($module, $moduleId = 0) { if(empty($module)) { return null; } if(strpos($module,'zahlungsweise_') === 0) { $module = substr($module, 14); if(empty($module)) { return null; } } if(strpos($module, '.') !== false || strpos($module, '/') !== false || strpos($module, '\\')) { return null; } $path = dirname(__DIR__).'/lib/zahlungsweisen/'.$module.'.php'; if(!is_file($path)) { return null; } include_once $path ; $classname = 'Zahlungsweise_'.$module; if(!class_exists($classname)) { return null; } return new $classname($this->app, $moduleId); } /** * @return JsonResponse|void */ public function ZahlungsweisenCreate() { $cmd = $this->app->Secure->GetGET('cmd'); if($cmd === 'suche') { return $this->HandleSearchAjaxAction(); } if($cmd === 'getAssistant') { return $this->HandleGetAssistantAjaxAction(); } if($cmd === 'saveAssistant') { return $this->HandleSaveAssistantAjaxAction(); } $module = $this->getApps($this->app->Secure->GetPOST('val')); if($this->app->Secure->GetGET('auswahl')) { //$bezeichnung = $this->app->Secure->GetPOST('bezeichnung'); $auswahlmodul = $this->app->Secure->GetGET('auswahl'); if($auswahlmodul === 'custom') { $leerVorhanden = $this->app->DB->Select("SELECT `id` FROM `zahlungsweisen` WHERE `bezeichnung` = '' LIMIT 1"); if($leerVorhanden != '' && $leerVorhanden > 0){ $this->app->Location->execute('index.php?module=zahlungsweisen&action=edit&id='.$leerVorhanden); } $paymentMethod = new PaymentMethodData(0, '', 'Custom', 'custom', true, 0, '', false, false, ''); $id = $this->service->create($paymentMethod); /*$this->app->DB->Insert( "INSERT INTO `zahlungsweisen` (`bezeichnung`, `type`,`aktiv`, `geloescht`, `modul`) VALUES ('','',1,0,'')" ); $id = $this->app->DB->GetInsertID();*/ $this->app->Location->execute('index.php?module=zahlungsweisen&action=edit&id='.$id); } if($this->app->erp->ModulVorhanden($auswahlmodul)) { $modul = substr($auswahlmodul,14); $bezeichnung = ucfirst($modul); if($module['installiert']) { foreach($module['installiert'] as $k => $v) { if($v['key'] == $auswahlmodul && $v['Bezeichnung'] != '') { $bezeichnung = $v['Bezeichnung']; } } } $type = $modul; $i = 1; $_bezeichnung = $bezeichnung; while($this->app->DB->Select( sprintf( "SELECT `id` FROM `zahlungsweisen` WHERE `type` = '%s' OR `bezeichnung` = '%s' LIMIT 1", $this->app->DB->real_escape_string($type), $this->app->DB->real_escape_string($bezeichnung) ) )) { $i++; $type = $modul.'_'.$i; $bezeichnung = $_bezeichnung.' '.$i; } $paymentMethod = new PaymentMethodData( 0, $modul, $bezeichnung, $type, true, 0, '', false, false, '' ); $id = $this->service->create($paymentMethod); $this->app->erp->RunHook('zahlungsweisen_create', 1, $id); $this->app->Location->execute('index.php?module=zahlungsweisen&action=edit&id='.$id); } } if($this->app->erp->isIoncube() && $this->app->Secure->GetPOST('testen')) { $modul = $this->app->Secure->GetPOST('modul'); if($modul) { $testapp = $modul; if(is_file(dirname(__DIR__).'/update.php')) { $result = ''; include_once dirname(__DIR__).'/update.php'; if($result === 'OK') { $this->app->Tpl->Add( 'MESSAGE', '
Das Modul wurde zum Testen angefragt. Bitte update xentral in frühestens 10 Minuten um das Modul zu laden
' ); } else{ $this->app->Tpl->Add( 'MESSAGE', '
Es ist ein Fehler beim Updaten aufgetreten: '.$result.'
'); } } } } else{ $get = $this->app->Secure->GetGET('get'); if($get && $module){ if(isset($module['kauf'])){ foreach($module['kauf'] as $k => $v) { if($v['md5'] == $get){ $mods = $this->app->erp->getAppList(); foreach($mods as $k2 => $v2) { if(md5($v2['Bezeichnung']) == $get){ $this->app->Tpl->Add( 'MESSAGE', '
Bitte bestätigen:
' ); break; } } } } } } } $modullist = $this->getApps(); /** @var Appstore $appstore */ $appstore = $this->app->loadModule('appstore'); $appstore->AddModuleHtml( $modullist, 'zahlungsweise_', 'index.php?module=zahlungsweisen&action=create&get=', [ 'title' => 'Custom', 'link' => 'index.php?module=zahlungsweisen&action=create&auswahl=custom', ] ); $this->app->ModuleScriptCache->IncludeWidgetNew('ClickByClickAssistant'); $this->app->Tpl->Parse('PAGE', 'zahlungsweisen_neu.tpl'); } public function ZahlungsweisenList(): void { $this->ZahlungsweisenMenu(); $this->app->YUI->TableSearch('TAB1','zahlungsweisen_list', 'show','','',basename(__FILE__), __CLASS__); $this->app->Tpl->Parse('PAGE','tabview.tpl'); } public function ZahlungsweisenMenu(): void { $id = $this->app->Secure->GetGET('id'); $this->app->erp->MenuEintrag('index.php?module=zahlungsweisen&action=create','Neue Zahlungsweise anlegen'); if($this->app->Secure->GetGET('action')==='list') { $this->app->erp->MenuEintrag('index.php?module=zahlungsweisen&action=list','Übersicht'); } elseif($this->app->Secure->GetGET('action')==='edit'){ $this->app->erp->MenuEintrag("index.php?module=zahlungsweisen&action=edit&id=$id", 'Details'); } else{ $this->app->erp->MenuEintrag('index.php?module=zahlungsweisen&action=list', 'Zurück zur Übersicht'); } } /** * @var bool $escape * * @return array */ public function GetInput($escape = true): array { $input = []; $escapeString = $escape?'1':''; $input['bezeichnung'] = $this->app->Secure->GetPOST('bezeichnung', null, '', $escapeString); $input['type'] = $this->app->Secure->GetPOST('type', null, '', $escapeString); $input['projekt'] = $this->app->Secure->GetPOST('projekt', null, '', $escapeString); $input['selmodul'] = $this->app->Secure->GetPOST('selmodul', null, '', $escapeString); $input['aktiv'] = (int)$this->app->Secure->GetPOST('aktiv'); $input['automatischbezahlt'] = (int)$this->app->Secure->GetPOST('automatischbezahlt'); $input['automatischbezahltverbindlichkeit'] = (int)$this->app->Secure->GetPOST('automatischbezahltverbindlichkeit'); $input['verhalten'] = $this->app->Secure->GetPOST('verhalten', null, '', $escapeString); $input['modul'] = $this->app->Secure->GetPOST('selmodul', null, '', $escapeString); $input['freitext'] = $this->app->Secure->GetPOST('freitext', null, '', $escapeString); return $input; } /** * @param array $input */ public function SetInput($input): void { $this->app->Tpl->Set('BEZEICHNUNG', $input['bezeichnung']); $this->app->Tpl->Set('TYPE', $input['type']); $this->app->Tpl->Set('FREITEXT', $input['freitext']); $this->app->Tpl->Set('PROJEKT', $input['projekt']); $this->app->Tpl->Set('SELVERHALTEN', $this->VerhaltenSel($input['verhalten'])); if($input['aktiv']==1){ $this->app->Tpl->Set('AKTIV', 'checked'); } if($input['automatischbezahlt']==1){ $this->app->Tpl->Set('AUTOMATISCHBEZAHLT', 'checked'); } if($input['automatischbezahltverbindlichkeit']==1){ $this->app->Tpl->Set('AUTOMATISCHBEZAHLTVERBINDLICHKEIT', 'checked'); } } /** * @return string[] */ public function getBehaviourOptions(): array { return [ 'rechnung' => 'Rechnung', 'vorkasse' => 'Vorkasse', 'lastschrift' => 'Lastschrift', ]; } /** * @param array $array * * @return array */ public function convertArrayToVueOptions($array): array { if(empty($array) || !is_array($array)) { return []; } $ret = []; foreach($array as $value => $text) { $ret[] = [ 'value' => $value, 'text' => $text, ]; } return $ret; } /** * @param null|string $value * * @return string */ public function VerhaltenSel($value = null): string { $verhalten = $this->getBehaviourOptions(); $ret = ''; foreach($verhalten as $k=> $v) { $ret .= ''; } return $ret; } public function ZahlungsweisenEdit() { $id = (int)$this->app->Secure->GetGET('id'); $speichern = $this->app->Secure->GetPOST('speichern'); $input = $this->GetInput(false); $error = ''; if(is_numeric($id) && $speichern != ''){ if($id) { $error = ''; if(trim($input['bezeichnung']) == '') { $error = 'Bitte alle Pflichtfelder ausfüllen!'; } if(trim($input['type']) == '') { $error = 'Bitte alle Pflichtfelder ausfüllen!'; } $modus = 'save'; if($id) { $this->app->erp->RunHook('zahlungsweisen_edit_show', 3, $modus, $id, $error); } if($error != ''){ $this->app->Tpl->Set('MESSAGE', "
$error
"); } else{ if($error == ''){ $projektid = $this->app->DB->Select( sprintf( "SELECT `id` FROM `projekt` WHERE `abkuerzung` = '%s' LIMIT 1", $input['projekt'] ) ); $oldtype = $this->app->DB->Select(sprintf('SELECT `type` FROM `zahlungsweisen` WHERE `id` = %d LIMIT 1', $id)); if($oldtype != $input['type']){ while( $this->app->DB->Select( sprintf( "SELECT `id` FROM `zahlungsweisen` WHERE `type` = '%s' AND `id` <> %d LIMIT 1", $input['type'], $id ) ) ) { $typa = explode('_', $input['type']); if((!empty($typa)?(!empty($typa)?count($typa):0):0) == 1 || !is_numeric($typa[count($typa)-1])) { $input['type'] .= '_1'; } else{ $counter = $typa[(!empty($typa)?count($typa):0)-1]+1; unset($typa[(!empty($typa)?count($typa):0)-1]); $input['type'] = implode('_', $typa).'_'.$counter; } } } $paymentMethodRow = $this->service->get($id); $paymentMethodRow['bezeichnung'] = $input['bezeichnung']; $paymentMethodRow['type'] = $input['type']; $paymentMethodRow['verhalten'] = $input['verhalten']; $paymentMethodRow['id'] = $id; $paymentMethod = PaymentMethodData::fromDbState($paymentMethodRow); $paymentMethod->setName($input['bezeichnung']); $paymentMethod->setType($input['type']); $paymentMethod->setProjectId((int)$projektid); $paymentMethod->setActive((bool)$input['aktiv']); $paymentMethod->setModule($input['selmodul']); $paymentMethod->setText($input['freitext']); $paymentMethod->setAutoPayed((bool)$input['automatischbezahlt']); $paymentMethod->setAutoPayedLiability((bool)$input['automatischbezahltverbindlichkeit']); $paymentMethod->setPaymentBehavior($input['verhalten']); $this->service->update($paymentMethod); if($input['aktiv'] == 1){ $this->app->Tpl->Set('AKTIV', "checked"); } if($input['automatischbezahlt'] == 1){ $this->app->Tpl->Set('AUTOMATISCHBEZAHLT', "checked"); } if($input['automatischbezahltverbindlichkeit'] == 1){ $this->app->Tpl->Set('AUTOMATISCHBEZAHLTVERBINDLICHKEIT', "checked"); } $this->app->Tpl->Set('MESSAGE', "
Die Daten wurden erfolgreich gespeichert!
"); } } } else{ $error = ''; if(trim($input['bezeichnung']) == ''){ $error = "Bitte alle Pflichtfelder ausfüllen!"; $this->app->Tpl->Set('MSGBEZEICHNUNG',' Pflichtfeld!'); } if(trim($input['type']) == ''){ $error = "Bitte alle Pflichtfelder ausfüllen!"; $this->app->Tpl->Set('MSGTYP',' Pflichtfeld!'); } if($error!=''){ $this->app->Tpl->Set('MESSAGE', "
$error
"); } else { if(trim($input['projekt']) == ''){ $projektid = 0; } else{ $projektid = $this->app->DB->Select( sprintf( "SELECT `id` FROM `projekt` WHERE `abkuerzung` = '%s' LIMIT 1", $input['projekt'] ) ); } while( $this->app->DB->Select( sprintf( "SELECT `id` FROM `zahlungsweisen` WHERE `type` = '%s' LIMIT 1", $input['type'] ) ) ) { $typa = explode('_', $input['type']); if((!empty($typa)?(!empty($typa)?count($typa):0):0) == 1 || !is_numeric($typa[count($typa)-1])) { $input['type'] .= '_1'; } else{ $counter = $typa[(!empty($typa)?count($typa):0)-1]+1; unset($typa[(!empty($typa)?count($typa):0)-1]); $input['type'] = implode('_', $typa).'_'.$counter; } } $paymentMethod = new PaymentMethodData( 0, $input['modul'], $input['bezeichnung'], $input['type'], (bool)$input['aktiv'], (int)$projektid, (string)$input['verhalten'], (bool)$input['automatischbezahlt'], (bool)$input['automatischbezahltverbindlichkeit'], (string)$input['freitext'] ); $newid = $this->service->create($paymentMethod); $msg = $this->app->erp->base64_url_encode("
Die Daten wurden erfolgreich gespeichert!
"); $this->app->Location->execute("index.php?module=zahlungsweisen&action=edit&id=$newid&msg=$msg"); } } } try{ $paymentMethod = $this->service->getFromId($id); $daten = $paymentMethod->toArray(); } catch(Exception $e) { $daten = null; } if(!empty($daten)) { $this->app->erp->Headlines('',$daten['bezeichnung']); $this->app->Tpl->Set('AKTMODUL', $daten['modul']); $pfad = dirname(__DIR__).'/lib/zahlungsweisen/'.$daten['modul'].'.php'; if($daten['modul'] && is_file($pfad)) { include_once $pfad; $classname = 'Zahlungsweise_'.$daten['modul']; if(class_exists($classname)) { $obj = new $classname($this->app, $daten['id']); } } $bezeichnung = $daten['bezeichnung']; $type = $daten['type']; $projekt = $daten['projekt']; $aktiv = $daten['aktiv']; $automatischbezahlt = $daten['automatischbezahlt']; $automatischbezahltverbindlichkeit = $daten['automatischbezahltverbindlichkeit']; $vorkasse = $daten['vorkasse']; $freitext = $daten['freitext']; $verhalten = $daten['verhalten']; $projektname = $this->app->DB->Select( sprintf( 'SELECT `abkuerzung` FROM `projekt` WHERE `id` = %d', $projekt ) ); if(isset($obj) && method_exists($obj, 'Einstellungen')) { $obj->Einstellungen('JSON'); } } else{ $this->app->Tpl->Set('AKTMODUL',''); $verhalten = 'vorkasse'; } if($error == '') { $selModul = isset($daten['modul'])?$daten['modul']:''; } else { $selModul = $input['selmodul']; } $this->app->Tpl->Set( 'SELMODUL', $this->ZahlungsweisenSelModul($selModul) ); $this->app->Tpl->Set('BEZEICHNUNG', $error == ''?$bezeichnung:$input['bezeichnung']); $this->app->Tpl->Set('FREITEXT', $error == ''?$freitext:$input['freitext']); $this->app->Tpl->Set('TYPE', $error == ''?$type:$input['type']); $this->app->Tpl->Set('PROJEKT', $error == ''?$projektname:$input['projekt']); $this->app->Tpl->Set('SELVERHALTEN', $this->VerhaltenSel($error == ''?$verhalten:$input['verhalten'])); if(($error == '' && $aktiv == 1) || ($error != '' && $input['aktiv'])){ $this->app->Tpl->Set('AKTIV', 'checked'); } if(($error == '' && $automatischbezahlt == 1) || ($error != '' && $input['automatischbezahlt'])){ $this->app->Tpl->Set('AUTOMATISCHBEZAHLT', 'checked'); } if(($error == '' && $automatischbezahltverbindlichkeit == 1) || ($error != '' && $input['automatischbezahltverbindlichkeit'])){ $this->app->Tpl->Set('AUTOMATISCHBEZAHLTVERBINDLICHKEIT', 'checked'); } $modus = 'show'; $error = ''; if($id) { $this->app->erp->RunHook('zahlungsweisen_edit_show', 3, $modus, $id, $error); } if(!empty($daten['modul'])) { $beta = $this->getBetaPaymentModules(); if(in_array('zahlungsweise_'.$daten['modul'], $beta)) { $this->app->Tpl->Add('MESSAGE','
Dieses Modul ist noch im Beta Stadium.
'); /** @var Appstore $appstore */ $appstore = $this->app->erp->LoadModul('appstore'); if($appstore !== null){ $appstore->addBetaToHeadline(); } } } $this->ZahlungsweisenMenu(); $this->app->YUI->CkEditor('freitext', 'belege'); $this->app->YUI->AutoComplete('projekt', 'projektname', 1); $this->app->Tpl->Parse('PAGE', 'zahlungsweisen_edit.tpl'); } /** * @param string $value * @param bool $retarr * * @return array|string|null */ public function ZahlungsweisenSelModul($value = '', $retarr = false) { $array = null; $ret = ''; $pfad = dirname(__DIR__).'/lib/zahlungsweisen'; $beta = $this->getBetaPaymentModules(); if(is_dir($pfad)) { $handle = opendir($pfad); if($handle) { while (false !== ($file = readdir($handle))) { $files[] = $file; } natcasesort($files); foreach($files as $file) { if($file[0] !== '.' && substr($file,-4) === '.php' && substr($file,-8) !== '.src.php' && is_file($pfad.'/'.$file)) { $modul = str_replace('.php','',$file); $modulKey = $modul; if(strpos($modulKey,'zahlungsweise_') !== 0) { $modulKey = 'zahlungsweise_'.$modul; } $ret .= ''; $array[$modul] = ucfirst($modul); } } closedir($handle); } } if($retarr) { return $array; } return $ret; } public function ZahlungsweisenDelete(): void { $id = (int)$this->app->Secure->GetGET('id'); try{ $this->service->delete($id); $msg = $this->app->erp->base64_url_encode( "
{|Die Zahlungsweise wurde gelöscht!|}
" ); } catch(Exception $e) { $msg = $this->app->erp->base64_url_encode( '
'.$e->getMessage().'
' ); } $this->app->Location->execute('index.php?module=zahlungsweisen&action=list&msg='.$msg); } }