Skip to content

Commit f07fbf0

Browse files
committed
Add more predefined accounting templates and update CI
1 parent 7141e50 commit f07fbf0

5 files changed

Lines changed: 151 additions & 9 deletions

File tree

.github/workflows/tests.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,19 +59,19 @@ jobs:
5959
coverage: none
6060

6161
- name: Clonar FacturaScripts
62-
uses: actions/checkout@v4
62+
uses: actions/checkout@v6
6363
with:
6464
fetch-depth: 0
6565
repository: 'NeoRazorX/facturascripts'
6666

6767
- name: Clonar Plugin ${{ env.NOMBRE_PLUGIN }}
68-
uses: actions/checkout@v4
68+
uses: actions/checkout@v6
6969
with:
7070
fetch-depth: 0
7171
path: Plugins/${{ env.NOMBRE_PLUGIN }}
7272

7373
- name: Cache de dependencias de Composer
74-
uses: actions/cache@v3
74+
uses: actions/cache@v5
7575
with:
7676
path: ~/.composer/cache/files
7777
key: composer-${{ runner.os }}-${{ matrix.php-version }}-${{ hashFiles('**/composer.lock') }}
@@ -152,4 +152,4 @@ jobs:
152152
docker logs $(docker ps -q --filter ancestor=mariadb:11) || true
153153
else
154154
docker logs $(docker ps -q --filter ancestor=postgres:13) || true
155-
fi
155+
fi

