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

Plan y listas de materiales - Múltiples cuestiones #805

Closed
anajuaristi opened this issue May 11, 2015 · 36 comments
Closed

Plan y listas de materiales - Múltiples cuestiones #805

anajuaristi opened this issue May 11, 2015 · 36 comments
Assignees

Comments

@anajuaristi
Copy link
Contributor

Buenas...
En el módulo de plan, si en la lista de materiales existe alguna línea donde no se haya especificado product_id y sí template_id, da un traceback
Creo que sería necesario hacer un módulo enlace o algo.
Si la lista de materiales corresponde a un producto genérico, NO SE PUEDE hacer un plan, puesto que no se conoce el producto específico con el que hay que fabricar.
La solución no es simple por lo que optaría a capturar el error, mostrando al usuario que el producto plantilla "tal o cual" presente en la lista de materiales de "tal o cual producto" no se puede planificar y continuar el proceso... o bien, guardar la información en alguna variable y al final del todo, mostrar la lista en un texto diciendo qué productos de qué listas no han podido ser planificados.
De esta forma lo hacemos compatible con el configurador.
@alfredoavanzosc @pedrobaeza

Traceback (most recent call last):
  File "/opt/odoo/server-v8/openerp/http.py", line 530, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/opt/odoo/server-v8/openerp/http.py", line 567, in dispatch
    result = self._call_function(**self.params)
  File "/opt/odoo/server-v8/openerp/http.py", line 303, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/opt/odoo/server-v8/openerp/service/model.py", line 113, in wrapper
    return f(dbname, *args, **kwargs)
  File "/opt/odoo/server-v8/openerp/http.py", line 300, in checked_call
    return self.endpoint(*a, **kw)
  File "/opt/odoo/server-v8/openerp/http.py", line 796, in __call__
    return self.method(*args, **kw)
  File "/opt/odoo/server-v8/openerp/http.py", line 396, in response_wrap
    response = f(*args, **kw)
  File "/opt/odoo/server-v8/addons/web/controllers/main.py", line 940, in call_button
    action = self._call_kw(model, method, args, {})
  File "/opt/odoo/server-v8/addons/web/controllers/main.py", line 928, in _call_kw
    return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs)
  File "/opt/odoo/server-v8/openerp/api.py", line 241, in wrapper
    return old_api(self, *args, **kwargs)
  File "/opt/odoo/server-v8/openerp/api.py", line 363, in old_api
    result = method(recs, *args, **kwargs)
  File "/opt/odoo/temp_addons/mrp_procurements_plan/models/procurement.py", line 96, in button_generate_procurements
    qty, 1)
  File "/opt/odoo/temp_addons/mrp_procurements_plan/models/procurement.py", line 104, in _calculate_bom_line_details
    plan, level, line.product_id, line.product_qty * qty)
  File "/opt/odoo/temp_addons/mrp_procurements_plan/models/procurement.py", line 127, in _create_procurement_from_bom_line
    vals.update(procurement_obj.onchange_product_id(product.id)['value'])
KeyError: 'value'
@pedrobaeza
Copy link
Member

Supongo que lo que querrán los usuarios de este sistema es "que se planifique hasta donde se pueda", pero entonces habrá que:

@alfredoavanzosc
Copy link
Contributor

Pedro... usando el módulo "web_ir_actions_act_window_message", es como si me cortara el proceso, me muestra el error, pero no me muestra los abastecimientos generados.

@alfredoavanzosc
Copy link
Contributor

Sin el módulo "web_ir_actions_act_window_message", si que veo los abastecmientos generados, pero no veo el WARNING. Lógicamente no veo el warning, porque no vengo de un onchage, sino de un botón.
NO SE COMO HACER ESTO, mostrar los abastecimientos generados, y el mensaje.

@pedrobaeza
Copy link
Member

Claro, eso sí, porque ése se supone que es el "último" paso. Si quieres después mostrar algo, tendrás que poner un TransientModel que te muestre el log, y al pulsar en un botón, ya te abra lo otro.

@alfredoavanzosc
Copy link
Contributor

¿Último paso?, ya esta puesto como el último paso. ¿Mostrar después algo?, si ya tengo grabados los abastecimientos. ¿Poner un TrasientModel que me muestre el log, y luego pulsar en un botón, y que abra lo otro?, ¿entonces para que uso el módulo que me dices?, sin usar ese módulo, puedo yo directamente crearme un wizard, donde muestro los errores, y que le den aceptar.

