diff --git a/addons/sale_purchase/models/sale_order.py b/addons/sale_purchase/models/sale_order.py
index 9eb6ef5584923d794d793458ed522b9bdf1c5ec5..dc645a7830a4e4d7809a732eca6c36a7391c64c1 100644
--- a/addons/sale_purchase/models/sale_order.py
+++ b/addons/sale_purchase/models/sale_order.py
@@ -109,13 +109,14 @@ class SaleOrderLine(models.Model):
     # CRUD
     # --------------------------
 
-    @api.model
+    @api.model_create_multi
     def create(self, values):
-        line = super(SaleOrderLine, self).create(values)
+        lines = super(SaleOrderLine, self).create(values)
         # Do not generate purchase when expense SO line since the product is already delivered
-        if line.state == 'sale' and not line.is_expense:
-            line.sudo()._purchase_service_generation()
-        return line
+        lines.filtered(
+            lambda line: line.state == 'sale' and not line.is_expense
+        )._purchase_service_generation()
+        return lines
 
     def write(self, values):
         increased_lines = None