def test_attach_slave(self):
     sale = self.create_sale()
     sale.identifier = 1001
     sale.open_date = localdate(2012, 12, 21)
     # SaleDetailsDialog needs a SaleView model
     model = self.store.find(SaleView, id=sale.id).one()
     dialog = SaleDetailsDialog(self.store, model)
     dialog.attach_slave('coupon_number_holder',
                         CouponNumberSlave(self.store, model))
     self.check_dialog(dialog, 'dialog-saledetails-with-couponumberslave')
示例#2
0
    def test_show_with_returns_and_comments(self, print_report):
        date = localdate(2010, 12, 10).date()

        sale = self._create_sale()
        returned_sale = sale.create_sale_return_adapter(
            self.current_branch, self.current_user, self.current_station)
        returned_sale.return_(self.current_user)
        returned_sale.return_date = date

        # payments[0] is the sale's payment created on self._create_sale
        returned_payment = returned_sale.group.payments.find(
            Payment.identifier != 999).one()
        returned_payment.identifier = 666
        returned_payment.due_date = date
        returned_payment.paid_date = date

        comment = self.create_sale_comment(sale)
        comment.date = date

        model = self.store.find(SaleView, id=sale.id).one()

        dialog = SaleDetailsDialog(self.store, model)
        self.click(dialog.print_return_report)

        self.check_editor(dialog, 'dialog-sale-details-with-returns')
示例#3
0
 def test_show(self):
     sale = self._create_sale()
     # SaleDetailsDialog needs a SaleView model
     model = self.store.find(SaleView, id=sale.id).one()
     dialog = SaleDetailsDialog(self.store, model)
     self.assertTrue(isinstance(dialog.items_list, ObjectTree))
     self.check_editor(dialog, 'dialog-sale-details')
示例#4
0
    def test_print_details(self, print_report):
        sale = self.create_sale()
        sale.client = self.create_client()
        self.create_sale_item(sale, product=True)
        model = self.store.find(SaleView, id=sale.id).one()

        dialog = SaleDetailsDialog(self.store, model)
        self.assertSensitive(dialog, ['print_button'])

        self.click(dialog.print_button)
        print_report.assert_called_once_with(SaleOrderReport, sale)
示例#5
0
    def test_print_booklet(self, print_report):
        sale = self.create_sale()
        sale.client = self.create_client()
        self.create_sale_item(sale, product=True)
        payment = self.add_payments(sale, u'store_credit')[0]
        model = self.store.find(SaleView, id=sale.id).one()

        dialog = SaleDetailsDialog(self.store, model)
        self.assertSensitive(dialog, ['print_booklets'])
        self.assertNotVisible(dialog, ['print_bills'])

        self.click(dialog.print_booklets)
        print_report.assert_called_once_with(BookletReport, [payment])
示例#6
0
    def test_client_details(self, run_dialog):
        sale = self.create_sale()
        sale.client = self.create_client()
        self.create_sale_item(sale, product=True)
        model = self.store.find(SaleView, id=sale.id).one()

        dialog = SaleDetailsDialog(self.store, model)
        self.click(dialog.details_button)

        args, kwargs = run_dialog.call_args
        editor, parent, store, model = args
        self.assertEqual(editor, ClientDetailsDialog)
        self.assertEqual(parent, dialog)
        self.assertEqual(model, sale.client)
        self.assertTrue(isinstance(store, StoqlibStore))
示例#7
0
    def test_print_bill(self, print_report, check_printable):
        sale = self.create_sale()
        sale.client = self.create_client()
        self.create_sale_item(sale, product=True)
        payment = self.add_payments(sale, u'bill')[0]
        model = self.store.find(SaleView, id=sale.id).one()

        dialog = SaleDetailsDialog(self.store, model)
        self.assertSensitive(dialog, ['print_bills'])
        self.assertNotVisible(dialog, ['print_booklets'])

        # Just make sure we can print the bill
        check_printable.return_value = True
        self.click(dialog.print_bills)

        print_report.assert_called_once_with(BillReport, [payment])
示例#8
0
    def test_show_package_product(self):
        sale = self.create_sale()
        package = self.create_product(description=u'Package', is_package=True)
        component1 = self.create_product(description=u'Component 1', stock=3)
        component2 = self.create_product(description=u'Component 2', stock=2)
        self.create_product_component(product=package, component=component1)
        self.create_product_component(product=package, component=component2)
        parent = sale.add_sellable(package.sellable, quantity=1)
        sale.add_sellable(component1.sellable, quantity=1, parent=parent)
        sale.add_sellable(component2.sellable, quantity=1, parent=parent)

        sale.create_sale_return_adapter(self.current_branch, self.current_user,
                                        self.current_station)

        model = self.store.find(SaleView, id=sale.id).one()
        dialog = SaleDetailsDialog(self.store, model)
        self.assertEqual(len(list(dialog.items_list)), 3)
示例#9
0
    def test_add_note(self, run_dialog, new_store):
        new_store.return_value = self.store
        run_dialog.return_value = False

        sale = self.create_sale()
        sale.client = self.create_client()
        self.create_sale_item(sale, product=True)
        model = self.store.find(SaleView, id=sale.id).one()

        dialog = SaleDetailsDialog(self.store, model)
        with mock.patch.object(self.store, 'commit'):
            with mock.patch.object(self.store, 'close'):
                self.click(dialog.comment_add)

        args, kwargs = run_dialog.call_args
        editor, parent, store, model, prop_name = args
        self.assertEqual(editor, NoteEditor)
        self.assertEqual(parent, dialog)
        self.assertTrue(isinstance(model, SaleComment))
        self.assertTrue(isinstance(store, StoqlibStore))
        self.assertEqual(prop_name, 'comment')
        self.assertEqual(kwargs['title'], 'New Sale Comment')