Data/Codpais/ESP/asientospre.csv

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ La Seguridad Social a cargo del trabajador se calcula de forma automática (vari
3232
• A = Terminación de la subcuenta 4751 de IRPF del trabajo (0 = predeterminada). Si usas subcuentas separadas para 111 y 115, indica aquí la del 111.
3333
• B = Importe a pagar en Hacienda.
3434
• C = Terminación de la subcuenta 572 del banco desde el que pagas."
35-
"7","Pago modelo 115 - Otras retenciones","Pago otras retenciones {PERIODO}","Rellena los datos del pago presentado en el modelo 115 (retenciones por arrendamientos):
35+
"7","Pago modelo 115 - arrendamientos","Pago retención alquiler {PERIODO}","Rellena los datos del pago presentado en el modelo 115 (retenciones por arrendamientos):
3636
3737
• A = Terminación de la subcuenta 4751 de retenciones del 115 (0 = predeterminada). Si compartes la 4751 con el modelo 111, usa subcuentas distintas para separarlas.
3838
• B = Importe a pagar en Hacienda.
@@ -62,3 +62,18 @@ La diferencia (R − S) se lleva automáticamente a la 4750 como IVA a ingresar
6262
• R = Retención de IRPF practicada al arrendador.
6363
6464
El importe a pagar al arrendador (B + I − R) se calcula automáticamente en la 410 (variable Z)."
65+
"12","Pago alquiler con retención","Pago alquiler {NOMBREMES}","Registra el pago al arrendador de una factura de alquiler con retención ya contabilizada:
66+
67+
• A = Terminación de la subcuenta 410 del arrendador (misma que usaste al contabilizar la factura).
68+
• B = Terminación de la subcuenta 572 del banco desde el que pagas.
69+
• I = Importe transferido al arrendador (debe coincidir con el saldo pendiente en la 410, normalmente base + IVA − retención)."
70+
"13","Pago impuesto sobre sociedades","Pago impuesto sociedades {ANYO}","Rellena los datos del pago del impuesto sobre sociedades:
71+
72+
• A = Terminación de la subcuenta 4752 de Hacienda por impuesto sobre sociedades (0 = predeterminada).
73+
• B = Importe a pagar.
74+
• C = Terminación de la subcuenta 572 del banco desde el que pagas."
75+
"14","Pago comisiones bancarias","Comisiones bancarias {NOMBREMES}","Registra el cargo de comisiones del banco:
76+
77+
• A = Terminación de la subcuenta 626 de servicios bancarios y similares (0 = predeterminada).
78+
• B = Importe de la comisión cargada por el banco.
79+
• C = Terminación de la subcuenta 572 del banco desde el que se cobra."

Data/Codpais/ESP/asientospre_lineas.csv

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
"572.C","Pago IVA modelo 303",,,"B","29","5","5"
1515
"4751.A","Pago retención IRPF modelo 111",,"B",,"22","6","0"
1616
"572.C","Pago retención IRPF modelo 111",,,"B","23","6","5"
17-
"4751.A","Pago otras retenciones modelo 115",,"B",,"24","7","0"
18-
"572.C","Pago otras retenciones modelo 115",,,"B","25","7","5"
17+
"4751.A","Pago retención alquiler modelo 115",,"B",,"24","7","0"
18+
"572.C","Pago retención alquiler modelo 115",,,"B","25","7","5"
1919
"473.A","Pago fraccionado IRPF modelo 130",,"B",,"26","8","0"
2020
"572.C","Pago fraccionado IRPF modelo 130",,,"B","27","8","5"
2121
"476.A","Pago SS {NOMBREMES}",,"B",,"40","9","0"
@@ -27,3 +27,9 @@
2727
"472.A","IVA soportado alquiler {NOMBREMES}",,"I",,"46","11","5"
2828
"4751.A","Retención IRPF alquiler {NOMBREMES}",,,"R","47","11","10"
2929
"410.A","Alquiler {NOMBREMES}",,,"Z","48","11","15"
30+
"410.A","Pago alquiler {NOMBREMES}",,"I",,"49","12","0"
31+
"572.B","Pago alquiler {NOMBREMES}",,,"I","50","12","5"
32+
"4752.A","Pago impuesto sociedades",,"B",,"51","13","0"
33+
"572.C","Pago impuesto sociedades",,,"B","52","13","5"
34+
"626.A","Comisiones bancarias {NOMBREMES}",,"B",,"53","14","0"
35+
"572.C","Comisiones bancarias {NOMBREMES}",,,"B","54","14","5"

Data/Codpais/ESP/asientospre_variables.csv

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,12 @@
3434
"B","Base del alquiler (sin IVA ni retención)","47","11"
3535
"I","Cuota de IVA soportado del alquiler","48","11"
3636
"R","Retención IRPF practicada al arrendador","49","11"
37+
"A","Terminación de la cuenta del arrendador (subcuenta 410)","50","12"
38+
"B","Terminación de cuentas banco (subcuenta 572)","51","12"
39+
"I","Importe del pago al arrendador","52","12"
40+
"A","Terminación de la cuenta 4752 (0 = predeterminada)","53","13"
41+
"B","Importe del impuesto sobre sociedades a pagar","54","13"
42+
"C","Terminación de cuentas banco (subcuenta 572)","55","13"
43+
"A","Terminación de la cuenta 626 (0 = predeterminada)","56","14"
44+
"B","Importe de la comisión bancaria","57","14"
45+
"C","Terminación de cuentas banco (subcuenta 572)","58","14"

Test/main/AsientosPredefinidosTest.php

Lines changed: 114 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -382,12 +382,12 @@ public function testAsientoPredefinidoPagoModelo115(): void
382382
$this->assertCount(2, $partidas);
383383

384384
$this->assertEquals('4751000000', $partidas[0]->codsubcuenta);
385-
$this->assertEquals('Pago otras retenciones modelo 115', $partidas[0]->concepto);
385+
$this->assertEquals('Pago retención alquiler modelo 115', $partidas[0]->concepto);
386386
$this->assertEquals(80, $partidas[0]->debe);
387387
$this->assertEquals(0, $partidas[0]->haber);
388388

389389
$this->assertEquals('5720000000', $partidas[1]->codsubcuenta);
390-
$this->assertEquals('Pago otras retenciones modelo 115', $partidas[1]->concepto);
390+
$this->assertEquals('Pago retención alquiler modelo 115', $partidas[1]->concepto);
391391
$this->assertEquals(0, $partidas[1]->debe);
392392
$this->assertEquals(80, $partidas[1]->haber);
393393

@@ -570,6 +570,118 @@ public function testAsientoPredefinidoAlquilerConRetencion(): void
570570
$asiento->delete();
571571
}
572572

