From d200ca359350a39889af77515606ffc5955f591e Mon Sep 17 00:00:00 2001 From: ragu Date: Thu, 27 Feb 2025 07:45:21 +0100 Subject: [PATCH] Setting payment_provider to manually and disable CC --- copri4/main/src/Mod/APIjsonserver.pm | 6 +- copri4/main/src/Mod/Basework.pm | 8 +- copri4/main/src/Mod/DBtank.pm | 2 +- copri4/main/src/Mod/IBAN.pm | 247 ++++++++++++++++++ copri4/main/src/Mod/Indexsharee.pm | 3 +- copri4/main/src/Mod/Payment.pm | 14 +- copri4/main/src/Mod/Printpreview.pm | 4 +- copri4/main/src/Mod/Shareework.pm | 45 +++- copri4/main/src/Tpl/Address3.pm | 2 +- copri4/main/src/Tpl/Karte_osm.pm | 22 ++ copri4/main/src/Tpl/Liste3.pm | 13 +- copri4/main/src/Tpl/TransInvoices.pm | 3 +- copri4/main/src/Tpl/TransPositionen.pm | 10 +- copri4/shareeapp-operator/src/Tpl/FormEdit.pm | 5 +- .../shareeapp-operator/src/Tpl/PayoneSEPA.pm | 5 +- 15 files changed, 358 insertions(+), 31 deletions(-) create mode 100644 copri4/main/src/Mod/IBAN.pm diff --git a/copri4/main/src/Mod/APIjsonserver.pm b/copri4/main/src/Mod/APIjsonserver.pm index 45d5009..e1c4ff4 100755 --- a/copri4/main/src/Mod/APIjsonserver.pm +++ b/copri4/main/src/Mod/APIjsonserver.pm @@ -760,14 +760,14 @@ elsif($q->param('request') eq "stations_available"){ #App merchant message #if($user_agent =~ /konrad/i && $dbt->{copri_conf}->{betau_id}->{$authraw->{c_id}} && $varenv{cms}->{'App-merchant-message'}->{txt}){ - if($user_agent =~ /konrad/i && $varenv{cms}->{'App-merchant-message'}->{txt}){ + if($user_agent =~ /sharee/i && $authraw->{int03} && $authraw->{int03} == 2 && $varenv{cms}->{'App-merchant-message'}->{txt}){ #if($epoch_now >= $epoch_start && $epoch_now <= $epoch_end){ $response->{merchant_message} = $varenv{cms}->{'App-merchant-message'}->{txt}; #} } #App merchant message bayern - #if($user_agent =~ /bayern/i && $varenv{cms}->{'App-merchant-message-bayern'}->{txt}){ - if($user_agent =~ /bayern/i && $user_agent_subversion <= 380 && $varenv{cms}->{'App-merchant-message-bayern'}->{txt}){ + #if($user_agent =~ /bayern/i && $user_agent_subversion <= 380 && $varenv{cms}->{'App-merchant-message-bayern'}->{txt}){ + if($user_agent =~ /bayern|konrad/i && $varenv{cms}->{'App-merchant-message-bayern'}->{txt}){ #if($epoch_now >= $epoch_start && $epoch_now <= $epoch_end){ $response->{merchant_message} = $varenv{cms}->{'App-merchant-message-bayern'}->{txt}; #} diff --git a/copri4/main/src/Mod/Basework.pm b/copri4/main/src/Mod/Basework.pm index 58db0d3..042dfec 100755 --- a/copri4/main/src/Mod/Basework.pm +++ b/copri4/main/src/Mod/Basework.pm @@ -122,19 +122,21 @@ sub battery_percent { } #payable_check and rentable_check +#Disabled adr.int03==2 alias CC, 2025-02-13 #int03==1 if SEPA, 2 if CC, 3 if Prepaid #int04==1 if emailAck #int13==1 if smsAck #int12==1|2|3|4 than Vde #int14==1 if AGB -#int18>=1 if payAck (must be only set on SEPA and CC) +#int18>=1 if payment_provider=payone payAck (must be only set on SEPA and CC) sub isuser_rentable { my $self = shift; my $auth = shift; my $varenv = shift || ""; - my $rentable_check=0; - if($auth->{int03} && $auth->{ct_name} && ($auth->{int18} && (($auth->{int03} == 1 && $auth->{ct_name} =~ /^\w{2}-\w+/) || ($auth->{int03} == 2 && length($auth->{ct_name}) >= 19))) || ($auth->{int03} == 3 && $auth->{ct_name} =~ /Prepaid-\d+/i)){ + + #if($auth->{int03} && $auth->{ct_name} && ($auth->{int18} && (($auth->{int03} == 1 && $auth->{ct_name} =~ /^\w{2}-\w+/) || ($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}-\w+/) || ($auth->{int03} == 3 && $auth->{ct_name} =~ /Prepaid-\d+/i)){ $rentable_check=1;#Account is payable if(!$auth->{int12} && $auth->{txt08} && $auth->{int04} == 1 && $auth->{int13} == 1 && $auth->{int14}){ $rentable_check=2;#Account is rentalable, with all Ack's and Vde=0 diff --git a/copri4/main/src/Mod/DBtank.pm b/copri4/main/src/Mod/DBtank.pm index 7ebde13..ad3cda3 100755 --- a/copri4/main/src/Mod/DBtank.pm +++ b/copri4/main/src/Mod/DBtank.pm @@ -179,7 +179,7 @@ sub update_operatorsloop { } }elsif($todo eq "delete"){ - $bw->log("DELETE adr from operators and at last primary $sharee_operator",$record_primary,""); + $bw->log("DELETE adr from operators and at last primary $sharee_operator",$record_primary->{c_id},""); $rows += $self->delete_content($dbh_operator,"contentadr",$record_primary->{c_id}); } } diff --git a/copri4/main/src/Mod/IBAN.pm b/copri4/main/src/Mod/IBAN.pm new file mode 100644 index 0000000..4ffbd43 --- /dev/null +++ b/copri4/main/src/Mod/IBAN.pm @@ -0,0 +1,247 @@ +package IBAN; + +require 5.005_62; +use Math::BigInt; +use strict; +use vars qw($VERSION @errors); + +$VERSION = '0.06'; + +# error codes +use constant IBAN_CTR => 0; +use constant IBAN_BBAN => 1; +use constant IBAN_ISO => 2; +use constant IBAN_FORMAT => 3; +use constant IBAN_FORMAT2 => 4; +use constant IBAN_INVALID => 5; + +sub new { + my ($class) = @_; + my $self = {}; + bless $self, $class; + return $self; +} ## end sub new +# -------------------------------------- +sub getIBAN { + my ($self, $args) = @_; + my $iso = uc $args->{ISO}; + my $bban = $args->{BBAN}; + my $bic = $args->{BIC}; + my $ac = $args->{AC}; + delete $self->{ERRORS}; + push @{$self->{ERRORS}}, IBAN_CTR unless $iso ; + push @{$self->{ERRORS}}, IBAN_BBAN unless $bban || ($bic && $ac); + return if $self->{ERRORS}; + $iso =~ tr/A-Za-z//cd if $iso; + $bban =~ tr/A-Za-z09//cd if $bban; + $ac =~ tr/A-Za-z09//cd if $ac; + + return unless $iso; + $iso = uc $iso; + $args->{CV} = $iso; + $args->{CV} =~ s/([A-Z])/(ord $1)-55/eg; + my $no; + $args->{ISO} = $iso; + for ($iso) { + m/^DE$/ and $no = $self->iban_de($args), last; + $no = $self->iban_unspec($args); + } + return $no; +} +# -------------------------------------- +sub iban_de { + my $self = shift; + my $args = shift; + $args->{BBAN} ||= sprintf "%08s%010s", $args->{BIC},$args->{AC}; + my $no = sprintf "%018s%4s00", $args->{BBAN}, $args->{CV}; + my $tmp = $no % 97; + my $bigint = Math::BigInt->new($no); + my $mod = sprintf "%2d", 98 - ($bigint % 97); + substr($no,-6,6) = ""; + $no = 'IBAN '.$args->{ISO}.$mod.$no; + return $no; +} +# -------------------------------------- +sub iban_unspec { + my $self = shift; + my $args = shift; + push @{$self->{ERRORS}}, IBAN_BBAN unless $args->{BBAN}; + return if $self->{ERRORS}; + my $no = sprintf "%s%4s00", $args->{BBAN}, $args->{CV}; + my $bigint = Math::BigInt->new($no); + my $mod = 98 - ($bigint % 97); + substr($no,-6,6) = ""; + $no = 'IBAN '.$args->{ISO}.$mod.$no; + return $no; +} +# -------------------------------------- +sub getError { + return unless $_[0]->{ERRORS}; + return @{$_[0]->{ERRORS}}; +} +# -------------------------------------- +sub printError { + return unless $_[0]->{ERRORS}; + print "$errors[$_]\n" for @{$_[0]->{ERRORS}}; +} +# -------------------------------------- +sub country { + return $_[0]->{COUNTRY}; +} +# -------------------------------------- +sub valid { + my ($self, $ib) = @_; + delete $self->{ERRORS}; + # remove spaces + $ib =~ tr/ //d; + # invalid characters + #(push @{$self->{ERRORS}}, IBAN_FORMAT2), return if $ib =~ tr/A-Za-z0-9//c; + $ib =~ s/^IBAN//i; + push @{$self->{ERRORS}}, IBAN_FORMAT unless $ib =~ m/^[A-Z][A-Z]/i; + return if $self->{ERRORS}; + my $iso = substr $ib, 0, 2, ""; + $iso =~ s/([A-Z])/(ord $1)-55/eg; + my $check = substr $ib, 0, 2, ""; + # convert alpha characters to their ascii code + $ib =~ s/([A-Z])/(ord $1)-55/eg; + # iban still contains characters which are not numbers! + (push @{$self->{ERRORS}}, IBAN_FORMAT2), return if $ib =~ tr/0-9//c; + $ib .= "$iso$check"; + $ib = Math::BigInt->new($ib); + push @{$self->{ERRORS}}, IBAN_INVALID and return unless ($ib % 97)==1; + return 1; +} +# -------------------------------------- + +@errors = ( + "No Country or Iso-Code supplied", + "No BBAN (Bank-Number) or Bank Identifier and Accountnumber supplied", + "Could not find country", + "IBAN must contain two-letter ISO-Code at the beginning", + "IBAN must only contain only alphanumerics after the ISO-code", + "IBAN is invalid", +); + +1; +__END__ + +=head1 NAME + +Business::IBAN - Validate and generate IBANs + +=head1 SYNOPSIS + + use Business::IBAN; + use Locale::Country; + my $cc = country2code('Germany'); + my $iban = Business::IBAN->new(); + + # ---------- generate + my $ib = $iban->getIBAN( + { + ISO => $cc, # or "DE", etc. + BIC => 12345678, # Bank Identifier Code, meaning the BLZ + # in Germany + AC => "1234567890", + }); + # or + my $ib = $iban->getIBAN( + { + ISO => "DE", + BBAN => 123456781234567890, + }); + if ($ib) { + print "IBAN is $ib\n"; + } + else { + $iban->printError(); + # or + my @errors = $iban->getError(); + # print your own error messages (for description of error- + # codes see section ERROR-CODES + } + + # ------------ validate + if ($iban->valid($ib)) { + # note: this also accepts IBANs in paper format with spaces added + print "$ib is valid\n"; + } + else { + $iban->printError(); + } + +=head1 DESCRIPTION + +With this module you can validate IBANs (International Bank +Account Number) like "IBAN DE97123456781234567890" (ISO 13616). +(Note: spaces between numbers are allowed.) +Note that this dos not (and cannot) assure that the bank +account exists or that the bank account number for the +bank itself is valid. +You can also create an IBAN if you supply + +=over 4 + +=item + +- your BBAN (Basic Bank Account Number), + (or for germany your BLZ and account + number are sufficient), + +=item + +- and either your country code (ISO3166) + or the english name for your country. + +But note that only your bank is supposed to create your official IBAN. + +=back + +=head2 REQUIRES + +To get your country code the module Locale::Country is required, which +you can get from www.cpan.org. It's a standard module since perl-version +5.7.2. If you know your country code, you don't need the module. + +=head2 EXPORT + +None by default. All methods are accessed over the object. + + +=head2 ERROR-CODES + +You can print your own error-messages. The array you get from + my @errors = $iban->getError(); +are numbers which stand for the following errors: + + 0: No Country or Iso-Code supplied + 1: No BBAN (Bank-Number) or Bank Identifier and Accountnumber supplied + 2: Could not find country + 3: IBAN must contain two-letter ISO-Code at the beginning + 4: IBAN must only contain only alphanumerics after the ISO-code + 5: IBAN is invalid + +=head2 CAVEATS + +Please note that this program is intended to validate IBANs and generate +them for you if you have your BBAN. It's not for generating valid +numbers for illegal purposes. The algorithm is simple and publicly +available for everyone. You can find informations about the IBAN at + +=over 4 + +=item http://www.ecbs.org + +=item http://www.iban.ch + +=back + +=head1 VERSION + +Business::IBAN Version 0.06 + +=head1 AUTHOR + +Tina Mueller. tinita(at)cpan.org + +=cut diff --git a/copri4/main/src/Mod/Indexsharee.pm b/copri4/main/src/Mod/Indexsharee.pm index ba732da..019d4a9 100755 --- a/copri4/main/src/Mod/Indexsharee.pm +++ b/copri4/main/src/Mod/Indexsharee.pm @@ -726,7 +726,7 @@ sub handler { exit 0; } } - elsif(!$users_sharee->{c_id} && !$R::logedout && ($path !~ /$varenv{mandant}\/Karte|$varenv{mandant}\/Anmelden|$varenv{mandant}\/Account|$varenv{mandant}\/Kontakt/)){ + elsif(!$users_sharee->{c_id} && !$R::logedout && ($path !~ /$varenv{mandant}\/Karte|$varenv{mandant}\/Anmelden|$varenv{mandant}\/Account|$varenv{mandant}\/Kontakt|PDFGenerator/)){ print redirect("$varenv{wwwhost}?logedout=1$session_and"); exit 0; } @@ -809,6 +809,7 @@ sub handler { #my $jquery = "$varenv{metahost}/$dbt->{copri_conf}->{jsscript}"; my $jquery = "$varenv{metahost}/$dbt->{shareeapp_conf}->{jquery}";#used by CalReserv / rentalator.js my $jquery_ui = "$varenv{metahost}/$dbt->{copri_conf}->{jsscript}"; + my $style_jquery_ui = ""; my $js_bootstrap = "$varenv{metahost}/$dbt->{shareeapp_conf}->{js_bootstrap}"; my $style_bootstrap = "$varenv{metahost}/$dbt->{shareeapp_conf}->{style_bootstrap}"; diff --git a/copri4/main/src/Mod/Payment.pm b/copri4/main/src/Mod/Payment.pm index 1090941..512300f 100755 --- a/copri4/main/src/Mod/Payment.pm +++ b/copri4/main/src/Mod/Payment.pm @@ -173,6 +173,12 @@ sub book_payment { } } + #SEPA manually + elsif($update_ctt->{int04} == 10){ + $update_ctt->{int14} = "null"; + $update_ctt->{pay_time} = "now()"; + $feedb->{u_rows} = $dbt->update_record($dbh,$update_ctt,$ctt); + } #Storno or Zahlungsausfall elsif($ctt->{txt00} eq "Storno" || $update_ctt->{int04} == 7){ $update_ctt->{int14} = "null"; @@ -1073,10 +1079,16 @@ sub payone_capture { #set also state because we still need (payone) for some text selection TODO my $state = $ctt->{state} || ""; my $p_hash = $dbt->{shareedms_conf}->{payment_state2}; - if($ctadr->{ct_name} =~ /^\w{2}-\d+/){ + #SEPA payone + if($ctadr->{ct_name} =~ /(PO|TM)-\d+/){ $state = $p_hash->{1}; $update_ctt->{int04} = 1; } + #SEPA manually + if($ctadr->{ct_name} =~ /MA-\d+/){ + $state = $p_hash->{10}; + $update_ctt->{int04} = 10; + } if(length($ctadr->{ct_name}) >= 19){ $state = $p_hash->{2}; $update_ctt->{int04} = 2; diff --git a/copri4/main/src/Mod/Printpreview.pm b/copri4/main/src/Mod/Printpreview.pm index f9c8973..b9bc6d7 100755 --- a/copri4/main/src/Mod/Printpreview.pm +++ b/copri4/main/src/Mod/Printpreview.pm @@ -581,7 +581,7 @@ td { if($key =~ /txt5\d/){ $ctf->{$key} = $q->unescapeHTML("$ctf->{$key}"); $ctf->{$key} = $lb->newline($ctf->{$key},"",""); - $ctt->{state} =~ s/\(payone.*//; + $ctt->{state} =~ s/\(.*//;#delete like (payone) if($des =~ /$ctt->{state}/){ if($sum_brutto < 0){ $payment_text = "$ctf->{txt58}"; @@ -835,7 +835,7 @@ td { if($key =~ /txt5\d/){ $ctf->{$key} = $q->unescapeHTML("$ctf->{$key}"); $ctf->{$key} = $lb->newline($ctf->{$key},"",""); - $ctt->{state} =~ s/\(payone.*//; + $ctt->{state} =~ s/\(.*//; if($des =~ /$ctt->{state}/ && ($j <= $max_table_wc || $break_table_wc)){ if($sum_parts19 < 0){ $payment_text = "$ctf->{txt58}"; diff --git a/copri4/main/src/Mod/Shareework.pm b/copri4/main/src/Mod/Shareework.pm index 0e3e28c..1ae0858 100755 --- a/copri4/main/src/Mod/Shareework.pm +++ b/copri4/main/src/Mod/Shareework.pm @@ -26,6 +26,7 @@ use Mod::Basework; use Mod::Payment; #use Mod::MailTransport; use Mod::SMSTransport; +use Mod::IBAN;#if no payment_provider defined use Data::Dumper; my $cf = new Config; @@ -34,9 +35,10 @@ my $lb = new Libenz; my $dbt = new DBtank; my $apif = new APIfunc; my $bw = new Basework; -my $payone = new Payment; +my $pay = new Payment; #my $mailtrans = new MailTransport; my $smstrans = new SMSTransport; +my $ibanmod = IBAN->new(); my $q = new CGI; my $uri_encode = URI::Encode->new( { encode_reserved => 1 } ); @@ -539,8 +541,10 @@ sub save_account(){ my $iban = $ctadr->{txt22} || ""; $iban =~ s/\s//g; + $iban = uc($iban); my $iban_reject = 0; - $iban_reject = 1 if($iban =~ /DE33700202700000091600/i);#fraud + $iban_reject = 1 if($iban =~ /DE33700202xxxxxxxxxx/i);#fraud + if($R::request eq "managemandate" && $ctadr->{int03} == 1 && !$iban_reject){ my $vde_on_fail = $ctadr->{int12} || 3;#keep last or set 3 @@ -561,17 +565,40 @@ sub save_account(){ $ret_conflict = "failure::conflict_txt22\&txt22=$encoded_val#top"; }else{ - my $payone_mival = $payone->managemandate_main(\%varenv,$ctadr,"",$owner); - if($payone_mival && $payone_mival =~ /\w{2}-\w+/){ + #depends on payment_provider + if($dbt->{primary}->{payment_provider} eq "payone"){ + my $pay_mival = $pay->managemandate_main(\%varenv,$ctadr,"",$owner); + if($pay_mival && $pay_mival =~ /\w{2}-\w+/){ - #payment_ack payAck - system("$dbt->{copri_conf}->{basedir}/$varenv{syshost}/src/scripts/payment_ack.pl '$varenv{syshost}' 'payment_ackSEPA' '$ctadr->{c_id}' '$owner' &"); + #payment_ack payAck + system("$dbt->{copri_conf}->{basedir}/$varenv{syshost}/src/scripts/payment_ack.pl '$varenv{syshost}' 'payment_ackSEPA' '$ctadr->{c_id}' '$owner' &"); - $vde_on_fail = 0 if($vde_on_fail != 2); - $u_rows = $dbt->update_one($dbh,$update_adr,"int12=$vde_on_fail");#Vde - }else{ + $vde_on_fail = 0 if($vde_on_fail != 2); + $u_rows = $dbt->update_one($dbh,$update_adr,"int12=$vde_on_fail");#Vde + }else{ $u_rows = $dbt->update_one($dbh,$update_adr,"int12=$vde_on_fail");#Vde $ret = "failure::txt22#top"; + } + } + + #elsif($dbt->{primary}->{payment_provider} eq "manually"){ + else{ + my $valid = $ibanmod->valid($iban); + if ($valid) { + print FILE "c_id:$c_id --> IBAN:$iban --> valid:$valid\n" if($debug); + $vde_on_fail = 0 if($vde_on_fail != 2); + $u_rows = $dbt->update_one($dbh,$update_adr,"ct_name='MA-$c_id'");#MA for manually mandat + $u_rows = $dbt->update_one($dbh,$update_adr,"txt27='active'"); + $u_rows = $dbt->update_one($dbh,$update_adr,"int12=$vde_on_fail");#Vde + my $ret = $pay->pdfmandat(\%varenv,$ctadr->{c_id}); + print FILE "pdfmandat call generates: $ret\n" if($debug); + } + else { + my $ibanerror = $ibanmod->getError; + print FILE "c_id:$c_id --> IBAN:$iban --> ibanerror:$ibanerror\n" if($debug); + $u_rows = $dbt->update_one($dbh,$update_adr,"int12=$vde_on_fail");#Vde + $ret = "failure::txt22#top"; + } } } diff --git a/copri4/main/src/Tpl/Address3.pm b/copri4/main/src/Tpl/Address3.pm index cf9c609..a39f4a4 100755 --- a/copri4/main/src/Tpl/Address3.pm +++ b/copri4/main/src/Tpl/Address3.pm @@ -354,7 +354,7 @@ EOF $pay_sequence = " | sequencenr: $ctt->{int18}" if($ctt->{int18}); my $kind_of_payment = "fehlt"; - my $p_hash = $dbt->{shareedms_conf}->{payment_state2}; + my $p_hash = $dbt->{copri_conf}->{payment_type}; foreach my $s_key (sort keys (%{ $p_hash })) { if($ctadr->{int03}){ $kind_of_payment = "Kunde " . $p_hash->{$s_key} if($ctadr->{int03} == $s_key); diff --git a/copri4/main/src/Tpl/Karte_osm.pm b/copri4/main/src/Tpl/Karte_osm.pm index fcd9d1a..132c60c 100755 --- a/copri4/main/src/Tpl/Karte_osm.pm +++ b/copri4/main/src/Tpl/Karte_osm.pm @@ -263,6 +263,28 @@ print "\n"; print $q->div({-class=>"content2_legende"}, $q->img({-style=>'height:37px;', -src=>"$varenv->{metahost}/img/$icon_red"}), "Lastenrad nicht verfügbar"),"\n"; #print $q->div({-class=>"content2_legende"}, " "),"\n"; + +#https://developer.android.com/develop/ui/views/layout/webapps/webview +#Bind JavaScript code to Android code +#when a user taps the button, the showAndroidToast() function uses the Android interface to call the WebAppInterface.showToast() method +if($dbt->{shareeapp_conf}->{kotlinapp}){ +print< + + + +EOF +; +} + print "$initMap|$varenv->{dbname}|$api_return->{authcookie}|$users_sharee->{c_id}" if($users_dms->{u_id} == $dbt->{copri_conf}->{superu_id}); #print "$uri_request/GBFSout?request=stations_available&authcookie=$api_return->{authcookie}"; diff --git a/copri4/main/src/Tpl/Liste3.pm b/copri4/main/src/Tpl/Liste3.pm index 3ff7d70..12f90af 100755 --- a/copri4/main/src/Tpl/Liste3.pm +++ b/copri4/main/src/Tpl/Liste3.pm @@ -675,7 +675,7 @@ EOF print $q->td({-style=>"font-size:0.71em;padding:0;border:0px solid green;",-colspan=>"$tdcal",-nowrap=>"1"},"$day4month"),"\n"; } - my $sum_saldo="0";my $sum_opos="0";my $sum_prepaid="0";my $sum_ueb="0";my $sum_success="0";my $sum_SEPApayone="0";my $sum_CCpayone="0";my $sum_ausfall="0";my $sum_gutschrift="0";my $sum_einzugfail="0";my $sum_entgelt="0";my $sum_abr="0";my $close_time="";my $payment_time=""; + my $sum_saldo=0;my $sum_opos=0;my $sum_prepaid=0;my $sum_ueb=0;my $sum_success=0;my $sum_SEPApayone=0;my $sum_SEPAmanually=0;my $sum_CCpayone=0;my $sum_ausfall=0;my $sum_gutschrift=0;my $sum_einzugfail=0;my $sum_entgelt=0;my $sum_abr=0;my $close_time="";my $payment_time=""; my $nr=0;my $nx=0; #BIG LOOP loop content table @@ -767,6 +767,7 @@ EOF $sum_opos += $ct4rel->{$id}->{int01}; }else{ $sum_SEPApayone += $ct4rel->{$id}->{int01} if($ct4rel->{$id}->{int04} == 1); + $sum_SEPAmanually += $ct4rel->{$id}->{int01} if($ct4rel->{$id}->{int04} == 10); $sum_CCpayone += $ct4rel->{$id}->{int01} if($ct4rel->{$id}->{int04} == 2); $sum_prepaid += $ct4rel->{$id}->{int01} if($ct4rel->{$id}->{int04} == 3); $sum_ueb += $ct4rel->{$id}->{int01} if($ct4rel->{$id}->{int04} == 4); @@ -1166,7 +1167,7 @@ EOF if(($nr > 0) && ($v_journal || $R::close_trans) && !$R::rel_id){ - my $m = $k - 4; + my $m = $k - 5; print $q->Tr(); print $q->td({-style=>"background-color:silver;"},""),"\n"; print $q->td({-class=>'tdtxt',-style=>'text-align:center;background-color:silver;',-colspan=>"$k"},"Gesamt Umsätze"); @@ -1214,6 +1215,14 @@ EOF print $q->td({-class=>'tdint',-colspan=>"$m"},"SEPA-Lastschrift (payone) Summe"); print $q->td({-class=>'tdint',-colspan=>"1",-nowrap=>"1"},"$sum_SEPApayone €"); } + if($sum_SEPAmanually != 0){ + $sum_SEPAmanually = sprintf('%.2f',$sum_SEPAmanually); + $sum_success += $sum_SEPAmanually; + print $q->Tr(); + print $q->td({-style=>"background-color:silver;"},""),"\n"; + print $q->td({-class=>'tdint',-colspan=>"$m"},"SEPA-Lastschrift (manuell) Summe"); + print $q->td({-class=>'tdint',-colspan=>"1",-nowrap=>"1"},"$sum_SEPAmanually €"); + } if($sum_CCpayone != 0){ $sum_CCpayone = sprintf('%.2f',$sum_CCpayone); $sum_success += $sum_CCpayone; diff --git a/copri4/main/src/Tpl/TransInvoices.pm b/copri4/main/src/Tpl/TransInvoices.pm index c81b14e..d7f4729 100755 --- a/copri4/main/src/Tpl/TransInvoices.pm +++ b/copri4/main/src/Tpl/TransInvoices.pm @@ -376,7 +376,8 @@ sub tpl(){ c_id => $ctt->{content_id}, }; #disable Leistungszeitraum workaround for SubOp - #UPDATE contenttrans set txt20='01.05.2024 - 31.12.2024' where c_id = 29152; + #UPDATE contenttrans set txt20='01.05.2024 - 31.12.2024',txt29='Oberried' where c_id = 29152; + #$dbt->update_one($dbh,$update_ctt,"txt20='01.12.2023 - 31.12.2024'"); $dbt->update_one($dbh,$update_ctt,"txt20='$accounting_start - $accounting_end'"); } diff --git a/copri4/main/src/Tpl/TransPositionen.pm b/copri4/main/src/Tpl/TransPositionen.pm index 7bb016b..71627f5 100755 --- a/copri4/main/src/Tpl/TransPositionen.pm +++ b/copri4/main/src/Tpl/TransPositionen.pm @@ -498,7 +498,7 @@ EOF $ctf->{$key} = $q->unescapeHTML("$ctf->{$key}"); $ctf->{$key} = $lb->newline($ctf->{$key},"",""); if($ctt->{state}){ - $ctt->{state} =~ s/\(payone.*//; + $ctt->{state} =~ s/\(.*//;#delete like (payone) if($des =~ /$ctt->{state}/){ if($sum_parts19 < 0){ $payment_text = "$ctf->{txt58}"; @@ -562,7 +562,7 @@ EOF my $setdefault_payment = "";#new my $p_hash = $dbt->{shareedms_conf}->{payment_state2}; foreach my $s_key (sort keys (%{ $p_hash })) { - if($s_key <= 7){ + if($s_key <= 7 || $s_key >= 10){ push @_paymentstate, "$p_hash->{$s_key}"; push @_payment_valxx, "$s_key:($s_key) $p_hash->{$s_key}"; } @@ -580,10 +580,14 @@ EOF $setdefault_payment = 4; } elsif($ctadr->{int03}){ - if($ctadr->{ct_name} =~ /\w{2}-\d+/){ + if($ctadr->{ct_name} =~ /(PO|TM)-\d+/){ $kind_of_payment = $p_hash->{1}; $setdefault_payment = 1; } + if($ctadr->{ct_name} =~ /MA-\d+/){ + $kind_of_payment = $p_hash->{10}; + $setdefault_payment = 10; + } if(length($ctadr->{ct_name}) >= 19){ $kind_of_payment = $p_hash->{2}; $setdefault_payment = 2; diff --git a/copri4/shareeapp-operator/src/Tpl/FormEdit.pm b/copri4/shareeapp-operator/src/Tpl/FormEdit.pm index 3e308b2..c17659a 100755 --- a/copri4/shareeapp-operator/src/Tpl/FormEdit.pm +++ b/copri4/shareeapp-operator/src/Tpl/FormEdit.pm @@ -414,9 +414,10 @@ EOF $checked_creditcard = 2 if($ctadr->{$key} == 2); $checked_prepaid = 3 if($ctadr->{$key} == 3); if($p_id == 1){ - print $q->div({ -class=>'radio', -style=>'padding-top:20px;' },$but->radiobox_vertical("$key","$p_id","$checked_sepa",$q->img({-id=>"pic-payment" ,-style=>'height:50px;', -title=>"$dbt->{copri_conf}->{payment_type}->{$p_id}",-src=>"$varenv->{metahost}/img/payment-incasso2.png"}))),"\n"; + print $q->div({ -class=>'radio', -style=>'padding-top:20px;' },$but->radiobox_vertical("$key","$p_id","$checked_sepa",$q->img({-id=>"pic-payment" ,-style=>'height:50px;margin:10px 0 0 10px;', -title=>"$dbt->{copri_conf}->{payment_type}->{$p_id}",-src=>"$varenv->{metahost}/img/payment-incasso2.png"}))),"\n"; }elsif($p_id == 2){ - print $q->div({ -class=>'radio', -style=>'padding-top:20px;' },$but->radiobox_vertical("$key","$p_id","$checked_creditcard",$q->img({-id=>"pic-payment" ,-style=>'height:25px;', -title=>"$dbt->{copri_conf}->{payment_type}->{$p_id}",-src=>"$varenv->{metahost}/img/payment-creditcard2.png"}))),"\n"; + #print $q->div({ -class=>'radio', -style=>'padding-top:20px;' },$but->radiobox_vertical("$key","$p_id","$checked_creditcard",$q->img({-id=>"pic-payment" ,-style=>'height:25px;', -title=>"$dbt->{copri_conf}->{payment_type}->{$p_id}",-src=>"$varenv->{metahost}/img/payment-creditcard2.png"}))),"\n"; + print $q->div({ -class=>'radio', -style=>'padding-top:20px;' },"o",$q->img({-id=>"pic-payment" ,-style=>'height:25px;', -title=>"$dbt->{copri_conf}->{payment_type}->{$p_id}",-src=>"$varenv->{metahost}/img/payment-creditcard2.png"}),"
Kreditkarte ist aktuell deaktiviert"),"\n"; }elsif($p_id == 3){ print $q->div({ -class=>'radio', -style=>'padding-top:25px;' },$but->radiobox_vertical("$key","$p_id","$checked_prepaid","Prepaid")),"\n" if($ctadr->{c_id} && $dbt->{copri_conf}->{betau_id}->{$ctadr->{c_id}});#testing by contributors } diff --git a/copri4/shareeapp-operator/src/Tpl/PayoneSEPA.pm b/copri4/shareeapp-operator/src/Tpl/PayoneSEPA.pm index be232b6..80de417 100755 --- a/copri4/shareeapp-operator/src/Tpl/PayoneSEPA.pm +++ b/copri4/shareeapp-operator/src/Tpl/PayoneSEPA.pm @@ -59,7 +59,8 @@ sub tpl(){ print $q->div({-class=>'content_title3'},"$varenv->{cms}->{'iframe-bank-account'}->{txt}"),"\n"; print $q->div({-class=>'content2'}, "$varenv->{cms}->{'iframe-sepa-mandat-prolog'}->{txt}"),"\n"; - if($ctadr->{int03} == 1 && $ctadr->{ct_name} =~ /^\w{2}-\w+/ && !$ctadr->{int18}){ + + if($dbt->{primary}->{payment_provider} eq "payone" && $ctadr->{int03} == 1 && $ctadr->{ct_name} =~ /^\w{2}-\w+/ && !$ctadr->{int18}){ print $q->div({-class=>'content2',-style=>"color:$red"}, "$varenv->{cms}->{'iframe-payAck-failure'}->{txt}"),"\n"; } @@ -108,7 +109,7 @@ sub tpl(){ }else{ #if payone fails/error if($ctadr->{txt27} =~ /active|pending/){ - if($ctadr->{ct_name} && ($ctadr->{ct_name} =~ /PO-/ || $ctadr->{ct_name} =~ /TM-/) && $coo){ + if($ctadr->{ct_name} && $ctadr->{ct_name} =~ /\w{2}-\w+/ && $coo){ my $webtarget = "_blank"; my $dtext = ""; if($varenv->{syshost} =~ /app/){