~romaia/stoqlib/consig

« back to all changes in this revision

Viewing changes to stoqlib/gui/wizards/inconsignmentwizard.py

  • Committer: Ronaldo Maia
  • Date: 2010-05-27 20:37:56 UTC
  • Revision ID: romaia@async.com.br-20100527203756-r1hb38xxxra5fcbd
improce close consigment wizard: create a ReceivingOrder for the purchase

Show diffs side-by-side

added added

removed removed

Lines of Context:
57
57
from stoqlib.gui.wizards.purchasewizard import (PurchaseItemStep,
58
58
                                                PurchaseWizard,
59
59
                                                StartPurchaseStep,
60
 
                                                PurchasePaymentStep)
 
60
                                                PurchasePaymentStep,
 
61
                                                FinishPurchaseStep)
 
62
from stoqlib.gui.wizards.receivingwizard import ReceivingInvoiceStep
61
63
from stoqlib.lib.message import info, yesno, warning
62
64
from stoqlib.lib.parameters import sysparam
63
65
from stoqlib.lib.translation import stoqlib_gettext
214
216
    gladefile = 'SupplierSelectionStep'
215
217
 
216
218
    def __init__(self, wizard, conn):
217
 
        self._next_step = None
218
219
        BaseWizardStep.__init__(self, conn, wizard)
219
220
        self._setup_slaves()
220
221
 
271
272
        selected = self.slave.klist.get_selected()
272
273
        supplier = selected.supplier
273
274
        branch = self.branch.get_selected()
274
 
        return ItemSelectionStep(self.wizard, self.conn,
275
 
                                 supplier, branch)
 
275
 
 
276
        return ItemSelectionStep(self.wizard, self, self.conn,
 
277
                                 supplier, branch, selected.consignments)
276
278
 
277
279
    ##
278
280
    ## Callbacks
316
318
class ItemSelectionStep(BaseWizardStep):
317
319
    gladefile = 'ItemSelectionStep'
318
320
 
319
 
    def __init__(self, wizard, conn, supplier, branch):
320
 
        self._next_step = None
 
321
    def __init__(self, wizard, previous, conn, supplier, branch, consignments):
321
322
        self.supplier = supplier
322
323
        self.branch = branch
323
 
        BaseWizardStep.__init__(self, conn, wizard)
 
324
        self.consignments = consignments
 
325
        BaseWizardStep.__init__(self, conn, wizard, previous)
324
326
        self._setup_slaves()
325
327
 
326
328
    def _setup_slaves(self):
372
374
                             group=group,
373
375
                             connection=self.conn)
374
376
 
 
377
    def has_previous_step(self):
 
378
        return True
 
379
 
375
380
    def has_next_step(self):
376
381
        return True
377
382
 
382
387
            # add new sale item
383
388
            item = order.add_item(consig_item.sellable, consig_item.sold)
384
389
            item.cost = consig_item.avg_cost
 
390
            order.receive_item(item, consig_item.sold)
385
391
 
386
392
        order.set_valid()
387
393
 
388
394
        # Close previous consignments
389
 
        #for c in self.supplier.consigments:
390
 
        #    c.close()
391
 
 
 
395
        for consig in self.consignments:
 
396
            consig = self.conn.get(consig)
 
397
            #consig.purchase_order = order FIXME
 
398
            consig.close()
392
399
 
393
400
        # Create a new one with the remaining items
394
401
        pass
395
402
 
396
403
        # Next step
397
 
        return PurchasePaymentStep(self.wizard, self, self.conn, order)
 
404
        return CloseConsignmentPaymentStep(self.wizard, self, self.conn, order)
 
405
 
 
406
 
 
407
class CloseConsignmentPaymentStep(PurchasePaymentStep):
 
408
 
 
409
    def _create_receiving_order(self):
 
410
        # since we will create a new receiving order, we should confirm the
 
411
        # purchase first.
 
412
        self.order.confirm()
 
413
 
 
414
        receiving_model = ReceivingOrder(
 
415
            responsible=get_current_user(self.conn),
 
416
            purchase=self.order,
 
417
            supplier=self.order.supplier,
 
418
            branch=self.order.branch,
 
419
            transporter=self.order.transporter,
 
420
            invoice_number=None,
 
421
            connection=self.conn)
 
422
 
 
423
        # Creates ReceivingOrderItem's
 
424
        get_receiving_items_by_purchase_order(self.order, receiving_model)
 
425
 
 
426
        self.wizard.receiving_model = receiving_model
 
427
 
 
428
 
 
429
    def next_step(self):
 
430
        # TODO: Create ReceivingOrder
 
431
        #return FinishCloseConsignmentStep(self.wizard, self, self.conn,
 
432
        #                                  self.order)
 
433
 
 
434
        self._create_receiving_order()
 
435
        return ReceivingInvoiceStep(self.conn, self.wizard,
 
436
                                    self.wizard.receiving_model)
 
437
 
 
438
class FinishCloseConsignmentStep(FinishPurchaseStep):
 
439
 
 
440
    def __init__(self, wizard, previous, conn, model):
 
441
        FinishPurchaseStep.__init__(self, wizard, previous, conn, model)
 
442
        self.receive_now.hide()
 
443
 
 
444
    def has_next_step(self):
 
445
        return True
 
446
 
 
447
    def next_step(self):
 
448
        return ReceivingInvoiceStep(self.conn, self.wizard,
 
449
                                    self.wizard.receiving_model)
398
450
 
399
451
 
400
452
class CloseInConsignmentWizard(BaseWizard):
415
467
    #
416
468
 
417
469
    def finish(self):
 
470
        if not self.receiving_model.get_valid():
 
471
            self.receiving_model.set_valid()
 
472
        self.receiving_model.confirm(already_received=True)
 
473
 
418
474
        self.retval = True
419
475
        self.close()
420
476