From 10d3b3d67f53544ebb6944c88a76787e873d42c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rainer=20G=C3=BCmpelein?= Date: Sun, 20 Feb 2022 09:10:00 +0100 Subject: [PATCH] payment reference --- copri4/main/src/Mod/Payment.pm | 36 +++++++++++--- copri4/main/src/Tpl/Address3.pm | 88 +++++++++++---------------------- 2 files changed, 58 insertions(+), 66 deletions(-) diff --git a/copri4/main/src/Mod/Payment.pm b/copri4/main/src/Mod/Payment.pm index c2132eb..ad8cc39 100755 --- a/copri4/main/src/Mod/Payment.pm +++ b/copri4/main/src/Mod/Payment.pm @@ -7,7 +7,7 @@ package Payment; #Adapted from payone_post.pl # #enable for syntax check -#use lib "/var/www/copri-bike/shareedms-primary/src"; +use lib "/var/www/copri-bike/shareedms-primary/src"; use strict; use warnings; @@ -133,16 +133,26 @@ sub preauthorizationSEPA_main { } } my $preauth_amount = 0; - + my $reference = ""; #for testing payment-data if($ctt_rec->{c_id} && $ctt_rec->{c_id} == 1 && $ctt_rec->{reference}){ $ctt = $ctt_rec; $preauth_amount = $ctt->{int15};#int15 should only used for testing payment-data + $reference = $ctt_rec->{reference}; }else{ $preauth_amount = $ctt->{int01}; - $ctt->{reference} = $dbt->{operator}->{$varenv->{dbname}}->{oprefix} . "-S-" . $ctt->{ct_name}; + $reference = $dbt->{operator}->{$varenv->{dbname}}->{oprefix} . "-S-" . $ctt->{ct_name}; + } + #if reference still set then count + if($ctt->{txt25}){ + if($ctt->{txt25} =~ /\d-\d$/){ + my ($refbase,$sub) = split(/-/,$ctt->{txt25}); + $sub++; + $reference = "$refbase-$sub"; + }else{ + $reference = "$ctt->{txt25}-1"; + } } - if($ctadr->{c_id} && $ctt->{c_id} && $preauth_amount > 0){ @@ -178,7 +188,7 @@ sub preauthorizationSEPA_main { currency => "$currency", iban => uc($ctadr->{txt22}), bic => uc($ctadr->{txt23}), - reference => "$ctt->{reference}" + reference => "$reference" }; $preauth_request->{ip} = "$ctadr->{txt25}" if($ctadr->{txt25} && $ctadr->{txt25} =~ /\d+\.\d+\.\d+\.\d+/); my $request = { %$payone_conf, %$preauth_request}; @@ -265,14 +275,26 @@ sub preauthorizationCC_main { } } my $preauth_amount = 0; + my $reference = ""; #for testing payment-data if($ctt_rec->{c_id} && $ctt_rec->{c_id} == 1 && $ctt_rec->{reference}){ $ctt = $ctt_rec; $preauth_amount = $ctt->{int15};#int15 should only used for testing payment-data + $reference = $ctt_rec->{reference}; }else{ $preauth_amount = $ctt->{int01}; - $ctt->{reference} = $dbt->{operator}->{$varenv->{dbname}}->{oprefix} . "-C-" . $ctt->{ct_name}; + $reference = $dbt->{operator}->{$varenv->{dbname}}->{oprefix} . "-C-" . $ctt->{ct_name}; + } + #if reference still set then count + if($ctt->{txt25}){ + if($ctt->{txt25} =~ /\d-\d$/){ + my ($refbase,$sub) = split(/-/,$ctt->{txt25}); + $sub++; + $reference = "$refbase-$sub"; + }else{ + $reference = "$ctt->{txt25}-1"; + } } if($ctadr->{c_id} && $ctt->{c_id} && $preauth_amount > 0){ @@ -306,7 +328,7 @@ sub preauthorizationCC_main { country => "$ctadr->{txt10}", pseudocardpan => "$ctadr->{ct_name}", ecommercemode => "internet", # wird zu 3Dscheck, - reference => "$ctt->{reference}" + reference => "$reference" }; # https://docs.payone.com/display/public/PLATFORM/Special+remarks+-+Recurring+transactions+credit+card # https://docs.payone.com/display/public/INT/Best+Practices+for+PSD2#tab-3DS+2.0+Best+Case diff --git a/copri4/main/src/Tpl/Address3.pm b/copri4/main/src/Tpl/Address3.pm index 17b9ff1..8b5ded7 100755 --- a/copri4/main/src/Tpl/Address3.pm +++ b/copri4/main/src/Tpl/Address3.pm @@ -190,11 +190,13 @@ EOF print $q->start_table({-class=>'list', -height=>'10em',-border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'0', -cellspacing=>'0'}),"\n"; ###Content #Edit Address --> template=Adressenliste $ctt->{txt01} = $q->unescapeHTML("$ctt->{txt01}"); + my $int05 = ""; + $int05 = "(manuell)" if($ctt->{int05}); + if($users_dms->{u_id} && ($R::trans2edit eq "client" || $R::ct_trans eq "add_transadr")){ my @_anrede = ("","Frau","Herr","Firma"); print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctx->{c_id}"),"\n";#c_id from contenttrans print $q->hidden(-name=>'int10', -override=>'1', -value=>"$c_idadr"),"\n"; - #print $q->hidden(-name=>'txt26', -override=>'1', -value=>"$mandat"),"\n"; print $q->hidden(-name=>'c_idadr', -override=>'1', -value=>"$c_idadr"),"\n"; print $q->hidden(-name=>'rel_id', -override=>'1', -value=>"$rel4tpl->{rel_id}"),"\n"; print $q->Tr(),"\n"; @@ -218,6 +220,14 @@ EOF print $q->Tr(),"\n"; print $q->td({-class=>'tdescr'},"eMail"),"\n"; print $q->td({-class=>'tdval',-colspan=>'2'}, $q->textfield(-class=>'etxt',-name=>'txt08', -default=>"$ctt->{txt08}", -size=>'34', maxlength=>'45')),"\n"; + print $q->Tr(),"\n"; + print $q->td({-class=>'tdescr'},"Telefon"),"\n"; + print $q->td({-class=>'tdval',-colspan=>'2'}, $q->textfield(-class=>'etxt',-name=>'txt07', -default=>"$ctt->{txt07}", -size=>'34', maxlength=>'40')),"\n"; + print $q->Tr(),"\n"; + print $q->td({-class=>'tdescr'},"Leistungsdatum"),"\n"; + print $q->td({-class=>'tdval',-colspan=>'2'}, $q->textfield(-class=>'etxt',-name=>'txt20', -default=>"$ctt->{txt20}", -size=>'34', maxlength=>'60'),$but->checkbox("1","int05","$ctt->{int05}"),"manuell"),"\n"; + print $q->hidden(-name=>"int05",-override=>1,-value=>""); + }elsif($users_dms->{u_id}){ print $q->Tr(),"\n"; if(!$ctx->{close_time}){ @@ -237,7 +247,6 @@ EOF if($c_idadr && $rel_adr->{rel_id}){ print $q->td({-class=>'tdval'},$q->span({-style=>"background-color:#dcd77f;"},$q->a({-class=>"linknav",-href=>"/DMS/Kunden?node2edit=editpart\&mode=manager\&rel_id=$rel_adr->{rel_id}\&tpl_id=202",-title=>"Kunden Stammdaten öffnen"}," Kunden ID $c_idadr ")), $q->span({-style=>"color:red;"}," $ctadr->{int12}")),"\n"; } - if($ctt->{txt01} || $ctt->{txt02} || $ctt->{txt07} || $ctt->{txt08}){ $ctt->{txt01} = $lb->newline($ctt->{txt01},"",""); print $q->Tr(),"\n"; $line_count1++; print $q->td({-class=>'tdtxt'}," "),"\n"; @@ -251,57 +260,24 @@ EOF print $q->Tr(),"\n"; $line_count1++; print $q->td({-class=>'tdtxt'}," "),"\n"; print $q->td({-class=>'tdval',-colspan=>2},"$ctt->{txt08}"),"\n"; - } + print $q->Tr(),"\n"; + print $q->td({-class=>'tdescr'}," "),"\n"; + print $q->td({-class=>'tdval',-colspan=>2},"$ctt->{txt07}"),"\n"; + print $q->Tr(),"\n";$line_count1++; + print $q->td({-class=>'tdescr'}," "),"\n"; + print $q->td({-class=>'tdval',-colspan=>2},"$ctt->{txt20} $int05"),"\n"; } print $q->end_table; print "\n"; - my $txt20 = $ctt->{txt20} || $ctf->{txt80}; - my $int05 = ""; - $int05 = "(manuell)" if($ctt->{int05}); - print "\n"; print $q->start_table({-class=>'list', -border=>'0', -width=>'100%',-align=>'left', -cellpadding=>'0', -cellspacing=>'0'}),"\n"; - if($users_dms->{u_id} && ($R::trans2edit eq "client" || $R::ct_trans eq "add_transadr")){ - print $q->Tr(),"\n"; - print $q->td({-class=>'tdescr'},"RFID"),"\n"; - print $q->td({-class=>'tdval'}, $q->textfield(-class=>'etxt',-name=>'txt09', -default=>"$ctt->{txt09}", -size=>'25', maxlength=>'40')),"\n"; - print $q->Tr(),"\n"; - print $q->td({-class=>'tdescr'},"Telefon"),"\n"; - print $q->td({-class=>'tdval'}, $q->textfield(-class=>'etxt',-name=>'txt07', -default=>"$ctt->{txt07}", -size=>'25', maxlength=>'40')),"\n"; - print $q->Tr(),"\n"; - print $q->td({-class=>'tdescr'},"Leistungsdatum"),"\n"; - print $q->td({-class=>'tdval'}, $q->textfield(-class=>'etxt',-name=>'txt20', -default=>"$txt20", -size=>'25', maxlength=>'60'),$but->checkbox("1","int05","$ctt->{int05}"),"manuell"),"\n"; - print $q->hidden(-name=>"int05",-override=>1,-value=>""); - }else{ - if($ctt->{txt09}){ - print $q->Tr(),"\n"; - print $q->td({-class=>'tdescr'},"RFID"),"\n"; - print $q->td({-class=>'tdval'},"$ctt->{txt09}"),"\n"; - } - if($ctt->{txt07}){ - print $q->Tr(),"\n"; - print $q->td({-class=>'tdescr'},"Telefon"),"\n"; - print $q->td({-class=>'tdval',-style=>'min-width:20em;'},"$ctt->{txt07}"),"\n"; - } - if($txt20){ - print $q->Tr(),"\n";$line_count1++; - print $q->td({-class=>'tdescr'},"Leistungsdatum"),"\n"; - if($ctt->{txt20}){ - print $q->td({-class=>'tdval'},"$ctt->{txt20} $int05"),"\n"; - }else{ - print $q->td({-class=>'tdval'},"Zur Info: Anhand der Einstellung werden nur Positionen bis Buchungsdatum \"$ctf->{txt80}\" erfasst. Für Buchungen neueren Datums wird nach dem \"buchen\" eine weitere Rechnung generiert."),"\n"; - } - } - } - #payone is working? #keep in mind #$ctx is primarly contenttrans #$ctt = $ctx #$ctt will partly overwritten by contentadr if address changes my $pay_sequence = " | sequencenr: $ctt->{int18}" if($ctt->{int18}); - if($ctt->{int03} && $ctt->{txt16}){ my @_paymentstate = split(/\|/,$varenv{Zahlungsweise}); my $kind_of_payment = "fehlt"; $kind_of_payment = "$_paymentstate[0]" if($ctt->{int03} == 1); @@ -315,12 +291,11 @@ EOF print $q->Tr(),"\n"; print $q->td({-class=>'tdescr'},"Payone Saldo"),"\n"; print $q->td({-class=>'tdval'},"$ctt->{int16} $pay_sequence"),"\n"; - if($ctt->{txt28} =~ /error/i){ - print $q->Tr(),"\n"; - print $q->td({-class=>'tdescr'},"payone error"),"\n"; - print $q->td({-class=>'tdval'},"(transaction) $ctt->{txt28}"),"\n"; - } - }else{ + print $q->Tr(),"\n"; + print $q->td({-class=>'tdescr'},"Payone Reference"),"\n"; + print $q->td({-class=>'tdval'},"$ctt->{txt25}"),"\n"; + + #check payone status if($ctt->{txt28} =~ /error/i){ print $q->Tr(),"\n"; @@ -332,9 +307,6 @@ EOF print $q->td({-class=>'tdval'},"(address) $ctadr->{txt28}"),"\n"; } - } - - print $q->end_table; print "\n"; @@ -363,6 +335,7 @@ EOF print $q->Tr(),"\n"; print $q->td({-class=>'tdval4',-colspan=>"2"},$q->span({-style=>'font-weight:bold;'},"Internas und Bearbeitungstatus")),"\n"; + print $q->td({-class=>'tdval4',-colspan=>"2"},$q->span({-style=>'font-weight:bold;'},"PDF Formular Texte "),$q->span({-style=>'color:silver;font-weight:normal;'}," ( z.T. Definitionen aus Einstellung/Firma )")),"\n"; if($varenv{order_state}){ print $q->Tr(),"\n"; my @_orderstate = split(/\|/,$varenv{order_state}); @@ -370,23 +343,21 @@ EOF } $ctt->{txt23} = $q->unescapeHTML("$ctt->{txt23}") if($ctt->{txt23}); print $q->Tr(),"\n"; - print $q->td({-class=>'tdval4',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt23', -default=>"$ctt->{txt23}", -rows=>4, -columns=>90)),"\n"; + print $q->td({-class=>'tdval4',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt23', -default=>"$ctt->{txt23}", -rows=>6, -columns=>75)),"\n"; print $q->hidden(-name=>'c_id4trans', -override=>'1', -value=>"$ctx->{c_id}"); print $q->hidden(-name=>'set_main_id', -override=>'1', -value=>"$set_main_id"),"\n"; my $ebutton = "ebutton"; $ebutton = "ebutton4" if($ctx->{ct_name} && $ctx->{ct_name} =~ /\d+/ && !$R::trans2edit && !$ctt->{txt12} && $ctt->{txt21} && $ctt->{txt21} !~ /\,/); - print $q->Tr(),"\n"; - print $q->td({-class=>'tdval',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text_internas","$ib{save_text}","","","$ebutton")),"\n" if($ctx->{close_time}); - if($ctx->{close_time}){ + print $q->Tr(),"\n"; + print $q->td({-class=>'tdval',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text_internas","$ib{save_text}","","","$ebutton")),"\n"; + print $q->end_form,"\n"; print $q->start_form(),"\n"; } - print $q->Tr(),"\n"; - print $q->td({-class=>'tdval4',-colspan=>"2"},$q->span({-style=>'font-weight:bold;'},"PDF Formular Texte "),$q->span({-style=>'color:silver;font-weight:normal;'}," ( z.T. Definitionen aus Einstellung/Firma )")),"\n"; #Zahlungstexte foreach(@tplf_order){ @@ -411,8 +382,7 @@ EOF $ctt->{txt12} = $q->unescapeHTML($ctt->{txt12}) || ""; - print $q->Tr(),"\n"; - print $q->td({-class=>'tdval4',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt12', -default=>"$ctt->{txt12}", -rows=>4, -columns=>90)),"\n"; + print $q->td({-class=>'tdval4',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt12', -default=>"$ctt->{txt12}", -rows=>6, -columns=>75)),"\n"; print $q->Tr(),"\n"; $line_count1++; my @line_txt12 = split(/\n/,$ctt->{txt12}); @@ -447,7 +417,7 @@ EOF my $ebutton = "ebutton"; $ebutton = "ebutton4" if($ctx->{ct_name} && $ctx->{ct_name} =~ /\d+/ && !$R::trans2edit && !$ctt->{txt12} && $ctt->{txt21} !~ /\,/); print $q->Tr(),"\n"; - print $q->td({-class=>'tdval',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text","$ib{save_text}","","","$ebutton"),"$formular_text"),"\n" if(!$ctx->{close_time}); + print $q->td({-class=>'element6',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text","$ib{save_text}","","","$ebutton"),"$formular_text"),"\n" if(!$ctx->{close_time}); print $q->end_table,"\n"; print "\n";