some minor prepaid fixes

This commit is contained in:
ragu 2024-01-11 06:40:31 +01:00
parent 2dc53f4087
commit f731aa352b
12 changed files with 53 additions and 32 deletions

View file

@ -1712,7 +1712,7 @@ sub user_rentals_history(){
$operator_hash{$auth->{txt17}} = "$dbt->{operator}{$auth->{txt17}}->{operatorApp}";
}
#adding primary to get prepaid
#$operator_hash{sharee_primary} = "$dbt->{primary}{sharee_primary}->{primaryApp}";
$operator_hash{sharee_primary} = "$dbt->{primary}{sharee_primary}->{primaryApp}" if($allop);
foreach my $sharee_operator (keys (%operator_hash)){
#$bw->log("operator_hash sharee_operator: $sharee_operator",$sharee_operator,"");
@ -1795,22 +1795,20 @@ sub user_bikes_occupied {
my $dbh = shift;
my $auth = shift;
my $show_dialog = shift || "";
my $station = shift || "";
my $pref = {
my $pref = {
table => "contenttrans",
table_pos => "contenttranspos",
fetch => "all",
template_id => "218",#Faktura tpl_id
keyfield => "c_id",
ca_id => "$auth->{c_id}",
#txt10 => "IN::('occupied','requested')",
int10 => "IN::('3','2')",
"ct.close_time" => "is::null",
};
$pref->{int06} = $station if($station);#pos start-station
##selects also int28 > 0 bikes to view once miniquery
#it will only defined on booking_request, because there must be available
#$pref->{show_dialog} = "1" if($show_dialog);
my $record = {};
$record = $dbt->collect_post($dbh,$pref) if($auth->{c_id});
return $record;

View file

@ -527,7 +527,11 @@ elsif($q->param('request') eq "bikes_available"){
#2023-11-13, return also bikes_occupied on bikes_available by operator request
if($user_agent_subversion >= 375 || $user_agent =~ /Mozilla/){#Mozilla for testing
my $record = {};
$record = $apif->user_bikes_occupied($dbh,$authraw,"");
my $station = $q->escapeHTML($q->param('station')) || "";
my $station_id = "";
$station_id = $1 if($station =~ /(\d+)$/);
$record = $apif->user_bikes_occupied($dbh,$authraw,"",$station_id);
$response->{bikes_occupied} = $apif->rentals(\%varenv,$record,$authraw,"1");#returns JSON rental values
}
}

View file

@ -130,10 +130,10 @@ sub battery_percent {
sub isuser_rentable {
my $self = shift;
my $auth = shift;
my $varenv = shift;
my $varenv = shift || "";
my $rentable_check=0;
if($auth->{int03} && $auth->{ct_name} && ($auth->{int03} == 1 && $auth->{ct_name} =~ /\w{2}-\d+/) || ($auth->{int03} == 2 && length($auth->{ct_name}) >= 19) || ($auth->{int03} == 3 && $auth->{ct_name} =~ /Prepaid-\d+/i)){
if($auth->{int03} && $auth->{ct_name} && ($auth->{int03} == 1 && $auth->{ct_name} =~ /^\w{2}-\d+/) || ($auth->{int03} == 2 && length($auth->{ct_name}) >= 19) || ($auth->{int03} == 3 && $auth->{ct_name} =~ /Prepaid-\d+/i)){
$rentable_check=1;
if($auth->{txt08} && $auth->{int04} == 1 && $auth->{int13} == 1 && !$auth->{int12} && $auth->{int14}){
$rentable_check=2;#if 2 then everything should be alright. rental is enabled

View file

@ -1622,8 +1622,9 @@ sub insert_contenttrans(){
$doc_name = "Tagesabschluss" if($tpl_id == 209);
$doc_name = "Prepaid Account" if($tpl_id == 219);
$owner="199" if(!$owner);
my $paymenttype = $ctadr->{int03} || 0;
#keep in mind int10 will be mainly used by Prelogic and Printpreview, thats because we save it also
my $sth = $dbh->prepare("INSERT INTO contenttrans (ct_name,txt00,int10,int03,txt02,txt01,txt03,txt06,txt07,txt08,txt10,txt11,owner,itime) VALUES('$invoice_nr','$doc_name','$ctadr->{c_id}','$ctadr->{int03}','$ctadr->{txt02}','$ctadr->{txt01}','$ctadr->{txt03}','$ctadr->{txt06}','$ctadr->{txt07}','$ctadr->{txt08}','$ctadr->{txt10}','$ctadr->{txt11}','$owner','now()') RETURNING c_id");
my $sth = $dbh->prepare("INSERT INTO contenttrans (ct_name,txt00,int10,int03,txt02,txt01,txt03,txt06,txt07,txt08,txt10,txt11,owner,itime) VALUES('$invoice_nr','$doc_name','$ctadr->{c_id}','$paymenttype','$ctadr->{txt02}','$ctadr->{txt01}','$ctadr->{txt03}','$ctadr->{txt06}','$ctadr->{txt07}','$ctadr->{txt08}','$ctadr->{txt10}','$ctadr->{txt11}','$owner','now()') RETURNING c_id");
my $rows = $sth->execute();
my $last_id;

View file

@ -787,7 +787,7 @@ sub handler {
if($R::sharee_edit && $R::sharee_edit =~ /save_account/){
$returnwww =~ s/::/=/g if($returnwww && $returnwww =~ /success::\w+/);
($api_return,$users_sharee) = $apif->auth_verify($q,$coo,"");
$payable_check = $bw->isuser_rentable($users_sharee,\%varenv);
$payable_check = $bw->isuser_rentable($users_sharee);
if((!$users_sharee->{int14}) || ($users_sharee->{txt31} && $tpl->{tpl_order} =~ /$users_sharee->{txt31}/)){
#failure redirect should do the delete job
@ -811,7 +811,8 @@ sub handler {
exit 0;
}
elsif($payable_check && $payable_check == 2){
print redirect("$varenv{wwwhost}/$varenv{mandant}/Account/$varenv{accounting_2}?cum=2-$payable_check$session_and\&$returnwww");
print redirect("$varenv{wwwhost}/$varenv{mandant}/Account/$varenv{accounting_3}?cum=2-$payable_check$session_and\&$returnwww");
#print redirect("$varenv{wwwhost}/$varenv{mandant}/Account/$varenv{accounting_2}?cum=2-$payable_check$session_and\&$returnwww");
exit 0;
}
}elsif($path =~ /$varenv{mandant}\/$varenv{profile}/ && $referer !~ /failure=\w/){

View file

@ -1135,7 +1135,9 @@ sub generate_payonelink {
my $ctadr = shift;
my $prepaidhash = shift || {};
my $prepaid_amount = shift || 0;
my $owner = shift || 0;
my $aowner = shift || 0;
my $app_name = $dbt->{merchant_ids}->{$varenv->{merchant_id}}->{app_name} if($varenv->{merchant_id} && $dbt->{merchant_ids}->{$varenv->{merchant_id}}->{app_name});
my $ret_json = {};
my $response_in = {};
@ -1174,11 +1176,10 @@ sub generate_payonelink {
merchantId => "$dbt->{payonelink_conf}->{merchantId}",
accountId => "$dbt->{payonelink_conf}->{accountId}",
portalId => "$dbt->{payonelink_conf}->{portalId}",
userId => "$ctadr->{c_id}",
mode => "$dbt->{payonelink_conf}->{mode}",
notifyUrl => "$dbt->{payonelink_conf}->{notifyUrl}",
description => "Ihr vorbereiteter sharee.bike Prepaid/Vorkasse Auftrag",
paymentMethods => ['visa', 'mastercard', 'giropay', 'sepa'],
paymentMethods => ['visa', 'mastercard', 'giropay'],
reference => "$reference",
shoppingCart => [{
type => "goods",
@ -1195,6 +1196,7 @@ sub generate_payonelink {
country => "DE"
}
};
#we still have sepa. do it without sepa because of workflow
#paymentMethods => ['visa', 'mastercard', 'paypal', 'sofort', 'paydirekt', 'giropay', 'sepa'],
my $datahash = "$pay_json->{merchantId}$pay_json->{accountId}$pay_json->{portalId}$pay_json->{mode}$pay_json->{reference}$amount$currency";
@ -1215,7 +1217,7 @@ sub generate_payonelink {
table => "contenttranspos",
ca_id => "$ctadr->{c_id}",
mtime => "now()",
owner => "$owner",
owner => "$aowner",
};
eval {
@ -1239,7 +1241,7 @@ sub generate_payonelink {
if(!$varenv->{cms}->{$cms_message_key}->{txt}){
$feedb->{message} = "failure::Achtung, '$cms_message_key' ist nicht vorhanden. Es wurde keine eMail versandt!";
}elsif($ctpos->{c_id}){
system("$dbt->{copri_conf}->{basedir}/$varenv->{syshost}/src/scripts/mailTransportcms.pl '$varenv->{syshost}' 'send_payonelink' '$ctadr->{c_id}' '$ctpos->{c_id}' '' '$cms_message_key' ''");
system("$dbt->{copri_conf}->{basedir}/$varenv->{syshost}/src/scripts/mailTransportcms.pl '$varenv->{syshost}' 'send_payonelink' '$ctadr->{c_id}' '$ctpos->{c_id}' '' '$cms_message_key' '' '$app_name'");
}
}#end if($ctadr->{c_id} && $prepaidhash->{prepaid_id} && $prepaid_amount2 >= 5)

View file

@ -665,9 +665,8 @@ sub collect_prepaid {
$prepaidhash->{description} = $cttpos->{$id}->{txt01};
$prepaidhash->{response_log} = $cttpos->{$id}->{txt25};
$prepaidhash->{payone_link} = $cttpos->{$id}->{txt30};
if($cttpos->{$id}->{txt25} =~ /(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}) mailing/){
if($cttpos->{$id}->{txt25} =~ /(\d{2}\.\d{2}\.\d{4}\s\d{2}:\d{2}).*mailing/){
$prepaidhash->{mail_datetime} = $1;
$prepaidhash->{mail_datetime} = $lb->time4de($prepaidhash->{mail_datetime},"1");
}
}
if($cttpos->{$id}->{int02} && $cttpos->{$id}->{int02} != 0){

View file

@ -477,10 +477,12 @@ sub save_account(){
$vde_on_fail = 2 if($valxx && $valxx == 1);
$update_adr->{$_} = $vde_on_fail;
}elsif($_ =~ /^int03/){
#on payment-type change set vde=3
#on payment-type change set vde=3 if no vaild user paymentdata available
if($ctadr->{int03} && $ctadr->{int03} != $valxx){
$update_adr->{$_} = $valxx;
$update_adr->{int12} = 3;
my $rentable_check=0;
$rentable_check = $bw->isuser_rentable($ctadr);
$update_adr->{int12} = 3 if($rentable_check < 1);#than it will be set by payone response
}else{
$update_adr->{$_} = $valxx;
}
@ -624,7 +626,11 @@ sub save_account(){
$ret = $ret_conflict if($ret_conflict);
print FILE "final ret: $ret \n" if($debug);
#operators_loop doesn't save operator specific data like int07 or int16, first save in operator
if($varenv{dbname} ne $dbt->{primary}->{sharee_primary}->{database}->{dbname}){
my $dbh_operator = $dbt->dbconnect_extern($varenv{dbname});
$u_rows = $dbt->update_record($dbh_operator,$update_adr,$ctadr);
}
#update operator with primary data after COPRI address edit
$dbt->update_operatorsloop($varenv{dbname},$ctadr->{c_id},"update");

View file

@ -76,7 +76,7 @@ sub tpl(){
#if operator invoice with prepaid type exist, then check whether balance positive
my $sum_prepaid = 0;
if($ctt->{int03} && $ctt->{int03} == 3 && $varenv->{dbname} ne $dbt->{primary}->{sharee_primary}->{database}->{dbname}){
if($ctadr->{ct_name} =~ /Prepaid-\d+/ && $varenv->{dbname} ne $dbt->{primary}->{sharee_primary}->{database}->{dbname}){
my $shareeio_json = {
request => "collect_prepaid_invoices",
userID => "$ctadr->{c_id}",
@ -599,7 +599,7 @@ EOF
print $q->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"},"<span style='color:silver;'>Summe ist nicht gebucht!</span>"),"\n";
}
if($ctt->{int03} && $ctt->{int03} == 3 && (!$ctt->{state} || $ctt->{int14})){
if($ctadr->{ct_name} =~ /Prepaid-\d+/ && $varenv->{dbname} ne $dbt->{primary}->{sharee_primary}->{database}->{dbname} && (!$ctt->{state} || $ctt->{int14})){
my $presaldo = $sum_prepaid - $sum_paid;
$presaldo = sprintf('%.2f', $presaldo);
my $precolor = "red";

View file

@ -47,6 +47,7 @@ my $ct_id = $ARGV[3] || "";
my $temppw = $ARGV[4] || "";
my $cmstext_select = $ARGV[5] || "";
my $with_pdf = $ARGV[6] || "";
my $app_name = $ARGV[7] || "";
open(EMA, ">> $dbt->{copri_conf}->{logdir}/mailTransportcms.log");
print EMA "\n$now_dt, start mailTransportcms.pl syshost: $syshost, todo:$todo, adr_id:$adr_id, ct_id:$ct_id, temppw:$temppw, cmstext_select:$cmstext_select, with_pdf:$with_pdf\n";
@ -96,7 +97,7 @@ if(looks_like_number($adr_id)){
#send_payonelink
if($todo eq "send_payonelink"){
$sendmail = send_payonelink($todo,$sendref,$ctadr,$ct_id,$cmstext_select);
$sendmail = send_payonelink($todo,$sendref,$ctadr,$ct_id,$cmstext_select,$app_name);
}
#send_emailack
@ -231,6 +232,8 @@ sub send_payonelink {
my $ctadr = shift;
my $ctpos_id = shift;
my $cms_message_key = shift || "";
my $app_name = shift || "";
my $lang = $ctadr->{txt11} || $ctadr->{txt10};
my $dbh_primary = $dbt->dbconnect_extern($dbt->{primary}->{sharee_primary}->{database}->{dbname},"iso-8859-1");
@ -253,13 +256,13 @@ sub send_payonelink {
my $record_pos = { c_id => 0 };
$record_pos = $dbt->fetch_tablerecord($dbh_primary,$pref_pos) if($ctpos_id);
$sendref = prepare_content($sendref,$ctadr,$uadr,$record_pos,$varenv{cms}->{$cms_message_key}->{txt});
$sendref = prepare_content($sendref,$ctadr,$uadr,$record_pos,$varenv{cms}->{$cms_message_key}->{txt},'',$app_name);
my $update_pos = {
table => "contenttranspos",
c_id => "$ctpos_id",
};
my $log_stamp = strftime "%d.%m.%Y %H:%M:%S", localtime;
my $log_stamp = strftime "%d.%m.%Y %H:%M", localtime;
my $mailing_log = $record_pos->{txt25} . "\n- $log_stamp mailing: $cms_message_key";
$dbt->update_one($dbh_primary,$update_pos,"txt25='$mailing_log'");
@ -571,9 +574,13 @@ sub prepare_content {
my $ctt = shift || {};
my $cms_prim = shift || "";
my $with_pdf = shift || "";
my $app_name = shift || "";
my $app_name = "Mietrad App";
$app_name = $dbt->{operator}->{$varenv{dbname}}->{app_name};
if(!$app_name && $dbt->{operator}->{$varenv{dbname}}->{app_name}){
$app_name = $dbt->{operator}->{$varenv{dbname}}->{app_name};
}else{
$app_name = "Mietrad App";
}
my $invoice_name = "";
my $invoice_nr = "";
my $total_sum = "";

View file

@ -48,7 +48,7 @@ sub tpl(){
print $q->div({-class=>'content_title3'},"$varenv->{cms}->{'iframe-credit-card-data'}->{txt}"),"\n";
print $q->div({-class=>'content2'},"$varenv->{cms}->{'iframe-creditcard-data-info'}->{txt}"),"\n";
if($users_sharee->{int03} && $users_sharee->{int03} == 2 && $users_sharee->{txt28} && $users_sharee->{txt28} =~ /pseudocardpan=\d{19}/ && $users_sharee->{txt28} =~ /(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2})/){
if($users_sharee->{int03} && $users_sharee->{int03} == 2 && length($users_sharee->{ct_name}) >= 19 && $users_sharee->{txt28} && $users_sharee->{txt28} =~ /pseudocardpan=\d{19}/ && $users_sharee->{txt28} =~ /(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2})/){
my $cc_datetime = $1 || "";
$cc_datetime = $lb->time4de($cc_datetime,"1") if($cc_datetime);
$varenv->{cms}->{'iframe-cc-acception'}->{txt} =~ s/::cc_datetime::/$cc_datetime/;

View file

@ -93,11 +93,14 @@ sub tpl(){
print $q->div({-class=>'content2', -style=>'color:#c83434;'}, "$varenv->{cms}->{'iframe-prepaid-failure'}->{txt}"),"\n" if($ret_json =~ /failure/);
if($prepaidhash->{payone_link}){
$varenv->{cms}->{'iframe-prepaid-emailinfo'}->{txt} =~ s/\n/<br \/>/g;
$varenv->{cms}->{'iframe-prepaid-emailinfo'}->{txt} =~ s/::mail_datetime::/$prepaidhash->{mail_datetime}/g;
$varenv->{cms}->{'iframe-prepaid-emailinfo'}->{txt} =~ s/::email::/$ctadr->{txt08}/g;
$varenv->{cms}->{'iframe-prepaid-emailinfo'}->{txt} =~ s/::payone_link::/<b><a href='$prepaidhash->{payone_link}' target='_blank'>Test $prepaidhash->{payone_link}<\/a><\/b>/g if($users_sharee->{c_id} eq $dbt->{copri_conf}->{superu_id});
$varenv->{cms}->{'iframe-prepaid-emailinfo'}->{txt} =~ s/::app_name::/<b>$dbt->{merchant_ids}->{$varenv->{merchant_id}}->{app_name}<\/b>/g;
print $q->div({-class=>'content2'}, "$varenv->{cms}->{'iframe-prepaid-emailinfo'}->{txt}"),"\n";
print $q->div({-style=>'margin-top:1em;text-align:center;'},"<button type='submit' name='sharee_edit' value='save_account' class='btn btn-primary btn-lg btn-block' style='border:1px solid #$bgcolor1;background-color:#$bgcolor1;'>$varenv->{cms}->{'iframe-next'}->{txt}</button>"),"\n";
}else{
my $label_des="$varenv->{cms}->{'iframe-prepaid-input'}->{txt}";
print $q->label({-for=>"prepaid_amount", -style=>'padding-top:1.5em;'},"$label_des"),"\n";
@ -108,13 +111,13 @@ sub tpl(){
}elsif($ret_json){
#payone-link mailing will be done by $pay->generate_payonelink
$varenv->{cms}->{'iframe-prepaid-emailinfo'}->{txt} =~ s/\n/<br \/>/g;
$varenv->{cms}->{'iframe-prepaid-emailinfo'}->{txt} =~ s/::mail_datetime::/$prepaidhash->{mail_datetime}/g;
$varenv->{cms}->{'iframe-prepaid-emailinfo'}->{txt} =~ s/::email::/$ctadr->{txt08}/g;
$varenv->{cms}->{'iframe-prepaid-emailinfo'}->{txt} =~ s/::payone_link::/<b><a href='$prepaidhash->{payone_link}' target='_blank'>Test $prepaidhash->{payone_link}<\/a><\/b>/g if($ctadr->{c_id} eq $dbt->{copri_conf}->{superu_id});
$varenv->{cms}->{'iframe-prepaid-emailinfo'}->{txt} =~ s/::app_name::/<b>$dbt->{merchant_ids}->{$varenv->{merchant_id}}->{app_name}<\/b>/g;
print $q->div({-class=>'content2', -style=>'color:#009899;'}, "$varenv->{cms}->{'iframe-prepaid-emailinfo'}->{txt}"),"\n";
print $q->div({-class=>'content2'}, ""),"\n";
#print Dumper($ret_json) . "<br />\n";
print $q->div({-style=>'margin-top:1em;text-align:center;'},"<button type='submit' name='sharee_edit' value='save_account' class='btn btn-primary btn-lg btn-block' style='border:1px solid #$bgcolor1;background-color:#$bgcolor1;'>$varenv->{cms}->{'iframe-next'}->{txt}</button>"),"\n";
}