@pedrobaeza
Copy link
Member

Claro, eso es lo que te estoy diciendo que hagas. Lo otro es porque creía que no tenías que mostrar después nada.

@anajuaristi
Copy link
Contributor Author

¿Y porqué un wizard? porque no vais concatenando en un campo texto los errores y que los vean ahí y ya está?
Que pasa si cierran el wizard? ya no verían más los errores y no puedo volver a ejecutar no?
No es mejor en un texto o incluso en un objeto nuevo?
My2cents

@pedrobaeza
Copy link
Member

Otra estrategia es poner esos errores en el chatter como comentarios.

@anajuaristi
Copy link
Contributor Author

Me gusta más.
Lo que no tenemos es chatter en el plan. Habría que meterlo.

2015-05-11 16:17 GMT+02:00 Pedro M. Baeza notifications@github.com:

Otra estrategia es poner esos errores en el chatter como comentarios.


Reply to this email directly or view it on GitHub
#805 (comment)
.

CEO Avanzosc, S.L http://www.avanzosc.es : Office phone / Tfono oficina:
(+34) 943 02 69 02
Ana Juaristi Olalde http://www.anajuaristi.com/: Personal phone: 677 93
42 59. User/usuario skype: Avanzosc
www.openerpsite.com

_El contenido de esta comunicación y de toda su documentación anexa es
confidencial y se dirige exclusivamente a su destinatario. El uso no
autorizado de esta información está prohibido por la legislación vigente.
Si usted no es el destinatario le rogamos nos lo indique, no comunique su
contenido a terceros y proceda a su destrucción. Disculpe las molestias que
le haya ocasionado la recepción indebida de este e-mail. Sus datos figuran
en un fichero cuyo titular es Avanzosc, S.L., a quien usted puede dirigirse
para ejercer sus derechos de acceso, rectificación, cancelación y oposición
en Klara Donea 13, 20720, Azkoitia (Gipuzkoa), Tef. 943 02 69 02 -
_administracion@avanzosc.
soporte@avanzosc.eses

_Komunikazio honen edukia eta dokumentazio erantsia konfidentziala da eta
hartzaileak bakarrik jaso beharko luke. Indarrean dagoen legeriak debekatu
egiten du bertan eskainitako informazioa baimenik gabe erabiltzea.
Komunikazioa zuri iritsi bazaizu, baina zu ez bazara hartzailea, mesedez,
guri jakinarazi, eta jasotako informazioa ez inori jakinarazi eta suntsitu.
Barkatu okerreko email hau jasotzeak eragindako eragozpenak. Zure datuak
Avanzosc, S.L. enpresaren fitxategietan sartuta daude. Zure datuak atzitzea
eska dezakezu, bai eta, datuak zuzentzea, ezereztea eta tratamenduari aurka
egitea ere. Horretarako, enpresara jo dezakezu, helbide honetan: _Klara
Donea 13
* 20720, Azkoitia (Gipuzkoa), telefonoa: 943 02 69 02 - *
administracion@avanzosc. soporte@avanzosc.eses _This message and all
documents attached to it are confidential and intended only for the person
or entity to which it is addressed. Any use of this information by
unauthorised persons is prohibited under current legislation. If you
received this message by error, please advise us, destroy it and refrain
from communicating its contents to third parties. We apologise for any
inconvenience receiving this email improperly may cause to you. Your
personal data are included in a file owned by Avanzosc, S.L. If you want to
exercise your rights of access, correction, erasure and objection you can
contact the Controller at _Klara Donea 13* 20720, Azkoitia (Gipuzkoa), T:
943 02 69 02 – administracion@avanzosc. soporte@avanzosc.eses*

@alfredoavanzosc
Copy link
Contributor

Ana... decirme como queréis, yo esto lo tengo que terminar si o si. Yo tengo que preparar las sesiones de los cursos, y me está llevando mucho tiempo el preparar solo una sesión.

@anajuaristi
Copy link
Contributor Author

Pues así va...
Mete un chatter al plan y vas escribiendo ahí los errores.
Quitamos el transient model y líos varios. Aparte de que queda todo ahí reflejado y si a futuro se nos ocurren otros tipos de error podemos tirar también

@alfredoavanzosc
Copy link
Contributor

