Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tarea #1875 - Implementar funcion para poder copiar un producto. #1400

Merged
merged 6 commits into from Jul 22, 2023
Merged

Tarea #1875 - Implementar funcion para poder copiar un producto. #1400

merged 6 commits into from Jul 22, 2023

Conversation

elguitarraverde
Copy link
Contributor

@elguitarraverde elguitarraverde commented Jul 13, 2023

Descripción

  • He creado un botón en la vista Editar Producto para poder realizar una copia del producto.
  • Este botón no se muestra en la vista de creación de un Producto.
  • Se ha incluido una acción en el controlador que copia el modelo excepto algunos campos que son propios de cada producto, como por ejemplo, las ids, las referencias, el stock, campos de fecha.
  • También se copian las variantes del producto quedando así copiado el producto con todas sus variantes y se generan referencias nuevas tanto para el producto como para las variantes y así evitamos errores de referencias duplicadas.

¿Cómo has probado los cambios?

Toda modificación debe haber sido mínimamente probada. Marca o describe las pruebas que has realizado:

  • He revisado mi código antes de enviarlo.
  • He probado que funciona correctamente en mi PC.
  • He probado que funciona correctamente con una base de datos vacía.
  • He ejecutado los tests unitarios.

@elguitarraverde
Copy link
Contributor Author

@daniel89fg échale un vistazo a esto a ver que tal lo ves.

es que no te puedo marcar como Reviewer en Github por eso te menciono en este mensaje.

Core/Controller/EditProducto.php Outdated Show resolved Hide resolved
/**
* Copy Product.
*/
protected function copyProductAction(): void
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Toda esta parte se movería al controlador CopyModel, y también se debería poner la parte visual del twig. La idea es copiar todo el producto incluidas sus variantes, solo permitiendo cambiar algunos datos generales como la descripción por ejemplo. Échale un ojo al copiar un asiento o un documento de presupuestos, es lo mismo, es aprovechar eso mismo.

Core/Controller/CopyModel.php Outdated Show resolved Hide resolved
$subject = new Proveedor();
if (false === $subject->loadFromCode($this->request->request->get('codproveedor'))) {
$this->dataBase->beginTransaction();

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No entiendo que paso con la función savePurchaseDocument() desapareció entera. ¿por qué?

Core/Controller/CopyModel.php Outdated Show resolved Hide resolved
@@ -241,7 +277,7 @@ protected function savePurchaseDocument()
$this->saveDocumentEnd($newDoc);
}

protected function saveSalesDocument()
protected function saveProduct()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

esto está mal, has cambiado el nombre a la función para copiar documentos de venta y la pusiste para copiar el producto.

@daniel89fg
Copy link
Contributor

Quizás se envío mal, por que es raro, el controlador CopyModel lo veo bastante mal....

@elguitarraverde
Copy link
Contributor Author

Sin querer borre un método y puse el código nuevo en ese método en lugar de donde correspondía. un lio, pero ya está corregido. Sigo picando codigo, ahora me falta la lógica de copiar el modelo y sus variantes. faltan también muchas cosas en la view(textos traducidos,....)

@elguitarraverde
Copy link
Contributor Author

@daniel89fg ya está implementada la lógica de copiar el producto y sus variantes.

Problemas:

  • La referencia del producto debe ser única. Inicialmente he creado un input en la vista para que se ponga la nueva referencia manualmente.
  • La referencia de las variantes deben ser únicas. Aquí empieza a complicarse la cosa porque no sé sí sería muy productivo incluir un input para cambiar las referencias de las variantes para que no se dupliquen. Inicialmente he hardcodeado que se añada el literal ' - copia' en las referencias para que no dé error pero no me parece que sea correcto.
  • Además cuando se crea un producto, se crea automáticamente una variante con la referencia del producto y esto no debe ser correcto. si el producto origen tiene 2 variantes el producto destino no debe tener mas de 2 variantes y actualmente copia las dos variante del origen y le añade una mas automáticamente.

@elguitarraverde elguitarraverde changed the title Tarea #1875 - Implementar función para poder copiar un producto. Tarea #1875 - Implementar funcion para poder copiar un producto. Jul 14, 2023
@daniel89fg
Copy link
Contributor

Quizás lo que yo haría es dejar que las referencias del nuevo producto y sus variantes, si el usuario no pone nada, que las genera de forma automática. La variante que se crea por defecto al crear el producto hay que eliminarla.

@elguitarraverde
Copy link
Contributor Author

Solo me queda configurar el botón para que solo salga en la vista editar pero no sé como hacerlo.

En la vista editar sale el botón abajo y no debería salir ahí.
imagen

En la vista para crear un producto también sale y no debería salir ahí.
imagen

return;
}

// TODO ACL
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

También me queda ver si hay que aplicar alguna restricción de permisos para que no se pueda crear según qué usuario o dejarlo sin ninguna restricción.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Por el momento no hace falta, igual que los documentos.

@daniel89fg
Copy link
Contributor

Solo me queda configurar el botón para que solo salga en la vista editar pero no sé como hacerlo.

En la vista editar sale el botón abajo y no debería salir ahí. imagen

En la vista para crear un producto también sale y no debería salir ahí. imagen

El botón aparece arriba y abajo, es un fallo del core pendiente de solucionar, no le des importancia a eso. Para hacer que no aparezca el botón cuando el producto es nuevo y aún no tiene idproducto, el botón se debe añadir en el loadData() del controlador y preguntar si $view->model->primaryColumnValue() no está vacío, entonces se añade el botón.

@elguitarraverde elguitarraverde marked this pull request as ready for review July 18, 2023 11:11
@NeoRazorX NeoRazorX merged commit 9024e4c into NeoRazorX:master Jul 22, 2023
1 check passed
@elguitarraverde elguitarraverde deleted the Tarea-#1875---Implementar-función-para-poder-copiar-un-producto branch July 22, 2023 12:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants