Skip to content

Commit 0a4413a

Browse files
author
Nicolass
committed
SAL-1088-account-bank-names-bol auto-commit
1 parent b000c1d commit 0a4413a

File tree

3 files changed

+189
-0
lines changed

3 files changed

+189
-0
lines changed

src/Bo/BankNamesRepository.php

+86
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<?php
2+
/**
3+
* Copyright (C) 1997-2020 Reyesoft <[email protected]>.
4+
*
5+
* This file is part of Saldo.com.ar. Saldo.com.ar can not be copied and/or
6+
* distributed without the express permission of Reyesoft
7+
*/
8+
9+
namespace BankAccounts\Bo;
10+
11+
/**
12+
* @internal
13+
*/
14+
final class BankNamesRepository
15+
{
16+
public const NAMES = [
17+
'BNB' => 'Banco Nacional de Bolivia S.A.',
18+
'BME' => 'Banco Mercantil Santa Cruz S.A.',
19+
'BIS' => 'Banco Bisa S.A.',
20+
'BCR' => 'Banco de Crédito de Bolivia S.A.',
21+
'BEC' => 'Banco Económico S.A.',
22+
'BGA' => 'Banco Ganadero S.A.',
23+
'BSO' => 'Banco Solidario S.A.',
24+
'BNA' => 'Banco de la Nación Argentina',
25+
'BIE' => 'Banco para el Fomento a Iniciativas Económicas S.A.',
26+
'BFO' => 'Banco Fortaleza S.A.',
27+
'BPR' => 'Banco Prodem S.A.',
28+
'BPY' => 'Bancos PYME',
29+
'PCO' => 'Banco PYME de la Comunidad S.A.',
30+
'PEF' => 'Banco PYME Ecofuturo S.A.',
31+
'BDR' => 'Banco de Desarrollo Productivo S.A.M.',
32+
'BUN' => 'Banco Unión S.A.',
33+
'VL1' => 'La Primera Entidad Financiera de Vivienda',
34+
'VPR' => 'La Promotora Entidad Financiera de Vivienda',
35+
'VPG' => 'El Progreso Entidad Financiera de Vivienda',
36+
'CJN' => 'Coop. “Jesús Nazareno” R.L.',
37+
'CFA' => 'Coop. “Fátima” R.L.',
38+
'CSM' => 'Coop. “San Martín de Porres” R.L.',
39+
'CSA' => 'Coop. “San Antonio” R.L.',
40+
'CIH' => 'Coop. “Inca Huasi” R.L.',
41+
'CQC' => 'Coop. “Quillacollo” R.L.',
42+
'CJP' => 'Coop. “San José de Punata” R.L.',
43+
'CMM' => 'Coop. “Madre y Maestra” R.L.',
44+
'CLY' => 'Coop. “Loyola” R.L.',
45+
'CPX' => 'Coop. “Pío” X R.L.',
46+
'CCR' => 'Coop. “El Chorolque” R.L.',
47+
'CSP' => 'Coop. “San Pedro” R.L.',
48+
'CCP' => 'Coop. “Catedral" R.L.',
49+
'CCM' => 'Coop. “Comarapa” R.L.',
50+
'CTR' => 'Coop. “Trinidad” R.L.',
51+
'CEC' => 'Coop. “Educadores Gran Chaco” R.L.',
52+
'CST' => 'Coop. “San Mateo” R.L.',
53+
'CMG' => 'Coop. “Monseñor Félix Gainza” R.L.',
54+
'CMR' => 'Coop. “Magisterio Rural” R.L.',
55+
'CJB' => 'Coop. “San José de Bermejo” R.L.',
56+
'CJO' => 'Coop. “San Joaquín” R.L.',
57+
'CSR' => 'Coop. “San Roque” R.L.',
58+
'CAS' => 'Coop. “Asunción” R.L.',
59+
'CCA' => 'Coop. “Catedral de Tarija” R.L.',
60+
'CME' => 'Coop. “La Merced” R.L.',
61+
'CCB' => 'Coop. “San Carlos Borromeo” R.L.',
62+
'CCF' => 'Coop. “CACEF” R.L.',
63+
'CPG' => 'Coop. “Progreso” R.L.',
64+
'CLS' => 'Coop. “La Sagrada Familia” R.L.',
65+
'CMD' => 'Coop. “Magisterio Rural de Chuquisaca” R.L.',
66+
'CSN' => 'Coop. “San Martín” R.L.',
67+
'CSQ' => 'Coop. “San Pedro de Aiquile” R.L.',
68+
'CVE' => 'Coop. “Virgen de los Remedios” R.L.',
69+
'CLO' => 'Coop. “San Francisco Solano” R.L.',
70+
'CLC' => 'Coop. “Solucredit San Silvestre” R.L.',
71+
'COO' => 'Coop. “COOPROLE” R.L.',
72+
'CEY' => 'Coop. “Cristo Rey Cochabamba” R.L.',
73+
'CPS' => 'Coop. “Paulo VI” R.L.',
74+
'CUM' => 'Coop. “Unión Santiago de Machaca USAMA” R.L.',
75+
'CAE' => 'Coop. “Cantera” R.L.',
76+
'CHO' => 'Coop. “Hospicio” R.L.',
77+
'ICI' => 'Institución Financiera de Desarrollo CIDRE IFD',
78+
'ICR' => 'Institución Financiera de Desarrollo CRECER IFD',
79+
'IDI' => 'Institución Financiera de Desarrollo DIACONÍA FRID - IFD',
80+
'IFO' => 'Institución Financiera de Desarrollo FONDECO IFD',
81+
'IFU' => 'Institución Financiera de Desarrollo FUBODE IFD',
82+
'IID' => 'Institución Financiera de Desarrollo IDEPRO IFD',
83+
'IIM' => 'Institución Financiera de Desarrollo IMPRO IFD',
84+
'IPM' => 'Institución Financiera de Desarrollo Fundación PRO MUJER IFD'
85+
];
86+
}

