mirror of
https://gitlab.com/t6353/sharee.bike.git
synced 2025-05-13 15:16:38 +02:00
App API bike_returned json extension. Longterm rental messaging by email. Check if invoice was booked before mailing
This commit is contained in:
parent
8cc46ff9e0
commit
e7959e2da9
9 changed files with 207 additions and 71 deletions
|
@ -1066,7 +1066,6 @@ sub booking_update(){
|
|||
|
||||
my $state = $q->escapeHTML($q->param('state')) || "";
|
||||
my $lock_state = $q->escapeHTML($q->param('lock_state')) || "";
|
||||
my %varenv = $cf->envonline();
|
||||
my $rows = 0;
|
||||
my $user_agent = $q->user_agent();
|
||||
#my $bike = $q->param('bike');
|
||||
|
@ -1228,7 +1227,7 @@ sub booking_update(){
|
|||
$update_pos->{end_time} = "now()";
|
||||
$update_pos->{txt05} = "$record_cc->{txt06}";#pos start GPS from content end GPS
|
||||
$update_pos->{int06} = "$record_cc->{int04}";#pos start station from content station
|
||||
$update_pos->{txt12} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}";#pos start station prefix
|
||||
$update_pos->{txt12} = "$dbt->{operator}->{$varenv->{dbname}}->{oprefix}";#pos start station prefix
|
||||
$update_pos->{int21} = $gps_data->{gps_age_minutes};
|
||||
$update_pos->{int22} = $gps_data->{gps_accuracy};
|
||||
$update_pos->{owner} = "$owner";
|
||||
|
@ -1294,13 +1293,13 @@ sub booking_update(){
|
|||
$update_pos->{int26} = "$sig_book->{distance}" if($sig_book->{distance});
|
||||
$update_pos->{int28} = "$sig_book->{station_lock_state}" if($sig_book->{station_lock_state});
|
||||
#end-Station prefix
|
||||
$update_pos->{txt13} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}";
|
||||
$update_cc->{txt13} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}";
|
||||
$update_pos->{txt13} = "$dbt->{operator}->{$varenv->{dbname}}->{oprefix}";
|
||||
$update_cc->{txt13} = "$dbt->{operator}->{$varenv->{dbname}}->{oprefix}";
|
||||
|
||||
#return after booking_update
|
||||
#in real, we know freed accountable rentals only on rental end's
|
||||
$pri->count_freedrental($q,$varenv,$auth->{c_id},$record_pos);
|
||||
my ($pricing,$counting) = $pri->counting_rental(\%varenv,$record_pos);
|
||||
my ($pricing,$counting) = $pri->counting_rental($varenv,$record_pos);
|
||||
|
||||
#int03 only used for tarif counting backwards compatibility
|
||||
$update_pos->{int03} = "$pricing->{computed_hours}" if(looks_like_number($pricing->{computed_hours}));
|
||||
|
@ -1324,7 +1323,7 @@ sub booking_update(){
|
|||
else{
|
||||
if($gps_data->{geo_distance} <= $geo_distance_next){
|
||||
$geo_distance_next = $gps_data->{geo_distance};
|
||||
$station_next = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}$stations_raw->{$id}->{int04}";
|
||||
$station_next = "$dbt->{operator}->{$varenv->{dbname}}->{oprefix}$stations_raw->{$id}->{int04}";
|
||||
}
|
||||
#2021-10-13 changed to save last gps @all
|
||||
$update_cc->{txt06} = "$gps_data->{gps}";#end content coordinates
|
||||
|
@ -1333,11 +1332,11 @@ sub booking_update(){
|
|||
$update_pos->{int22} = $gps_data->{gps_accuracy};
|
||||
$update_pos->{int23} = $gps_data->{geo_distance};
|
||||
#end-Station prefix
|
||||
$update_pos->{txt13} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}";
|
||||
$update_cc->{txt13} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}";
|
||||
$update_pos->{txt13} = "$dbt->{operator}->{$varenv->{dbname}}->{oprefix}";
|
||||
$update_cc->{txt13} = "$dbt->{operator}->{$varenv->{dbname}}->{oprefix}";
|
||||
|
||||
#return after booking_update
|
||||
my ($pricing,$counting) = $pri->counting_rental(\%varenv,$record_pos);
|
||||
my ($pricing,$counting) = $pri->counting_rental($varenv,$record_pos);
|
||||
#int03 only used for tarif counting backwards compatibility
|
||||
$update_pos->{int03} = "$pricing->{computed_hours}" if(looks_like_number($pricing->{computed_hours}));
|
||||
$update_pos->{int38} = "$counting->{int38}" if(looks_like_number($counting->{int38}));
|
||||
|
@ -1424,16 +1423,58 @@ sub booking_update(){
|
|||
|
||||
if(ref($booking) eq "HASH" && $booking->{ct_name}){
|
||||
#deprecated
|
||||
$booking_values->{bike} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}$booking->{barcode}";
|
||||
$booking_values->{bike} = "$dbt->{operator}->{$varenv->{dbname}}->{oprefix}$booking->{barcode}";
|
||||
$booking_values->{state} = "$dbt->{copri_conf}->{bike_state}->{$booking->{int10}}";
|
||||
$booking_values->{lock_state} = "$dbt->{copri_conf}->{lock_state}->{$booking->{int20}}";
|
||||
|
||||
#new object after rental end
|
||||
$booking_values->{bike_returned} = {};
|
||||
if($booking->{int10} == 1){
|
||||
$booking_values->{bike_returned}->{bike} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}$booking->{barcode}";
|
||||
$booking_values->{bike_returned}->{station} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}$booking->{int04}";
|
||||
$booking_values->{bike_returned}->{bike} = "$dbt->{operator}->{$varenv->{dbname}}->{oprefix}$booking->{barcode}";
|
||||
$booking_values->{bike_returned}->{station} = "$dbt->{operator}->{$varenv->{dbname}}->{oprefix}$booking->{int04}";
|
||||
$booking_values->{bike_returned}->{state} = "$dbt->{copri_conf}->{bike_state}->{$booking->{int10}}";
|
||||
$booking_values->{bike_returned}->{lock_state} = "$dbt->{copri_conf}->{lock_state}->{$booking->{int20}}";
|
||||
my ($pricing,$counting) = $pri->counting_rental($varenv,$booking);
|
||||
if($pricing->{real_clock} && $pricing->{real_clock} =~ /[1-9]/){
|
||||
my $time_unit = $dbt->time_format($varenv,$pricing->{real_clock});
|
||||
$booking_values->{bike_returned}->{real_clock} = "$time_unit";#2023-09-12
|
||||
}
|
||||
if($pricing->{total_price} && $pricing->{total_price} > 0){
|
||||
$pricing->{total_price} =~ s/\./,/ if($lang eq "de");
|
||||
$booking_values->{bike_returned}->{total_price} = "$pricing->{total_price} €";#2023-09-12
|
||||
}
|
||||
|
||||
#fetch tracking distance on Ilockit cloud by summary trip if(tracking && deviceId && available)
|
||||
if($booking->{int25} == 1){
|
||||
$bw->log("get co2saving",$booking->{c_id},"");
|
||||
#if system=ilockit && clouid
|
||||
if($record_pos->{int11} == 2 && $booking->{int13}){
|
||||
sleep 2;#hopefully get distance in 2 sec.
|
||||
system("$varenv->{basedir}/src/scripts/Ilockit_trackingcloud.pl $varenv->{syshost} get_tripsum $booking->{c_id}");
|
||||
$booking = $dbt->fetch_tablerecord($dbh,$booking_pos);
|
||||
#try it again with 20sec sleep
|
||||
if(!$booking->{int26}){
|
||||
$bw->log("$varenv->{basedir}/src/scripts/Ilockit_trackingcloud.pl $varenv->{syshost} get_tripsum $booking->{c_id} 20",$booking->{c_id},"");
|
||||
system("$varenv->{basedir}/src/scripts/Ilockit_trackingcloud.pl $varenv->{syshost} get_tripsum $booking->{c_id} 20 &");
|
||||
$booking = $dbt->fetch_tablerecord($dbh,$booking_pos);
|
||||
}
|
||||
}
|
||||
|
||||
my $co2saving = "";
|
||||
$booking->{int26} = 10 if(!$booking->{int26} && ($auth->{c_id} == 5781 || $auth->{c_id} == 38883 || $auth->{c_id} == 37974));#10 km test
|
||||
if($booking->{int26}){
|
||||
$co2saving = "Einsparung: ";
|
||||
my $co2diff = $pri->co2calc($booking);
|
||||
#my $sprit_price = $pri->sprit2calc($booking);
|
||||
$co2saving .= "$co2diff kg CO2, ";
|
||||
#$co2saving .= "$sprit_price EUR " if($sprit_price !~ /-/);
|
||||
$booking->{int26} =~ s/\./,/;
|
||||
$co2saving .= "bei einer Strecke von $booking->{int26} KM";
|
||||
$booking_values->{co2saving} = $co2saving;
|
||||
$booking_values->{bike_returned}->{distance} = "$booking->{int26} km";#2023-09-12
|
||||
$booking_values->{bike_returned}->{co2saving} = "$co2diff kg CO2";#2023-09-12
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#user_miniquest_count on operator
|
||||
|
@ -1446,7 +1487,7 @@ sub booking_update(){
|
|||
};
|
||||
my $auth_prim = $dbt->fetch_record($dbh_primary,$adref);
|
||||
|
||||
if($booking->{int10} == 1 && $dbt->{operator}->{$varenv{dbname}}->{project} eq "Bayern" && $auth_prim->{int23} < 4){
|
||||
if($booking->{int10} == 1 && $dbt->{operator}->{$varenv->{dbname}}->{project} eq "Bayern" && $auth_prim->{int23} < 4){
|
||||
|
||||
$bw->log("user_miniquery user ID $auth_prim->{c_id} exist count:",$auth_prim->{int23},"");
|
||||
$booking_values->{user_miniquery} = $dbt->evaluationsfragen($dbh);
|
||||
|
@ -1465,35 +1506,6 @@ sub booking_update(){
|
|||
}
|
||||
}#end mini_quest
|
||||
|
||||
#fetch tracking distance on Ilockit cloud by summary trip if(tracking && deviceId && available)
|
||||
if($booking->{int25} == 1 && $booking->{int10} == 1){
|
||||
$bw->log("get co2saving",$booking->{c_id},"");
|
||||
#if system=ilockit && clouid
|
||||
if($record_pos->{int11} == 2 && $booking->{int13}){
|
||||
sleep 2;#hopefully get distance in 2 sec.
|
||||
system("$varenv{basedir}/src/scripts/Ilockit_trackingcloud.pl $varenv{syshost} get_tripsum $booking->{c_id}");
|
||||
$booking = $dbt->fetch_tablerecord($dbh,$booking_pos);
|
||||
#try it again with 20sec sleep
|
||||
if(!$booking->{int26}){
|
||||
$bw->log("$varenv{basedir}/src/scripts/Ilockit_trackingcloud.pl $varenv{syshost} get_tripsum $booking->{c_id} 20",$booking->{c_id},"");
|
||||
system("$varenv{basedir}/src/scripts/Ilockit_trackingcloud.pl $varenv{syshost} get_tripsum $booking->{c_id} 20 &");
|
||||
$booking = $dbt->fetch_tablerecord($dbh,$booking_pos);
|
||||
}
|
||||
}
|
||||
|
||||
my $co2saving = "";
|
||||
$booking->{int26} = 10 if(!$booking->{int26} && ($auth->{c_id} == 5781 || $auth->{c_id} == 38883));#10 km test
|
||||
if($booking->{int26}){
|
||||
$co2saving = "Einsparung: ";
|
||||
my $co2diff = $pri->co2calc($booking);
|
||||
#my $sprit_price = $pri->sprit2calc($booking);
|
||||
$co2saving .= "$co2diff kg CO2, ";
|
||||
#$co2saving .= "$sprit_price EUR " if($sprit_price !~ /-/);
|
||||
$booking->{int26} =~ s/\./,/;
|
||||
$co2saving .= "bei einer Strecke von $booking->{int26} KM";
|
||||
$booking_values->{co2saving} = $co2saving;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return ($rows,$booking_values);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue