def test_sale_editor_confirmed_sale(self): sale = self._create_sale() sale.order() sale.confirm() editor = SalePaymentsEditor(self.store, sale) payments = editor.slave.payments payments.select(payments[0]) # Before removing the payment, the dialog should be confirmable self.assertSensitive(editor.main_dialog, ['ok_button']) self.click(editor.slave.remove_button) # But we cannot confirm after removing it. self.assertNotSensitive(editor.main_dialog, ['ok_button']) # Lets add another payment self.click(editor.slave.add_button) self.assertSensitive(editor.main_dialog, ['ok_button']) # There should be one preview payment for payment in payments: if payment.status == payment.STATUS_PREVIEW: break assert payment.status == payment.STATUS_PREVIEW # Confirming the dialog should change the new payment to pending editor.confirm() assert payment.status == payment.STATUS_PENDING
def test_pay_with_credit(self): client = self.create_client() sale = self.create_sale(client=client) sale.identifier = 1234 sellable = self.create_sellable(price=10) sale.add_sellable(sellable) # Create credit to the client. method = PaymentMethod.get_by_name(self.store, u'credit') group = self.create_payment_group(payer=client.person) payment = self.create_payment(value=20, method=method, group=group) payment.set_pending() payment.pay() self.assertEquals(client.credit_account_balance, 20) editor = SalePaymentsEditor(self.store, sale) # Select credit method. for radio in editor.slave.methods_box.get_children(): if radio.get_label() == 'Credit ($20.00)': radio.set_active(True) break # Add credit payment. editor.slave.value.update(10) self.assertSensitive(editor.slave, ['add_button']) self.click(editor.slave.add_button) editor.confirm() self.assertEquals(client.credit_account_balance, 10) for payment in sale.payments: self.assertEquals(payment.status, Payment.STATUS_PAID) # Test remove payment. self.assertNotSensitive(editor.slave, ['remove_button']) editor = SalePaymentsEditor(self.store, sale) payments = editor.slave.payments payments.select(payments[0]) self.assertSensitive(editor.slave, ['remove_button']) self.click(editor.slave.remove_button) editor.confirm() for payment in sale.payments: self.assertEquals(payment.status, Payment.STATUS_CANCELLED)
def test_pay_with_credit(self): client = self.create_client() sale = self.create_sale(client=client) sale.identifier = 1234 sellable = self.create_sellable(price=10) sale.add_sellable(sellable) # Create credit to the client. method = PaymentMethod.get_by_name(self.store, u"credit") group = self.create_payment_group(payer=client.person) payment = self.create_payment(value=20, method=method, group=group) payment.set_pending() payment.pay() self.assertEquals(client.credit_account_balance, 20) editor = SalePaymentsEditor(self.store, sale) # Select credit method. for radio in editor.slave.methods_box.get_children(): if radio.get_label() == "Credit ($20.00)": radio.set_active(True) break # Add credit payment. editor.slave.value.update(10) self.assertSensitive(editor.slave, ["add_button"]) self.click(editor.slave.add_button) editor.confirm() self.assertEquals(client.credit_account_balance, 10) for payment in sale.payments: self.assertEquals(payment.status, Payment.STATUS_PAID) # Test remove payment. self.assertNotSensitive(editor.slave, ["remove_button"]) editor = SalePaymentsEditor(self.store, sale) payments = editor.slave.payments payments.select(payments[0]) self.assertSensitive(editor.slave, ["remove_button"]) self.click(editor.slave.remove_button) editor.confirm() for payment in sale.payments: self.assertEquals(payment.status, Payment.STATUS_CANCELLED)