add specs

This commit is contained in:
viehlieb 2025-05-22 12:27:25 +02:00
parent e902aa0d5a
commit 45db0575b1
46 changed files with 714 additions and 238 deletions

View file

@ -6,11 +6,10 @@ class MultiOrder < ApplicationRecord
#TODO: diese association lösen
has_many :group_orders, through: :multi_group_orders
# has_many :ordergroups, through: :group_orders
has_many :ordergroup_invoices, through: :group_orders
has_many :ordergroup_invoices, through: :multi_group_orders
#make sure order has no multi_order_id
#make sure orders are not in a multi_order
before_create :check_orders
validate :check_orders
after_create :create_multi_group_orders
def name
orders.map(&:name).join(', ')
@ -40,15 +39,38 @@ class MultiOrder < ApplicationRecord
end
private
def check_orders
orders.each do |order|
errors.add(:base, "Order #{order.name} is already in a multi order") unless order.multi_order_id.nil?
#closed==abgerechnet
errors.add(:base, "Order #{order.name} not closed") unless order.closed?
unless orders.present?
errors.add(:base, "No orders selected")
return
end
if errors.any?
errors.add(:base, "Cannot create multi order with unfinished orders")
raise ActiveRecord::Rollback
orders.each do |order|
if order.group_orders.blank?
errors.add(:base, "Order #{order.name} has no group orders")
end
unless order.closed?
errors.add(:base, "Order #{order.name} is not closed")
end
if order.group_orders.any? { |go| go.group_order_invoice.present? }
errors.add(:base, "Order #{order.name} has group order invoices")
end
end
end
def create_multi_group_orders
return if orders.empty?
all_group_orders = orders.flat_map(&:group_orders)
grouped_by_ordergroup = all_group_orders.group_by(&:ordergroup_id)
grouped_by_ordergroup.each do |ordergroup_id, group_orders|
multi_group_order = MultiGroupOrder.create!(
multi_order: self, group_orders: group_orders
)
# Now, associate each group_order with the new multi_group_order
group_orders.each do |group_order|
group_order.update!(multi_group_order: multi_group_order)
end
end
end
end