package FormEdit; # # SPDX-License-Identifier: AGPL-3.0-or-later # Copyright (c) Rainer Gümpelein, TeilRad GmbH # use strict; use warnings; use POSIX; use CGI ':standard'; use DateTime; use DateTime::Format::Pg; use Lib::Config; use Mod::Buttons; use Mod::Libenz; use Mod::DBtank; use Mod::APIfunc; use Mod::Pricing; use Tpl::AccountSubmenu; use Data::Dumper; sub new { my $class = shift; my $self = {}; bless($self,$class); return $self; } #Template sub tpl(){ my $node_meta = shift; my $users_dms = shift || ""; my $mode = shift || ""; my $varenv = shift; my $users_sharee = shift || ""; my $feedb = shift || ""; my $q = new CGI; my $cf = new Config; my $lb = new Libenz; my $dbt = new DBtank; my $apif = new APIfunc; my $pri = new Pricing; my $but = new Buttons; my $submenu = new AccountSubmenu; my $script = $q->script_name(); my $path_info = $q->path_info(); my $path = $path_info; #with meta_host, if("$varenv->{metahost}"){ $path = "$script" . "$path_info"; $script=""; } my $dbh = "";#$dbt->dbconnect(); my $user_agent = $q->user_agent(); my @viewsel = split /\//,$1 if($path =~ /^\/(.*)/); my $red = "red"; my $coo = $q->cookie(-name=>'domcookie') || $R::sessionid; my $session=""; my $session_and=""; if($R::sessionid && length($R::sessionid) > 20 && !$q->cookie(-name=>'domcookie')){ $session = "?sessionid=$R::sessionid"; $session_and = "&sessionid=$R::sessionid"; } my $bgcolor1 = "009899";#sharee $bgcolor1 = $dbt->{website}->{$varenv->{syshost}}->{bgcolor1} if($dbt->{website}->{$varenv->{syshost}}->{bgcolor1}); $bgcolor1 = $dbt->{merchant_ids}->{$varenv->{merchant_id}}->{bgcolor1} if($dbt->{merchant_ids}->{$varenv->{merchant_id}}->{bgcolor1}); #print "$dbt->{merchant_ids}->{$varenv->{merchant_id}}->{id}|$varenv->{merchant_id}|$coo"; my $aowner = "198"; $aowner = $dbt->{merchant_ids}->{$varenv->{merchant_id}}->{id} if($varenv->{merchant_id} && $dbt->{merchant_ids}->{$varenv->{merchant_id}}->{id}); #TODO substitute aowner by project my $project = "Freiburg";#defaults to sharee $project = $dbt->{merchant_ids}->{$varenv->{merchant_id}}->{project} if($varenv->{merchant_id} && $dbt->{merchant_ids}->{$varenv->{merchant_id}}->{project}); my $bonus_desc = "Bonusnummer (falls vorhanden)"; my $bonus_ak = "Ihre Bonusnummer wurde akzeptiert. Bitte beachten Sie dass der Bonustarif im Kontext des Mietradbetreibers vergeben wird. Der Tarif wird bei der Mietrad Reservierung angezeigt."; my $bonus_avail = "Die Bonusnummer ist nicht vorhanden."; my $bonus_conflict = "Die Bonusnummer kann pro Registrierung nur einmal verwendet werden. So wird verhindert dass weitere Personen von den Freiminuten widerrechtlich Gebrauch nehmen.
Weitere Personen aus Ihrem Haushalt profitieren jedoch ebenfalls, falls Sie weitere Produkte (Gas, SeeConnect, Fähre- oder Bus-Zeitkarten) nutzen. Dann könnte sich die zweite Person mit der weiteren Nummer registrieren."; my $bonus_saved = "Aktiviert:"; #sharee.bike text if($aowner == 186 || $aowner == 197){ $bonus_desc = "Freischaltcode (falls vorhanden)"; $bonus_ak = "Ihr Freischaltcode wurde angenommen. Bitte beachten sie dass der Freischaltcode mit einem Mietradtarif verbunden ist. Der Tarif wird bei der Mietrad Reservierung angezeigt."; $bonus_avail = "Der Freischaltcode wurde nicht akzeptiert."; $bonus_conflict = "Der Freischaltcode kann nur einmal verwendet werden."; $bonus_saved = "Aktiviert:"; } my $ctrel = {}; $ctrel = $users_sharee if(ref($users_sharee) eq "HASH" && $users_sharee->{c_id}); # #collect rentals on operators and get operator hash with dbname->uri_operator #$q->param(-name=>'month',-value=>"1"); my ($cttpos,$operator_hash) = $apif->user_rentals_history($q,$ctrel); #print Dumper($cttpos); my $cttpos_count=0; foreach my $id (keys(%$cttpos)){ $cttpos_count++; } #loop operator hash to get invoices for each operator my $ctt_all = {}; my $ctadrcoupon = {}; foreach my $sharee_operator (keys (%$operator_hash)){ my $dbh_operator = $dbt->dbconnect_extern("$sharee_operator"); my $pref = { table => "contenttrans", fetch => "all", int10 => "$ctrel->{c_id}", keyfield => "ct_name", ct_name => "~::[1-9]", }; if($ctrel->{c_id}){ my $ctt = $dbt->fetch_tablerecord($dbh_operator,$pref); foreach my $id (keys(%$ctt)){ $ctt->{$id}->{wwwhost} = "$operator_hash->{$sharee_operator}"; $ctt->{$id}->{operator} = "$sharee_operator"; $ctt->{$id}->{basedir} = "$dbt->{copri_conf}->{basedir}/$dbt->{operator}->{$sharee_operator}->{dir_app}"; #print "$id|$sharee_operator|$ctt->{$id}->{wwwhost}|$ctt->{$id}->{operator}|$ctt->{$id}->{basedir}|$ctt->{$id}->{ct_name}
"; } $ctt_all = { %$ctt_all, %$ctt }; my $prefcoupon = { table => "contentadr", fetch => "one", txt15 => "~::\\w", c_id => "$ctrel->{c_id}", }; $ctadrcoupon->{$sharee_operator} = $dbt->fetch_tablerecord($dbh_operator,$prefcoupon); $ctadrcoupon->{$sharee_operator}->{oprefix} = "$dbt->{operator}->{$sharee_operator}->{oprefix}"; } } my $tpl_id = $node_meta->{tpl_id}; #$tpl_id = "302004" if($viewsel[1] =~ /Mieten/ && $ctrel->{c_id}); my $tpl = $dbt->get_tpl($dbh,$tpl_id); my $tpl01 = $tpl;#If nothing else, because of tpl_name Title in split_lates my $tpl02 = ""; my @split_lates = ("$tpl->{tpl_order}"); my $template01 = "$tpl_id" . "001"; my $template02 = "$tpl_id" . "002"; if($tpl_id < 999){ $tpl01 = $dbt->get_tpl($dbh,$template01); $tpl02 = $dbt->get_tpl($dbh,$template02); @split_lates = ("$tpl01->{tpl_order}","$tpl02->{tpl_order}"); } my $now_dt = strftime "%Y-%m-%d %H:%M", localtime; my $start_date = strftime "%d.%m.%Y %H:%M", localtime; my ($end_date,$end_time) = split(/ /,$now_dt); my ($e_yy,$e_mo,$e_dd) = split(/-/,$end_date); my ($e_hh,$e_mi) = split(/\:/,$end_time); my $sharee_agb_text = {}; $sharee_agb_text->{ct_name} = "AGB"; $sharee_agb_text->{txt01} = ""; my $sharee_privacy_text = {}; $sharee_privacy_text->{ct_name} = "Datenschutzhinweise"; $sharee_privacy_text->{txt01} = ""; print "
\n"; print < EOF ; print < EOF ; my $debug=0; $debug=1 if($users_sharee->{c_id} eq $dbt->{copri_conf}->{superu_id} || $dbt->{copri_conf}->{stage} eq "test"); my $debug_message = ""; my $payable_check=0; if(($ctrel->{int03} == 1 && $ctrel->{ct_name} =~ /\w{2}-\d+/) || ($ctrel->{int03} == 2 && length($ctrel->{ct_name}) >= 19)){ $payable_check=1; } #subMenue-------- $submenu->tpl($node_meta,$users_dms,$mode,$varenv,$users_sharee,$feedb); #----------------- my $catch_failure=0; if(($R::failure && $R::failure =~ /\w+/) || ($ctrel->{txt31} && $ctrel->{txt31} =~ /\w/)){ $debug_message = "($R::failure || $ctrel->{txt31})" if($debug); $catch_failure=1; print $q->div({-class=>'content2', -style=>"clear:both;color:$red"}, "* Es liegt noch mindestens ein Fehler vor. $debug_message"),"\n"; } #confirm code manage if($catch_failure && (!$ctrel->{int04} && !$ctrel->{int13}) && ($tpl_id =~ /^2$|302004/) && ($path =~ /$varenv->{accounting_3}/)){ $debug_message = "$catch_failure && (!$ctrel->{int04} || !$ctrel->{int13}) && $tpl_id" if($debug); print $q->div({-class=>'content2'}, "Erst nachdem Ihre Profildaten vollständig sind erhalten Sie die Bestätigung. $debug_message"),"\n"; }elsif((!$ctrel->{int04} || !$ctrel->{int13}) && ($tpl_id =~ /^2$|302004/) && ($path =~ /$varenv->{accounting_3}/)){ print $q->start_form(-name=>'accountscreen', -action=>"/$varenv->{mandant}/Account/$varenv->{accounting_3}$session"),"\n"; print $q->hidden(-name=>"sessionid",-override=>1,-value=>"$R::sessionid"); my $required = ""; $debug_message = "(!$ctrel->{int04} || !$ctrel->{int13}) && $tpl_id" if($debug); print $q->div({-class=>'content_title3',-style=>'clear:both;'}, "Fast geschafft $debug_message"),"\n"; my $acktext = "Es wurden Bestätigungs-Codes an Ihre e-Mail Adresse und per SMS an Ihre Telefonnr. versandt."; $acktext = "Es wurde ein Bestätigungs-Code per SMS an Ihre Telefonnr. versandt." if($ctrel->{int04} && !$ctrel->{int13}); $acktext = "Es wurde ein Bestätigungs-Code an Ihre e-Mail Adresse versandt." if(!$ctrel->{int04} && $ctrel->{int13}); print $q->div({-class=>'content2'}, "$acktext Nach erfolgreicher Bestätigung können Sie unsere Mieträder nutzen. Bitte beachten Sie die Anweisungen."),"\n"; if(!$ctrel->{int04}){ my $des = "E-Mail Bestätigungscode"; my $key = "confirm_code"; my $label_des="* $des"; $label_des = "Bitte \"$des\" korrigieren" if($R::failure); print $q->label({-for=>"$key", -style=>'padding-top:1em;'},"$label_des"),"\n"; print "\n"; print $q->div({-class=>'content2'}, "Falls Sie keinen e-Mail Bestätigungs Code erhalten haben, überprüfen Sie bitte Ihre bei der Registrierung angegebene e-Mail Adresse und/oder den Spam Bereich in Ihrem e-Mail Programm. Hier können Sie erneut einen ",$q->a({-style=>"color:#$bgcolor1;",-href=>"$varenv->{wwwhost}?sharee_edit=send_email$session_and"},"e-Mail Code anfordern")),"\n"; }else{ print $q->div({-class=>'content2', -style=>'color:gray;'}, "* E-Mail Bestätigungs-Code wurde bereits erfolgreich eingegeben."),"\n"; } if(!$ctrel->{int13}){ my $des = "SMS Bestätigungscode"; my $key = "confirm_smscode"; my $label_des="* $des"; $label_des = "Bitte \"$des\" korrigieren" if($R::failure); print $q->label({-for=>"$key", -style=>'padding-top:1em;'},"$label_des"),"\n"; print "\n"; print $q->div({-class=>'content2'}, "Falls Sie keinen SMS Bestätigungs Code erhalten haben, überprüfen Sie bitte Ihre bei der Registrierung angegebene mobile Telefonnummer. Hier können Sie erneut einen ",$q->a({-style=>"color:#$bgcolor1;",-href=>"$varenv->{wwwhost}?sharee_edit=send_sms$session_and"},"SMS Code anfordern")),"\n"; }else{ print $q->div({-class=>'content2', -style=>'color:gray;'}, "* SMS Bestätigungs-Code wurde bereits erfolgreich eingegeben."),"\n"; } my $button_name = "Weiter"; print $q->div({-style=>'margin-top:2em;text-align:center;'},""),"\n"; print $q->end_form,"\n"; }else{ my $postaction = "/$varenv->{mandant}/Account/$varenv->{accounting_2}"; if($ctrel->{c_id} && $path =~ /$varenv->{accounting_2}|$varenv->{accounting_3}|$varenv->{profile}/){ $postaction = "/$varenv->{mandant}/Account/$varenv->{accounting_3}"; }elsif($path =~ /$varenv->{accounting_1}/){ $postaction = "/$varenv->{mandant}/Account/$varenv->{accounting_1_5}"; }elsif($ctrel->{c_id} && $path =~ /$varenv->{accounting_1}/){ $postaction = "/$varenv->{mandant}/Account/$varenv->{accounting_2}"; } print $q->start_form(-name=>'accountscreen', -action=>"$postaction$session"),"\n"; print $q->hidden(-name=>"sessionid",-override=>1,-value=>"$R::sessionid") if($R::sessionid); print "
\n"; my $i=0; my @tpl_order; foreach(@split_lates){ $i++; if($i==1){ if($R::confirm_success){ print $q->div({-class=>'content_title3'},"Anmeldung bestätigt"),"\n"; }else{ print $q->div({-class=>'content_title3'},"$tpl01->{tpl_name}"),"\n"; } if($path =~ /$varenv->{accounting_1}/){ print $q->div({-class=>'content2'}, "Bitte füllen Sie dieses Formular vollständig aus und hinterlegen im nächsten Schritt wahlweise Ihre Lastschriftdaten (für Konten mit IBAN DE) oder Kreditkartendaten (VISA oder Mastercard). Bitte halten Sie die Daten immer auf dem neuesten Stand.

Nach Abschluss der Registrierung erhalten Sie sowohl auf die von Ihnen hinterlegte E-Mail als auch auf die Mobiltelefonnummer jeweils eine Nachricht, die Sie beide zwingend bestätigen müssen."),"\n"; } if($path =~ /$varenv->{accounting_2}/){ if($tpl_id == 302008){ print $q->div({-class=>'content2'}, "Wähle die Zahlungsart."),"\n"; }else{#old SEPA only style print $q->div({-class=>'content2'}, "Durch das SEPA Mandat können wir die Leihrad Buchungen bequem einziehen."),"\n"; } } } if($i==2){ print $q->div({-class=>'content_title3'},"$tpl02->{tpl_name}"),"\n"; print $q->div({-class=>'content2'}, "Das Login besteht aus Ihrer e-Mail Adresse und einem mindestens 8 stelligen Passwort."),"\n"; } @tpl_order = split /,/,$_; my $scol = "itime"; foreach (@tpl_order){ my ($key,$des,$size) = split /=/,$_; $ctrel->{$key} = $q->unescapeHTML("$ctrel->{$key}"); $ctrel->{$key} = $lb->newline($ctrel->{$key},"","1"); if($ctrel->{int03} && $path =~ /$varenv->{accounting_3}|$varenv->{profile}/){ if(1==1){ if($key =~ /ct_name/){ if($ctrel->{int12}){ print $q->div({-class=>'content2', -style=>'color:#c83434;'}, "Hinweis: Wir mussten Ihren Zugang zu den Mieträdern sperren, da ein Problem mit Ihren Zahlungsdaten vorliegt. Bitte aktualisieren Sie Ihre Zahlungsdaten.
Bei Rückfragen zur Registrierung oder Freischaltung wenden Sie sich bitte an hotline\@sharee.bike ."),"\n"; }else{ print $q->div({-class=>'content2'}, "Herzlich Willkommen. Sie können nach erfolgreicher Anmeldung unter dem Menue \"Radstandorte\" ein Leihrad mieten."),"\n"; } print $q->div({-class=>'content2'}, "Nach der Mietradnutzung haben Sie hier die Möglichkeit die Mietvorgänge einzusehen und gebuchte Rechnungen als PDF herunterzuladen."),"\n"; print $q->div({-class=>'content2'}, "$bonus_ak"),"\n" if($R::success && $R::success eq "txt15"); }elsif($key =~ /barcode/){ if($cttpos_count){ print $q->div({-style=>'padding-top:1.5em;font-weight:bold;'},"Folgende Positionen liegen zur nächsten Abbuchung vor"),"\n"; my @tpl_posorder = ("txt01=Beschreibung","int04=Station","ct_name=(Rad) Nummer","int26=CO2","int02=Betrag"); my $j=0; my $nx=0; my $sum = 0; print "
\n"; print $q->start_table({-style=>'margin:15px 0;', -border=>'0', -width=>'auto',-align=>'left', -cellpadding=>'3', -cellspacing=>'0'}),"\n"; print $q->Tr(),"\n"; foreach my $id (sort { lc($cttpos->{$b}->{$scol}) cmp lc($cttpos->{$a}->{$scol}) } keys(%$cttpos)){ $j++; $nx++; my $pricing = {}; my $counting = {}; if($cttpos->{$id}->{int35} && $cttpos->{$id}->{start_time} && $cttpos->{$id}->{end_time}){ ($pricing,$counting) = $pri->counting_rental($varenv,$cttpos->{$id}); } print $q->Tr(),"\n"; foreach (@tpl_posorder){ my ($key,$val) = split /=/,$_; my $occupied_style = "background-color:#fcfdfb;"; $occupied_style = "background-color:#f4f1ee;" if($nx %= 2); #$occupied_style = "color:#ff1493;" if($cttpos->{$id}->{txt10} =~ /occupied|requested/); $occupied_style = "color:#ff1493;" if($cttpos->{$id}->{int10} == 2 || $cttpos->{$id}->{int10} == 3); if($key eq "txt01"){ #print $q->td({-class=>'tdtxt', -style=>"$occupied_style"},"$cttpos->{$id}->{$key}"); print "\n"; if($cttpos->{$id}->{txt01}){ $cttpos->{$id}->{$key} =~ s/\
/;   /g; print "$cttpos->{$id}->{$key}
\n"; } if($pricing->{start_time} && $pricing->{end_time}){ $pricing->{start_time} = $lb->time4de($pricing->{start_time},"1"); $pricing->{end_time} = $lb->time4de($pricing->{end_time},"1"); my $rental_time = ""; $rental_time = "(rental debug: $pricing->{real_clock} $pricing->{freed_time})" if($debug); print $q->span("→ $pricing->{start_time}
← $pricing->{end_time} $rental_time"); } print "\n"; }elsif($key =~ /int04/){ if($cttpos->{$id}->{int09}){#if Tarifnr then bike #print $q->td({-class=>'tdint', -style=>"$occupied_style"},"Station $cttpos->{$id}->{$key}"); print "\n"; my $return_station = ""; $return_station = "← $cttpos->{$id}->{txt13}$cttpos->{$id}->{int04}" if($cttpos->{$id}->{txt13} && $cttpos->{$id}->{int04}); print $q->span("Station
→ $cttpos->{$id}->{txt12}$cttpos->{$id}->{int06}
$return_station"); print "\n"; }else{ print $q->td({-class=>'tdint', -style=>"$occupied_style"},"$cttpos->{$id}->{$key}"); } }elsif($key =~ /ct_name/){ if($cttpos->{$id}->{int09}){#if Tarifnr then bike print $q->td({-class=>'tdint', -style=>"$occupied_style"},"Rad
$cttpos->{$id}->{$key}"); }else{ print $q->td({-class=>'tdint', -style=>"$occupied_style"},"$cttpos->{$id}->{$key}"); } }elsif($key eq "int26"){ my $co2saving = ""; if($cttpos->{$id}->{int26}){ $co2saving = "Einsparung
"; my $co2diff = $pri->co2calc($cttpos->{$id}); #my $sprit_price = $pri->sprit2calc($cttpos->{$id}); $co2saving .= "$co2diff kg CO²
"; #$co2saving .= "$sprit_price EUR
" if($sprit_price !~ /-/); $cttpos->{$id}->{int26} =~ s/\./,/; $co2saving .= "bei $cttpos->{$id}->{int26} KM"; } print $q->td({-class=>'tdint', -style=>"$occupied_style", -nowrap=>1},"$co2saving"); }elsif($key eq "int02"){ if($cttpos->{$id}->{int35} && $cttpos->{$id}->{start_time} && $cttpos->{$id}->{end_time}){ my $gesamt = 0; $sum += $pricing->{total_price}; $gesamt = $lb->round($pricing->{total_price}); $gesamt = sprintf('%.2f', $gesamt); $gesamt =~ s/\./,/; my $rabatt = ""; $rabatt = "$pricing->{discount}" if($pricing->{discount}); print $q->td({-class=>'tdint', -style=>"$occupied_style", -nowrap=>1},"$rabatt $gesamt €"),"\n"; }else{ my $gesamt = 0; my $rabatt = ""; ($gesamt,$rabatt) = $pri->price2calc($cttpos->{$id}); $sum += $gesamt; $gesamt = $lb->round($gesamt); $gesamt = sprintf('%.2f',$gesamt); print $q->td({-class=>'tdint', -style=>"$occupied_style", -nowrap=>1},"$rabatt $gesamt €"); } } } } if($j==0){ print $q->Tr(),"\n"; print $q->td({-class=>'tdint'},"Keine Daten vorhanden"); }else{ $sum = $lb->round($sum); $sum = sprintf('%.2f',$sum); print $q->Tr(),"\n"; print $q->td({-class=>'tdint', -colspan=>3},""); print $q->td({-class=>'tdint'},"Gesamt"); print $q->td({-class=>'tdint'},$q->b("$sum €")); } print $q->end_table; print "
\n"; }else{ print $q->div({-class=>'content2',-style=>'padding:0.5em 0;'}, "Aktuell liegen keine Mietvorgänge vor."),"\n"; }#end if $cttpos_count my $i=0; my $dtext = ""; print "
\n"; foreach my $id (sort { $ctt_all->{$b}->{ct_name} cmp $ctt_all->{$a}->{ct_name} } keys(%$ctt_all)){ if( -f "$ctt_all->{$id}->{basedir}/pdfinvoice/Rechnung-$ctt_all->{$id}->{operator}-$ctt_all->{$id}->{ct_name}.pdf" && $ctt_all->{$id}->{ct_name} =~ /\d/ && $coo){ #print "$ctt_all->{$id}->{basedir}/pdfinvoice/Rechnung-$ctt_all->{$id}->{operator}-$ctt_all->{$id}->{ct_name}.pdf && $ctt_all->{$id}->{ct_name} =~ /\d/ && $coo
"; $i++; my $invoice_time = $ctt_all->{$id}->{invoice_time} || $ctt_all->{$id}->{mtime}; $invoice_time = $lb->time4de($invoice_time,0); #$varenv->{operator} only defined in sharee my $webtarget = "_blank"; my $dtext = ""; if($varenv->{syshost} =~ /app/){ $webtarget = "_self"; $dtext = "(Der PDF download öffnet je nach System/Konfiguartion einen externen PDF-Viewer oder Webbrowser)"; } if($i==1){ print $q->div({-id=>'Rechnungen',-style=>'font-weight:bold;'},"Ihre Rechnungen"),"\n"; print $q->div({-style=>'padding:0.5em 0;'},"$dtext"),"\n"; } print $q->div({-style=>'padding:0.7em 0;border:0px solid #cccccc;'},$q->a({-href=>"$ctt_all->{$id}->{wwwhost}/FileOut?file=Rechnung-$ctt_all->{$id}->{operator}-$ctt_all->{$id}->{ct_name}.pdf&sessionid=$coo", -target=>"$webtarget" , -type=>'application/octet-stream', -style=>'text-decoration:underline;'}, $q->span({-class=>"bi bi-file-earmark-pdf"}), "Rechnung $ctt_all->{$id}->{ct_name}.pdf"), "   ($invoice_time)"),"\n"; } } print "
\n"; } } } #------------------------------------------------------ my $label_des="* $des"; my $autofocus=""; if($key =~ /txt15|txt19/){ $label_des="$des"; } if($key =~ /txt/ && $size eq "select" && $des eq "Land"){ my $country = $lb->country_code(); my $country_all = $lb->country_code_all(); $ctrel->{$key} = "DE" if(!$ctrel->{$key}); my @_valxx = (); foreach (sort { $country->{$a} cmp $country->{$b} } keys (%$country)){ push @_valxx, "$_:$country->{$_}"; } foreach (sort { $country_all->{$a} cmp $country_all->{$b} } keys (%$country_all)){ push @_valxx, "$_:$country_all->{$_}"; } print $q->label({-for=>"$key",-style=>'padding-top:15px;'},"$label_des"),"\n"; print $but->selector_class("$key","form-control","","$ctrel->{$key}",@_valxx); }elsif($key =~ /txt/ && $size eq "select"){ my @_valxx = split(/,/,$varenv->{$des}); print $q->label({-for=>"$key",-style=>'padding-top:15px;'},"$label_des"),"\n"; print $but->selector_class("$key","form-control","","$ctrel->{$key}",@_valxx); #}elsif($key =~ /txt/ && !$R::confirm_success){ }elsif($key =~ /txt/){ my $required="required"; #start failure messages #Gutschein if($key =~ /txt16/ && $ctrel->{c_id}){ if($R::failure =~ /^txt16/){ $autofocus = "autofocus"; $label_des = "Der Gutscheincode ist nicht vorhanden."; } elsif($R::failure =~ /conflict_txt16/){ $autofocus = "autofocus"; $label_des = "Der Gutscheincode wurde bereits hinterlegt."; }else{ $required=""; $label_des = "$des"; } } elsif($key eq "txt08" && $R::failure && $R::failure =~ /conflict_txt08/){ $autofocus = "autofocus"; my ($failkey,$failval) = split(/=/,$R::failure); $label_des = "Achtung, es existiert bereits ein Account mit der e-Mail Adresse: $failval"; $ctrel->{$key} = $R::conflict_txt08; } elsif(($R::failure && $R::failure =~ /^$key/) || ($ctrel->{txt31} && $ctrel->{txt31} =~ /$key/)){ $autofocus = "autofocus"; $label_des = "Bitte \"$des\" Angabe korrigieren"; $label_des = "Für das \"$des\" liegt ein Fehler vor." if($key eq "txt04"); $label_des = "Bitte mobile Telefon Nr. mit Ländervorwahl, Beispiel: +49 170 12345678" if($key eq "txt07"); }#end failure messages if($key eq "txt15"){ if($R::failure =~ /^txt15/){ $autofocus = "autofocus"; $bonus_desc = "$bonus_avail"; } if($R::failure =~ /conflict_txt15/){ $bonus_desc = "$bonus_conflict"; } my $saved_coupon = ""; if($project eq "Konstanz" && $ctadrcoupon->{sharee_kn}->{txt15}){ $bonus_desc = "Bonusnummer gespeichert"; $saved_coupon = "$ctadrcoupon->{sharee_kn}->{txt15}"; } if($project eq "Freiburg" && $ctadrcoupon->{sharee_bvb}->{txt15} && $ctadrcoupon->{sharee_bvb}->{txt15} !~ /-/){ $bonus_desc = "Freischaltcode gespeichert"; $saved_coupon = "$ctadrcoupon->{sharee_bvb}->{txt15}"; } print $q->label({-for=>"$key", -style=>'padding-top:1.5em;'},"$bonus_desc"),"\n"; print "\n"; print $q->div(" "); foreach my $opid (keys(%$ctadrcoupon)){ if($ctadrcoupon->{$opid}->{txt15}){ print $q->div("$bonus_saved $ctadrcoupon->{$opid}->{oprefix}-$ctadrcoupon->{$opid}->{txt15}"),"\n"; } } } elsif($key eq "txt04"){ if($R::failure && $R::failure =~ /confirm_txt04/){ $autofocus = "autofocus"; $label_des = "Die Passwort Wiederholung ist fehlerhaft. Bitte korrigieren Sie Ihre Eingabe."; } my $pw = "xxxxxxxx"; $pw = "" if(!$ctrel->{c_id}); print $q->label({-for=>"$key", -style=>'padding-top:1.5em;'},"$label_des"),"\n"; print "
\n"; print $q->label({-for=>"confirm_$key"},"* Passwort wiederholen"),"\n"; print "\n"; print $q->div({-style=>'text-align:left;color:grey;'}, "", "Passwort anzeigen"),"\n" if($pw ne "xxxxxxxx"); }else{ #all other input textfields print $q->label({-for=>"$key", -style=>'padding-top:1.5em;'},"$label_des"),"\n"; print "\n"; } } #end $key =~ /txt/ #all int checkboxes disabled because of AGB downunder elsif($key =~ /int/ && $size eq "checkbox"){ if(($R::failure && $R::failure =~ /^$key/) || ($ctrel->{txt31} && $ctrel->{txt31} =~ /$key/)){ $autofocus = "autofocus"; $label_des = "Bitte \"$des\" bestätigen"; } my $required=""; #sharee AGB global new if($key eq "int14" && $size eq "checkbox"){ $required=""; #bootstrap 5 my $sharee_agb = "\n"; print $q->label({-for=>"$key", -style=>'padding-top:20px;'},"$label_des"),"\n"; print $q->div({-id=>"$key"},$but->checkbox("1","$key","$ctrel->{$key}","","$required","$autofocus"), "  $sharee_agb"),"\n"; print $q->hidden(-name=>"$key",-override=>1,-value=>"null"); my $sharee_privacy = "\n"; print $q->div({-style=>'padding-top:10px;'},"$sharee_privacy"),"\n"; }elsif(1==2 && $key =~ /int02/){#newsletter print $q->label({-for=>"$key", -style=>'padding-top:10px;'},""),"\n"; print $q->div({-id=>"$key"},$but->checkbox("1","$key","$ctrel->{$key}","","$required"), " $des"),"\n"; print $q->hidden(-name=>"$key",-override=>1,-value=>"0"); }else{ print $q->label({-for=>"$key", -style=>'padding-top:10px;'},""),"\n"; print $q->div({-id=>"$key"},$but->checkbox("1","$key","$ctrel->{$key}","","$required"), " $des"),"\n"; print $q->hidden(-name=>"$key",-override=>1,-value=>"0"); } }elsif($key =~ /int/){ if(($R::failure && $R::failure =~ /^$key/) || ($ctrel->{txt31} && $ctrel->{txt31} =~ /$key/)){ $autofocus = "autofocus"; $label_des = "Bitte \"$des\" bestätigen"; print $q->label({-for=>"$key", -style=>'padding-top:10px;'},"$label_des"),"\n"; } if($key =~ /int03/){ print $q->div({-class=>'content2'}, " Wählen Sie Ihre Zahlungsart aus.
Das Abbuchungsverfahren (Erteilung eines SEPA Mandats) kann nur mit einem Girokonto in Deutschland erfolgen (IBAN beginnt mit DE). Es werden nur folgende Kreditkarten akzeptiert: VISA und MasterCard.
Die Nutzungsgebühren werden gesammelt i.d.R. wöchentlich mit dem Verwendungszweck „Mietrad“ von unserem Zahlungsdienstleister payone eingezogen. "),"\n"; my $incasso="1"; my $creditcard="2"; my $checked_incasso; my $checked_creditcard; $checked_incasso=1 if($ctrel->{$key} == 1 || $ctrel->{$key} == 3); $checked_creditcard=2 if($ctrel->{$key} == 2); print $q->div({ -class=>'radio', -style=>'padding-top:20px;' },$but->radiobox_vertical("$key","$incasso","$checked_incasso",$q->img({-id=>"pic-payment" ,-style=>'height:50px;', -title=>'Abbuchung',-src=>"$varenv->{metahost}/img/payment-incasso2.png"}))),"\n"; print $q->div({ -class=>'radio', -style=>'padding-bottom:20px;' },$but->radiobox_vertical("$key","$creditcard","$checked_creditcard",$q->img({-id=>"pic-payment" ,-style=>'height:30px;', -title=>'Kreditkarte', -src=>"$varenv->{metahost}/img/payment-creditcard2.png"}))),"\n"; print $q->hidden(-name=>"$key",-override=>1,-value=>"null"); } } if($key eq "txt16" && $ctrel->{c_id}){ print $q->div({-style=>'margin-top:1em;text-align:center;'},""),"\n"; } } } if(($R::failure && $R::failure =~ /\w+/ && $R::failure !~ /txt15|txt16/) || ($ctrel->{txt31} && $ctrel->{txt31} =~ /\w/)){ print $q->div({-class=>'content2', -style=>"color:$red"}, "* Achtung!
Bitte überprüfen Sie Ihre Profildaten, damit wir das Fahrradmietsystem freischalten können."),"\n"; } if($path !~ /$varenv->{accounting_3}|$varenv->{profile}/){ if($ctrel->{c_id}){ my $button_name = "Speichern"; $button_name = "Weiter" if($path =~ /$varenv->{accounting_1_5}|$varenv->{accounting_2}/); print $q->hidden(-name=>"tinkc_id",-override=>1,-value=>"$ctrel->{c_id}"); print $q->div({-style=>'margin-top:1em;text-align:center;'},""),"\n"; if($path =~ /$varenv->{accounting_1}/){ print $q->div({-style=>'margin-top:3em;text-align:center;'},$q->a({-style=>"color:#$bgcolor1;font-size:1.2em;", -role=>"button", -href=>"/$viewsel[0]/Account?sharee_edit=delete_account1$session_and"}, "Delete account?")),"\n"; } }else{ print $q->div({-style=>'margin-top:1em;text-align:center;'},""),"\n"; } } }#ende e-Mail iif print $q->div({-class=>'content2', -style=>'margin-top:2em;'}, "Bei Rückfragen zur Registrierung oder Freischaltung wenden Sie sich bitte an hotline\@sharee.bike ."),"\n" if($path =~ /$varenv->{accounting_1}|$varenv->{accounting_3}/); print "
\n"; print $q->end_form,"\n"; print $q->div({-style=>'position:fixed;bottom:2%;right:2%;z-index:10;font-size:13px;'},"--> $varenv->{syshost} | $varenv->{merchant_id} | $bgcolor1 | template -> $node_meta->{tpl_name},$tpl_id ($template01,$template02) | $users_sharee->{c_id}"),"\n" if($users_sharee->{c_id} eq $dbt->{copri_conf}->{superu_id} || $dbt->{copri_conf}->{stage} eq "test"); print "
"; } 1;