Como editar el módulo sale

46 views
Skip to first unread message

Pablo Andrés

unread,
Oct 19, 2018, 8:05:14 PM10/19/18
to tryton-ar
Buenas a todos estoy queriendo crear un módulo que altere al de ventas, lo que quiero que haga es bien sencillo pero no lo puedo lograr.

en el archivo sale.xml agregue lo siguiente

 <record model="ir.action.wizard" id="wizard_update_price_sale_lines">
 
<field name="name">Actualizar precios venta</field>
 
<field name="wiz_name">sale.update_price_sale_lines</field>
 
</record>
 
<record model="ir.action.keyword"
 
id="wizard_update_price_sale_lines_keyword1">
 
<field name="keyword">form_action</field>
 
<field name="model">sale.sale,-1</field>
 
<field name="action" ref="wizard_update_price_sale_lines"/>
 
</record>

y en sale.py lo siguiente

# -*- coding: utf-8 -*-
"""
    :copyright: (c) 2018 by Smola Pablo Andrés.
    :license: GPLv3, see LICENSE for more details
"""

#from trytond.model import fields, ModelSQL, ModelView
from trytond.model import fields
from trytond.pool import PoolMeta,Pool
from trytond.pyson import Eval, Not, Equal, Or, Bool
import datetime
from trytond.transaction import Transaction
from trytond.wizard import Wizard, StateTransition
import logging
logger
= logging.getLogger(__name__)
__all__
= ['Sale','UpdatePriceSaleLines']

class Sale(object):
    __metaclass__
= PoolMeta
    __name__
= 'sale.sale'
   
@classmethod
   
def update_price_sale_lines(cls, sales):
       
for sale in sales:
           
for linea in sale.lines:
                cls
.write([linea], {
                       
'unit_price': linea.product.list_price,
                       
})
class UpdatePriceSaleLines(Wizard):
   
'Update Price Sale Lines'
    __name__
= 'sale.update_price_sale_lines'
    start_state
= 'update'
    update
= StateTransition()
   
def transition_update(self):
        pool
= Pool()
       
Sale = pool.get('sale.sale')
        context
= Transaction().context
        logger
.info('HOLA')
       
if context['active_model'] == 'sale.sale':
            sales
= Sale.browse(context['active_ids'])
           
Sale.update_price_sale_lines(sales)
       
return 'end'

Mi consulta es donde puedo leer para ir aprendiendo a realizar módulos y como hago para debuggear el código utilizo logger y guardo en un archivo o hay otra manera?

Lo que quiero que haga es que me actualice el precio de un presupuesto a los precios actuales de lista de los productos. Con proteus lo pude hacer dejo conseguir el codigo es el siguiente:
#!/usr/bin/env python2
# -*- coding: <utf-8> -*-
import sys
from decimal import Decimal
from proteus import config, Model, Wizard

config
= config.set_trytond('postgresql:///tryton_42',config_file='/etc/tryton/trytond.conf')
presupuesto
= Model.get('sale.sale')
numero_de_presupuesto
=(sys.argv[1])
print("actualizando presupuesto Numero %s"%(numero_de_presupuesto))
presupuesto_viejo
,=presupuesto.find([('number','=',numero_de_presupuesto)])
flag
=0
for lineas in presupuesto_viejo.lines:
   
if lineas.product:
       
print(lineas.product.id,lineas.product.name,lineas.unit_price,lineas.product.list_price)
        lineas
.unit_price=lineas.product.list_price
   
else:
       
pass
    lineas
.save()



Desde ya muchas gracias!

Luciano Rossi

unread,
Oct 22, 2018, 10:58:30 AM10/22/18
to tryt...@googlegroups.com
Hola!

Te contesto abajo.

El 19/10/18 a las 21:05, Pablo Andrés escribió:
> Buenas a todos estoy queriendo crear un módulo que altere al de ventas,
> lo que quiero que haga es bien sencillo pero no lo puedo lograr.
>
> en el archivo /sale.xml /agregue lo siguiente
>
> |
> <recordmodel="ir.action.wizard"id="wizard_update_price_sale_lines">
> <fieldname="name">Actualizar precios venta</field>
> <fieldname="wiz_name">sale.update_price_sale_lines</field>
> </record>
> <recordmodel="ir.action.keyword"
> id="wizard_update_price_sale_lines_keyword1">
> <fieldname="keyword">form_action</field>
> <fieldname="model">sale.sale,-1</field>
> <fieldname="action"ref="wizard_update_price_sale_lines"/>
> </record>
> |
>
> y en /sale.py/ lo siguiente
> sales =Sale.browse(context['active_ids'])
> Sale.update_price_sale_lines(sales)
> return'end'
> |
>
> Mi consulta es donde puedo leer para ir aprendiendo a realizar módulos y
> como hago para debuggear el código utilizo logger y guardo en un archivo
> o hay otra manera?
>

