paymentSettingsExtension($this->repository);if($extra)return $extra->profiles();Entitlements::current()->require('bank_transfer');throw new \LogicException('Bank module unavailable');} public function get():array{ $extra=Modules::current()->paymentSettingsExtension($this->repository);$data=$extra?$extra->get():$this->repository->get();$e=Entitlements::current(); foreach(['credit'=>'credits','bank_transfer'=>'bank_transfer','qr_payment'=>'bank_qr']as $method=>$feature)if(!$e->has($feature))$data['enable_'.$method]=false; if(!$e->has('bank_transfer'))foreach(['bank_account','bank_profiles','bank_profile_availability','bank_profiles_warning','qr_available','qr_unavailable_reason']as $field)unset($data[$field]);return $data; } public function publicSettings():array{return array_intersect_key($this->get(),array_flip(['enable_credit','enable_pay_on_site']));} public function save(array $input,int $actor):array{ FinanceAuthorization::requireAdmin($actor);$e=Entitlements::current(); foreach(['enable_credit'=>'credits','enable_bank_transfer'=>'bank_transfer','enable_qr_payment'=>'bank_qr','bank_account'=>'bank_transfer','bank_profiles'=>'bank_transfer']as $field=>$feature)if(array_key_exists($field,$input)&&$input[$field]!==false&&$input[$field]!==0)$e->require($feature); foreach(['enable_credit'=>'credits','enable_bank_transfer'=>'bank_transfer','enable_qr_payment'=>'bank_qr']as $field=>$feature)if(!$e->has($feature))unset($input[$field]); $extra=Modules::current()->paymentSettingsExtension($this->repository);if($extra){$extra->save($input,$actor);return $this->get();} BookingValidator::fields($input,['enable_pay_on_site','block_booking_with_outstanding_balance','outstanding_balance_grace_hours']);$values=[]; foreach($input as $key=>$value)$values[$key]=$key==='outstanding_balance_grace_hours'?CatalogValidator::integer($value,$key,0,8760):CatalogValidator::boolean($value,$key); $this->repository->save($values);return $this->get(); } }