Skip to content

Commit

Permalink
Ahora no permitimos eliminar productos o variantes que ya han sido co…
Browse files Browse the repository at this point in the history
…mpradas o vendidas.
  • Loading branch information
NeoRazorX committed Mar 14, 2024
1 parent 0892e6e commit f88753c
Show file tree
Hide file tree
Showing 27 changed files with 110 additions and 19 deletions.
14 changes: 12 additions & 2 deletions Core/Model/Producto.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php
/**
* This file is part of FacturaScripts
* Copyright (C) 2012-2023 Carlos Garcia Gomez <carlos@facturascripts.com>
* Copyright (C) 2012-2024 Carlos Garcia Gomez <carlos@facturascripts.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
Expand Down Expand Up @@ -208,9 +208,19 @@ public function clear()

public function delete(): bool
{
// comprobamos si podemos eliminar las variantes
foreach ($this->getVariants() as $variant) {
if ($variant->isInDocuments()) {
Tools::log()->warning('cant-delete-variant-with-documents', ['%reference%' => $variant->referencia]);
return false;
}
}

// eliminamos las imágenes del producto
foreach ($this->getImages() as $image) {
$image->delete();
if (false === $image->delete()) {
return false;
}
}

// eliminamos el resto de la base de datos
Expand Down
26 changes: 26 additions & 0 deletions Core/Model/Variante.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
namespace FacturaScripts\Core\Model;

use FacturaScripts\Core\Base\DataBase\DataBaseWhere;
use FacturaScripts\Core\DbQuery;
use FacturaScripts\Core\Tools;
use FacturaScripts\Dinamic\Lib\ProductType;
use FacturaScripts\Dinamic\Model\AtributoValor as DinAtributoValor;
Expand Down Expand Up @@ -184,6 +185,12 @@ public function delete(): bool
return false;
}

// no podemos eliminar la variante si hay documentos relacionados
if ($this->isInDocuments()) {
Tools::log()->warning('cant-delete-variant-with-documents', ['%reference%' => $this->referencia]);
return false;
}

// eliminamos las imágenes de la variante
foreach ($this->getImages(false) as $image) {
$image->delete();
Expand Down Expand Up @@ -272,6 +279,25 @@ public function install(): string
return parent::install();
}

public function isInDocuments(): bool
{
$tables = [
'lineasalbaranescli', 'lineasalbaranesprov', 'lineasfacturascli', 'lineasfacturasprov',
'lineaspedidoscli', 'lineaspedidosprov', 'lineaspresupuestoscli', 'lineaspresupuestosprov'
];
foreach ($tables as $table) {
$count = DbQuery::table($table)
->whereEq('referencia', $this->referencia)
->count();

if ($count > 0) {
return true;
}
}

return false;
}

public function priceWithTax(): float
{
$product = $this->getProducto();
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/ca_ES.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "No es pot eliminar l'impost per defecte",
"cant-delete-default-warehouse": "No es pot eliminar el magatzem per defecte",
"cant-delete-last-user": "No es pot eliminar a l'últim usuari",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "No es pot carregar el controlador '%controllerName%'.",
"cant-modify-reference": "Impossible modificar la referència.",
"cant-remove-accounting-entry": "No es pot eliminar l'assentament",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/cs_CZ.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "No se puede eliminar el impuesto predeterminado",
"cant-delete-default-warehouse": "No se puede eliminar el almacén por defecto",
"cant-delete-last-user": "No se puede eliminar al último usuario",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "No se puede cargar el controlador '%controllerName%'.",
"cant-modify-reference": "Imposible modificar la referencia.",
"cant-remove-accounting-entry": "No se puede eliminar el asiento",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/de_DE.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "Sie können die Standardsteuer löschen",
"cant-delete-default-warehouse": "Sie können den Standardslager löschen",
"cant-delete-last-user": "Der letzte Benutzer kann nicht gelöscht werden",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "Controller kann nicht geladen werden.",
"cant-modify-reference": "Kann keine Referenz bearbeiten.",
"cant-remove-accounting-entry": "Buchung kann nicht gelöscht werden",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/en_EN.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "Can't delete default tax",
"cant-delete-default-warehouse": "Can't delete default warehouse",
"cant-delete-last-user": "You can't delete the last user",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "Can't load controller '%controllerName%'.",
"cant-modify-reference": "Cann't edit reference.",
"cant-remove-accounting-entry": "Can't remove accounting entry",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/es_AR.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "No se puede eliminar el impuesto predeterminado",
"cant-delete-default-warehouse": "No se puede eliminar el almacén por defecto",
"cant-delete-last-user": "No se puede eliminar al último usuario",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "No se puede cargar el controlador '%controllerName%'.",
"cant-modify-reference": "Imposible modificar la referencia.",
"cant-remove-accounting-entry": "No se puede eliminar el asiento",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/es_CL.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "No se puede eliminar el impuesto predeterminado",
"cant-delete-default-warehouse": "No se puede eliminar el almacén por defecto",
"cant-delete-last-user": "No se puede eliminar al último usuario",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "No se puede cargar el controlador '%controllerName%'.",
"cant-modify-reference": "Imposible modificar la referencia.",
"cant-remove-accounting-entry": "No se puede eliminar el asiento",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/es_CO.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "No se puede eliminar el impuesto predeterminado",
"cant-delete-default-warehouse": "No se puede eliminar el almacén por defecto",
"cant-delete-last-user": "No se puede eliminar al último usuario",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "No se puede cargar el controlador '%controllerName%'.",
"cant-modify-reference": "Imposible modificar la referencia.",
"cant-remove-accounting-entry": "No se puede eliminar el asiento",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/es_CR.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "No se puede eliminar el impuesto predeterminado",
"cant-delete-default-warehouse": "No se puede eliminar el almacén por defecto",
"cant-delete-last-user": "No se puede eliminar al último usuario",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "No se puede cargar el controlador '%controllerName%'.",
"cant-modify-reference": "Imposible modificar la referencia.",
"cant-remove-accounting-entry": "No se puede eliminar el asiento",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/es_DO.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "No se puede eliminar el impuesto predeterminado",
"cant-delete-default-warehouse": "No se puede eliminar el almacén por defecto",
"cant-delete-last-user": "No se puede eliminar al último usuario",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "No se puede cargar el controlador '%controllerName%'.",
"cant-modify-reference": "Imposible modificar la referencia.",
"cant-remove-accounting-entry": "No se puede eliminar el asiento",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/es_EC.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "No se puede eliminar el impuesto predeterminado",
"cant-delete-default-warehouse": "No se puede eliminar el almacén por defecto",
"cant-delete-last-user": "No se puede eliminar al último usuario",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "No se puede cargar el controlador '%controllerName%'.",
"cant-modify-reference": "Imposible modificar la referencia.",
"cant-remove-accounting-entry": "No se puede eliminar el asiento",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/es_ES.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "No se puede eliminar el impuesto predeterminado",
"cant-delete-default-warehouse": "No se puede eliminar el almacén por defecto",
"cant-delete-last-user": "No se puede eliminar al último usuario",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "No se puede cargar el controlador '%controllerName%'.",
"cant-modify-reference": "Imposible modificar la referencia.",
"cant-remove-accounting-entry": "No se puede eliminar el asiento",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/es_GT.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "No se puede eliminar el impuesto predeterminado",
"cant-delete-default-warehouse": "No se puede eliminar el almacén por defecto",
"cant-delete-last-user": "No se puede eliminar al último usuario",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "No se puede cargar el controlador '%controllerName%'.",
"cant-modify-reference": "Imposible modificar la referencia.",
"cant-remove-accounting-entry": "No se puede eliminar el asiento",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/es_MX.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "No se puede eliminar el impuesto predeterminado",
"cant-delete-default-warehouse": "No se puede eliminar el almacén por defecto",
"cant-delete-last-user": "No se puede eliminar al último usuario",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "No se puede cargar el controlador '%controllerName%'.",
"cant-modify-reference": "Imposible modificar la referencia.",
"cant-remove-accounting-entry": "No se puede eliminar el asiento",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/es_PA.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "No se puede eliminar el impuesto predeterminado",
"cant-delete-default-warehouse": "No se puede eliminar el almacén por defecto",
"cant-delete-last-user": "No se puede eliminar al último usuario",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "No se puede cargar el controlador '%controllerName%'.",
"cant-modify-reference": "Imposible modificar la referencia.",
"cant-remove-accounting-entry": "No se puede eliminar el asiento",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/es_PE.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "No se puede eliminar el impuesto predeterminado",
"cant-delete-default-warehouse": "No se puede eliminar el almacén por defecto",
"cant-delete-last-user": "No se puede eliminar al último usuario",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "No se puede cargar el controlador '%controllerName%'.",
"cant-modify-reference": "No puede modificar la referencia",
"cant-remove-accounting-entry": "No se puede eliminar el asiento",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/es_UY.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "No se puede eliminar el impuesto predeterminado",
"cant-delete-default-warehouse": "No se puede eliminar el almacén por defecto",
"cant-delete-last-user": "No se puede eliminar al último usuario",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "No se puede cargar el controlador '%controllerName%'.",
"cant-modify-reference": "Imposible modificar la referencia.",
"cant-remove-accounting-entry": "No se puede eliminar el asiento",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/eu_ES.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "Ezin da zerga lehenetsia ezabatu",
"cant-delete-default-warehouse": "Ezin da biltegi lehenetsia ezabatu",
"cant-delete-last-user": "Ezin da azkenengo erabiltzailea ezabatu",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "Ezin da '%controllerName%' kontroladorea kargatu.",
"cant-modify-reference": "Ezin da erreferentzia aldatu.",
"cant-remove-accounting-entry": "Ezin da idazpena ezabatu",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/fr_FR.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "L'imposition par défaut ne peut être supprimée",
"cant-delete-default-warehouse": "L'entrepôt par défaut ne peut être supprimé",
"cant-delete-last-user": "Le dernier utilisateur ne peut être supprimé",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "Impossible de charger le contrôleur '%controllerName%'.",
"cant-modify-reference": "Impossible d'éditer la référence.",
"cant-remove-accounting-entry": "L'entrée comptable ne peut être supprimée",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/gl_ES.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "Non se pode eliminar o imposto predeterminado",
"cant-delete-default-warehouse": "Non se pode eliminar o almacén por defecto",
"cant-delete-last-user": "Non se pode eliminar ao último usuario",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "Non se pode cargar o controlador '%controllerName%'.",
"cant-modify-reference": "Non se pode editar a referencia.",
"cant-remove-accounting-entry": "Non se pode eliminar o asento",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/it_IT.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "Impossibile eliminare la tassa predefinita",
"cant-delete-default-warehouse": "cant-delete-default-warehouse",
"cant-delete-last-user": "Impossibile eliminare l'ultimo utente",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "Impossibile caricare il controller.",
"cant-modify-reference": "Non modificare il riferimento.",
"cant-remove-accounting-entry": "cant-remove-accounting-entry",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/pl_PL.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "No se puede eliminar el impuesto predeterminado",
"cant-delete-default-warehouse": "No se puede eliminar el almacén por defecto",
"cant-delete-last-user": "No se puede eliminar al último usuario",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "No se puede cargar el controlador '%controllerName%'.",
"cant-modify-reference": "Imposible modificar la referencia.",
"cant-remove-accounting-entry": "No se puede eliminar el asiento",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/pt_BR.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "cant-delete-default-tax",
"cant-delete-default-warehouse": "cant-delete-default-warehouse",
"cant-delete-last-user": "cant-delete-last-user",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "Não é possível carregar o controlador.",
"cant-modify-reference": "Não pode editar a referência.",
"cant-remove-accounting-entry": "cant-remove-accounting-entry",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/pt_PT.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "cant-delete-default-tax",
"cant-delete-default-warehouse": "cant-delete-default-warehouse",
"cant-delete-last-user": "cant-delete-last-user",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "Não é possível carregar o controlador.",
"cant-modify-reference": "Não pode editar a referência.",
"cant-remove-accounting-entry": "cant-remove-accounting-entry",
Expand Down
1 change: 1 addition & 0 deletions Core/Translation/va_ES.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@
"cant-delete-default-tax": "No es pot borrar l'impost predeterminat",
"cant-delete-default-warehouse": "No es pot borrar l'almagasén predeterminant",
"cant-delete-last-user": "No es pot eliminar a l'últim usuari",
"cant-delete-variant-with-documents": "No se puede eliminar el producto o variante %reference% porque ya ha sido comprado o vendido. Pero puede bloquearlo si lo desea.",
"cant-load-controller": "No es pot carregar el controlador '%controllerName%'.",
"cant-modify-reference": "No es pot modificar la referència.",
"cant-remove-accounting-entry": "No es pot eliminar l'assentament",
Expand Down
Loading

0 comments on commit f88753c

Please sign in to comment.