La herramienta para hacer debugging en python es pdb. Yo generalmente
uso ipdb, que es más amigable.

https://pypi.org/project/ipdb/
https://docs.python.org/2/library/pdb.html

> Lo que quiero que haga es que me actualice el precio de un presupuesto a
> los precios actuales de lista de los productos. Con proteus lo pude
> hacer dejo conseguir el codigo es el siguiente:
> |

El módulo de contact_recompute_price hace algo parecido, pero con
contratos. También tenés el módulo de sale_recompute_price.

https://github.com/gcoop-libre/trytond-contract_recompute_price
https://bitbucket.org/nantic/trytond-sale_recompute_price

Saludos!
--
Luciano Rossi - lu...@gcoop.coop
http://gcoop.coop - Cooperativa de Software Libre
La Pampa 4395 CABA C1430BXU +54 11 5254-7755

Visitá www.tiendas.coop - www.nube.coop

Pablo Andrés

unread,
Oct 22, 2018, 8:49:05 PM10/22/18
to tryton-ar
Muchas gracias Luciano!! me fue de mucha ayuda los módulos que me pasaste; pude dejar andando mi primer funcionalidad extra, me faltaba registrar el wizard  en __init__.py también.
Pongo código por si a alguien le sirve,

sale.py
# -*- coding: utf-8 -*-
"""
    :copyright: (c) 2018 by Smola Pablo Andrés.
    :license: GPLv3, see LICENSE for more details
"""

#from trytond.model import fields, ModelSQL, ModelView
from trytond.model import fields
from trytond.pool import PoolMeta,Pool
from trytond.pyson import Eval, Not, Equal, Or, Bool
import datetime
from trytond.transaction import Transaction
from trytond.wizard import Wizard, StateTransition
import logging
logger
= logging.getLogger(__name__)
__all__
= ['Sale','UpdatePriceSaleLines']

class Sale(object):
    __metaclass__
= PoolMeta
    __name__
= 'sale.sale'
   
@classmethod
   
def update_price_sale_lines(cls, sales):
        pool = Pool()
        SaleLine = pool.get('sale.line')
        to_write=[]

        for sale in sales:
            for linea in sale.lines:
                if linea.type != 'line':
                    continue
                if linea.product.id==1064:
                    continue
                value = {
                        'unit_price':  linea.product.list_price
                       }
                to_write.extend(([linea], value))
        if to_write:
            SaleLine.write(*to_write)

class UpdatePriceSaleLines(Wizard):
    'Update Price Sale Lines'
    __name__ = 'sale.update_price_sale_lines'
    start_state = 'update'
    update = StateTransition()
    def transition_update(self):
        pool = Pool()
        Sale = pool.get('sale.sale')
        if len(Transaction().context['active_ids']) == 1:
            sales = Sale.browse(Transaction().context.get('active_ids'))
            Sale.update_price_sale_lines(sales)
        return 'end'

francisco nataren

unread,
Oct 22, 2018, 9:32:33 PM10/22/18
to tryt...@googlegroups.com
Hola que tal buenaw noches yo quiero empezar a hacer uno modulos.

Necesito de su ayuda. 

Como empresa editar un modulo y como agregar mas modulos

Un ejemplo encel módulo de venta quiero asignar un campo mas donde le asigne um vendedor de esa venta realizada

Se lo agradezco

--
Has recibido este mensaje porque estás suscrito al grupo "tryton-ar" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a tryton-ar+...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Luciano Rossi

unread,
Oct 23, 2018, 9:01:03 AM10/23/18
to tryt...@googlegroups.com
El 22/10/18 a las 22:37, francisco nataren escribió:
> Hola que tal buenaw noches yo quiero empezar a hacer uno modulos.
>

Hola, buenos días! :)

> Necesito de su ayuda.
>
> Como empresa editar un modulo y como agregar mas modulos

Para aprender a crear módulos, te recomiendo el repo de pokoli que
contiene un módulo de ejemplo con muchas funcionalidades.

https://bitbucket.org/pokoli/tryton_workshop

>
> Un ejemplo encel módulo de venta quiero asignar un campo mas donde le
> asigne um vendedor de esa venta realizada

Ese módulo ya existe y se llama commission:

http://docs.tryton.org/en/latest/commission.html#index-commission
http://docs.tryton.org/projects/trytond-commission/en/latest/

Saludos,

francisco nataren

unread,
Oct 23, 2018, 4:14:12 PM10/23/18
to tryt...@googlegroups.com
Le agradezco sus apoyos voy a empezar a checar el modulo, nuevamente se lo agradezco, saludos a todos


--
Has recibido este mensaje porque estás suscrito al grupo "tryton-ar" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a tryton-ar+...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages