|
4 | 4 |
|
5 | 5 | use FacturaScripts\Plugins\Proyectos\Model\Proyecto; |
6 | 6 | use FacturaScripts\Core\Tools; |
7 | | -use FacturaScripts\Test\Traits\DefaultSettingsTrait; |
8 | 7 | use FacturaScripts\Test\Traits\LogErrorsTrait; |
9 | 8 | use PHPUnit\Framework\TestCase; |
10 | 9 |
|
11 | 10 | final class ProyectoPatternResetTest extends TestCase |
12 | 11 | { |
13 | 12 | use LogErrorsTrait; |
14 | | - use DefaultSettingsTrait; |
15 | 13 |
|
16 | | - public static function setUpBeforeClass(): void |
| 14 | + private $projects = []; |
| 15 | + |
| 16 | + public function testAnnualPatternResetDisabled(): void |
17 | 17 | { |
18 | | - self::setDefaultSettings(); |
19 | | - self::installAccountingPlan(); |
20 | | - self::removeTaxRegularization(); |
| 18 | + Tools::settingsSet('proyectos', 'patron', 'PR-{ANYO}-{NUM}'); |
| 19 | + Tools::settingsSet('proyectos', 'longnumero', 1); |
| 20 | + Tools::settingsSet('proyectos', 'reiniciar_patron_anualmente', 0); |
| 21 | + |
| 22 | + // obtenemos el año anterior |
| 23 | + $prevYear = date('Y') - 1; |
| 24 | + |
| 25 | + // obtenemos el año actual |
| 26 | + $currentYear = date('Y'); |
| 27 | + |
| 28 | + // Crear 3 proyectos en año anterior |
| 29 | + for ($i = 1; $i <= 3; $i++) { |
| 30 | + $p = new Proyecto(); |
| 31 | + $p->descripcion = "Proyecto $i año anterior"; |
| 32 | + $p->fecha = "$prevYear-01-01"; |
| 33 | + $this->assertTrue($p->save(), "No se pudo guardar el proyecto $i del año anterior"); |
| 34 | + $this->projects[] = $p; |
| 35 | + $this->assertEquals("PR-$prevYear-$i", $p->nombre, "El patrón del proyecto $i del año anterior es incorrecto"); |
| 36 | + } |
| 37 | + |
| 38 | + // Crear 3 proyectos en año actual |
| 39 | + for ($i = 4; $i <= 6; $i++) { |
| 40 | + $p = new Proyecto(); |
| 41 | + $p->descripcion = "Proyecto $i año actual"; |
| 42 | + $p->fecha = "$currentYear-01-01"; |
| 43 | + $this->assertTrue($p->save(), "No se pudo guardar el proyecto $i del año actual"); |
| 44 | + $this->projects[] = $p; |
| 45 | + $this->assertEquals("PR-$currentYear-$i", $p->nombre, "El patrón del proyecto $i del año actual es incorrecto"); |
| 46 | + } |
21 | 47 | } |
22 | 48 |
|
23 | | - public function testAnnualPatternReset(): void |
| 49 | + public function testAnnualPatternResetEnabled(): void |
24 | 50 | { |
25 | | - // activar ajuste |
26 | | - Tools::settings('proyectos', 'reiniciarpatronanualmente', 1); |
27 | | - Tools::settingsSave(); |
| 51 | + Tools::settingsSet('proyectos', 'patron', 'PR-{ANYO}-{NUM}'); |
| 52 | + Tools::settingsSet('proyectos', 'longnumero', 1); |
| 53 | + Tools::settingsSet('proyectos', 'reiniciar_patron_anualmente', 1); |
28 | 54 |
|
| 55 | + // obtenemos el año anterior |
29 | 56 | $prevYear = date('Y') - 1; |
30 | | - $patron = Tools::settings('proyectos', 'patron', 'PR-{ANYO}-{NUM}'); |
31 | | - $long = Tools::settings('proyectos', 'longnumero', 6); |
32 | | - |
33 | | - // crear proyecto del año anterior |
34 | | - $old = new Proyecto(); |
35 | | - $old->nombre = strtr($patron, [ |
36 | | - '{ANYO}' => (string)$prevYear, |
37 | | - '{ANYO2}' => substr((string)$prevYear, 2), |
38 | | - '{MES}' => '01', |
39 | | - '{DIA}' => '01', |
40 | | - '{NUM}' => '5', |
41 | | - '{0NUM}' => str_pad('5', $long, '0', STR_PAD_LEFT) |
42 | | - ]); |
43 | | - $old->fecha = $prevYear . '-01-01'; |
44 | | - $old->descripcion = 'old'; |
45 | | - $this->assertTrue($old->save()); |
46 | 57 |
|
47 | | - // crear proyecto nuevo (debe generarse y empezar en 1) |
48 | | - $new = new Proyecto(); |
49 | | - $new->descripcion = 'nuevo'; |
50 | | - $this->assertTrue($new->save()); |
| 58 | + // obtenemos el año actual |
| 59 | + $currentYear = date('Y'); |
51 | 60 |
|
52 | | - $this->assertMatchesRegularExpression('/(\\d+)$/', $new->nombre, 'El nombre generado debe terminar en dígitos'); |
53 | | - preg_match('/(\\d+)$/', $new->nombre, $m); |
54 | | - $this->assertEquals(1, intval($m[1]), 'Se esperaba que la numeración empiece en 1 para el ejercicio actual'); |
| 61 | + // Crear 3 proyectos para el año anterior |
| 62 | + for ($i = 1; $i <= 3; $i++) { |
| 63 | + $p = new Proyecto(); |
| 64 | + $p->descripcion = "Proyecto $i año anterior (reset on)"; |
| 65 | + $p->fecha = "$prevYear-01-01"; |
| 66 | + $this->assertTrue($p->save(), "No se pudo guardar el proyecto $i del año anterior con reset"); |
| 67 | + $this->projects[] = $p; |
| 68 | + $this->assertEquals("PR-$prevYear-$i", $p->nombre, "El patrón del proyecto $i del año anterior es incorrecto con reset"); |
| 69 | + } |
55 | 70 |
|
56 | | - // limpieza |
57 | | - $this->assertTrue($new->delete()); |
58 | | - $this->assertTrue($old->delete()); |
| 71 | + // Crear 3 proyectos para el año actual |
| 72 | + for ($i = 1; $i <= 3; $i++) { |
| 73 | + $p = new Proyecto(); |
| 74 | + $p->descripcion = "Proyecto $i año actual (reset on)"; |
| 75 | + $p->fecha = "$currentYear-01-01"; |
| 76 | + $this->assertTrue($p->save(), "No se pudo guardar el proyecto $i del año actual con reset"); |
| 77 | + $this->projects[] = $p; |
| 78 | + $this->assertEquals("PR-$currentYear-$i", $p->nombre, "El patrón del proyecto $i del año actual debe reiniciarse a $i"); |
| 79 | + } |
59 | 80 | } |
60 | 81 |
|
61 | 82 | protected function tearDown(): void |
62 | 83 | { |
| 84 | + foreach ($this->projects as $p) { |
| 85 | + $p->delete(); |
| 86 | + } |
63 | 87 | $this->logErrors(); |
64 | 88 | } |
65 | 89 | } |
0 commit comments