[Stoq-devel] [Bug 2304] - Implementar diálogo para emissão de retenção de produtos
bugzilla-daemon at async.com.br
bugzilla-daemon at async.com.br
Fri Jul 28 17:03:15 BRT 2006
http://bugs.async.com.br/show_bug.cgi?id=2304
Henrique Romano <henrique at async.com.br> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #3365| |review-
Flag| |
--- Comment #17 from Henrique Romano <henrique at async.com.br> 2006-07-28 17:03 BRT ---
(From update of attachment 3365)
>Index: stoqlib/gui/dialogs/productretention.py
>===================================================================
>+class ProductRetentionDialog(BaseEditor):
>+ def __init__(self, conn, model, storable, sellable):
>+ self.sellable = sellable
>+ self.storable = storable
eu não gosto desses "storable" e "sellable" -- por que o callsite tem que
fornecer eles? por que você tem que guardar como atributos da instância?
>+ BaseEditor.__init__(self, conn, model)
>+ self.warehouse = sysparam(self.conn).CURRENT_WAREHOUSE
guardar warehouse também não faz sentido.
>+ self.max = self.storable.get_full_balance(self.warehouse)
>+ self.quantity.set_range(1, self.max)
pode remover self.max também (vide comment abaixo)
>+
>+ def setup_proxies(self):
>+ self.add_proxy(self.model, self.proxy_widgets)
>+ self.add_proxy(self.sellable, self.product_widgets)
>+ self.add_proxy(self.storable, self.storable_widgets)
o produto recebido como model é sempre suposto à possuir as facetas ISellable e
IStorable? se sim, então:
self.add_proxy(self.model, ProductRetentionDialog.proxy_widgets)
self.add_proxy(ISellable(self.model, connection=self.conn),
ProductRetentionDialog.sellable_widgets)
self.add_proxy(IStorable(self.model, connection=self.conn),
...)
>+ def on_confirm(self):
>+ if self.max == 0:
>+ return
Você não precisa disso, se o produto não tem estoque, esse diálogo nem deveria
ser executado.
>+ else:
>+ self.storable.decrease_stock(self.quantity.get_value_as_int(),
>+ self.warehouse)
>+ self.conn.commit()
Quem cuida do commit é o callsite, não pode ser aqui.
>Index: stoqlib/domain/product.py
>===================================================================
>--- stoqlib/domain/product.py (revisão 3986)
>+++ stoqlib/domain/product.py (cópia de trabalho)
>@@ -91,10 +91,18 @@
> class Product(Domain):
> """Class responsible to store basic products informations."""
>
> suppliers = MultipleJoin('ProductSupplierInfo')
>+ retention = MultipleJoin('ProductRetentionHistory')
Acho que essa referência deveria estar no adapter para IStorable
>@@ -448,6 +456,10 @@
> sellable = ISellable(adapted, connection=conn)
> return u"%s %s" % (full_balance, sellable.get_unit_description())
>
>+ def get_full_balance_by_current_branch(self):
>+ current = sysparam(self.get_connection()).CURRENT_WAREHOUSE
>+ return self.get_full_balance(current)
Teria como colocar em uma linha e evitar a variavel temporaria?
More information about the Stoq-devel
mailing list