diff --git a/copri4/main/css/local_style_2.css b/copri4/main/css/local_style_2.css index cd4ba11..b50507c 100755 --- a/copri4/main/css/local_style_2.css +++ b/copri4/main/css/local_style_2.css @@ -268,11 +268,9 @@ div#Oline { background-color: #e6edf2; } .element6 { - margin:0.5em; - font-size:0.91em; - height: 1.7em; - padding:0.3em 0 0 0; - text-align:left; + font-size:0.81em; + padding:0.5em 1em; + text-align:right; border:0px; } .elementwhite { diff --git a/copri4/main/src/Mod/Buttons.pm b/copri4/main/src/Mod/Buttons.pm index 2fa31bb..b81117c 100755 --- a/copri4/main/src/Mod/Buttons.pm +++ b/copri4/main/src/Mod/Buttons.pm @@ -611,7 +611,7 @@ sub singlesubmit7(){ $b_img = "Delete" if("$b_name" =~ /delete_media/); $b_img = "Save" if("$b_name" =~ /save|service_done|_contenttverpos/); $a_key = "y" if("$b_name" =~ /save/); - $b_img = "Save Texts" if("$b_name" =~ /save_text/); + $b_img = "Text Save" if("$b_name" =~ /save_text/); $b_img = "Delete All" if("$b_name" =~ /delete_all/); $b_img = "Search" if("$b_name" =~ /search/); $b_img = "New" if("$b_name" =~ /^new/); @@ -655,7 +655,7 @@ sub singlesubmit17(){ $b_img = "Delete" if("$b_name" =~ /delete_media/); $b_img = "Save" if("$b_name" =~ /save/); $a_key = "y" if("$b_name" =~ /save/); - $b_img = "Save Texts" if("$b_name" =~ /save_text/); + $b_img = "Text Save" if("$b_name" =~ /save_text/); $b_img = "Delete All" if("$b_name" =~ /delete_all/); $b_img = "Search" if("$b_name" =~ /search/); $b_img = "New" if("$b_name" =~ /^new/); diff --git a/copri4/main/src/Mod/Indexsharee.pm b/copri4/main/src/Mod/Indexsharee.pm index b50ea1b..46cab4f 100755 --- a/copri4/main/src/Mod/Indexsharee.pm +++ b/copri4/main/src/Mod/Indexsharee.pm @@ -452,7 +452,7 @@ sub handler { int15 => 1,#preauth amount txt16 => "", reference => "$users_sharee->{c_id}_$epoche", - renewed => '' + payone_reset => '' }; my $payone_txid = ""; diff --git a/copri4/main/src/Mod/Payment.pm b/copri4/main/src/Mod/Payment.pm index ad8cc39..a8621f9 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; @@ -76,7 +76,7 @@ sub managemandate_main { $ctadr->{txt22} =~ s/\s//g; my $bcountry = uc($1) if($ctadr->{txt22} && $ctadr->{txt22} =~ /^(\w{2})/); my $currency = "EUR"; - $currency = "CHF" if($bcountry eq "CH"); + #$currency = "CHF" if($bcountry eq "CH"); $ctadr->{txt23} =~ s/\s//g; my $preauth_request = { request => 'managemandate', @@ -123,7 +123,7 @@ sub preauthorizationSEPA_main { my $ctt = { c_id => 0 }; $ctt = $dbt->fetch_record($dbh,$pref); - if($ctt_rec->{renewed}){ + if($ctt_rec->{payone_reset}){ if($ctt->{ct_name} =~ /\d+-\d+/){ my ($ct_name,$subname) = split(/-/,$ctt->{ct_name}); $subname++; @@ -227,7 +227,7 @@ sub captureSEPA_main { if($ctt->{c_id} && (!$ctt->{state} || $ctt->{int14})){ my $amount = 0; - $amount = $ctt->{int01} * 100 if($ctt->{int01} != 0); + $amount = $ctt->{int01} * 100 if(looks_like_number($ctt->{int01})); my $currency = "EUR"; my $preauth_request = { @@ -265,7 +265,7 @@ sub preauthorizationCC_main { my $ctt = { c_id => 0 }; $ctt = $dbt->fetch_record($dbh,$pref); - if($ctt_rec->{renewed}){ + if($ctt_rec->{payone_reset}){ if($ctt->{ct_name} =~ /\d+-\d+/){ my ($ct_name,$subname) = split(/-/,$ctt->{ct_name}); $subname++; @@ -364,9 +364,9 @@ sub captureCC_main { my $sequence = 1; $sequence = $ctt_rec->{sequence} if($ctt_rec->{sequence}); - if($ctt->{c_id} && (!$ctt->{state} || $ctt->{int14} || $ctt->{txt28})){ + if($ctt->{c_id} && (!$ctt->{state} || $ctt->{int14})){ my $amount = 0; - $amount = $ctt->{int01} * 100 if($ctt->{int01} != 0); + $amount = $ctt->{int01} * 100 if(looks_like_number($ctt->{int01})); my $preauth_request = { request => 'capture', amount => "$amount", @@ -523,7 +523,7 @@ sub rpc { $update_ctt->{int03} = $ctadr->{int03}; $update_ctt->{int17} = $useridval if($useridval); $update_ctt->{txt16} = $txidval; - $update_ctt->{txt22} = $ctt->{renewed} if($ctt->{renewed}); + $update_ctt->{txt22} = $ctt->{payone_reset} if($ctt->{payone_reset}); $update_ctt->{txt26} = $ctadr->{ct_name};#Mandat/pseudocp $update_ctt->{txt28} = ""; $update_adr->{int12} = 0; @@ -558,7 +558,7 @@ sub rpc { }else{#not APPROVED print FILE "NOT APPROVED $now_dt\n $todo: ctt.c_id=$ctt->{c_id} && ctadr.c_id=$ctadr->{c_id}" . $res->content . "\n" if($debug); - $update_ctt->{int14} = 1 if($ctt->{state} && $ctt->{state} !~ /Zahlungseingang/);;#OPOS + $update_ctt->{int14} = 1 if($ctt->{state});#OPOS #errormessage=Reference number already exists --> disabled #errormessage=Amount no longer available --> disabled @@ -675,10 +675,16 @@ sub payone_capture(){ } } - $db->update_content4change("contenttrans",$ctt->{c_id},"","$sum_paid","int01"); - $db->update_content4change("contenttrans",$ctt->{c_id},"",$state,"state"); - $db->update_content4change("contenttrans",$ctt->{c_id},"",$owner,"owner"); - $db->updater("contenttrans","c_id",$ctt->{c_id},"int14","2","","","","","");#must be to capture + my $update_ctt = { + table => "contenttrans", + mtime => "now()", + owner => $owner, + int01 => $sum_paid, + int14 => 2, + state => "$state", + }; + $dbt->update_record($dbh,$update_ctt,$ctt); + #in cron we set OPOS anyway. If payone captured, it will be set int14=null if(!$state || $state !~ /payone/){ #$db->updater("contenttrans","c_id",$ctt->{c_id},"txt22","cronjob fail","","","","",""); diff --git a/copri4/main/src/Mod/Prelogic.pm b/copri4/main/src/Mod/Prelogic.pm index a4fd3c8..2d848d2 100755 --- a/copri4/main/src/Mod/Prelogic.pm +++ b/copri4/main/src/Mod/Prelogic.pm @@ -774,40 +774,6 @@ sub preinit(){ $db->update_content4change($table,$c_id,$c_id,$c_id,"barcode") ; } - #Payone managemandate (txt16=txid means payment process ID) - #2022-02-19, disabled Formular trigger at all because trying payone sequence numbering - my $subset_state = $R::set_state || $ctt->{state}; - if(1==2 && $R::c_idadr && $subset_state =~ /payone/){ - my $ctadr = $db->get_content1("contentadr",$R::c_idadr); - - #SEPA - if($ctadr->{int03} == 1 && (!$ctt->{txt16} || $ctt->{int03} != 1 || $ctadr->{ct_name} !~ /\w{2}-\d+/ || $ctt->{txt28} =~ /errorcode=/)){ - if($ctadr->{ct_name} !~ /\w{2}-\d+/){ - $payone->managemandate_main(\%varenv,$ctadr,"",$users_dms->{u_id}); - sleep 3; - $ctadr = $db->get_content1("contentadr",$R::c_idadr); - } - #preauthorizationSEPA sets new Rechnungsnummer - if($ctadr->{txt27} =~ /active|pending/ || !$ctt->{txt16} || $ctt->{txt28} =~ /errorcode=80|errorcode=907|errorcode=911|errorcode=950|errorcode=902|errorcode=1077/){ - - my $renewed=""; - $renewed = "txid auto renewd" if($ctt->{txt28} =~ /errorcode=80|errorcode=907|errorcode=911|errorcode=950|errorcode=902|errorcode=1077/); - $ctt->{renewed} = $renewed; - $payone->preauthorizationSEPA_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id}); - } - } - - #CC - #preauthorizationCC sets new Rechnungsnummer - if($ctadr->{int03} == 2 && (!$ctt->{txt16} || $ctt->{txt28} =~ /errorcode=80|errorcode=907|errorcode=911|errorcode=950|errorcode=902|errorcode=33|errorcode=908|errorcode=4|errorcode=5|errorcode=1077/ || $ctt->{int03} != 2 || length($ctadr->{ct_name}) < 19)){#CC - - my $renewed=""; - $renewed = "txid auto renewd" if($ctt->{txt28} =~ /errorcode=80|errorcode=907|errorcode=911|errorcode=950|errorcode=902|errorcode=33|errorcode=908|errorcode=4|errorcode=5|errorcode=1077/); - $ctt->{renewed} = $renewed; - $payone->preauthorizationCC_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id}); - } - } - #Change Formular Type ----------------------------------------------- #if("$R::set_main_id" != "$rel->{main_id}"){ if(($R::ct_trans =~ /print_pdf|print/i) || ("$R::set_main_id" != "$rel->{main_id}")){ @@ -823,49 +789,64 @@ sub preinit(){ #SET state alias Zahlung buchen if($R::set_state && !$R::close_time){ - my $state = "no"; - $state = $R::state if($R::state); + my $state = $R::state || ""; my $sum_paid = "null"; - my $sum_kaution = "null"; - if($state ne "no"){ + if($R::set_state eq "buchen" && $R::sum_paid){ $sum_paid = $R::sum_paid; - $sum_kaution = $R::sum_kaution; $sum_paid =~ s/,/\./; - $sum_kaution =~ s/,/\./; } + my $update_ctt = { + table => "contenttrans", + mtime => "now()", + owner => $users_dms->{u_id}, + int01 => $sum_paid, + state => "$state", + }; + $ctt->{int14} = 2 if($state =~ /payone/);#set OPOS + $dbt->update_record($dbh,$update_ctt,$ctt); - $u_rows += $db->update_content4change($table,$c_id,"","$sum_paid","int01"); - $db->update_content4change($table,$c_id,"",$state,"state"); - $db->update_content4change($table,$c_id,"","now()","mtime"); - $db->update_content4change($table,$c_id,"",$users_dms->{u_id},"owner"); - - #2020-02-05, do it only if payone (without payone Zahlunseingang) if($state =~ /payone/){ - $db->updater($table,"c_id","$c_id","int14","1","","","","",""); - - #preauth my $ctadr = $db->get_content1("contentadr",$ctt->{int10}); - if($ctadr->{int03} == 1 && $ctadr->{ct_name} =~ /\w{2}-\d+/ && ($ctt->{txt16} !~ /\d+/ || $ctt->{int03} != 1)){ + + $ctt->{payone_reset} = 0; + if($R::payone_reset){ + #after delete preauth after 0€ capture sets new TXID and increment reference + $ctt->{payone_reset} = $R::payone_reset; + $ctt->{int01} = 0; + if($ctt->{int03} == 1 && $ctt->{txt16} && $R::state =~ /SEPA/){#SEPA 0 + my $payoneret = $payone->captureSEPA_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id}); + } + if($ctt->{int03} == 2 && $ctt->{txt16} && $R::state =~ /Kreditkarte/){#CC 0 + my $payoneret = $payone->captureCC_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id}); + } + } + + if($ctadr->{int03} == 1 && $ctadr->{ct_name} =~ /\w{2}-\d+/){ my $payoneret = $payone->preauthorizationSEPA_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id}); sleep 2; - }elsif($ctadr->{int03} == 2 && length($ctadr->{ct_name}) >= 19 && ($ctt->{txt16} !~ /\d+/ || $ctt->{int03} != 2)){ + }elsif($ctadr->{int03} == 2 && length($ctadr->{ct_name}) >= 19){ my $payoneret = $payone->preauthorizationCC_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id}); sleep 2; } - $ctt = $db->get_content1("contenttrans",$c_id); + $ctt = $db->get_content1("contenttrans",$ctt->{c_id}); $ctt->{sequence} = $R::payone_sequence || 1; - - #SEPA capture - if($ctt->{int03} == 1 && $ctt->{txt16} && $R::state =~ /SEPA/ && $state !~ /Zahlungseingang/){#SEPA + + #only if int14 = OPOS (set by preauthorization) + if($ctt->{int14}){ + #SEPA capture + if($ctt->{int03} == 1 && $ctt->{txt16} && $R::state =~ /SEPA/){#SEPA my $payoneret = $payone->captureSEPA_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id}); - } - #CC capture - if($ctt->{int03} == 2 && $ctt->{txt16} && $R::state =~ /Kreditkarte/ && $state !~ /Zahlungseingang/){#CC + } + #CC capture + if($ctt->{int03} == 2 && $ctt->{txt16} && $R::state =~ /Kreditkarte/){#CC my $payoneret = $payone->captureCC_main(\%varenv,$ctadr,$ctt,$users_dms->{u_id}); + } + }else{ + return "failure::Payone Geldeinzug nicht ausgeführt. Hat der Einzug bereits stattgefunden?"; } }else{ - $db->updater($table,"c_id","$c_id","int14","null","","","","",""); + $db->updater($table,"c_id",$ctt->{c_id},"int14","null","","","","",""); } } @@ -981,24 +962,14 @@ sub preinit(){ $u_rows += $db->update_tagesabschluss($table,$c_id4kasse,$journal_id,$journal_tpl,$tpl_vk,$parent_trans->{parent_id},"$main_ids","$s_owner_id","$opos"); - if("$R::kind_of_trans" eq "Verkauf"){ - $path =~ s/$R::kind_of_trans.*/$R::kind_of_trans\/Verkaufsjournal/; - } - if("$R::kind_of_trans" eq "Einkauf"){ - $path =~ s/$R::kind_of_trans.*/$R::kind_of_trans\/Einkaufsjournal/; - } - if($R::kind_of_trans =~ /Faktur|Verleih/){ - $path =~ s/$R::kind_of_trans.*/$R::kind_of_trans\/Verleihjournal/; - } - #calculate and set counts my @mainis = split(/,/,$main_ids); foreach(@mainis){ my $rows = $db->count_content($table,"$_","$tpl_vk"); $db->updater("nodes","main_id",$_,"int10",$rows) if($_ > 300000 && $rows =~ /\d/); } - print $q->div({-class=>'elementwhite'},"1... redirecting to ... or CLICK ", $q->a({href=>"$varenv{wwwhost}$script$path"},"$varenv{wwwhost}$script$path")); - print redirect("$varenv{wwwhost}$script$path?redirected=1\&return=0-0-0|$i_rows-$u_rows-$d_rows"); + print $q->div({-class=>'elementwhite'},"1... redirecting to ... or CLICK ", $q->a({href=>"$varenv{wwwhost}/DMS/Faktura/Verleihjournal"},"$varenv{wwwhost}/DMS/Faktura/Verleihjournal")); + print redirect("$varenv{wwwhost}/DMS/Faktura/Verleihjournal?redirected=1\&return=0-0-0|$i_rows-$u_rows-$d_rows"); exit 0; } } diff --git a/copri4/main/src/Mod/Shareework.pm b/copri4/main/src/Mod/Shareework.pm index 6466966..4850a3f 100755 --- a/copri4/main/src/Mod/Shareework.pm +++ b/copri4/main/src/Mod/Shareework.pm @@ -233,7 +233,7 @@ sub save_account(){ $u_rows = $dbt->update_one($dbh,$update_primary,"txt17='@operators'"); } #Web-Login|Rabatt|Vde|payone cron-intervall|Ilockit-Admin - #elsif($_ =~ /int05|int07|int12|int16|int19/){ + #elsif($_ =~ /int05|int07|int16|int19/){ elsif($_ =~ /int05|int07|int16|int19/){ $u_rows = $dbt->update_one("",$update_primary,"$_=$valxx"); } @@ -424,7 +424,7 @@ sub save_account(){ $u_rows = $dbt->update_one($dbh,$update_primary,"$_='$valxx'"); } }elsif($_ eq "int12"){ - if($varenv{dbname} eq "sharee_primary" && $ctadr->{int12} == 2){ + if($varenv{dbname} eq "sharee_primary"){ $u_rows = $dbt->update_one($dbh,$update_primary,"$_=2"); }else{ $u_rows = $dbt->update_one($dbh,$update_primary,"$_=$valxx"); @@ -496,7 +496,7 @@ sub save_account(){ int15 => 1, txt16 => "", reference => "$ctadr->{c_id}_$epoche", - renewed => '' + payone_reset => '' }; my $payone_txid = ""; diff --git a/copri4/main/src/Tpl/Address3.pm b/copri4/main/src/Tpl/Address3.pm index 8b5ded7..66896c7 100755 --- a/copri4/main/src/Tpl/Address3.pm +++ b/copri4/main/src/Tpl/Address3.pm @@ -343,7 +343,7 @@ 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=>6, -columns=>75)),"\n"; + print $q->td({-class=>'tdval4',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt23', -default=>"$ctt->{txt23}", -rows=>6, -columns=>65)),"\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"; @@ -382,7 +382,7 @@ EOF $ctt->{txt12} = $q->unescapeHTML($ctt->{txt12}) || ""; - print $q->td({-class=>'tdval4',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt12', -default=>"$ctt->{txt12}", -rows=>6, -columns=>75)),"\n"; + print $q->td({-class=>'tdval4',-colspan=>'2'},$q->textarea(-class=>'etxt',-name=>'txt12', -default=>"$ctt->{txt12}", -rows=>6, -columns=>65)),"\n"; print $q->Tr(),"\n"; $line_count1++; my @line_txt12 = split(/\n/,$ctt->{txt12}); @@ -417,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=>'element6',-colspan=>2}, $but->singlesubmit7("ct_trans","save_text","$ib{save_text}","","","$ebutton"),"$formular_text"),"\n" if(!$ctx->{close_time}); + print $q->td({-style=>'font-size:0.81em;padding:0.3em 0em;border:0px;',-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"; diff --git a/copri4/main/src/Tpl/TransPositionen.pm b/copri4/main/src/Tpl/TransPositionen.pm index 0356571..69d32a8 100755 --- a/copri4/main/src/Tpl/TransPositionen.pm +++ b/copri4/main/src/Tpl/TransPositionen.pm @@ -425,7 +425,7 @@ EOF my $m= 1 + $k - $n; $m++; print "\n"; - print "
$payment_text
\n"; + print "
$payment_text
\n"; print "\n"; print $q->start_table({-class=>'list',-style=>'border-top:1px;border-style:solid;border-color:black;', -border=>'0', -width=>'100%',-align=>'center', -cellpadding=>'3', -cellspacing=>'0'}),"\n"; @@ -491,10 +491,6 @@ EOF } $kind_of_payment = "$ctt->{state}" if($ctt->{state}); - #further payone capture are only allowed if OPOS && sequence && TXID is set - if($ctt->{int14} && $ctt->{int18} && $ctt->{txt16}){ - print $q->div({-class=>'element6',-style=>'float:right;'},"seq", $q->textfield(-class=>'etxt',-name=>"payone_sequence",-default=>"", -override=>'1',-size=>"1",-maxlength=>1)),"\n"; - } my $send_invoice_checkbox = 1; $send_invoice_checkbox = 0 if($ctt->{txt30}); @@ -504,6 +500,15 @@ EOF $but->singlesubmit1("set_state","buchen"), $but->selector("state","250px",$kind_of_payment,@_paymentstate)),"\n"; } + #further payone capture are only allowed if OPOS && sequence && TXID is set + if($ctt->{int14} && $ctt->{int18} && $ctt->{txt16}){ + print $q->div({-class=>'element6',-style=>'clear:both;'},"Weitere Payone Einzüge über die vorhandene TXID $ctt->{txt16} (vorautorisiert Summe beachten) durch manuelle inkrement der Sequencenr mit +1", $q->textfield(-class=>'etxt',-name=>"payone_sequence",-default=>"$ctt->{int18}", -override=>'1',-size=>"1",-maxlength=>1)),"\n"; + } + #Payone reset if OPOS and TXID + if($ctt->{int14} && $ctt->{txt16}){ + print $q->div({-class=>'element6',-style=>'clear:both;'},"Payone reset löscht den Vorgang mit der TXID $ctt->{txt16} und versucht einen erneuten Einzug", $but->checkbox("1","payone_reset","0","Payone reset","")),"\n"; + } + } print $q->end_form;