Arreglado el BUG tál y como se ha solicitado. Última subida en PR #799.
Respecto al tercer punto comentado por Pedro: "Incorporar mecanismo para relanzar esa parte (@alfredoavanzosc, ¿eso se puede tal como está ahora mismo el módulo?)". Habría que pensarlo para realizar esta parte, de momento no hace nada.

@anajuaristi
Copy link
Contributor Author

Sería complicado intentar reejecutar solo los que han fallado, pero relanzarlo entero sería tan sencillo como esto:

Actualmente hacemos --> Navegar a los abastecimientos desde el shorcut, borrar todos, volver al plan y relanzar.
Quizás se podría incluir un "metaboton" junto con el resto que haga justamente esto: Borrar todos los abastecimientos asociados al plan (los que se puedan borrar según workflow de abastecimiento) y pulsar el botón "generar" otra vez.

@pedrobaeza ¿Metemos el meta-botón? o simplemente lo dejamos así?

@alfredoavanzosc
Copy link
Contributor

Borrar según "workflow" no se puede borrar, como mucho "cancelar".

@anajuaristi
Copy link
Contributor Author

Pues eso... primero cancelar los que puedan cancelarse y luego borrar.
El botón de cancelar ya lo tenemos en el plan

@alfredoavanzosc
Copy link
Contributor

OK. Esperando el "ok" de Pedro para realizar esto.

@anajuaristi
Copy link
Contributor Author

Buenas @alfredoavanzosc

Acabamos de tener Pedro y yo una reunión donde hemos pensado extender bastante el módulo de plan (no asustarse porfa)

Los cambios que queremos hacer:

  1. Boton "importar" : Permitirá importar cualquier abastecimiento que cumpla las siguientes condiciones:
    .- NIVEL = 0 (pondremos como valor por defecto el cero al crearse los abastecimiento, o sea todos se crean con nivel cero, menos aquellos que crea la explosión del propio plan, que podrán llevar nivel 1, 2, 3... etc en función de la profundidad de la lista de materiales)
    .- no está metido en ningún otro plan (plan_id vacío)
    .- la ubicación del abastecimiento es "interna" no virtual.
    QUITA el warning de que si hay un producto asignado, no se pueden importar abastecimientos. No haría falta ya.
  2. Vamos a permitir que un plan haga referencia a más de un producto, de hecho, la importación de los abastecimientos ya nos va a permitir meter tantos productos como se vean necesarios.
    Para ello, el botón "generar abastecimientos" se ejecutará para cada uno de los abastecimientos importados con nivel cero. Esto implica que los 3 campos en cabecera ya NO harán falta. Habría que quitarlos.
  3. Incluiremos un nuevo campo "parent_procurement_id" en el abastecimiento, de tal forma que cuando hagas la explosión, los abastecimientos de un nivel quedan asociados a su padre del que provienen.
    Así los de nivel1, tienen como padre al de nivel cero y los de nivel2 a los de nivel1. De esta forma estamos creando un tipo de estructura de árbol con los abastecimientos.

De momento, haremos hasta aquí y validamos. Luego vienen más cosas chulas que se nos han ocurrido sobre la marcha que escribiré en un issue aparte para ir paso a paso.

@pedrobaeza valida enfoque porfa.

@alfredoavanzosc
Copy link
Contributor

Vosotros diréis donde se realiza toda esta programación. El módulo "mrp_procurements_plan", tiene un móntón de botones en la cabecera. Así que decirme por favor donde hago esto, en "mrp_procurements_plan", o en otro módulo.

@pedrobaeza
Copy link
Member

Sí, seria en ese módulo. Enfoque correcto.

@alfredoavanzosc
Copy link
Contributor

Contesto a los puntos que pide Ana.
Punto 1 --> Haré un botón nuevo llamado "Importar Abastecimientos Internos". Si modifico el botón "Importar abastecimientos" que existe en la actualidad, quitaríamos funcionalidad que pusimos en su día, es decir el poder importar cualquier tipo de abastecimiento y tratarlo desde ahi.
Punto 2 --> Se pide que ahora el botón de "Generar abastecimientos " ejecute solo aquellos de nivel 0, y que se quiten los 3 campos de cabecera. Como antes el botón "Generar abastecimentos" generaba los abastecimientos para la LdM del producto definido en la cabecera, entiendo que cuando se refiere a quitar los 3 campos de la cabecera, se refiere al producto final, lista de materiales, y cantidad a producir. No entiendo nada, ¿se va a quitar el generar abastecimientos para la LdM?.
Putn 3 --> Se me habla otra vez de la "explosión de la LdM", no entiendo punto número 2. ¿A parte de la "explosión de la LdM, también tengo que tratar los de nivel 0?. ¿Si ejecuto este de abastecimiento de nivel cero, de tipo interno, que es lo que tiene que generar, solo lo tengo que ejecutar?

