You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

57 lines
1.9 KiB

<?php
/**
* Class WCML_Payment_Gateway_Bacs
*/
class WCML_Payment_Gateway_Bacs extends WCML_Payment_Gateway {
public function get_output_model() {
return [
'id' => $this->get_id(),
'title' => $this->get_title(),
'isSupported' => true,
'settings' => $this->get_settings(),
'accounts' => wp_list_pluck( $this->get_gateway()->account_details, 'account_name' ),
'tooltip' => __( 'Set the currency in which your customer will see the final price when they checkout. Choose which accounts they will see in their payment message.', 'woocommerce-multilingual' ),
'strings' => [
'labelCurrency' => __( 'Currency', 'woocommerce-multilingual' ),
'labelBankAccount' => __( 'Bank Account', 'woocommerce-multilingual' ),
'optionAll' => __( 'All Accounts', 'woocommerce-multilingual' ),
'optionAllIn' => __( 'All in selected currency', 'woocommerce-multilingual' ),
],
];
}
public function add_hooks() {
add_filter( 'woocommerce_bacs_accounts', [ $this, 'filter_bacs_accounts' ] );
}
public function filter_bacs_accounts( $accounts ) {
$client_currency = $this->woocommerce_wpml->multi_currency->get_client_currency();
$gateway_setting = $this->get_setting( $client_currency );
$allowed_accounts = [];
if ( $gateway_setting && ! isset( $gateway_setting['value'] ) ) {
$gateway_setting['value'] = '0';
}
if ( $gateway_setting && 'all' !== $gateway_setting['value'] ) {
if ( 'all_in' === $gateway_setting['value'] ) {
$bacs_accounts_currencies = get_option( WCML_WC_Gateways::WCML_BACS_ACCOUNTS_CURRENCIES_OPTION, [] );
foreach ( $bacs_accounts_currencies as $account_key => $currency ) {
if ( $gateway_setting['currency'] === $currency ) {
$allowed_accounts[] = $accounts[ $account_key ];
}
}
} else {
$allowed_accounts[] = $accounts[ $gateway_setting['value'] ];
}
}
return $allowed_accounts ? $allowed_accounts : $accounts;
}
}