573+
public function testAsientoPredefinidoPagoAlquilerConRetencion(): void
574+
{
575+
$empresa = Empresas::default();
576+
577+
$asientoPredefinido = new AsientoPredefinido();
578+
$this->assertTrue($asientoPredefinido->loadFromCode(12));
579+
580+
$asiento = $asientoPredefinido->generate([
581+
'idempresa' => $empresa->idempresa,
582+
'fecha' => Tools::date(),
583+
'canal' => 0,
584+
'var_A' => 0,
585+
'var_B' => 0,
586+
'var_I' => 510,
587+
]);
588+
589+
$this->assertTrue($asiento->exists());
590+
$this->assertEquals(510, $asiento->importe);
591+
592+
$textoMes = Tools::lang()->trans(strtolower(date('F', strtotime($asiento->fecha))));
593+
$this->assertEquals('Pago alquiler ' . $textoMes, $asiento->concepto);
594+
595+
$partidas = $asiento->getLines();
596+
$this->assertCount(2, $partidas);
597+
598+
$this->assertEquals('4100000000', $partidas[0]->codsubcuenta);
599+
$this->assertEquals('Pago alquiler ' . $textoMes, $partidas[0]->concepto);
600+
$this->assertEquals(510, $partidas[0]->debe);
601+
$this->assertEquals(0, $partidas[0]->haber);
602+
603+
$this->assertEquals('5720000000', $partidas[1]->codsubcuenta);
604+
$this->assertEquals('Pago alquiler ' . $textoMes, $partidas[1]->concepto);
605+
$this->assertEquals(0, $partidas[1]->debe);
606+
$this->assertEquals(510, $partidas[1]->haber);
607+
608+
$asiento->delete();
609+
}
610+
611+
public function testAsientoPredefinidoPagoImpuestoSociedades(): void
612+
{
613+
$empresa = Empresas::default();
614+
615+
$asientoPredefinido = new AsientoPredefinido();
616+
$this->assertTrue($asientoPredefinido->loadFromCode(13));
617+
618+
$asiento = $asientoPredefinido->generate([
619+
'idempresa' => $empresa->idempresa,
620+
'fecha' => Tools::date(),
621+
'canal' => 0,
622+
'var_A' => 0,
623+
'var_B' => 1200,
624+
'var_C' => 0,
625+
]);
626+
627+
$this->assertTrue($asiento->exists());
628+
$this->assertEquals(1200, $asiento->importe);
629+
$this->assertEquals('Pago impuesto sociedades ' . date('Y', strtotime($asiento->fecha)), $asiento->concepto);
630+
631+
$partidas = $asiento->getLines();
632+
$this->assertCount(2, $partidas);
633+
634+
$this->assertEquals('4752000000', $partidas[0]->codsubcuenta);
635+
$this->assertEquals('Pago impuesto sociedades', $partidas[0]->concepto);
636+
$this->assertEquals(1200, $partidas[0]->debe);
637+
$this->assertEquals(0, $partidas[0]->haber);
638+
639+
$this->assertEquals('5720000000', $partidas[1]->codsubcuenta);
640+
$this->assertEquals('Pago impuesto sociedades', $partidas[1]->concepto);
641+
$this->assertEquals(0, $partidas[1]->debe);
642+
$this->assertEquals(1200, $partidas[1]->haber);
643+
644+
$asiento->delete();
645+
}
646+
647+
public function testAsientoPredefinidoPagoComisionesBancarias(): void
648+
{
649+
$empresa = Empresas::default();
650+
651+
$asientoPredefinido = new AsientoPredefinido();
652+
$this->assertTrue($asientoPredefinido->loadFromCode(14));
653+
654+
$asiento = $asientoPredefinido->generate([
655+
'idempresa' => $empresa->idempresa,
656+
'fecha' => Tools::date(),
657+
'canal' => 0,
658+
'var_A' => 0,
659+
'var_B' => 18.50,
660+
'var_C' => 0,
661+
]);
662+
663+
$this->assertTrue($asiento->exists());
664+
$this->assertEquals(18.50, $asiento->importe);
665+
666+
$textoMes = Tools::lang()->trans(strtolower(date('F', strtotime($asiento->fecha))));
667+
$this->assertEquals('Comisiones bancarias ' . $textoMes, $asiento->concepto);
668+
669+
$partidas = $asiento->getLines();
670+
$this->assertCount(2, $partidas);
671+
672+
$this->assertEquals('6260000000', $partidas[0]->codsubcuenta);
673+
$this->assertEquals('Comisiones bancarias ' . $textoMes, $partidas[0]->concepto);
674+
$this->assertEquals(18.50, $partidas[0]->debe);
675+
$this->assertEquals(0, $partidas[0]->haber);
676+
677+
$this->assertEquals('5720000000', $partidas[1]->codsubcuenta);
678+
$this->assertEquals('Comisiones bancarias ' . $textoMes, $partidas[1]->concepto);
679+
$this->assertEquals(0, $partidas[1]->debe);
680+
$this->assertEquals(18.50, $partidas[1]->haber);
681+
682+
$asiento->delete();
683+
}
684+
573685
public function testAsientoPredefinidoConConceptoPersonalizado(): void
574686
{
575687
// obtenemos la empresa predefinida

0 commit comments

Comments
 (0)