Refactor bank selections
This commit is contained in:
parent
2448098f4c
commit
1321da9712
|
|
@ -26,7 +26,7 @@ class CreatePaymentMethodRequest extends FormRequest
|
||||||
/** @var Client $client */
|
/** @var Client $client */
|
||||||
$client = auth()->guard('contact')->user()->client;
|
$client = auth()->guard('contact')->user()->client;
|
||||||
|
|
||||||
$available_methods = collect($this->client->service()->getPaymentMethods(-1))
|
$available_methods = collect($client->service()->getPaymentMethods(-1))
|
||||||
->pluck('gateway_type_id')
|
->pluck('gateway_type_id')
|
||||||
->toArray();
|
->toArray();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -734,33 +734,118 @@ class Client extends BaseModel implements HasLocalePreference
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getBankTransferMethodType()
|
public function getBankTransferMethodType()
|
||||||
{
|
{
|
||||||
if ($this->currency()->code == 'USD') {
|
|
||||||
|
|
||||||
|
$pms = $this->service()->getPaymentMethods(-1);
|
||||||
|
|
||||||
|
if ($this->currency()->code == 'USD' && in_array(GatewayType::BANK_TRANSFER, array_column($pms, 'gateway_type_id'))) {
|
||||||
|
foreach ($pms as $pm) {
|
||||||
|
if ($pm['gateway_type_id'] == GatewayType::BANK_TRANSFER) {
|
||||||
|
$cg = CompanyGateway::query()->find($pm['company_gateway_id']);
|
||||||
|
|
||||||
|
if ($cg && ! property_exists($cg->fees_and_limits, GatewayType::BANK_TRANSFER)) { //@phpstan-ignore-line
|
||||||
|
$fees_and_limits = $cg->fees_and_limits;
|
||||||
|
$fees_and_limits->{GatewayType::BANK_TRANSFER} = new FeesAndLimits();
|
||||||
|
$cg->fees_and_limits = $fees_and_limits;
|
||||||
|
$cg->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($cg && $cg->fees_and_limits->{GatewayType::BANK_TRANSFER}->is_enabled) {
|
||||||
return GatewayType::BANK_TRANSFER;
|
return GatewayType::BANK_TRANSFER;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->currency()->code == 'EUR') {
|
if ($this->currency()->code == 'EUR' && (in_array(GatewayType::BANK_TRANSFER, array_column($pms, 'gateway_type_id')) || in_array(GatewayType::SEPA, array_column($pms, 'gateway_type_id')) || in_array(GatewayType::DIRECT_DEBIT, array_column($pms, 'gateway_type_id')))) {
|
||||||
|
foreach ($pms as $pm) {
|
||||||
|
if ($pm['gateway_type_id'] == GatewayType::SEPA) {
|
||||||
|
$cg = CompanyGateway::query()->find($pm['company_gateway_id']);
|
||||||
|
|
||||||
|
if ($cg && $cg->fees_and_limits->{GatewayType::SEPA}->is_enabled) {
|
||||||
return GatewayType::SEPA;
|
return GatewayType::SEPA;
|
||||||
}
|
}
|
||||||
|
else if ($cg && $cg->fees_and_limits->{GatewayType::BANK_TRANSFER}->is_enabled) {
|
||||||
//Special handler for GoCardless
|
return GatewayType::BANK_TRANSFER;
|
||||||
if($this->currency()->code == 'CAD' && ($this->getBankTransferGateway()->gateway_key == 'b9886f9257f0c6ee7c302f1c74475f6c') ?? false) {
|
}
|
||||||
|
else if ($cg && $cg->fees_and_limits->{GatewayType::DIRECT_DEBIT}->is_enabled) {
|
||||||
return GatewayType::DIRECT_DEBIT;
|
return GatewayType::DIRECT_DEBIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array($this->currency()->code, ['EUR', 'GBP','DKK','SEK','AUD','NZD','USD'])) {
|
}
|
||||||
return GatewayType::DIRECT_DEBIT;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(in_array($this->currency()->code, ['CAD'])) {
|
if (in_array(GatewayType::DIRECT_DEBIT, array_column($pms, 'gateway_type_id'))) {
|
||||||
|
foreach ($pms as $pm) {
|
||||||
|
if ($pm['gateway_type_id'] == GatewayType::DIRECT_DEBIT) {
|
||||||
|
$cg = CompanyGateway::query()->find($pm['company_gateway_id']);
|
||||||
|
|
||||||
|
if ($cg && $cg->fees_and_limits->{GatewayType::DIRECT_DEBIT}->is_enabled) {
|
||||||
|
return GatewayType::DIRECT_DEBIT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array($this->currency()->code, ['CAD','USD']) && in_array(GatewayType::ACSS, array_column($pms, 'gateway_type_id'))) {
|
||||||
|
// if ($this->currency()->code == 'CAD' && in_array(GatewayType::ACSS, array_column($pms, 'gateway_type_id'))) {
|
||||||
|
foreach ($pms as $pm) {
|
||||||
|
if ($pm['gateway_type_id'] == GatewayType::ACSS) {
|
||||||
|
$cg = CompanyGateway::query()->find($pm['company_gateway_id']);
|
||||||
|
|
||||||
|
if ($cg && $cg->fees_and_limits->{GatewayType::ACSS}->is_enabled) {
|
||||||
return GatewayType::ACSS;
|
return GatewayType::ACSS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (in_array($this->currency()->code, ['GBP']) && in_array(GatewayType::BACS, array_column($pms, 'gateway_type_id'))) {
|
||||||
|
// if ($this->currency()->code == 'CAD' && in_array(GatewayType::ACSS, array_column($pms, 'gateway_type_id'))) {
|
||||||
|
foreach ($pms as $pm) {
|
||||||
|
if ($pm['gateway_type_id'] == GatewayType::BACS) {
|
||||||
|
$cg = CompanyGateway::query()->find($pm['company_gateway_id']);
|
||||||
|
|
||||||
|
if ($cg && $cg->fees_and_limits->{GatewayType::BACS}->is_enabled) {
|
||||||
|
return GatewayType::BACS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// if ($this->currency()->code == 'USD') {
|
||||||
|
// return GatewayType::BANK_TRANSFER;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if ($this->currency()->code == 'EUR') {
|
||||||
|
// return GatewayType::SEPA;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// //Special handler for GoCardless
|
||||||
|
// if($this->currency()->code == 'CAD' && ($this->getBankTransferGateway()->gateway_key == 'b9886f9257f0c6ee7c302f1c74475f6c') ?? false) {
|
||||||
|
// return GatewayType::DIRECT_DEBIT;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (in_array($this->currency()->code, ['EUR', 'GBP','DKK','SEK','AUD','NZD','USD'])) {
|
||||||
|
// return GatewayType::DIRECT_DEBIT;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if(in_array($this->currency()->code, ['CAD'])) {
|
||||||
|
// return GatewayType::ACSS;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
public function getCurrencyCode(): string
|
public function getCurrencyCode(): string
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue