From c8d7b562bdc1e4f3dc2290aa61be3e38302cfa6d Mon Sep 17 00:00:00 2001 From: ragu Date: Wed, 4 May 2022 08:02:59 +0200 Subject: [PATCH] sig prefix and rental if reserved start --- copri4/main/src/Mod/APIfunc.pm | 48 +++++++----- copri4/main/src/Mod/APIjsonserver.pm | 82 +++++++++++++-------- copri4/main/src/Mod/APIsigoclient.pm | 77 ++++++++++++------- copri4/main/src/Mod/DBtank.pm | 4 +- copri4/main/src/Mod/Payment.pm | 6 +- copri4/main/src/Mod/Prelogic.pm | 39 ++-------- copri4/main/src/Mod/Pricing.pm | 45 ++--------- copri4/main/src/Tpl/Karte.pm | 2 +- copri4/main/src/Tpl/TransPositionen.pm | 6 +- copri4/main/src/scripts/sigo_client.pl | 12 +-- copri4/main/src/scripts/tests/index.pl | 11 ++- copri4/shareeapp-operator/src/Lib/Mlogic.pm | 4 +- copri4/shareeweb-project/src/Lib/Mlogic.pm | 4 +- 13 files changed, 172 insertions(+), 168 deletions(-) diff --git a/copri4/main/src/Mod/APIfunc.pm b/copri4/main/src/Mod/APIfunc.pm index 03aa17f..a29cb27 100755 --- a/copri4/main/src/Mod/APIfunc.pm +++ b/copri4/main/src/Mod/APIfunc.pm @@ -786,8 +786,9 @@ sub fetch_bike_tariff { my $bike = shift; my $owner = shift; - my $bike_id = ""; - $bike_id = $1 if($bike =~ /(\d+)/); + my $bike_id = $bike || ""; + $bike_id =~ s/S[1-9]X/SX/; + $bike_id = $1 if($bike_id =~ /(\d+)/); my $main_ids = ""; my ($bike_group,$user_group,$tariff_content,$user_tour) = $self->fetch_tariff($varenv->{dbname},$auth,""); @@ -872,11 +873,11 @@ sub booking_request(){ my $ct_tariff = shift; my $owner = shift || ""; my $gps = shift || ""; - my $reserveid = shift || ""; + my $sig_book = shift || {}; my $dbh = ""; my $bike_id = ""; - $bike_id = $1 if($bike =~ /(\d+)$/); + $bike_id = $1 if($bike_id =~ /(\d+)$/); my $pos_id=""; my $now_dt = strftime "%Y-%m-%d %H:%M", localtime; @@ -935,7 +936,7 @@ sub booking_request(){ if($ctt->{c_id}){ #2 = "requested" - $pos_id = $dbt->insert_pos($dbh,$ctt->{c_id},$ct_bike,$auth,$ct_tariff,$now_dt,$bike,"2",$owner,$reserveid); + $pos_id = $dbt->insert_pos($dbh,$ctt->{c_id},$ct_bike,$auth,$ct_tariff,$now_dt,$bike,"2",$owner,$sig_book); $bw->log("booking_request insert_pos:",$pos_id,""); if($pos_id){ @@ -1003,7 +1004,7 @@ sub booking_update(){ my $varenv = shift; my $auth = shift; my $owner = shift || 0; - my $rentalid = shift || ""; + my $sig_book = shift || {}; my $state = $q->escapeHTML($q->param('state')) || ""; my $lock_state = $q->escapeHTML($q->param('lock_state')) || ""; @@ -1012,8 +1013,12 @@ sub booking_update(){ my $rows = 0; my $user_agent = $q->user_agent(); my $record_pos = { c_id => 0 };#if fails - my $bike = $q->param('bike'); - my $bike_id = $1 if($q->escapeHTML($q->param('bike')) =~ /(\d+)/); + #my $bike = $q->param('bike'); + #my $bike_id = $1 if($q->escapeHTML($q->param('bike')) =~ /(\d+)/); + my $bike = $q->escapeHTML($q->param('bike')) || ""; + my $bike_id = $bike; + $bike_id =~ s/S[1-9]X/SX/; + $bike_id = $1 if($bike_id =~ /(\d+)/); my $state_key = 0; my $state_text = ""; @@ -1146,7 +1151,7 @@ sub booking_update(){ $update_pos->{owner} = "$owner"; $update_pos->{int10} = "$state_key"; - $update_pos->{txt11} = "$rentalid"; + $update_pos->{txt11} = "$sig_book->{rentalid}" if($sig_book->{rentalid}); $rows = $dbt->update_record($dbh,$update_pos,$record_pos); if($rows > 0){ @@ -1174,7 +1179,7 @@ sub booking_update(){ $update_pos->{int41} = "$counting->{int41}" if(looks_like_number($counting->{int41})); $update_pos->{int10} = "$state_key"; - $update_pos->{txt11} = "$rentalid"; + $update_pos->{txt11} = "$sig_book->{rentalid}" if($sig_book->{rentalid}); $rows = $dbt->update_record($dbh,$update_pos,$record_pos); $booking_values->{response_state} = "OK: available bike " . $q->param('bike') . ", still locked"; @@ -1210,7 +1215,7 @@ sub booking_update(){ $update_cc->{int04} = "$stations_raw->{$id}->{int04}"; $update_pos->{int24} = "1"; $update_pos->{int10} = "$state_key"; - $update_pos->{txt11} = "$rentalid"; + $update_pos->{txt11} = "$sig_book->{rentalid}" if($sig_book->{rentalid}); $update_cc->{txt06} = "$gps";#end content coordinates $update_pos->{txt06} = "$gps";#end pos coordinates $update_pos->{int21} = "$gps_age_minutes"; @@ -1351,7 +1356,8 @@ sub booking_update(){ owner => "$owner", }; - if($q->param('voltage') && $q->param('voltage') =~ /(\d+)/){ + #only by system=Ilockit + if($record_pos->{int11} eq "2" && $q->param('voltage') && $q->param('voltage') =~ /(\d+)/){ $update_cc->{int14} = $1; $self->service_automatic($q) if($1 <= 50); } @@ -1710,6 +1716,14 @@ sub bikes_available(){ my $auth = shift; my $authed = 0; + my $station = $q->escapeHTML($q->param('station')) || ""; + my $station_id = $1 if($station =~ /(\d+)/); + + my $bike = $q->escapeHTML($q->param('bike')) || ""; + my $bike_id = $bike; + $bike_id =~ s/S[1-9]X/SX/; + $bike_id = $1 if($bike_id =~ /(\d+)/); + #my $users_serviceapp = $dbt->select_users($dbh,$auth->{c_id},"and int09=1"); my $return={}; my $pref = { @@ -1726,13 +1740,11 @@ sub bikes_available(){ $main_ids =~ s/[a-z_-]+//ig;#should work also without Trenner $pref = { %$pref, main_id => "IN::($main_ids)" }; - if($q->param('station')){ - my $station_id = $1 if($q->param('station') =~ /(\d+)/); - $pref = { %$pref, int04 => "=::" . $q->escapeHTML($station_id) } if(looks_like_number($station_id)); + if(looks_like_number($station_id)){ + $pref = { %$pref, int04 => "=::" . $station_id }; } - if($q->param('bike')){ - my $bike_id = $1 if($q->param('bike') =~ /(\d+)/); - $pref = { %$pref, barcode => "=::" . $q->escapeHTML($bike_id) } if(looks_like_number($bike_id)); + if(looks_like_number($bike_id)){ + $pref = { %$pref, barcode => "=::" . $bike_id }; } my $record = $dbt->fetch_record($dbh,$pref) if(ref($bike_group) eq "ARRAY" && @{$bike_group}[0]); diff --git a/copri4/main/src/Mod/APIjsonserver.pm b/copri4/main/src/Mod/APIjsonserver.pm index 528b777..f898f78 100755 --- a/copri4/main/src/Mod/APIjsonserver.pm +++ b/copri4/main/src/Mod/APIjsonserver.pm @@ -192,8 +192,9 @@ elsif($q->param('request') eq "booking_request"){ if(ref($auth) eq "HASH" && $auth->{authcookie}){ my $bike = $q->escapeHTML($q->param('bike')) || ""; if($bike){ - my $bike_id = ""; - $bike_id = $1 if($bike =~ /(\d+)/); + my $bike_id = $bike; + $bike_id =~ s/S[1-9]X/SX/; + $bike_id = $1 if($bike_id =~ /(\d+)/); #check count of occcupied/requested bikes my $record = $apif->user_bikes_occupied($q,$authraw); @@ -238,16 +239,18 @@ elsif($q->param('request') eq "booking_request"){ my $ct_bike = {}; my $ct_tariff = {}; ($ct_bike,$ct_tariff) = $apif->fetch_bike_tariff(\%varenv,$authraw,$bike,$aowner); + + my $sig_book = { + rentalId => "", + reservationId => "" + }; if($ct_bike->{barcode} && $ct_tariff->{barcode}){ - my $reserveid = ""; - #disabled - #TODO, check if we need prios revervation for rental. After work maybe enable - if(1==2 && $ct_bike->{int11} == 3){ - my $sigo_book = $si->sigo_booking(\%varenv,$auth,$ct_bike,"reserve"); - $reserveid = $sigo_book->{reservationId} if($sigo_book->{reservationId}); + #sig reservation. not mandatory + if($ct_bike->{int11} == 3){ + $sig_book = $si->sig_booking(\%varenv,$auth,$ct_bike,"","reserve"); } - $response_book = $apif->booking_request(\%varenv,$authraw,$bike,$ct_bike,$ct_tariff,$aowner,$gps,$reserveid); + $response_book = $apif->booking_request(\%varenv,$authraw,$bike,$ct_bike,$ct_tariff,$aowner,$gps,$sig_book); }elsif(!$ct_tariff->{barcode}){ $response->{response_state} = "Failure 2089: booking bike $bike fails, no user tariff available"; $response->{response_text} = "Reservierungsfehler Fahrrad Nr. $bike. Es konnte kein Mietrad Tarif gefunden werden."; @@ -268,13 +271,13 @@ elsif($q->param('request') eq "booking_request"){ }; my $dbh = ""; $ctpos = $dbt->fetch_tablerecord($dbh,$booking_pos); - my $rentalid = ""; + #sig booking if($ctpos->{int11} == 3){ - my $sigo_book = $si->sigo_booking(\%varenv,$auth,$ctpos,"rental"); - $rentalid = $sigo_book->{rentalId} if($sigo_book->{rentalId}); + #usecase with reservationId (in ctpos) is in sig not defined, thats because using ct_bike.txt22 + $sig_book = $si->sig_booking(\%varenv,$auth,$ct_bike,$ctpos,"rental"); } - (my $rows, my $booking_values) = $apif->booking_update($q,\%varenv,$authraw,$aowner,$rentalid); + (my $rows, my $booking_values) = $apif->booking_update($q,\%varenv,$authraw,$aowner,$sig_book); $response = {%$response, %$booking_values}; }else{ $response = {%$response, %$response_book}; @@ -313,8 +316,9 @@ elsif($q->param('request') eq "booking_cancel" || $q->param('request') eq "booki if(ref($auth) eq "HASH" && $auth->{authcookie}){ my $bike = $q->escapeHTML($q->param('bike')) || ""; if($bike){ - my $bike_id = ""; - $bike_id = $1 if($bike =~ /(\d+)/); + my $bike_id = $bike; + $bike_id =~ s/S[1-9]X/SX/; + $bike_id = $1 if($bike_id =~ /(\d+)/); my $ctpos = {}; my $booking_pos = { @@ -326,32 +330,38 @@ elsif($q->param('request') eq "booking_cancel" || $q->param('request') eq "booki }; $ctpos = $dbt->fetch_tablerecord($dbh,$booking_pos); + my $sig_book = { + rentalId => "", + reservationId => "" + }; + if($q->param('request') eq "booking_update" && $q->param('state') && $q->param('state') =~ /canceled/){ + my $booking_values = {}; - my $reserveid = ""; if($ctpos->{int11} == 3){ - my $sigo_book = $si->sigo_booking(\%varenv,$auth,$ctpos,"reserve_end"); - $reserveid = $sigo_book->{reservationId} if($sigo_book->{reservationId}); + #this sigo request is still not defined + #$sig_book = $si->sig_booking(\%varenv,$auth,"",$ctpos,"reserve_end"); + $response->{response_state} = "Failure: sigo bike reservation can not be canceled on sigo"; + $response->{response_text} = "Abbruch, die Reservierung kann nicht storniert werden"; + ($rows, $booking_values) = $apif->booking_update($q,\%varenv,$authraw,$aowner,$sig_book); + }else{ + ($rows, $booking_values) = $apif->booking_update($q,\%varenv,$authraw,$aowner,$sig_book); } - - ($rows, my $booking_values) = $apif->booking_update($q,\%varenv,$authraw,$aowner,$reserveid); $response = {%$response, %$booking_values}; + }elsif($q->param('request') eq "booking_update" && (($q->param('state') && $q->param('state') =~ /occupied|available/) || ($q->param('lock_state') && $q->param('lock_state') =~ /locking|locked|unlocking|unlocked/))){ - my $rentalid = ""; if($ctpos->{int11} == 3){ if($q->param('state') eq "occupied"){ - my $sigo_book = $si->sigo_booking(\%varenv,$auth,$ctpos,"rental"); - $rentalid = $sigo_book->{rentalId} if($sigo_book->{rentalId}); + $sig_book = $si->sig_booking(\%varenv,$auth,"",$ctpos,"rental"); } if($q->param('state') eq "available"){ - my $sigo_book = $si->sigo_booking(\%varenv,$auth,$ctpos,"rental_end"); - $rentalid = $sigo_book->{rentalId} if($sigo_book->{rentalId}); + $sig_book = $si->sig_booking(\%varenv,$auth,"",$ctpos,"rental_end"); } } - ($rows, my $booking_values) = $apif->booking_update($q,\%varenv,$authraw,$aowner,$rentalid); + ($rows, my $booking_values) = $apif->booking_update($q,\%varenv,$authraw,$aowner,$sig_book); $response = {%$response, %$booking_values}; #keep in mind, it works on operator dependency @@ -423,8 +433,7 @@ elsif($q->param('request') eq "booking_cancel" || $q->param('request') eq "booki }else{ $response->{response_state} = "Failure: no bike defined"; - $response->{response_text} = "Abbruch, es wurde keine Fahrrad Nummer angegeben"; - $response->{timeCode} = 0;#if fails + $response->{response_text} = "Abbruch, es wurde keine Fahrrad Nummer angegeben"; } }else{ $response->{response_state} = "Failure 1001: authcookie not defined"; @@ -747,7 +756,13 @@ elsif($q->param('request') eq "service_done"){ my ($auth,$authraw) = $apif->auth_verify($q); my $station_id = $1 if($q->param('station') =~ /(\d+)/); - my $bike_id = $1 if($q->param('bike') =~ /(\d+)/); + #my $bike_id = $1 if($q->param('bike') =~ /(\d+)/); + + my $bike = $q->escapeHTML($q->param('bike')) || ""; + my $bike_id = $bike; + $bike_id =~ s/S[1-9]X/SX/; + $bike_id = $1 if($bike_id =~ /(\d+)/); + $response->{uri_operator} = "$varenv{wwwhost}"; if(ref($auth) eq "HASH" && $auth->{authcookie}){ @@ -883,9 +898,14 @@ elsif($q->param('request') eq "service_work"){ my ($auth,$authraw) = $apif->auth_verify($q); my $station_id = ""; - my $bike_id = ""; $station_id = $1 if($q->param('station') =~ /(\d+)/); - $bike_id = $1 if($q->param('bike') =~ /(\d+)/); + #$bike_id = $1 if($q->param('bike') =~ /(\d+)/); + + my $bike = $q->escapeHTML($q->param('bike')) || ""; + my $bike_id = $bike; + $bike_id =~ s/S[1-9]X/SX/; + $bike_id = $1 if($bike_id =~ /(\d+)/); + $response->{uri_operator} = "$varenv{wwwhost}"; my $node = {}; my $response_work = {}; diff --git a/copri4/main/src/Mod/APIsigoclient.pm b/copri4/main/src/Mod/APIsigoclient.pm index 96ded44..e56a47a 100755 --- a/copri4/main/src/Mod/APIsigoclient.pm +++ b/copri4/main/src/Mod/APIsigoclient.pm @@ -55,6 +55,7 @@ sub new { $ua->max_size( $bytes ); $ua->default_header( 'x-api-key' => $apikeyconf{sigo}->{api_key} ); +#will be called on bikes_available sub sigo_available { my $self = shift; my $q = shift; @@ -90,14 +91,15 @@ sub sigo_available { my $ret_json = $self->get_sigo("$endpoint",$rest_json); eval { $response_in = decode_json($ret_json); - print FILE "<--- station_and_bikes response_in:\n"; + $now_dt = strftime "%Y-%m-%d %H:%M:%S", localtime; + print FILE "<--- $now_dt station_and_bikes response_in:\n"; #print FILE Dumper($response_in) . "\n"; if(ref($response_in) eq "HASH"){ foreach my $resp (@{ $response_in->{items} }) { print FILE "response_in loop\n" . Dumper($resp) . "\n"; - if($dbt->{operator}->{$varenv->{dbname}}->{operatorApp} && $q->param('request') eq "stations_available"){ + if(ref($resp->{site}) eq "HASH" && $dbt->{operator}->{$varenv->{dbname}}->{operatorApp} && $q->param('request') eq "stations_available"){ #station (mainly using sigojson site object) my $station = "SX$resp->{site}->{id}"; @@ -150,11 +152,16 @@ sub sigo_available { } }#end stations_available - if($dbt->{operator}->{$varenv->{dbname}}->{operatorApp} && $q->param('request') eq "bikes_available"){ + if(ref($resp->{site}) eq "HASH" && $dbt->{operator}->{$varenv->{dbname}}->{operatorApp} && $q->param('request') eq "bikes_available"){ #bike (mainly using sigojson state object) - my $bike = "SX$resp->{mobile_bike_id}"; - if($bike && looks_like_number($resp->{mobile_bike_id}) && looks_like_number($resp->{site}->{id})){ + #my $bike = "SX$resp->{mobile_bike_id}"; + my $bike = $q->escapeHTML($resp->{license_plate}) || ""; + my $bike_id = $bike; + $bike_id =~ s/S[1-9]X/SX/; + $bike_id = $1 if($bike_id =~ /(\d+)/); + + if($bike && looks_like_number($bike_id) && looks_like_number($resp->{site}->{id})){ print FILE "Bike: $bike\n"; $response_out->{$bike}->{bike} = "$bike"; $response_out->{$bike}->{authed} = "$authed"; @@ -165,14 +172,12 @@ sub sigo_available { $response_out->{$bike}->{gps}->{longitude} = "$resp->{state}->{lon}" || ""; $response_out->{$bike}->{bike_charge} = "$resp->{energy_level}" || "0"; $response_out->{$bike}->{state} = "defect"; - if($resp->{status} eq "ACTIVE"){#? - $response_out->{$bike}->{state} = "available"; - }elsif($resp->{status} eq "MAINTANANCE"){ - $response_out->{$bike}->{state} = "maintanance"; - }elsif($resp->{status} eq "OFFLINE"){ - $response_out->{$bike}->{state} = "defect"; - }elsif($resp->{status} eq "OPERATION"){#? + if($resp->{reservation_state} eq "RESERVED"){ + $response_out->{$bike}->{state} = "requested"; + }elsif($resp->{reservation_state} eq "ACTIVE-RENTAL"){ $response_out->{$bike}->{state} = "occupied"; + }elsif(!$resp->{reservation_state}){ + $response_out->{$bike}->{state} = "available"; } #$response_out->{$bike}->{lock_state} = "undefined";#? @@ -227,8 +232,8 @@ sub sigo_available { } #just like caching $return2copri->{$bike}->{int11} = 3; - $return2copri->{$bike}->{barcode} = $1 if($response_out->{$bike}->{bike} =~ /(\d+)/); - $return2copri->{$bike}->{txt22} = $resp->{id};#bike id like 380116b5-0522-43da-ab66-477744a731a3 + $return2copri->{$bike}->{barcode} = $bike_id; + $return2copri->{$bike}->{txt22} = $resp->{id};#sig bikeId like 380116b5-0522-43da-ab66-477744a731a3 $return2copri->{$bike}->{int04} = $1 if($response_out->{$bike}->{station} =~ /(\d+)/); $return2copri->{$bike}->{txt01} = "$response_out->{$bike}->{description}"; $return2copri->{$bike}->{txt06} = "$response_out->{$bike}->{gps}->{latitude},$response_out->{$bike}->{gps}->{longitude}"; @@ -262,16 +267,17 @@ sub sigo_available { }#end sigo_available #POST resverve, rental, ... -sub sigo_booking { +sub sig_booking { my $self = shift; my $varenv = shift || {}; my $auth = shift || {}; my $ct_bike = shift || {}; + my $ctpos = shift || {}; my $todo = shift || ""; my $dbh = ""; my $owner = 169; - my $sigo_book = {}; + my $sig_book = {}; open(FILE,">>$varenv->{logdir}/APIsigo_client.log"); print FILE "\n*** $now_dt 'sigo_post $todo' \n"; @@ -279,6 +285,7 @@ sub sigo_booking { my $endpoint = "$dbt->{operator}->{$varenv->{dbname}}->{endpoint}/"; my %json = (); + #reservation start if($todo eq "reserve"){ $endpoint .= "bikes/reserve"; %json = ( @@ -286,13 +293,33 @@ sub sigo_booking { email => "r.guempelein\@sharee.bike" ); } - elsif($todo eq "rental"){ - $endpoint .= "rental"; + #reservation end, this sigo request is still not defined + elsif($todo eq "reserve_end"){ + $endpoint .= "reserve/end"; %json = ( - bikeId => "$ct_bike->{txt22}", + reservationId => "$ctpos->{txt10}", email => "r.guempelein\@sharee.bike" ); } + #rental start + elsif($todo eq "rental"){ + $endpoint .= "rental"; + my $sig_serial = $ctpos->{txt22} || $ct_bike->{txt22}; + %json = ( + bikeId => "$sig_serial", + #reservationId => "$ctpos->{txt10}",#not in sig implemented + email => "r.guempelein\@sharee.bike" + ); + } + #rental end + elsif($todo eq "rental_end"){ + $endpoint .= "rental/end"; + %json = ( + rentalId => "$ctpos->{txt11}", + email => "r.guempelein\@sharee.bike" + ); + #keep in mind, it will return no json, just text: "Rental Ended" + } else{ print "Failure, request $todo not defined\n"; @@ -304,22 +331,22 @@ sub sigo_booking { my $rest_json = encode_json(\%json); my $ret_json = $self->post_sigo($endpoint,$rest_json); - # + $now_dt = strftime "%Y-%m-%d %H:%M:%S", localtime; eval { - $sigo_book = decode_json($ret_json); - print FILE "<--- sigo_post $todo response_in:\n" . Dumper($sigo_book); - print $ret_json . "\n"; + $sig_book = decode_json($ret_json); + print FILE "<--- $now_dt sigo_post $todo response_in:\n" . Dumper($sig_book); + #print $ret_json . "\n"; }; if ($@){ - print FILE "<--- failure sigo_post $todo raw response_in:\n" . Dumper($ret_json) . "\n"; + print FILE "<--- $now_dt failure sigo_post $todo raw response_in:\n" . Dumper($ret_json) . "\n"; #warn $@; print FILE "warn:" . $@ . "\n"; } } close(FILE); - return $sigo_book; + return $sig_book; } diff --git a/copri4/main/src/Mod/DBtank.pm b/copri4/main/src/Mod/DBtank.pm index 72c8c88..5999e4b 100755 --- a/copri4/main/src/Mod/DBtank.pm +++ b/copri4/main/src/Mod/DBtank.pm @@ -1315,7 +1315,7 @@ sub insert_pos(){ my $ct_name = shift || ""; my $status = shift || ""; my $owner = shift || ""; - my $reserveid = shift || ""; + my $sig_book = shift || {}; $ct_name = $ct->{barcode} if(!$ct_name);#artikelnr or bikenr my $prefix = ""; @@ -1368,7 +1368,7 @@ sub insert_pos(){ my $sth; #Verleihräder if($ct->{template_id} && $ct->{template_id} == 205){#Leihrad_list - $sth = $dbh->prepare("INSERT INTO contenttranspos (ct_id,cc_id,ca_id,ct_name,barcode,txt01,txt08,txt02,txt09,txt12,itime,start_time,end_time,int02,int03,int06,int04,txt05,txt06,txt07,int10,int12,int13,owner,int07,txt04,int09,int17,int15,int16,int11,int18,int19,txt17,txt18,int20,int25,int34,txt22,txt10,int35,int36,int37,time01,time02) VALUES ('$ctt_id','$ct->{c_id}','$ctadr->{c_id}','$ct_name','$ct->{barcode}','$ct->{txt01}','$user_name','$ct->{txt02}','$ctadr->{txt09}','$prefix',now(),now(),'$endRental','$unit_price','$menge','$station','$station','$ct->{txt06}','$ct->{txt06}','$ct->{txt07}','$status','$from_main_id','$deviceId','$owner','$rabatt','$tariff_desc','$tariff_nr','$daymax_price','$abo_price','$free_hours','$ct->{int11}','$sharing_type','$bike_charge','$ct->{txt17}','$ct->{txt18}','$ct->{int20}','$trackon','$staff','$ct->{txt22}','$reserveid','$unit_price1','$unit_price2','$start_price','$unit_time','$free_time') RETURNING c_id"); + $sth = $dbh->prepare("INSERT INTO contenttranspos (ct_id,cc_id,ca_id,ct_name,barcode,txt01,txt08,txt02,txt09,txt12,itime,start_time,end_time,int02,int03,int06,int04,txt05,txt06,txt07,int10,int12,int13,owner,int07,txt04,int09,int17,int15,int16,int11,int18,int19,txt17,txt18,int20,int25,int34,txt22,txt10,int35,int36,int37,time01,time02) VALUES ('$ctt_id','$ct->{c_id}','$ctadr->{c_id}','$ct_name','$ct->{barcode}','$ct->{txt01}','$user_name','$ct->{txt02}','$ctadr->{txt09}','$prefix',now(),now(),'$endRental','$unit_price','$menge','$station','$station','$ct->{txt06}','$ct->{txt06}','$ct->{txt07}','$status','$from_main_id','$deviceId','$owner','$rabatt','$tariff_desc','$tariff_nr','$daymax_price','$abo_price','$free_hours','$ct->{int11}','$sharing_type','$bike_charge','$ct->{txt17}','$ct->{txt18}','$ct->{int20}','$trackon','$staff','$ct->{txt22}','$sig_book->{reservationId}','$unit_price1','$unit_price2','$start_price','$unit_time','$free_time') RETURNING c_id"); }else{ $sth = $dbh->prepare("INSERT INTO contenttranspos (ct_id,cc_id,ca_id,ct_name,barcode,txt08,txt09,itime,int02,int03,txt01,txt06,txt07,int10,int12,owner) VALUES ('$ctt_id','$ct->{c_id}','$ctadr->{c_id}','$ct_name','0','$user_name','$ctadr->{txt09}',now(),'$unit_price1','1','$ct->{txt01}','$ct->{txt06}','$ct->{txt07}','0','$from_main_id','$owner') RETURNING c_id"); } diff --git a/copri4/main/src/Mod/Payment.pm b/copri4/main/src/Mod/Payment.pm index 65daa28..1fa35ef 100755 --- a/copri4/main/src/Mod/Payment.pm +++ b/copri4/main/src/Mod/Payment.pm @@ -731,9 +731,9 @@ sub payone_capture(){ open(EMA, ">> $varenv->{logdir}/copri-print.log"); print EMA "\n$now_dt\n$topdf --page-size A4 \"$varenv->{wwwhost}/Printpreview?printer_id=PDF\&mandant_main_id=$mandant_id\&main_id=$main_id\&ct_name2print=$ctt->{ct_name}\&c_id4trans=$ctt->{c_id}\&u_id=$owner\&wc=$wc_line\" $varenv->{pdf}/$praefix-$ctt->{ct_name}.pdf\nreturn: $print_return\nfilesize: $filesize\nexit_code: $exit_code\n"; - #send_invoice infomail - if(-f "$varenv->{pdf}/$praefix-$ctt->{ct_name}.pdf"){ - system(`$varenv->{basedir}/src/scripts/mailTransport.pl "$varenv->{syshost}" "send_invoice" "$ctt->{c_id}" "$praefix-$ctt->{ct_name}.pdf"`); + #send_invoice infomail, only if eMail never sent + if(-f "$varenv->{pdf}/$praefix-$ctt->{ct_name}.pdf" && !$ctt->{txt30}){ + system("$varenv->{basedir}/src/scripts/mailTransport.pl '$varenv->{syshost}' 'send_invoice' '$ctt->{c_id}' '$praefix-$ctt->{ct_name}.pdf'"); print EMA "---> Sent Invoice e-mail command: $varenv->{basedir}/src/scripts/mailTransport.pl '$varenv->{syshost}' 'send_invoice' '$ctt->{c_id}' '$praefix-$ctt->{ct_name}.pdf'\n"; } close EMA; diff --git a/copri4/main/src/Mod/Prelogic.pm b/copri4/main/src/Mod/Prelogic.pm index ef4cfad..cbbfcef 100755 --- a/copri4/main/src/Mod/Prelogic.pm +++ b/copri4/main/src/Mod/Prelogic.pm @@ -203,10 +203,8 @@ sub preinit(){ $table = "contenttranspos"; my $menge="1"; - #Leihrad-logik - my ($zcolumn,$zcontent,$ct_node); - $zcolumn = "barcode"; - $zcontent = "$R::spart_ct_name" || "$R::json_select"; + my $zcolumn = "barcode"; + my $zcontent = "$R::spart_ct_name" || "$R::json_select"; #get part for adding and get from_main_id my $ct_name = "$R::spart_ct_name" || "$R::json_select" || "";#turn-around!§$ @@ -223,21 +221,13 @@ sub preinit(){ if($ct->{main_id}){ - $ct_node = $db->get_node4multi($ct->{main_id},$lang); - #check if part linked to mandant - my $mandant_check; - $waren = $db->get_node2($varenv{wwwhost},"Waren",$lang); - $mandant_check = $db->collect_noderec($waren->{main_id},$lang,"nothing") if($waren->{main_id}); - $mandant_check =~ s/,/|/g; $users_dms = $db->select_users($users_dms->{u_id}) if($ib_key =~ /new_/);#nur bei new_ mit save_ if(!$users_dms->{c_id4trans} && $ib_key !~ /new_transdate/){ return "failure::Zu welchem Vorgang soll die Aktion verknüpft werden? Bitte erst den entsprechenden Vorgang öffnen."; - }elsif($ct->{main_id} && ($ct_node->{main_id} !~ /$mandant_check/)){ - return "failure::Der Artikel \"$R::spart_ct_name\" ist in der Datenbank vorhanden, aber nicht in \"$ctf->{ct_name}\" verlinkt
Kläre bitte ob eine Faktura hier in Zukunft gewollt ist. Falls ja, informiere den Admin damit dieser die Verknüpfung herstellt."; } } - if(($ct_name || $ct->{barcode}) && $rel->{content_id} && $ct_node->{main_id}){ + if(($ct_name || $ct->{barcode}) && $rel->{content_id}){ my $partnr = "$ct_name / $ct->{barcode}"; $partnr = "$ct_name" if("$ct_name" eq "$ct->{barcode}" || !$ct->{barcode}); my $bezeichnung = "$ct->{txt01}"; @@ -246,18 +236,8 @@ sub preinit(){ my $einzel_rabatt = $ct->{int07}; $einzel_rabatt = $ctt->{int06} if($ctt->{int06} > 0); my $unit = $ct->{txt03}; - if($ctf->{int02} != 0 && $ct->{int09} != 0){ - $einzel_preis = $ctf->{int02}; - $menge = $ct->{int09}; - $unit = "AW"; - } - #umst - my $umst=0; - $umst = $ct_node->{int03}; - $umst = $1 if($ctf->{txt13} =~ /(\d+)/ && $ct_node->{int03} !~ /\d/);#Standard VK Umst - #Add Parts from content to contenttranspos################# my $pos_id; #Sort counter @@ -266,18 +246,9 @@ sub preinit(){ my $ctt = $db->get_content1("contenttrans",$users_dms->{c_id4trans}); #INSERT pos - $pos_id = $db->insert_contenttranspos($table,$partnr,$users_dms->{u_id},$ct->{barcode},$ct->{c_id},$ctt->{c_id},$ct->{main_id},$bezeichnung,$ct_node->{node_name},$unit,$einzel_preis,$menge,$umst,$einzel_rabatt,$lager,"","$ct->{txt05}","$ct->{txt06}","$ct->{txt07}","$ctt->{txt08}","$ctt->{int10}"); + $pos_id = $db->insert_contenttranspos($table,$partnr,$users_dms->{u_id},$ct->{barcode},$ct->{c_id},$ctt->{c_id},$ct->{main_id},$bezeichnung,"",$unit,$einzel_preis,$menge,"",$einzel_rabatt,$lager,"","$ct->{txt05}","$ct->{txt06}","$ct->{txt07}","$ctt->{txt08}","$ctt->{int10}"); $i_rows += 1 if($pos_id > 0); - #append Rahmennummer - if($ct->{txt11}){ - my $rahmennr = "$ct->{txt11}"; - $rahmennr = "$ctt->{txt11} | $ct->{txt11}" if($ctt->{txt11});#add nr. - $db->updater("contenttrans","c_id",$rel->{content_id},"txt11",$rahmennr,$users_dms->{u_id}); - } - - #} - ################################################################# #negate if not rental-bike if(($ct->{template_id} ne "205") && ($ctt->{txt00} !~ /Angebot|Kostenvoranschlag|Auftrag|Storno/) && !$R::c_idpos){ @@ -781,7 +752,7 @@ sub preinit(){ #my $key_pdf; #$key_pdf = `/usr/bin/pdftotext $varenv{basedir}/pdf/$praefix-$ctt->{ct_name}.pdf - | grep "Seite:"`; #system(`$varenv{basedir}/src/Mod/newsletter_tink.pl "$varenv{basedir}" "$varenv{wwwhost}" "send_invoice" "$ctt->{int10}" "$ctt->{ct_name}"`);# if($key_pdf =~ /Seite:/); - system(`$varenv{basedir}/src/scripts/mailTransport.pl "$varenv{syshost}" "send_invoice" "$ctt->{c_id}" "$praefix-$ctt->{ct_name}.pdf"`); + system("$varenv{basedir}/src/scripts/mailTransport.pl '$varenv{syshost}' 'send_invoice' '$ctt->{c_id}' '$praefix-$ctt->{ct_name}.pdf'"); } # diff --git a/copri4/main/src/Mod/Pricing.pm b/copri4/main/src/Mod/Pricing.pm index 5d0f9cf..9ce4347 100755 --- a/copri4/main/src/Mod/Pricing.pm +++ b/copri4/main/src/Mod/Pricing.pm @@ -243,11 +243,11 @@ sub counting_rental { my $discount_val = $ctpos->{int07} || 0; if($discount_val != 0 && $total_price){ my $discount_eur = $discount_val; - $discount_eur = $total_price * $discount_val/100 if($ctpos->{int08} != 1); + $discount_eur = $total_price * $discount_val/100 if(!$ctpos->{int08} || $ctpos->{int08} != 1); $total_price -= $discount_eur; $discount = "-" . $ctpos->{int07}; - if($ctpos->{int08} == 1){ + if($ctpos->{int08} && $ctpos->{int08} == 1){ $discount .= " €"; }else{ $discount =~ s/\.00//; @@ -345,7 +345,7 @@ sub fetch_rentalfeed { }elsif($td_template->{$td}->{time02} && $ctpos->{time02} =~ /[1-9]/){ $time_unit = $dbt->time_format($ctpos->{time02}); $return->{tariff_description2}->{$td} = ["$td_template->{$td}->{time02}","$time_unit / Tag"]; - }elsif($td_template->{$td}->{xduration} && $returned_counting->{real_clock} =~ /[1-9]/){ + }elsif($td_template->{$td}->{xduration} && $returned_counting->{real_clock} && $returned_counting->{real_clock} =~ /[1-9]/){ $time_unit = $dbt->time_format($returned_counting->{real_clock}); $return->{tariff_description2}->{$td} = ["$td_template->{$td}->{xduration}","$time_unit"]; }elsif($td_template->{$td}->{xprice} && $returned_counting->{total_price} && $returned_counting->{total_price} > 0){ @@ -562,14 +562,14 @@ sub price2calc { my $ctpos = shift; my $total = 0; - my $discount = ""; - my $einzel = $ctpos->{int02}; - my $menge = $ctpos->{int03}; + my $discount = 0; + my $einzel = $ctpos->{int02} || 0; + my $menge = $ctpos->{int03} || 0; my $discount_val = $ctpos->{int07} || 0; if($discount_val != 0 && $einzel && $menge){ my $discount_eur = $discount_val; #if int08 != 1 alias € - $discount_eur = $einzel * $menge * $discount_val/100 if($ctpos->{int08} != 1); + $discount_eur = $einzel * $menge * $discount_val/100 if(!$ctpos->{int08} || $ctpos->{int08} != 1); $total = $einzel * $menge - $discount_eur; }elsif($einzel && $menge){ $total = $einzel * $menge; @@ -577,7 +577,7 @@ sub price2calc { if($ctpos->{int07} && $ctpos->{int07} > 0 && $menge > 0){ $discount = "-" . $ctpos->{int07}; - if($ctpos->{int08} == 1){ + if($ctpos->{int08} && $ctpos->{int08} == 1){ $discount .= " €"; }else{ $discount =~ s/\.00//; @@ -588,34 +588,5 @@ sub price2calc { return ($total,$discount); } -#computes rental position price and rabatt -sub rental_price2calc { - my $self = shift; - my $ctpos = shift || {}; - my $pricing = shift || {}; - my $total = 0; - my $discount = ""; - my $discount_val = $ctpos->{int07} || 0; - if($discount_val != 0 && $pricing->{total_price}){ - my $discount_eur = $discount_val; - #if int08 != 1 alias € - $discount_eur = $pricing->{total_price} * $discount_val/100 if($ctpos->{int08} != 1); - $total = $pricing->{total_price} - $discount_eur; - }elsif($pricing->{total_price}){ - $total = $pricing->{total_price}; - } - - if($ctpos->{int07} && $ctpos->{int07} > 0){ - $discount = "-" . $ctpos->{int07}; - if($ctpos->{int08} == 1){ - $discount .= " €"; - }else{ - $discount =~ s/\.00//; - $discount .= " %"; - } - } - - return ($total,$discount); -} 1; diff --git a/copri4/main/src/Tpl/Karte.pm b/copri4/main/src/Tpl/Karte.pm index bb682b4..d8a06eb 100755 --- a/copri4/main/src/Tpl/Karte.pm +++ b/copri4/main/src/Tpl/Karte.pm @@ -114,7 +114,7 @@ EOF print "\n"; -print $q->div({-class=>"content2_legende", -style=>'font-weight:bold;'}, "• Ist ein Lastenrad an einer Mietradstation verfügbar?"),"\n"; +#print $q->div({-class=>"content2_legende", -style=>'font-weight:bold;'}, "• Ist ein Lastenrad an einer Mietradstation verfügbar?"),"\n"; print $q->div({-class=>"content2_legende"}, $q->img({-style=>'height:30px;', -src=>"$varenv->{metahost}/img/$icon_green"}), "Lastenrad verfügbar"),"\n"; print $q->div({-class=>"content2_legende"}, $q->img({-style=>'height:30px;', -src=>"$varenv->{metahost}/img/$icon_red"}), "Lastenrad nicht verfügbar"),"\n"; print $q->div({-class=>"content2_legende"}, " "),"\n"; diff --git a/copri4/main/src/Tpl/TransPositionen.pm b/copri4/main/src/Tpl/TransPositionen.pm index d107298..6089254 100755 --- a/copri4/main/src/Tpl/TransPositionen.pm +++ b/copri4/main/src/Tpl/TransPositionen.pm @@ -70,7 +70,7 @@ sub tpl(){ my $vibuchen_mtime = ""; $vibuchen_mtime = "Payone post " . $lb->time4de($ctt->{pay_time},1) . " . " if($ctt->{pay_time}); - my @tpl_order = ("txt01=Beschreibung","ct_name=Nummer","date_time=timerange","int03=Menge","int02=Preis","int07=Rabatt","int04=Gesamt"); + my @tpl_order = ("txt01=Beschreibung","ct_name=Nummer","date_time=timerange","int03=Menge (Miet - Gratis Zeit)","int02=Preis","int07=Rabatt","int04=Gesamt"); my $tplf = $db->get_tpl("201");#Firma tpl my @tplf_order = split /,/,$tplf->{tpl_order}; @@ -83,7 +83,7 @@ sub tpl(){ foreach my $id (keys(%$cttpos)){ if(ref($cttpos->{$id}) eq "HASH"){ if($cttpos->{$id}->{int26}){ - @tpl_order = ("txt01=Beschreibung","ct_name=Nummer","date_time=timerange","int26=Einsparung","int03=Menge","int02=Preis","int07=Rabatt","int04=Gesamt"); + @tpl_order = ("txt01=Beschreibung","ct_name=Nummer","date_time=timerange","int26=Einsparung","int03=Menge (Miet - Gratis Zeit)","int02=Preis","int07=Rabatt","int04=Gesamt"); } #enhanced tariff #if($cttpos->{$id}->{int35}){ @@ -299,7 +299,7 @@ EOF print $q->span({-style=>"$txtstyle $set_style"}, "Endstation: ", $q->textfield(-class=>'etxt',-name=>"int04",-default=>"$cttpos->{$id}->{int04}",-size=>"5",-maxlength=>40), - "GPS: ", $q->textfield(-class=>'etxt',-name=>"txt06",-default=>"$cttpos->{$id}->{txt06}",-size=>"35",-maxlength=>40)),"
\n"; + "GPS: ", $q->textfield(-class=>'etxt',-name=>"txt06",-default=>"$cttpos->{$id}->{txt06}",-size=>"30",-maxlength=>40)),"
\n"; print $q->span({-style=>"$txtstyle $set_style"},"Mietzeit: ", $q->textfield(-id=>'datepicker1',-class=>'etxt',-name=>"start_date",-default=>"$s_dd.$s_mo.$s_yy",-size=>"8",-maxlength=>10), diff --git a/copri4/main/src/scripts/sigo_client.pl b/copri4/main/src/scripts/sigo_client.pl index 7102481..74f9113 100755 --- a/copri4/main/src/scripts/sigo_client.pl +++ b/copri4/main/src/scripts/sigo_client.pl @@ -36,23 +36,23 @@ my $todo = $ARGV[1]; if($todo eq "available"){ $q->param(-name=>'request',-value=>"bikes_available"); my $auth = { c_id => 0 }; - my $return = $si->sigo_available($q,\%varenv,$auth); - print $0 . Dumper($return) . "\n"; + my $return = $si->sigo_available($q,\%varenv,$auth); + #print $0 . Dumper($return) . "\n"; } if($todo eq "reserve"){ my $auth = { c_id => 1842 }; my $bike = { txt22 => "380116b5-0522-43da-ab66-477744a731a3" };# bike 1150 #my $bike = "SX1150";# bike 1150 from app booking_request - my $return = $si->sigo_booking(\%varenv,$auth,$bike,$todo); - print $0 . Dumper($return) . "\n"; + my $return = $si->sigo_booking(\%varenv,$auth,$bike,$todo); + #print $0 . Dumper($return) . "\n"; } if($todo eq "rental"){ my $auth = { c_id => 1842 }; my $bike = { txt22 => "380116b5-0522-43da-ab66-477744a731a3" };# bike 1150 #my $bike = "SX1150";# bike 1150 from app booking_request - my $return = $si->sigo_booking(\%varenv,$auth,$bike,$todo); - print $0 . Dumper($return) . "\n"; + my $return = $si->sigo_booking(\%varenv,$auth,$bike,$todo); + #print $0 . Dumper($return) . "\n"; } diff --git a/copri4/main/src/scripts/tests/index.pl b/copri4/main/src/scripts/tests/index.pl index a2a28a8..7abf4be 100755 --- a/copri4/main/src/scripts/tests/index.pl +++ b/copri4/main/src/scripts/tests/index.pl @@ -190,15 +190,18 @@ print $q->div({-style=>'margin:15px;'},$q->a({-target=>'_blank', -href=>"$bookin my $booking_update_locking = "$uriop?request=booking_update&bike=$bike&lock_state=locking$and_station_state_locking&authcookie=$coo"; print $q->div({-style=>'margin:15px;'},$q->a({-target=>'_blank', -href=>"$booking_update_locking"},"[ booking_update_locking ]---> $booking_update_locking")),"\n"; + my $booking_update_locked = "$uriop?request=booking_update&bike=$bike&lock_state=locked$and_station_state_locked&authcookie=$coo"; print $q->div({-style=>'margin:15px;'},$q->a({-target=>'_blank', -href=>"$booking_update_locked"},"[ booking_update_locked ]---> $booking_update_locked")),"\n"; -my $booking_update_unlocking = "$uriop?request=booking_update&bike=$bike&lock_state=unlocking$and_station_state_unlocked&voltage=39&authcookie=$coo"; -print $q->div({-style=>'margin:15px;'},$q->a({-target=>'_blank', -href=>"$booking_update_unlocking"},"[ booking_update_unlocking ]---> $booking_update_unlocking")),"\n"; + +my $booking_update_occupied_unlocking = "$uriop?request=booking_update&bike=$bike&state=occupied&lock_state=unlocking$and_station_state_unlocked&authcookie=$coo"; +print $q->div({-style=>'margin:15px;'},$q->a({-target=>'_blank', -href=>"$booking_update_occupied_unlocking"},"[ booking_update_occupied_unlocking ]---> $booking_update_occupied_unlocking")),"\n"; + my $booking_update_unlocked = "$uriop?request=booking_update&bike=$bike&lock_state=unlocked$and_station_state_unlocked&voltage=39&authcookie=$coo"; print $q->div({-style=>'margin:15px;'},$q->a({-target=>'_blank', -href=>"$booking_update_unlocked"},"[ booking_update_unlocked ]---> $booking_update_unlocked")),"\n"; -my $booking_update_oc_ul = "$uriop?request=booking_update&bike=$bike&state=occupied&lock_state=unlocked$and_station_state_unlocked&authcookie=$coo"; -print $q->div({-style=>'margin:15px;'},$q->a({-target=>'_blank', -href=>"$booking_update_oc_ul"},"[ booking_update_oc_ul ]---> $booking_update_oc_ul")),"\n"; +my $booking_update_occupied_unlocked = "$uriop?request=booking_update&bike=$bike&state=occupied&lock_state=unlocked$and_station_state_unlocked&authcookie=$coo"; +print $q->div({-style=>'margin:15px;'},$q->a({-target=>'_blank', -href=>"$booking_update_occupied_unlocked"},"[ booking_update_occupied_unlocked ]---> $booking_update_occupied_unlocked")),"\n"; my $booking_request_oc_uling = "$uriop?request=booking_request&bike=$bike&state=occupied&lock_state=unlocking$and_station_state_unlocked&authcookie=$coo"; print $q->div({-style=>'margin:15px;'},$q->a({-target=>'_blank', -href=>"$booking_request_oc_uling"},"[ booking_request_oc_unlocking ]---> $booking_request_oc_uling")),"\n"; diff --git a/copri4/shareeapp-operator/src/Lib/Mlogic.pm b/copri4/shareeapp-operator/src/Lib/Mlogic.pm index 8f58df6..48151e3 100755 --- a/copri4/shareeapp-operator/src/Lib/Mlogic.pm +++ b/copri4/shareeapp-operator/src/Lib/Mlogic.pm @@ -43,9 +43,9 @@ sub tpl(){ my $coo = $q->cookie('domcookie') || $q->param('sessionid') || ""; #my $api_test = "sharee_kn"; - my $api_test = "sharee_fr01"; my $bike="FR1538"; + #my $api_test = "sharee_fr01"; my $bike="FR1538"; #my $api_test = "sharee_wue"; - #my $api_test = "sharee_sx"; my $bike="SX1150"; + my $api_test = "sharee_sx"; my $bike="S3X1001"; #my $api_test = "sharee_ren"; my $bike="REN2"; print $q->div({-style=>'float:right;text-align:right;height:25px;padding:6px 15px;background-color:white'},$q->a({-style=>"background-color:#ffffff;color:#$bgcolor1;", -href=>"$varenv->{metahost}/src/scripts/tests/index.pl?sessionid=$coo\&api_test=$api_test\&bike=$bike", -target=>'_blank'}," [ tests --> $api_test ] "),"$users_sharee->{txt08}",$q->a({-style=>"color:#$bgcolor1;", -href=>"logout_sharee$session"},"logout")),"\n"; diff --git a/copri4/shareeweb-project/src/Lib/Mlogic.pm b/copri4/shareeweb-project/src/Lib/Mlogic.pm index 55a1978..23b3b24 100755 --- a/copri4/shareeweb-project/src/Lib/Mlogic.pm +++ b/copri4/shareeweb-project/src/Lib/Mlogic.pm @@ -49,9 +49,9 @@ sub tpl(){ if($users_sharee->{c_id} eq $varenv->{superu_id} || $dbt->{copri_conf}->{stage} eq "test"){ my $coo = $q->cookie('domcookie') || $q->param('sessionid') || $dbt->{website}->{$varenv->{syshost}}->{merchant_id}; #my $api_test = "sharee_kn"; - my $api_test = "sharee_fr01"; my $bike="FR1538"; + #my $api_test = "sharee_fr01"; my $bike="FR1538"; #my $api_test = "sharee_wue"; - #my $api_test = "sharee_sx"; my $bike="SX1150"; + my $api_test = "sharee_sx"; my $bike="S3X1001"; #my $api_test = "sharee_ren"; my $bike="REN2"; print $q->div({-style=>'float:right;text-align:right;height:25px;padding:6px 15px;background-color:white'},$q->a({-style=>"background-color:#ffffff;color:#$bgcolor1;", -href=>"$varenv->{metahost}/src/scripts/tests/index.pl?sessionid=$coo\&api_test=$api_test\&bike=$bike", -target=>'_blank'}," [ tests --> $api_test ] ")),"\n"; }