~romaia/stoq/quality

« back to all changes in this revision

Viewing changes to stoqlib/gui/search/productionsearch.py

  • Committer: Ronaldo Maia
  • Date: 2011-10-26 15:20:52 UTC
  • Revision ID: romaia@async.com.br-20111026152052-i9f0sgl9h6mhe2qa
Move add produced/lost funcionality from ProductionItemSearch to ProductionDetailsDialog. Add funcionality to allocate more material for the production and return remainng quantity after the production is closed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
 
26
26
 
27
27
from decimal import Decimal
28
 
import datetime
29
28
 
30
 
import gtk
31
29
from kiwi.enums import SearchFilterPosition
32
30
from kiwi.ui.objectlist import SearchColumn
33
31
from kiwi.ui.search import ComboSearchFilter
34
32
 
35
 
from stoqlib.database.runtime import new_transaction, finish_transaction
36
33
from stoqlib.domain.person import PersonAdaptToBranch
37
34
from stoqlib.domain.product import ProductComponent
38
 
from stoqlib.domain.production import (ProductionOrder,
39
 
                                       ProducedQualityItemsView)
 
35
from stoqlib.domain.production import ProductionOrder
40
36
from stoqlib.domain.views import ProductComponentView, ProductionItemView
41
 
from stoqlib.gui.base.dialogs import run_dialog
42
37
from stoqlib.gui.base.search import SearchDialog
43
38
from stoqlib.gui.editors.producteditor import ProductionProductEditor
44
 
from stoqlib.gui.editors.productioneditor import (ProductionItemProducedEditor,
45
 
                                                  ProductionItemLostEditor,
46
 
                                                  ProducedItemQualityTestsDialog)
47
39
from stoqlib.gui.printing import print_report
48
40
from stoqlib.gui.search.productsearch import (ProductSearch,
49
41
                                              ProductSearchQuantity)
78
70
    table = search_table = ProductionItemView
79
71
    size = (750, 450)
80
72
 
81
 
    def _run_editor(self, editor_class):
82
 
        trans = new_transaction()
83
 
        production_item = self.results.get_selected().production_item
84
 
        model = trans.get(production_item)
85
 
        retval = run_dialog(editor_class, self, self.conn, model)
86
 
        if finish_transaction(trans, retval):
87
 
            self.search.refresh()
88
 
        trans.close()
89
 
 
90
73
    #
91
74
    # SearchDialog
92
75
    #
93
76
 
94
77
    def setup_widgets(self):
95
 
        self._produced_button = self.add_button(_(u'_Produced...'),
96
 
                                                stock=gtk.STOCK_ADD)
97
 
        self._produced_button.connect('clicked',
98
 
                                      self._on_produced_button__clicked)
99
 
        self._produced_button.set_sensitive(False)
100
 
        self._produced_button.show()
101
 
 
102
 
        # FIXME: Remove this options (they will be on the details dialog
103
 
        self._lost_button = self.add_button(_(u'_Lost...'),
104
 
                                            stock=gtk.STOCK_REMOVE)
105
 
        self._lost_button.connect('clicked', self._on_lost_button__clicked)
106
 
        self._lost_button.set_sensitive(False)
107
 
        self._lost_button.show()
108
 
 
109
78
        self._print_button = self.add_button('print', stock='gtk-print')
110
79
        self._print_button.connect('clicked', self._on_print_button__clicked)
111
80
        self._print_button.set_sensitive(False)
139
108
                              visible=False),]
140
109
 
141
110
    def update_widgets(self):
142
 
        view = self.results.get_selected()
143
 
        has_selected = view is not None
144
 
        producing_status = ProductionOrder.ORDER_PRODUCING
145
 
        if has_selected and view.order_status == producing_status:
146
 
            can_produce = view.quantity - view.lost > view.produced
147
 
            # the same situation
148
 
            can_lose = can_produce
149
 
        else:
150
 
            can_produce = False
151
 
            can_lose = False
152
 
        self._produced_button.set_sensitive(can_produce)
153
 
        self._lost_button.set_sensitive(can_lose)
154
111
        self._print_button.set_sensitive(len(self.results) > 0)
155
112
 
156
113
    #
157
114
    # Callbacks
158
115
    #
159
116
 
160
 
    # FIXME: Remove this options
161
 
    def _on_produced_button__clicked(self, widget):
162
 
        self._run_editor(ProductionItemProducedEditor)
163
 
 
164
 
    def _on_lost_button__clicked(self, widget):
165
 
        self._run_editor(ProductionItemLostEditor)
166
 
 
167
117
    def _on_print_button__clicked(self, widget):
168
118
        print_report(ProductionItemReport, self.results, list(self.results),
169
119
                     filters=self.search.get_search_filters(),)