Tarif refactoring+

This commit is contained in:
ragu 2022-04-20 12:07:48 +02:00
parent 292b9754ee
commit b2e5d72c51
15 changed files with 216 additions and 135 deletions

View file

@ -1163,6 +1163,7 @@ sub booking_update(){
if($record_pos->{int24}){
$update_pos->{owner_end} = "$owner";
$update_pos->{end_time} = "now()";
#return after booking_update
my $pricing = $pri->sharee_pricing($record_pos,"calc_price");
$update_pos->{int03} = "$pricing->{computed_hours}" if(looks_like_number($pricing->{computed_hours}));
@ -1213,6 +1214,7 @@ sub booking_update(){
$update_pos->{txt13} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}";
#end-Station prefix
$update_cc->{txt13} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}";
#return after booking_update
my $pricing = $pri->sharee_pricing($record_pos,"calc_price");
$update_pos->{int03} = "$pricing->{computed_hours}" if(looks_like_number($pricing->{computed_hours}));
$rows = $dbt->update_record($dbh,$update_pos,$record_pos);
@ -1240,6 +1242,7 @@ sub booking_update(){
$update_pos->{txt13} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}";
#end-Station prefix
$update_cc->{txt13} = "$dbt->{operator}->{$varenv{dbname}}->{oprefix}";
#return after booking_update
my $pricing = $pri->sharee_pricing($record_pos,"calc_price");
$update_pos->{int03} = "$pricing->{computed_hours}" if(looks_like_number($pricing->{computed_hours}));
$rows = $dbt->update_record($dbh,$update_pos,$record_pos);
@ -1478,12 +1481,22 @@ sub booking_update(){
#fetch tracking distance on Ilockit cloud by summary trip if(tracking && deviceId && available)
if($booking->{int25} == 1 && $booking->{int10} == 1){
$bw->log("$varenv{basedir}/src/scripts/Ilockit_trackingcloud.pl $varenv{syshost} get_tripsum $booking->{c_id}",$booking->{c_id},"");
system(`$varenv{basedir}/src/scripts/Ilockit_trackingcloud.pl $varenv{syshost} get_tripsum $booking->{c_id}`) if($booking->{int13});#if ilockit clouid
sleep 2;#hopefully get distance in 2 sec.
$booking = $dbt->fetch_tablerecord($dbh,$booking_pos);
$bw->log("$varenv{basedir}/src/scripts/Ilockit_trackingcloud.pl $varenv{syshost} get_tripsum $booking->{c_id}",$booking->{c_id},"");
#if ilockit clouid
if($booking->{int13}){
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} == 1842 || $auth->{c_id} == 5781 || $auth->{c_id} == 11765 || $auth->{c_id} == 1843));#10 km test
#$booking->{int26} = 10 if(!$booking->{int26} && ($auth->{c_id} == 1842 || $auth->{c_id} == 5781 || $auth->{c_id} == 11765 || $auth->{c_id} == 1843));#10 km test
if($booking->{int26}){
$co2saving = "Einsparung: ";
my $co2diff = $pri->co2calc($booking);
@ -1491,7 +1504,7 @@ sub booking_update(){
$co2saving .= "$co2diff kg CO2 und ";
$co2saving .= "$sprit_price EUR ";
$booking->{int26} =~ s/\./,/;
$co2saving .= "bei einer Strecke von $booking->{int26} KM (Demo)";
$co2saving .= "bei einer Strecke von $booking->{int26} KM";
$booking_values->{co2saving} = $co2saving;
}
}
@ -1624,6 +1637,7 @@ sub user_bikes_occupied(){
#rentals
#called by user_bikes_occupied (bikes_occupied object)
sub rentals(){
my $self = shift;
my $record = shift;

View file

@ -869,9 +869,9 @@ sub update_record(){
$set .= " $key='$value',";
}
}
if($key =~ /^(barcode|contentadr_id|int\d+|owner|owner_end|start_at\d+|end_at\d+)$/){
if($key =~ /^(barcode|contentadr_id|int\d+|time\d+|owner|owner_end|start_at\d+|end_at\d+)$/){
$value =~ s/,/\./ if($value);
if($key =~ /int\d+|start_at\d+|end_at\d+/ && $value && $value =~ /\d+:\d+/){#azn time format
if($key =~ /int\d+|time\d+|start_at\d+|end_at\d+/ && $value && $value =~ /\d+:\d+/){#azn time format
$set .= " $key='$value',";
}elsif(looks_like_number($value) || ($value && $value eq "null")){
$set .= " $key=$value,";
@ -1269,31 +1269,35 @@ sub insert_pos(){
my $from_main_id = $ct->{main_id} || 0;
my $station = $ct->{int04} || 0;
my $rabatt = 0;
my $unit_price = $ct->{int02} || 0;
my $day_maxprice = 0;
my $abo_price = 0;
my $unit_price1 = 0;
my $unit_price2 = 0;
my $daymax_price = 0;
my $startup_price = 0;
my $tariff_nr = 0;
my $tariff_desc;
my $free_hours = 0;
my $unit_time = "00:00";
my $fee_time = "00:00";
my $sharing_type = 0;
my $menge = 0;
if(ref($ct_tariff) eq "HASH" && $ct_tariff->{barcode}){
$rabatt = $ctadr->{int07} || 0;
$unit_price = $ct_tariff->{int02} || 0;
$unit_price1 = $ct_tariff->{int02} || 0;
$unit_price2 = $ct_tariff->{int15} || 0;
$tariff_nr = $ct_tariff->{barcode} || 0;
$tariff_desc = $ct_tariff->{ct_name};
$day_maxprice = $ct_tariff->{int17} || 0;
$abo_price = $ct_tariff->{int15} || 0;
$free_hours = $ct_tariff->{int16} || 0;
$daymax_price = $ct_tariff->{int17} || 0;
$startup_price = $ct_tariff->{int16} || 0;
$unit_time = $ct_tariff->{time01} || "00:00";
$fee_time = $ct_tariff->{time02} || "00:00";
$sharing_type = $ct_tariff->{int18} || 0;
}
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,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) VALUES ('$ctt_id','$ct->{c_id}','$ctadr->{c_id}','$ct_name','$ct->{barcode}','$ct->{txt01}','$user_name','$ct->{txt02}','$ctadr->{txt09}',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','$day_maxprice','$abo_price','$free_hours','$ct->{int11}','$sharing_type','$bike_charge','$ct->{txt17}','$ct->{txt18}','$ct->{int20}','$trackon','$staff','$ct->{txt22}','$reserveid') RETURNING c_id");
$sth = $dbh->prepare("INSERT INTO contenttranspos (ct_id,cc_id,ca_id,ct_name,barcode,txt01,txt08,txt02,txt09,itime,start_time,end_time,int02,int03,int06,int04,txt05,txt06,txt07,int10,int12,int13,owner,int07,txt04,int09,int15,int16,int17,int11,int18,int19,txt17,txt18,int20,int25,int34,txt22,txt10,time01,time02) VALUES ('$ctt_id','$ct->{c_id}','$ctadr->{c_id}','$ct_name','$ct->{barcode}','$ct->{txt01}','$user_name','$ct->{txt02}','$ctadr->{txt09}',now(),now(),'$endRental','$unit_price1','$menge','$station','$station','$ct->{txt06}','$ct->{txt06}','$ct->{txt07}','$status','$from_main_id','$deviceId','$owner','$rabatt','$tariff_desc','$tariff_nr','$unit_price2','$startup_price','$daymax_price','$ct->{int11}','$sharing_type','$bike_charge','$ct->{txt17}','$ct->{txt18}','$ct->{int20}','$trackon','$staff','$ct->{txt22}','$reserveid','$unit_time','$fee_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_price','1','$ct->{txt01}','$ct->{txt06}','$ct->{txt07}','0','$from_main_id','$owner') RETURNING c_id");
$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");
}
my $rows = $sth->execute();
my $last_id;

View file

@ -376,7 +376,6 @@ sub preinit(){
#2021-08-04 set also bike available
$db->updater("content","c_id",$R::cc_id,"int10","1",$users_dms->{u_id}) if($R::cc_id);
}
#TINK $menge counting
#we believe setting by manually insert of int03=$menge via Transposition
#$db->updater($table,"c_id",$pos_id,"int03","$menge",$users_dms->{u_id});
#set GPS
@ -386,8 +385,8 @@ sub preinit(){
#set StationID
if($R::int04 =~ /^\d+$/){
$db->updater($table,"c_id",$pos_id,"int04","$R::int04",$users_dms->{u_id});
#require "Mod/KMLout.pm";
#my $kmlfile = Mod::KMLout::kmlGenerator("","");
#disbaled because we don't know for sure
#$db->updater("content","c_id",$R::cc_id,"int04","$R::int04",$users_dms->{u_id}) if($R::cc_id);
}
$db->updater("contenttrans","c_id",$ctt->{c_id},"start_time","$start_datetime",$users_dms->{u_id});

View file

@ -492,7 +492,7 @@ print ATTR "next: $next\n" if($debug);
$valxx = "null" if(!looks_like_number($valxx));#empty
}
if($_ =~ /^txt[\d+]|^int[\d+]|uri[\d+]|byte[\d+]/){
if($_ =~ /^txt\d+|^int\d+|^time\d+|byte\d+/){
if(1==1){
#on IBAN/BIC change set override Mandantsreferenz to c_id to trigger payone
if($table eq "contentadr" && (($_ eq "txt22" && $valxx ne "null" && $valxx ne $ct_exist1->{txt22}) || ($_ eq "txt23" && $valxx ne "null" && $valxx ne $ct_exist1->{txt23}))){
@ -558,6 +558,10 @@ print ATTR "next: $next\n" if($debug);
elsif($table eq "content" && $_ =~ /byte/){
$u_rows += $db->updater("$table","c_id",$c_id,$_,"\\x$valxx",$users_dms->{u_id});
}
elsif($_ =~ /time\d+/){
return "failure::Formatfehler, Eingabe der Zeiteinheit bitte in Stunden:Minuten (hh:mm)." if($valxx !~ /\d{1,2}:\d{2}/);
$u_rows += $db->updater("$table","c_id",$c_id,$_,"$valxx",$users_dms->{u_id});
}
else{
$u_rows += $db->updater("$table","c_id",$c_id,$_,$valxx,$users_dms->{u_id});
}

View file

@ -61,6 +61,33 @@ sub only_first_free(){
}
#converts clock-time to minutes
sub clock_minutes {
my $self = shift;
my $clockfloat = shift;# like 12:35
my $day = 0;
my $hour = 0;
my $min = 0;
if($clockfloat =~ /(\d+)\sday\s(\d+):(\d+)/){
$day = $1;
$hour = $2;
$min = $3;
}elsif($clockfloat =~ /(\d+):(\d+)/){
$hour = $1;
$min = $2;
}
my $hours = 0;
$hours = $hour if($hour && $hour > 0);
$hours += 24 * $day if($day && $day > 0);
my $minutes = $min;
$minutes = ($hours * 60) + $min if($hours && $hours > 0);
return $minutes;
}
#new counting rental time in hours method (last sharee_pricing)
sub counting_rental {
my $self = shift;
@ -68,10 +95,7 @@ sub counting_rental {
my $ctpos = shift;
my $todo = shift;
my $today4db = strftime("%Y-%m-%d %H:%M:%S",localtime(time));
my $return = {};
my $logging = {};
$logging->{ID} = "c_id:$ctpos->{c_id}/ct_id:$ctpos->{ct_id}/ca_id:$ctpos->{ca_id}";
my $computed_end_time = $ctpos->{end_time} || $today4db;
$computed_end_time = $today4db if($ctpos->{int10} && $ctpos->{int10} == 3);
@ -79,91 +103,116 @@ sub counting_rental {
my $dt0 = DateTime::Format::Pg->parse_datetime($ctpos->{start_time});
my $dt1 = DateTime::Format::Pg->parse_datetime($computed_end_time);
my $dur01 = $dt0->subtract_datetime($dt1);
my ($durhh,$durmm) = $dur01->in_units( 'hours','minutes' );
$durhh = sprintf('%.2d',$durhh);
$durmm = sprintf('%.2d',$durmm);
my $dur10 = $dt1->subtract_datetime($dt0);
my ($durdd,$durhh,$durmm) = $dur10->in_units( 'days', 'hours','minutes' );
$durhh = sprintf('%.2d',$durhh);
$durmm = sprintf('%.2d',$durmm);
my $real_clock = "$durhh:$durmm";
$real_clock = "$durdd day $durhh:$durmm" if($durdd);
my $computed_clock = $real_clock;
my $rental_minute = $self->clock_minutes($computed_clock);
#init with some defaults
my $total_price = 0;
my $ctpos_freed = { c_id => 0 };
#calculates rental time range in hours
my ($start_datetime,$end_datetime,$hours) = $cal->contenttranspos_dating($ctpos->{c_id},$ctpos->{start_time},"$computed_end_time","$today4db");
$logging->{hours_input} = $hours;
$logging->{tariff} = "$ctpos->{txt04} - $ctpos->{int09}";
#Tariff unit by time
my $tariff_unitbyminute = 60;#defaults to Stundentarif
if($ctpos->{time01} && $ctpos->{time01} =~ /[1-9]/){
$tariff_unitbyminute = $self->clock_minutes($ctpos->{time01});
}
my $price = 2; #FIXME to real val. must be not 0
$price = sprintf('%.2f',$ctpos->{int02}) if($ctpos->{int02} && $ctpos->{int02} > 0);
my $total = 0;
#fee if ex. 00:30 Min/Gratis
if($ctpos->{time02} && $ctpos->{time02} =~ /[1-9]/){
$ctpos_freed = $self->only_first_free($ctpos);
if(!$ctpos_freed->{c_id}){
my ($dhh,$dmm) = split(/:/,$ctpos->{time02});
#adding free minutes to start_time
$dt0->add( hours => $dhh, minutes => $dmm ) if(looks_like_number($dhh) && looks_like_number($dmm));
my $days_pricemax = $ctpos->{int17} || 9;
$logging->{days_pricemax} = $days_pricemax;
#example my $days_pricemax = 5; #konrad max 15,- € bike/day depends on 3,- €/hour
#calculate if rental hours greater than hours for max daily_price
my $days_hour4price = $days_pricemax / $price;
$logging->{days_hour4price} = $days_hour4price;
my $real_hours = $hours;
if($ctpos->{int16} && $ctpos->{int16} > 0){#z.b. 30 Min/Gratis --> 0.5
my $ctpos_freed = $self->only_first_free($ctpos);
#Bsp 1h = 60min , 60*0,02 = 1,2min
if(!$ctpos_freed->{c_id} || $real_hours <= 0.02){
$hours -= $ctpos->{int16};
$logging->{hours_freed} = $hours;
}else{
$logging->{hours_freed} = "Not freed because of (!$ctpos_freed->{c_id} && $ctpos->{int16} || $real_hours <= 0.02)";
my $cdur10 = $dt1->subtract_datetime($dt0);
my ($durdd,$durhh,$durmm) = $cdur10->in_units( 'days', 'hours','minutes' );
$durhh = sprintf('%.2d',$durhh);
$durmm = sprintf('%.2d',$durmm);
$computed_clock = "$durhh:$durmm";
$computed_clock = "$durdd day $durhh:$durmm" if($durdd);
$rental_minute = $self->clock_minutes($computed_clock);
}
}
#If available then take saved hours
my $hours = "";#old
my $rental_units = 0;
my $price_by_allunits = 0;
my $max_daily_unit = 0;#how many rental_minute is one daily_unit
my $fee_daily_minutes = 0;
my $rental_days_price = 0;
my $restal_minute = 0;
my $rental_time_price = 0;
my $rounded_time_factor = 0;
#readonly if bike available then take saved $total_price
if($ctpos->{int10} && $ctpos->{int10} == 1 && $todo eq "readonly"){
if($ctpos->{int03} && $ctpos->{int03} > 0){
$hours = $ctpos->{int03};
$total = $hours * $price if(looks_like_number($hours) && looks_like_number($price));
}else{
$hours = 0;
$total = 0;
if($ctpos->{int03} && $ctpos->{int03} > 0 && $ctpos->{int02} && $ctpos->{int02} > 0){
$total_price = $ctpos->{int03} * $ctpos->{int02};
}
}
#jede angebrochene Std.
elsif(looks_like_number($hours) && $hours > 0){
if($days_hour4price > 0 && $hours >= $days_hour4price && $hours <= 24){
$logging->{_hours_lower24} = "$days_hour4price > 0 && $hours >= $days_hour4price && $hours <= 24";
$logging->{__hours_lower24} = $hours;
$hours = $days_hour4price;
$logging->{hours_lower24} = $hours;
}
elsif($days_hour4price > 0 && $hours >= 24){
$logging->{hours_greate24} = "$days_hour4price > 0 && $hours >= 24";
my $days = $hours / 24;
my $days_int = $days;
my $dez = 0;
($days_int,$dez) = split(/\./, $days) if($days =~ /\.\d/);
my $days_hour = $days_int * 24;
my $rest = $hours - $days_hour;
$rest = $days_hour4price if($rest > $days_hour4price);
$hours = ($days_int * $days_hour4price) + $rest;
$logging->{hours_compute} = "$hours = ($days_int * $days_hour4price) + $rest";
}
#on time unit
elsif($rental_minute && $rental_minute > 0 && $ctpos->{int02} && $ctpos->{int02} > 0){
$rental_units = $rental_minute / $tariff_unitbyminute;
$price_by_allunits = $rental_units * $ctpos->{int02};
$logging->{hours_preround} = $hours;
$hours = $lb->round_half($hours);
$logging->{hours_postround} = $hours;
$total = $hours * $price if(looks_like_number($hours) && looks_like_number($price));
}else{
$hours = 0;
#max fee per day (day = 1440 minutes)
if($ctpos->{int17} && $price_by_allunits >= $ctpos->{int17}){
$max_daily_unit = $ctpos->{int17} / $ctpos->{int02};
$fee_daily_minutes = $max_daily_unit * $tariff_unitbyminute;
my $days_dec = $rental_minute / 1440;
my ($days,$ddec) = split(/\./, $days_dec) if($days_dec =~ /\.\d/);
$rental_days_price = $days * $ctpos->{int17} if($days > 0);
$restal_minute = $rental_minute - $days * 1440;
if($restal_minute >= $fee_daily_minutes){
$rental_days_price += $ctpos->{int17};
}else{
my $rental_time_factor = $restal_minute / $tariff_unitbyminute;
$rounded_time_factor = $rental_time_factor;
if($rental_time_factor =~ /(\d+)\.(\d+)/){
$rounded_time_factor = $1 + 1;
}
$rental_time_price = $rounded_time_factor * $ctpos->{int02};
}
}else{
my $rental_time_factor = $rental_minute / $tariff_unitbyminute;
$rounded_time_factor = $rental_time_factor;
if($rental_time_factor =~ /(\d+)\.(\d+)/){
$rounded_time_factor = $1 + 1;
}
$rental_time_price = $rounded_time_factor * $ctpos->{int02};
}
}
$total = sprintf('%.2f', $total);
#Bsp 1h = 60min , 60*0,02 = 1,2min
$hours = "0" if($real_hours <= 0.02);
$total_price = $rental_days_price + $rental_time_price;
$total_price = sprintf('%.2f', $total_price);
$return->{start_time} = "$ctpos->{start_time}";
$return->{end_time} = "$computed_end_time";
$return->{real_hours} = "$real_hours";
$return->{computed_hours} = "$hours";
$return->{unit_price} = "$price";
$return->{total_price} = "$total";
$return->{real_hours} = "$real_clock";
$return->{computed_hours} = "$computed_clock";
$return->{unit_price} = "$ctpos->{int02}";
$return->{total_price} = "$total_price";
$bw->log("hour computed:",$logging,"");
$return->{rentalog}->{real_hours} = "$real_clock";
$return->{rentalog}->{computed_hours} = "$computed_clock";
$return->{rentalog}->{rental_minute} = "$rental_minute";
$return->{rentalog}->{rental_units} = "$rental_units";
$return->{rentalog}->{tariff_unitbyminute} = "$tariff_unitbyminute";
$return->{rentalog}->{restal_minute} = "$restal_minute";
$return->{rentalog}->{rounded_time_factor} = "$rounded_time_factor";
$return->{rentalog}->{price_by_allunits} = "$price_by_allunits";
$return->{rentalog}->{rental_days_price} = "$rental_days_price";
$return->{rentalog}->{rental_time_price} = "$rental_time_price";
$return->{rentalog}->{ctpos_freed} = "$ctpos_freed->{c_id}";
$bw->log("Pricing counting_rental return:",$return,"");
return $return;
}#end counting_rental
@ -188,7 +237,6 @@ sub fetch_rentalfeed {
$return->{system} = "sigo" if($ctpos->{int11} && $ctpos->{int11} == 3);
if($ctpos->{int11}){
#$return->{gps} = "$ctpos->{txt06}";#end_gps
($return->{gps}->{latitude},$return->{gps}->{longitude}) = split(/,/,$ctpos->{txt06});
#if($ctpos->{txt10} =~ /requested|occupied/)
@ -204,7 +252,6 @@ sub fetch_rentalfeed {
$return->{Ilockit_GUID} = "$ctpos->{txt17}" if($ctpos->{int11} == 2);
$return->{Ilockit_ID} = "$ctpos->{txt18}" if($ctpos->{int11} == 2);
#$return->{gps} = "$ctpos->{txt06}";#start_gps
($return->{gps}->{latitude},$return->{gps}->{longitude}) = split(/,/,$ctpos->{txt06});
$return->{lock_state} = "locked" if($ctpos->{int20} == 1);
$return->{lock_state} = "unlocked" if($ctpos->{int20} == 2);

View file

@ -88,16 +88,10 @@ sub tpl(){
$ct_users = $db->collect_users("users") if($u_group eq "manager");#users map
#we mean roots for sub-NodePath selection
my $module;
my @viewsel = split /\//,$1 if($path =~ /^\/(.*)/);
my $depth = scalar(@viewsel);
my $view_root = $viewsel[0] || "root";
$module = $db->get_node("$view_root","$lang","<","200000");
if(!$module->{main_id} && ($path =~ /^\/([\w-\sßäöüÄÖÜ]+)\/([\w-\sßäöüÄÖÜ]+)/)){
$module = $db->get_node2($1,$2,$lang);
}
my $module_id = "$module->{main_id}" || "100000";
my $selector = "this_is_no_selection";
$selector = $1 if($path =~ /\/(Waren|Kunden|Veranstaltung|Nachrichten)/);
@ -111,20 +105,10 @@ sub tpl(){
my $depth=0;
my $j=0;
my ($m_id,$uri) = $lb->make_uri5($nodes->{$id}->{main_id},$nodes);
#print "$module->{node_name}|$selector|$m_id:$uri<br>";
#if(($uri =~ /$module->{node_name}/) && ($uri !~ /000 root/)){
if(($uri =~ /\w\/\w/) && ($uri !~ /000 root/)){
@viewsel = split(/\//,$uri) if($uri =~ /^\/(.*)/);
$depth = scalar(@viewsel);
if($varenv{orga} ne "dms"){
if($depth >= 3){
my $ct4rel = $db->collect_ct4rel("$table",$nodes->{$id}->{main_id},$lang,"","","","","");
foreach my $id (keys(%$ct4rel)){
$j++ if($ct4rel->{$id}->{c_id});
}
push (@_menu_rel, "$m_id:$uri");
}
}elsif($varenv{orga} eq "dms"){
if($varenv{orga} eq "dms"){
#sharee-copri workaround to get only bike menue
if($selector && ($path =~ /\/$selector/) && ($uri =~ /$selector/) && ($node_meta->{template_id} == 205)){#Waren bikes
if($depth >= 2){

View file

@ -408,7 +408,8 @@ EOF
print $q->td({-class=>'left_italic_cms'},"$des"),"\n";
print $q->td({-class=>'content1_cms',-colspan=>'2'},$but->selector_class("$key","eselect","",$ctrel->{$key},@_lock_valxx));
}
elsif($key =~ /int01/ && "$size" eq "select" && $node_meta->{tpl_id} == 210){#tariff_unit
#changed to time01
elsif(1==2 && $key =~ /int01/ && "$size" eq "select" && $node_meta->{tpl_id} == 210){#tariff_unit
my @_unit_valxx = ();
while (my ($key, $value) = each %{ $dbt->{copri_conf}->{tariff_unit} }) {
push @_unit_valxx, "$key:$value";#[0.5:0,5 Std]
@ -599,8 +600,14 @@ EOF
print $q->Tr();
print $q->td({-class=>'left_italic_cms',-colspan=>1},"$des"),"\n";
print $q->td({-class=>'content1_cms',-colspan=>'2'},$q->textfield(-class=>'etxt', -style=>"width:$w;",-name=>"$key", -override=>'1', -default=>"$K_int"), $postdes),"\n";
}
elsif($key =~ /time\d+/){
my $w = $size . "em";
$ctrel->{$key} =~ s/:00$//;
print $q->Tr();
print $q->td({-class=>'left_italic_cms',-colspan=>1},"$des"),"\n";
print $q->td({-class=>'content1_cms',-colspan=>'2'},$q->textfield(-class=>'etxt', -style=>"width:$w;",-name=>"$key", -override=>'1', -default=>"$ctrel->{$key}"), $postdes),"\n";
}
if($key =~ /date_time/){
#print $q->hidden(-name=>'t_id', -override=>'1',-value=>"$times_id");

View file

@ -570,7 +570,7 @@ sub tpl(){
$s_val = $searchref->{$key};
#print "$key=$searchref->{$key}|";
if($key =~ /byte|node|txt|int|uri|ct_name|c_id|barcode|sort|public/){
if($key =~ /byte|node|txt|int|time\d+|ct_name|c_id|barcode|sort|public/){
if($table eq "content" && $tpl_id == 225 && $key eq "int04"){
print $q->td({-class=>"search_line"},$q->textfield(-class=>'stxt',-name=>"s_$key",-default=>"$s_val",-size=>"$size",-maxlength=>40, -autofocus=>1),"\n");
}elsif($table eq "content" && $key eq "barcode"){
@ -597,7 +597,7 @@ sub tpl(){
$s_hash = $dbt->{copri_conf}->{station_state} if($tpl_id == 225 && $key eq "int10");
$s_hash = $dbt->{copri_conf}->{lock_system} if($tpl_id == 205 && $key eq "int11");
$s_hash = $dbt->{copri_conf}->{sharing_type} if($tpl_id == 210 && $key eq "int18");
$s_hash = $dbt->{copri_conf}->{tariff_unit} if($tpl_id == 210 && $key eq "int01");
#$s_hash = $dbt->{copri_conf}->{tariff_unit} if($tpl_id == 210 && $key eq "int01");
$s_hash = { 1 => 1, 2 => 2, 3 => 3, 4 => 4 } if($tpl_id == 225 && $key eq "txt07");
#while (my ($key, $value) = each %{ $s_hash }) {
foreach my $s_key (sort keys (%{ $s_hash })) {
@ -633,7 +633,7 @@ sub tpl(){
$e_mtime = $searchref->{end_date_time};
}
print $q->td({-nowrap=>1,-class=>"search_line"},$q->textfield(-id=>'datepicker1',-class=>'stxt',-name=>"s_start_$key",-default=>"$s_mtime",-size=>"$size",-maxlength=>20)),"\n" if($key =~ /time/);
print $q->td({-nowrap=>1,-class=>"search_line"},$q->textfield(-id=>'datepicker1',-class=>'stxt',-name=>"s_start_$key",-default=>"$s_mtime",-size=>"$size",-maxlength=>20)),"\n" if($key =~ /time$/);
}
@ -662,7 +662,7 @@ sub tpl(){
my ($key,$val,$size,$title) = split /=/,$_;
my $sort_title=" $title";
$val = "<b>$val</b>" if($key eq $users_dms->{col_sort});
if($key =~ /byte|txt|time|node|int|uri|save|state|owner|c_id|ct_name|barcode|sort|public/){
if($key =~ /byte|txt|time|node|int|time\d+|save|state|owner|c_id|ct_name|barcode|sort|public/){
$i++;
print $q->th($q->a({-class=>"sortnav",-href=>"?col_sort=$key\&offset=$offset\&limit=$limit",-title=>"$sort_title"},"$val")),"\n";
}
@ -920,13 +920,13 @@ sub tpl(){
$kost_key = 1 if($key =~ /node05|node08/);
my $txtstyle = "text-align:left;";
my $isize = "26";
if($key =~ /barcode|c_id|ct_name|int|state|sort|public/){
if($key =~ /barcode|c_id|ct_name|int|time\d+|state|sort|public/){
$txtstyle = "text-align:right;max-width:8em;";
$isize = "5";
$isize = "5" if($key =~ /int/);
}
$isize = $size if($size =~ /\d/);
$ct4rel->{$id}->{$key} = $lb->time4de($ct4rel->{$id}->{$key},"1") if($key =~ /time/);
$ct4rel->{$id}->{$key} = $lb->time4de($ct4rel->{$id}->{$key},"1") if($key =~ /time$/);
$ct4rel->{$id}->{$key} = $q->unescapeHTML($ct4rel->{$id}->{$key});# if($key !~ /byte/);
my $br4text = $R::node2edit || "";
$ct4rel->{$id}->{$key} = $lb->newline($ct4rel->{$id}->{$key},"","$br4text");
@ -1037,7 +1037,7 @@ sub tpl(){
print $q->td({-class=>'tdtxt',-style=>"$txtstyle $set_style"},"$bonustarif"),"\n";
}elsif($key =~ /int|save|time|sort|public/){
}elsif($key =~ /int|save|time$|sort|public/){
if($key eq "int06" && $ct4rel->{$id}->{int06}){
$ct4rel->{$id}->{int06} =~ s/,.*//;
}
@ -1084,6 +1084,11 @@ sub tpl(){
my $K_int = unpack "H*", $ct4rel->{$id}->{$key};
$txtstyle = "text-align:left;";
print $q->td({-class=>'tdtxt',-style=>"$txtstyle $set_style"},"$K_int"),"\n";
}elsif($key =~ /time\d+/){
$txtstyle = "text-align:right;";
$ct4rel->{$id}->{$key} =~ s/:00$//;
print $q->td({-class=>'tdtxt',-style=>"$txtstyle $set_style"},"$ct4rel->{$id}->{$key}"),"\n";
}
}
}

View file

@ -209,8 +209,8 @@ EOF
print $q->hidden(-name=>'cc_id', -value=>"$cttpos->{$id}->{cc_id}", -override=>'1');
print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$rel4tpl->{content_id}");
print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$node_meta->{tpl_id}");
print $but->singlesubmit2("ct_trans","save_pos","$ib{save_pos}","","ebutton5"),
$but->singlesubmit2("ct_trans","delete_pos","$ib{delete_pos}"),"\n";
print $but->singlesubmit2("ct_trans","save_pos","$ib{save_pos}","background-color:white;padding:20px;","")," ",
$but->singlesubmit2("ct_trans","delete_pos","$ib{delete_pos}","background-color:white;padding:20px;",""),"\n";
}elsif(!$ctt->{close_time}){
print $q->a({-class=>"editnav",-href=>"/DMS/Faktura?trans2edit=transpos\&c_idpos=$cttpos->{$id}->{c_id}\&c_id4trans=$rel4tpl->{content_id}\&tpl_id4trans=$node_meta->{tpl_id}\&owner=$users_dms->{u_id}",-title=>"Datensatz bearbeiten"}, $q->img({-src=>"$varenv{metahost}/glyphicons/glyphicons-151-edit.png"})),"\n";
}

View file

@ -92,12 +92,15 @@ sub utctime {
my $time = Time::Piece->strptime($date, "%Y-%m-%dT%H:%M:%S");
print FILE "localtime: " . $time->datetime . "\n";#localtime
my $utc_epoch = $time->epoch;
#$utc_epoch -= 2*60*60;# -2 std
#
#only -1 hour, because of deviceTime and serverTime differs
#'deviceTime' => '2021-10-14T08:19:35.000+0000',
#'serverTime' => '2021-10-14T07:19:37.000+0000',
$utc_epoch -= 1*60*60;# -1 std
#TODO
$utc_epoch -= 2*60*60;# -2 std (Sommerzeit)
#$utc_epoch -= 1*60*60;# -1 std (Winterzeit)
$utc_epoch += $latency;
$time = gmtime($utc_epoch);#epoch
print FILE "utctime: " . $time->datetime . "\n";#utc zulu date time

View file

@ -43,9 +43,14 @@ my %varenv = $cf->envonline($syshost);
my $lang = "de";
my $now_dt = strftime "%Y-%m-%d %H:%M:%S", localtime;
my $api_file = "/var/www/copri4/shareeconf/apikeys.cfg";
my $aconf = Config::General->new($api_file);
my %apikeyconf = $aconf->getall;
#print "---> " . $apikeyconf{Ilockitcloud}->{username} . "\n";
my $ua = LWP::UserAgent->new;
$ua->agent("sharee APIclient");
$ua->credentials( 'tracking.ilockit.bike:443', 'api', 'r.guempelein@sharee.bike', 'mohj2ooN');
$ua->credentials( 'tracking.ilockit.bike:443', 'api', "$apikeyconf{Ilockitcloud}->{username}", "$apikeyconf{Ilockitcloud}->{passwd}");
my $json = JSON->new->allow_nonref;
my $response_in = {};
@ -55,6 +60,7 @@ my $owner = 183;
my $todo = $ARGV[1];
#my $deviceId = $ARGV[2] || "";
my $pos_id = $ARGV[2] || "";
my $sleep = $ARGV[3] || "";
open(FILE,">>$varenv{logdir}/Ilockit_tracking.log");
print FILE "\n\n*** $now_dt\n";
@ -87,8 +93,9 @@ sub utctime {
my $time = Time::Piece->strptime($date, "%Y-%m-%dT%H:%M:%S");
print FILE "localtime: " . $time->datetime . "\n";#localtime
my $utc_epoch = $time->epoch;
#$utc_epoch -= 2*60*60;# -2 std (Sommerzeit)
$utc_epoch -= 1*60*60;# -1 std (Winterzeit)
#TODO
$utc_epoch -= 2*60*60;# -2 std (Sommerzeit)
#$utc_epoch -= 1*60*60;# -1 std (Winterzeit)
$utc_epoch += $latency;
$time = gmtime($utc_epoch);#epoch
print FILE "utctime: " . $time->datetime . "\n";#utc zulu date time
@ -111,7 +118,8 @@ sub get_pos {
if($todo eq "get_tripsum" && $pos_id){
print FILE "trying $todo && $pos_id" . "\n";
print FILE "trying $todo && $pos_id | sleep $sleep" . "\n";
sleep $sleep if($sleep);
my $rows = &get_tripsum($pos_id);
print FILE "got rows $rows" . "\n";
}else{

View file

@ -39,7 +39,7 @@ if($todo eq "sigo_available"){
print $0 . Dumper($return) . "\n";
}
if($todo eq "sigo_reserve"){
if($todo eq "sigo_booking"){
my $auth = { c_id => 1842 };
#my $bikeId = "380116b5-0522-43da-ab66-477744a731a3";# bike 1150
my $bike = "SX1150";# bike 1150 from app booking_request

View file

@ -34,6 +34,7 @@ my %varenv = $cf->envonline();
my $operator_key = $q->param('api_test');
my $bike = $q->param('bike');
#my $bike = "FR4781";
my $lang = "de";
my $dyn_js = "

View file

@ -41,9 +41,14 @@ sub tpl(){
if($users_sharee->{c_id} && $R::sharee_edit ne "delete_account2" && ($users_sharee->{c_id} eq $varenv->{superu_id} || $dbt->{copri_conf}->{stage} eq "test")){
my $coo = $q->cookie('domcookie') || $q->param('sessionid') || "";
#my $api_test = "sharee_kn";
my $api_test = "sharee_fr01";
print $q->div({-style=>'text-align:right;height:25px;padding:6px 15px 6px 0px;background-color:white'},$q->a({-style=>"color:#$bgcolor1;", -href=>"$varenv->{metahost}/src/scripts/tests/index.pl?sessionid=$coo\&api_test=$api_test", -target=>'_blank'}," [ $api_test ] "),"$users_sharee->{txt08}",$q->a({-style=>"color:#$bgcolor1;", -href=>"logout_sharee$session"},"logout")),"\n";
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_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";
}
print "<div class='container'>\n";

View file

@ -49,10 +49,10 @@ 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 $api_test = "sharee_fr01"; my $bike="FR1538";
#my $api_test = "sharee_wue";
#my $api_test = "sharee_sx"; my $bike="SX1150";
my $api_test = "sharee_ren"; my $bike="REN2";
#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";
}