This repository has been archived by the owner on Jul 22, 2020. It is now read-only.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
@unRob
Fíjate que necesito leer la información del nodo de nómina cuando esté presente, pero esto me plantea varios problemas ya que si agrego una sección de nómina directamente en el comprobante, se modificaría el resultado de
#to_h
para todos los comprobantes, incluso los que no tienen el nodo nómina.Una de las alternativas en las que pensé es una especialización de la clase
Comprobante
, y tener una claseComprobanteNomina
que herede deComprobante
e incluya los datos de la nómina únicamente en esa clase. Desafortunadamente, la presencia de las variables de clase@@datosCadena
y@@data
impiden que la herencia sea una opción viable porque afectan a ambas clases y cualquier modificación que les haga a esas variables enComprobanteNomina
también afecta aComprobante
y me deja en las mismas.Para sortear ese problema y de paso librarnos de esas variables de clase que suelen ser un dolor de cabeza, empecé este refactor que en lugar de utilizar variables de clase, utiliza métodos (de instancia) para definir los mismos valores, con la ventaja de que los métodos sí pueden ser sobreescritos sin problemas en una subclase, e incluso heredar los atributos de la superclase.
Tendríamos, por ejemplo:
Para conseguir que se siguieran teniendo los accessors a las variables, utilicé el trucazo de crear un módulo anónimo e incluirlo a la clase
Comprobante
al momento de instanciar un objeto.En el camino, aproveché para agregar algunas pruebas y corregir algunos detalles menores.
¿Cómo ves el PR? Si lo apruebas, se puede mezclar y ya sobre esto empiezo a agregar la funcionalidad de nómina.