Ajout des test de cas de multiple facturation

This commit is contained in:
eloyoussef 2018-03-19 19:07:23 +01:00
parent 9b086fef97
commit bc8c6dbd58
3 changed files with 53 additions and 36 deletions

View File

@ -80,7 +80,6 @@ class GolemResourceReservation(models.Model):
amount = product.standard_price
delta = fields.Datetime.from_string(reservation.date_stop) - \
fields.Datetime.from_string(reservation.date_start)
quantity = (delta.days * 24) + (delta.seconds/3600.0)
account_id = False
if not product:

View File

@ -33,48 +33,32 @@ class TestGolemResourceReservation(TransactionCase):
self.resource = self.env['golem.resource'].create({
'name': 'Resource',
'avaibility_start': '2018-01-01',
'avaibility_stop': '2020-01-01'
})
self.resource_val = self.env['golem.resource'].create({
'name': 'Resource to validate',
'avaibility_start': '2018-01-01',
'avaibility_stop': '2020-01-01',
'validation_required': True
'availibility_24_7': True
})
self.timetable_obj = self.env['golem.resource.timetable']
timetable_data = {'resource_id': self.resource.id, 'weekday': '0',
'time_start': 8.0, 'time_stop': 12.0}
timetable_data2 = {'resource_id': self.resource.id, 'weekday': '1',
'availibility_24': True}
timetable_data3 = {'resource_id': self.resource.id, 'weekday': '2',
'time_start': 7.0, 'time_stop': 23.98}
timetable_data4 = {'resource_id': self.resource.id, 'weekday': '3',
'availibility_24': True}
self.timetable_obj.create(timetable_data)
self.timetable_obj.create(timetable_data2)
self.timetable_obj.create(timetable_data3)
self.timetable_obj.create(timetable_data4)
timetable_data['resource_id'] = self.resource_val.id
self.timetable_obj.create(timetable_data)
self.partner = self.env['res.partner'].create({'firstname': 'John',
'lastname': 'DOE',
'is_company': False})
self.partner2 = self.env['res.partner'].create({'firstname': 'John',
'lastname': 'DOE',
'is_company': False})
self.data = {
'resource_id': self.resource.id,
'date_start': '2018-02-05 11:00:00', # is monday
'date_stop': '2018-02-05 12:00:00',
'partner_id': self.partner.id
}
self.data2 = {
'resource_id': self.resource.id,
'date_start': '2018-03-05 11:00:00', # is monday
'date_stop': '2018-03-05 12:00:00',
'partner_id': self.partner2.id
}
self.res_obj = self.env['golem.resource.reservation']
def test_reservation_invoice_single(self):
def test_single_reservation_invoice(self):
""" Test reservation bases """
reservation = self.res_obj.create(self.data)
self.assertEqual(reservation.state, 'draft')
@ -94,9 +78,32 @@ class TestGolemResourceReservation(TransactionCase):
'product_tmpl_id': self.env.ref('product.product_product_5').id})
reservation.create_invoice()
self.assertTrue(reservation.invoice_id)
self.assertEqual(reservation.invoicing_state,"draft")
self.assertEqual(reservation.invoicing_state, "draft")
"""
self.assertEqual(reservation.state, 'validated')
reservation.create_invoice()
self.assertTrue(reservation.invoice_id)"""
def test_multiple_reservation_in(self):
""" Test Multiple Reservation Invoices """
reservation_1 = self.res_obj.create(self.data)
reservation_2 = self.res_obj.create(self.data2)
#reservations = [reservation_1, reservation_2]
reservation_1.state_confirm()
reservation_2.state_confirm()
self.assertEqual(reservation_1.state, "validated")
self.assertEqual(reservation_2.state, "validated")
reservation_1.resource_id.write({
'product_tmpl_id': self.env.ref('product.product_product_5').id})
reservation_2.resource_id.write({
'product_tmpl_id': self.env.ref('product.product_product_5').id})
wizard = self.env['golem.reservation.invoice.wizard'].create({
'reservation_ids': [(4, reservation_1.id, 0), (4, reservation_2.id, 0)]})
self.assertTrue(wizard.reservation_ids)
self.assertEqual(wizard.reservation_ids[0], reservation_2)
self.assertEqual(wizard.reservation_ids[1], reservation_1)
#try to create invoice for to different client
with self.assertRaises(UserError) as err:
wizard.create_invoices()
self.assertIn(u'group reservations of multiple clients in the same', err.exception.args[0])
#fixing the same client for both reservation
reservation_2.write({'partner_id': self.partner.id})
wizard.create_invoices()
self.assertTrue(reservation_1.invoice_id)
self.assertTrue(reservation_2.invoice_id)

View File

@ -53,14 +53,25 @@ class GolemReservationInvoiceWizard(models.TransientModel):
lines = []
for reservation in self.reservation_ids:
if reservation.state != "validated":
raise UserError(
_("The reservation '%s' is not validated, please validate it before \
creating invoice") % reservation.name)
product = reservation.resource_id.product_tmpl_id
if not product:
raise UserError(
_("There is no product linked to resource : '%s', you can't invoice \
reservation with no product linked") % (reservation.resource_id.name,))
if partner_id != reservation.partner_id:
raise ValidationError(
raise UserError(
_("You can't group reservations of multiple clients in the same \
invoice, please remove inadequate reservations"))
product = reservation.resource_id.product_tmpl_id
amount = product.standard_price
quantity = reservation.hour_stop - reservation.hour_start
delta = fields.Datetime.from_string(reservation.date_stop) - \
fields.Datetime.from_string(reservation.date_start)
quantity = (delta.days * 24) + (delta.seconds/3600.0)
lines.append((0, 0, {
'name': reservation.resource_id.name,
#'origin': ,