diff --git a/Core/Model/EstadoDocumento.php b/Core/Model/EstadoDocumento.php index 55f7bfae1a..bca3e7e482 100644 --- a/Core/Model/EstadoDocumento.php +++ b/Core/Model/EstadoDocumento.php @@ -144,6 +144,17 @@ public function test(): bool } } + // No permitimos que un estado de ventas genere un estado de compras o viceversa. + if (!empty($this->generadoc)) { + if (str_contains($this->tipodoc, 'Cliente') && str_contains($this->generadoc, 'Proveedor')) { + Tools::log()->warning('sales-docs-cant-generate-purchase-docs'); + return false; + } elseif (str_contains($this->tipodoc, 'Proveedor') && str_contains($this->generadoc, 'Cliente')) { + Tools::log()->warning('purchase-docs-cant-generate-sales-docs'); + return false; + } + } + return parent::test(); } diff --git a/Test/Core/Model/EstadoDocumentoTest.php b/Test/Core/Model/EstadoDocumentoTest.php index 44fb2f1834..678666aa1e 100644 --- a/Test/Core/Model/EstadoDocumentoTest.php +++ b/Test/Core/Model/EstadoDocumentoTest.php @@ -1,7 +1,7 @@ + * Copyright (C) 2021-2026 Carlos Garcia Gomez * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as @@ -170,6 +170,26 @@ public function testNonEditableDefaultNotAllowed(): void $this->assertFalse($status->save()); } + /** + * No permitir crear estados de ventas que generen un documento de compras o viceversa. + */ + public function testSalesDocsCantGeneratePurchaseDocs(): void + { + // Crear nuevo estado de ventas que genere un documento de compras + $status = new EstadoDocumento(); + $status->nombre = 'Test sales'; + $status->tipodoc = 'PresupuestoCliente'; + $status->generadoc = 'PedidoProveedor'; + $this->assertFalse($status->save(), 'sales-docs-cant-generate-purchase-docs'); + + // Crear nuevo estado de compras que genere un documento de ventas + $status2 = new EstadoDocumento(); + $status2->nombre = 'Test purchase'; + $status2->tipodoc = 'PresupuestoProveedor'; + $status2->generadoc = 'PedidoCliente'; + $this->assertFalse($status2->save(), 'purchase-docs-cant-generate-sales-docs'); + } + protected function tearDown(): void { $this->logErrors();