@alfredoavanzosc
Copy link
Contributor

Pedro... antes de empezar yo con todo esto, valida el código que subí ayer, así eso que me quito de encima, porque si no se juntará lo hecho, con lo nuevo.

@pedrobaeza
Copy link
Member

Alfredo, en el punto 1 no tienes que cambiar nada. El botón vale tal cual. Tienes que poder importar lo que quieras. La clave está en que tú harás despliegue si el método es fabricar y tiene LdM. Si no, no harás ningún despliegue.

@pedrobaeza
Copy link
Member

Sobre lo de validar no tiene sentido, porque vas a modificar gran parte de ese código, así que considéralo como bueno con las cosas que te dije ya, y sobre lo que hagas ahora, ya te lo valido en su estado final.

@pedrobaeza
Copy link
Member

Punto 2. "Generar abastecimientos" sigue funcionando exactamente igual. Lo que cambia es que ahora es para cualquier de las líneas de nivel 0 que cumpla lo que te he dicho antes, no sobre el campo que existía en cabecera.

@pedrobaeza
Copy link
Member

¿Entendido ahora?

@alfredoavanzosc
Copy link
Contributor

Si que se me piden un cambio en punto número 1, porque ahora se restringe a que los abastecimientos tienen que ser te tipo "interno", cuando antes se podía importar cualquier tipo de abastecimiento, para poder tratarlo. Igual habría que separar en 2 opciones de menú, una para plan de abastecimientos, y otra para plan de abastecimientos para MRP.

@pedrobaeza
Copy link
Member

Vale, pues esa parte no me he dado cuenta. Quita esa restricción. Da igual. Lo que te digo en el punto 2 es lo que limita la "explosión de materiales"

@anajuaristi
Copy link
Contributor Author

No. No existen abastecimientos de tipo interno.
Lo que se pide es abastecimientos cuya ubicacion sea de tipo interno.
Efectivamente no hay que añadir ningun boton. Basta con el que hay. Es cambiarle las condiciones de importacion

@pedrobaeza
Copy link
Member

Por qué limitar a internos, Ana? Déjalo que sea de lo que quiera.

@alfredoavanzosc
Copy link
Contributor

Bueno... perdón, me he equivocado, de tipo interno no, con ubicación interna. Hago un menú para el módulo "procurement_plan" llamado plan de abastecimientos, donde dejaría el "Importar abastecimientos de siempre", y creo otra opción de menú "Plan de abastecimientos MRP", donde el botón "importar abastecimientos" tenga la restricción de ubicación interna?.
¿Que os parece?

@alfredoavanzosc
Copy link
Contributor

Ahhh. ahora me estoy dando cuenta, que si los separamos por 2 opciónes de menú, igual habría que crear otro objeto nuevo "mrp.procurement.plan", para el plan de abastecimientos de MRP.

@pedrobaeza
Copy link
Member

No, Alfredo, no los separes. Es el mismo menú y el mismo botón. No te hagas lío. Vuelve a leer las especificaciones y los comentarios anteriores.

@alfredoavanzosc
Copy link
Contributor

Pedro... me encuentro entre 2 aguas, tu me dices de no poner restricción, y Ana que sí. Así que haré un botón para importar abastecimientos con ubicación interna. Gracias.

@pedrobaeza
Copy link
Member

Para poner la restricción siempre se está tiempo. Le he pedido aclaración a Ana de por qué esa restricción, pero no hagas un botón alegremente porque sí. Déjalo como está. Si el botón no tienes que tocarlo ahora mismo.

@pedrobaeza pedrobaeza changed the title Plan, listas de materiales con plantilla sin producto da traceback Plan y listas de materiales - Múltiples cuestiones May 12, 2015
@alfredoavanzosc
Copy link
Contributor

Realizado en PR #799

@anajuaristi
Copy link
Contributor Author

El módulo de plan está acabado y validado
Cierro issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants