App API bike_returned json extension. Longterm rental messaging by email. Check if invoice was booked before mailing

This commit is contained in:
ragu 2023-09-14 14:11:37 +02:00
parent 8cc46ff9e0
commit e7959e2da9
9 changed files with 207 additions and 71 deletions

View file

@ -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);

View file

@ -68,7 +68,7 @@ my $response = {
apiserver => "$apiserver",
response => "$respreq",
uri_primary => "$dbt->{primary}->{sharee_primary}->{primaryApp}",
copri_version => "4.1.23.16",
copri_version => "4.1.23.17",
user_id => "",
authcookie => "",
new_authcoo => "0",

View file

@ -1242,7 +1242,7 @@ sub collect_transpos {
}
$where .= " ORDER BY cp.c_id DESC LIMIT $search->{limit} OFFSET $search->{offset}" if($search->{limit});
my $sql = "SELECT cp.*,ct.txt07 AS phone from $search->{table} cp, contenttrans ct $where";
my $sql = "SELECT cp.*,ct.txt07 AS phone,ct.txt08 AS email,ct.txt11 AS lang from $search->{table} cp, contenttrans ct $where";
my $sth = $dbh->prepare($sql);
my $rc = $sth->execute();
my $ct = $sth->fetchall_hashref("c_id");

View file

@ -51,6 +51,66 @@ my %varenv = $cf->envonline();
my $now_dt = strftime "%Y-%m-%d %H:%M:%S", localtime;
my $debug=1;
#select rentals for messaging user if bike > 12h ... occupied
sub longterm_occupied {
my $self = shift;
my $varenv = shift;
my $dbh = "";
my $search = {
table => "contenttranspos",
int10 => 3,
int34 => "null",#if not staff
start_time_interval => "(now() - interval '1 day')",
};
my $update_pos = {
table => "contenttranspos",
};
my $dt1 = DateTime->now(time_zone => "Europe/Berlin");
my $cttpos = { c_id => 0 };
$cttpos = $dbt->collect_transpos($dbh,$search);
my $longterm_ctadr = {};
my $posting = {
78 => 'email',
36 => 'sms',
24 => 'email',
12 => 'email',
};
foreach my $pid (sort { $cttpos->{$b}->{end_time} cmp $cttpos->{$a}->{end_time} } keys(%$cttpos)){
if($cttpos->{$pid}->{int10} == 3){
my $dt2 = "";
$dt2 = DateTime::Format::Pg->parse_datetime($cttpos->{$pid}->{start_time});
if($dt2){
#foreach $posting {#TODO tests
foreach my $h_id (sort { $a <=> $b } keys(%$posting)){
print "--> hour:$h_id\n";
if($dt1 >= $dt2->add( hours => $h_id )){
if($cttpos->{$pid}->{int33} != $h_id){
$longterm_ctadr = {
hours => $h_id,
posting => $posting->{$h_id},
c_id => $cttpos->{$pid}->{ca_id},
pos_id => $cttpos->{$pid}->{c_id},
bike => $cttpos->{$pid}->{ct_name},
txt01 => $cttpos->{$pid}->{txt08},
txt07 => $cttpos->{$pid}->{phone},
txt08 => $cttpos->{$pid}->{email},
txt11 => $cttpos->{$pid}->{lang},
};
print $dt1 . ">=" . $dt2->add( hours => $h_id ) . "\n" . Dumper($longterm_ctadr) . "\n";
$dbt->update_one($dbh,$update_pos,"int33=78",$cttpos->{$pid}->{c_id});
}
}
}
}
}
}
return $longterm_ctadr;
}
#insert/save/delete DMS users
sub manage_dmsusers {
my $self = shift;

View file

@ -659,23 +659,35 @@ sub preinit(){
#PDF will be generated by "print_pdf" in context "buchen"
#"send_invoice_again" will use formarly generated PDF
if(-f "$varenv{basedir}/pdfinvoice/$praefix-$ctt->{ct_name}.pdf" && (($R::set_state eq "buchen" && $R::send_invoice && $ctt->{int01} && $ctt->{int01} != 0) || ($ib_key eq "send_invoice_again"))){
my $sum_paid = $R::sum_paid || 0;
$sum_paid =~ s/,/\./;
my $cms_message_key = "email-invoice";
$varenv{cms} = $dbt->fetch_cms($dbh,{ lang => $lang_ctt });
if(!$varenv{cms}->{$cms_message_key}->{txt}){
return "failure::Achtung, CMS-Text '$cms_message_key' ist nicht vorhanden. Es wurde keine eMail versandt!";
}
if($sum_paid != $ctt->{int01}){
return "failure::Achtung, die Summe der Positionen $sum_paid enstpricht nicht der Rechnung-Summe $ctt->{int01}. Die Rechnung muss vor dem eMail versand erst gebucht werden!";
}
system("$dbt->{copri_conf}->{basedir}/$varenv{syshost}/src/scripts/mailTransportcms.pl '$varenv{syshost}' 'send_invoice' '$ctt->{int10}' '$ctt->{c_id}' '' '$cms_message_key' '1'");
print EMA "---> Prelogic send_invoice $praefix-$ctt->{ct_name}.pdf email command: $dbt->{copri_conf}->{basedir}/$varenv{syshost}/src/scripts/mailTransportcms.pl '$varenv{syshost}' 'send_invoice' '$ctt->{int10}' '$ctt->{c_id}' '' '$cms_message_key' '1'\n";
}
#send_invoice_cms
if($ib_key eq "send_invoice_cms" && $R::cms_message_key){
my $sum_paid = $R::sum_paid || 0;
$sum_paid =~ s/,/\./;
$varenv{cms} = $dbt->fetch_cms($dbh,{ lang => $lang_ctt });
if(!$varenv{cms}->{$R::cms_message_key}->{txt}){
return "failure::Achtung, CMS-Text '$R::cms_message_key' ist nicht vorhanden. Es wurde keine eMail versandt!";
}
if($sum_paid != $ctt->{int01}){
return "failure::Achtung, die Summe der Positionen $sum_paid enstpricht nicht der Rechnung-Summe $ctt->{int01}. Die Rechnung muss vor dem eMail versand erst gebucht werden!";
}
my $with_pdf = "";
$with_pdf = 1 if(-f "$varenv{basedir}/pdfinvoice/$praefix-$ctt->{ct_name}.pdf" && $R::print_pdf);
system("$dbt->{copri_conf}->{basedir}/$varenv{syshost}/src/scripts/mailTransportcms.pl '$varenv{syshost}' 'send_invoice_cms' '$ctt->{int10}' '$ctt->{c_id}' '' '$R::cms_message_key' '$with_pdf'");

View file

@ -517,14 +517,14 @@ EOF
$cttpos->{$key} = $q->unescapeHTML("$cttpos->{$key}");
$cttpos->{$key} = $lb->newline($cttpos->{$key},"","");
print $q->Tr(),"\n";
print $q->td({-class=>'content1_cms',-colspan=>2},"$cttpos->{$key}"),"\n";
print $q->td({-class=>'content1_cms',-colspan=>2},"appapi-log<br />$cttpos->{$key}"),"\n";
}
}elsif($key eq "txt25"){
if($cttpos->{$key} && $users_dms->{int03} > 1){
$cttpos->{$key} = $q->unescapeHTML("$cttpos->{$key}");
$cttpos->{$key} = $lb->newline($cttpos->{$key},"","");
print $q->Tr(),"\n";
print $q->td({-class=>'content1_cms',-colspan=>2},"$cttpos->{$key}"),"\n";
print $q->td({-class=>'content1_cms',-colspan=>2},"sigapi-log<br />$cttpos->{$key}"),"\n";
}
}elsif($key =~ /txt/){
print $q->Tr(),"\n";
@ -974,10 +974,15 @@ EOF
::user_name:: &rarr; Kunden Name<br />
::app_name:: &rarr; App Name<br />
::invoice_nr:: &rarr; Faktura Beleg Nr<br />
::sum_total:: &rarr; Rechnungsbetrag Summe <br />
::total_sum:: &rarr; Rechnungsbetrag Summe <br />
::invoice_name:: &rarr; Faktura PDF Name<br />
::txid:: &rarr; Payone TXID<br />
::signature:: &rarr; eMail Signature<br />
::bike:: &rarr; Mietrad (PrefixNummer)<br />
::total_price:: &rarr; Mietpreis <br />
::hotline_email:: &rarr; hotline eMail Adresse<br />
::hotline_phone:: &rarr; hotline Telefonnr.<br />
::signature:: &rarr; eMail-footer Signature<br />
::konrad_signature:: &rarr; konrad eMail-footer Signature<br />
"),"\n";
}

View file

@ -662,6 +662,7 @@ EOF
print $q->hidden(-name=>'tpl_id4trans', -override=>'1', -value=>"$ctt->{template_id}"),"\n";
print $q->hidden(-name=>'offset', -override=>'1', -value=>"$R::offset"),"\n" if($R::offset);
print $q->hidden(-name=>'limit', -override=>'1', -value=>"$R::limit"),"\n" if($R::limit);
print $q->hidden(-name=>'sum_paid', -override=>'1',-value=>"$sum_paid");
print $q->div({-style=>"padding:0.5em;font-size:0.81em;width:98%;text-align:right;"}, "Copri-Ticket-mailing: ", $but->selector_class("cms_message_key","eselect","width:250px;","",@_valxx), "mit PDF", $but->checkbox("1","print_pdf","1","mit PDF",""), $but->singlesubmit1("ct_trans","send_invoice_cms","")),"\n";
print $q->end_form;

View file

@ -29,12 +29,14 @@ use DateTime::Format::Pg;
use Scalar::Util qw(looks_like_number);
use Lib::Config;
use Mod::DBtank;
use Mod::Prelib;
use Mod::MailTransport;
use Data::Dumper;
my $cf = new Config;
my %varenv = $cf->envonline();
my $dbt = new DBtank;
my $pl = new Prelib;
my $mailtrans = new MailTransport;
my $now_dt = strftime "%Y.%m.%d %H:%M:%S", localtime;
@ -106,6 +108,7 @@ if(looks_like_number($adr_id)){
if(($todo eq "send_cpupdate_message" || $todo eq "send_proactive_cpupdate_message")){
$sendmail = send_cpupdate_message($todo,$sendref,$ctadr);
}
}#end user-account message
#send_alarm2hotline, done by Ilockit_cloud.pl
@ -118,38 +121,50 @@ if($todo eq "send_occupied2hotline"){
$sendmail = send_occupied2hotline($sendref);
}
#send_invoice_onwork once a week as reminder [in Arbeit|eMail gesendet]
if($todo eq "send_invoice_onwork"){
#final send
if(ref($sendmail) eq "HASH" && $sendmail->{c_id}){
sendmailjob($sendmail);
}else{
print EMA "Error, can not sendmailjob without c_id\n";
}
#user messaging for all operators by one cronjob
if($todo eq "send_invoice_onwork" || $todo eq "email_longterm_occupied"){
#loop operators DB
while (my ($key, $op_name) = each %{ $dbt->{operator} }) {
if($op_name->{database}->{dbname}){
my $rows = 0;
my $sharee_operator = $op_name->{database}->{dbname};
my $dbh = "";
$dbh = $dbt->dbconnect_extern($sharee_operator);
$dbh = $dbt->dbconnect_extern($sharee_operator,"iso-8859-1");
$oprefix = $op_name->{oprefix} || "";
$sendref->{syshost} = "$syshost";
$sendmail = send_invoice_onwork($dbh,$oprefix,$sendref);
if($sendmail->{c_id}){
#send_invoice_onwork once a week as reminder [in Arbeit|eMail gesendet]
if($todo eq "send_invoice_onwork"){
$sendmail = send_invoice_onwork($dbh,$oprefix,$sendref);
}
#email_longterm_occupied, done by cronjob (enhance/substitute sms_message 24h_occupied job)
if($todo eq "email_longterm_occupied"){
$sendmail = email_longterm_occupied($dbh,$oprefix,$sendref);
}
#final send
if(ref($sendmail) eq "HASH" && $sendmail->{c_id}){
sendmailjob($sendmail);
}
}
}
}
if($sendmail->{c_id}){
sendmailjob($sendmail);
}else{
print EMA "Error, can not sendmailjob without c_id\n";
}
}#end user messaging for all operators by one cronjob
#send_invoice
sub send_invoice {
my $todo = shift || "";
my $sendref = shift || {};
my $ctadr = shift || "";
my $ctadr = shift || {};
my $ct_id = shift || "";
my $cms_message_key = shift || "email-invoice";
my $with_pdf = shift || "";
@ -190,8 +205,8 @@ sub send_invoice {
$ctt->{fibu_user} = "$fibu_owner->{txt01}" if($fibu_owner->{txt01});
}
$sendref = prepare_content($sendref,$ctadr,$uadr,$ctt,$varenv{cms}->{$cms_message_key}->{txt},$with_pdf);
my $ctadr_invoice = $ctt;#take adr from invoice for account-less mailing
$sendref = prepare_content($sendref,$ctadr_invoice,$uadr,$ctt,$varenv{cms}->{$cms_message_key}->{txt},$with_pdf);
my $updatectt = {
table => "contenttrans",
@ -294,6 +309,7 @@ sub send_cpupdate_message {
}#end send_cpupdate_message
#send_alarm2hotline
sub send_alarm2hotline {
my $sendref = shift;
@ -415,7 +431,6 @@ sub send_invoice_onwork {
my $dbh = shift;
my $oprefix = shift || "";
my $sendref = shift;
my $ct_id = shift || "";
my $dbh_primary = $dbt->dbconnect_extern($dbt->{primary}->{sharee_primary}->{database}->{dbname},"iso-8859-1");
@ -470,6 +485,36 @@ EOF
return;
}#end send_invoice_onwork
#greater 12h_mailmessage
#TODO test ....
sub email_longterm_occupied {
my $dbh = shift;
my $oprefix = shift || "";
my $sendref = shift;
#operator contact
my $pref_ctu = {
table => "contentuser",
fetch => "one",
c_id => "1",
};
my $uadr = { c_id => 0 };
$uadr = $dbt->fetch_tablerecord($dbh,$pref_ctu);
my $longterm_ctadr = {};
$longterm_ctadr = $pl->longterm_occupied(\%varenv);
my $lang = $longterm_ctadr->{txt11} || "de";
$varenv{cms} = $dbt->fetch_cms($dbh,{ lang => $lang });
my $cms_message_key = "";
$cms_message_key = "email-" . $longterm_ctadr->{hours} . "h-occupied" if($longterm_ctadr->{hours});
if($longterm_ctadr->{posting} eq "email" && $varenv{cms}->{$cms_message_key}->{txt}){
$sendref = prepare_content($sendref,$longterm_ctadr,$uadr,"",$varenv{cms}->{$cms_message_key}->{txt});
}
return $sendref;
}#end email_longterm_occupied
#prepare email by cms markup
sub prepare_content {
@ -484,15 +529,15 @@ sub prepare_content {
$app_name = $dbt->{operator}->{$varenv{dbname}}->{app_name};
my $invoice_name = "";
my $invoice_nr = "";
my $sum_total = "";
my $total_sum = "";
my $sharee_ticket = "";
my $fibu_user = "";
if(ref($ctt) eq "HASH" && $ctt->{ct_name}){
$invoice_name = "$ctt->{txt00}-$varenv{dbname}-$ctt->{ct_name}.pdf";
$sendref->{attachment} = "$invoice_name" if($with_pdf);
$invoice_nr = "$varenv{dbname}-$ctt->{ct_name}";
$sum_total = "$ctt->{int01}";
$sum_total =~ s/\./,/;
$total_sum = "$ctt->{int01}";
$total_sum =~ s/\./,/;
$sharee_ticket = "[$invoice_nr]";
$fibu_user = "\n$ctt->{fibu_user}\n" if($ctt->{fibu_user});
}
@ -526,9 +571,10 @@ EOF
$sendref->{message} = $cms_prim;
$sendref->{message} =~ s/::user_name::/$ctadr->{txt01}/g;
$sendref->{message} =~ s/::bike::/$ctadr->{bike}/g if($ctadr->{bike});
$sendref->{message} =~ s/::app_name::/$app_name/g;
$sendref->{message} =~ s/::invoice_nr::/\<b\>$invoice_nr\<\/b\>/g if($invoice_nr);
$sendref->{message} =~ s/::sum_total::/\<b\>$sum_total €\<\/b\>/g if($sum_total);
$sendref->{message} =~ s/::total_sum::/\<b\>$total_sum €\<\/b\>/g if($total_sum);
$sendref->{message} =~ s/::invoice_name::/$invoice_name/g if($invoice_name);
$sendref->{message} =~ s/::txid::/$ctt->{txt16}/;
$sendref->{message} =~ s/::email_temppassword::/\<b\>$ctadr->{txt04}\<\/b\>/g;

View file

@ -269,7 +269,7 @@ EOF
$label_des = "<span style=color:$red>$varenv->{cms}->{'iframe-correct-input'}->{txt}</span>" if($R::failure);
print $q->label({-for=>"$key", -style=>'padding-top:1em;'},"$label_des"),"\n";
print "<input id='$key' type='text' class='form-control' name='$key' value='' $required autofocus />\n";
print $q->div({-class=>'content2'}, "$varenv->{cms}->{'iframe-if-sms-code-not-received'}->{txt} ",$q->a({-style=>"color:#$bgcolor1;",-href=>"$varenv->{wwwhost}?sharee_edit=send_sms$session_and"},"$varenv->{cms}->{'iframe-request-sms-code'}->{txt}")),"\n";
#print $q->div({-class=>'content2'}, "$varenv->{cms}->{'iframe-if-sms-code-not-received'}->{txt} ",$q->a({-style=>"color:#$bgcolor1;",-href=>"$varenv->{wwwhost}?sharee_edit=send_sms$session_and"},"$varenv->{cms}->{'iframe-request-sms-code'}->{txt}")),"\n";
}else{
print $q->div({-class=>'content2', -style=>'color:gray;'}, "* $varenv->{cms}->{'iframe-sms-code-already-entered'}->{txt}"),"\n";
}