@@ -6,35 +6,37 @@ class Shipment < ApplicationRecord
6
6
has_many :locations , through : :deliveries
7
7
8
8
def delivering
9
- ActiveRecord ::Base . transaction do
10
- location = Bouquet ::Location . first
11
-
12
- deliverie = deliveries . new ( quantity : quantity , location_id : location . id )
13
- deliverie . date = Time . current
14
- deliverie . save
15
-
16
- sales_order . product . assemblies . each do |assembly |
17
- assembly_quantity = assembly . quantity
18
-
19
- storages = Bouquet ::Storage . with_material ( assembly . material_id )
20
- storages . each do |storage |
21
- break if assembly_quantity <= 0
22
- if storage . quantity > 0
23
- retrieval_quantity = if storage . quantity - assembly_quantity < 0
24
- storage . quantity
25
- else
26
- assembly_quantity
27
- end
28
-
29
- retrieval = deliverie . retrievals . create ( quantity : retrieval_quantity , storage_id : storage . id )
30
- retrieval . date = Time . current
31
- retrieval . save
32
-
33
- assembly_quantity = assembly_quantity - retrieval_quantity
9
+ location = Bouquet ::Location . first
10
+
11
+ deliverie = deliveries . new ( quantity : quantity , location_id : location . id )
12
+ deliverie . date = Time . current
13
+ deliverie . save
14
+
15
+ sales_order . product . assemblies . each do |assembly |
16
+ assembly_quantity = assembly . quantity
17
+
18
+ storages = Bouquet ::Storage . with_material ( assembly . material_id )
19
+ storages . each do |storage |
20
+ break if assembly_quantity <= 0
21
+
22
+ if storage . quantity > 0
23
+ retrieval_quantity = if storage . quantity - assembly_quantity >= 0
24
+ assembly_quantity
25
+ else
26
+ storage . quantity
34
27
end
28
+
29
+ retrieval = deliverie . retrievals . create ( quantity : retrieval_quantity , storage_id : storage . id )
30
+ retrieval . date = Time . current
31
+ retrieval . save
32
+
33
+ assembly_quantity = assembly_quantity - retrieval_quantity
35
34
end
35
+ end
36
36
37
- raise ActiveRecord ::Rollback if assembly_quantity > 0
37
+ if assembly_quantity > 0
38
+ puts "Delivering Error: Shortage #{ assembly . material . name } = #{ assembly_quantity } "
39
+ raise ActiveRecord ::Rollback
38
40
end
39
41
end
40
42
end
0 commit comments