src/Bo/BoBankAccount.php

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
<?php
2+
/**
3+
* Copyright (C) 1997-2020 Reyesoft <[email protected]>.
4+
*
5+
* This file is part of Saldo.com.ar. Saldo.com.ar can not be copied and/or
6+
* distributed without the express permission of Reyesoft
7+
*/
8+
9+
namespace BankAccounts\Bo;
10+
11+
use BankAccounts\BankAccount;
12+
use BankAccounts\BankAccountInterface;
13+
use BankAccounts\Bo\BankNamesRepository;
14+
15+
class BoBankAccount extends BankAccount implements BankAccountInterface
16+
{
17+
public function __construct(string $cci)
18+
{
19+
$this->bank_account_number = $cci;
20+
}
21+
22+
public function getAccountTile(): string
23+
{
24+
return 'CCI';
25+
}
26+
27+
public function isValid(): bool
28+
{
29+
if (preg_match('/^(0[0-9]{3})\+(04[0-9]{22})$/', $this->bank_account_number) !== 1) {
30+
return false;
31+
}
32+
33+
return true;
34+
}
35+
36+
public function getBankId(): ?string
37+
{
38+
return substr($this->bank_account_number, 0, 3);
39+
}
40+
41+
public function getBankName(): ?string
42+
{
43+
$id = self::getBankId();
44+
45+
return BankNamesRepository::NAMES[$id] ?? null;
46+
}
47+
48+
/** @codeCoverageIgnore */
49+
public function getInternalBankAccountNumber(): ?string
50+
{
51+
return null;
52+
}
53+
}

tests/Bo/BoBankAccountTest.php

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
/**
3+
* Copyright (C) 1997-2020 Reyesoft <[email protected]>.
4+
*
5+
* This file is part of Saldo.com.ar. Saldo.com.ar can not be copied and/or
6+
* distributed without the express permission of Reyesoft
7+
*/
8+
9+
namespace Tests\Bo;
10+
11+
use BankAccounts\Ar\ArBankAccount;
12+
use BankAccounts\Bo\BoBankAccount;
13+
use BankAccounts\Ve\VeBankAccount;
14+
use PHPUnit\Framework\TestCase;
15+
16+
/**
17+
* @author Pablo Gabriel Reyes
18+
*
19+
* @see https://pabloreyes.com.ar/ Blog
20+
* @see https://github.com/pablorsk/cbu-validator-php CBU validator on GitHub
21+
*
22+
* @covers \BankAccounts\Ar\ArBankAccount
23+
*
24+
* @internal
25+
*/
26+
final class BoBankAccountTest extends TestCase
27+
{
28+
public function testIsValid(): void
29+
{
30+
static::assertFalse((new BoBankAccount(''))->isValid());
31+
static::assertFalse((new BoBankAccount('111111111'))->isValid());
32+
static::assertFalse((new BoBankAccount('AAAAA0000'))->isValid());
33+
static::assertFalse((new BoBankAccount('01340946340001361695'))->isValid());
34+
static::assertFalse((new BoBankAccount('AAAAA0000'))->isValid());
35+
static::assertFalse((new BoBankAccount('01050194651194-079423'))->isValid());
36+
static::assertFalse((new BoBankAccount('01050194651194079423 More text?'))->isValid());
37+
static::assertFalse((new BoBankAccount('0720262188000036092117'))->isValid());
38+
static::assertTrue((new BoBankAccount('1234567891234567891234'))->isValid());
39+
}
40+
41+
public function testBankName(): void
42+
{
43+
static::assertNull((new BoBankAccount('00050194697194012294'))->getBankName());
44+
}
45+
46+
public function testAccountTile(): void
47+
{
48+
static::assertSame('CCI', (new BoBankAccount('01050194697194012294'))->getAccountTile());
49+
}
50+
}

0 commit comments

Comments
 (0)