class Licitacao::UnidadeOrcamentariaDaAta < ApplicationRecord
	has_paper_trail

	delegate :nome, to: :unidade_orcamentaria, prefix: "unidade"

	belongs_to :unidade_orcamentaria, class_name: 'Loa::UnidadeOrcamentaria', required: true
	belongs_to :ata_de_registro_de_precos, class_name: "Licitacao::AtaDeRegistroDePrecos", foreign_key: :ata_de_registro_de_preco_id, required: true

	has_many :itens_da_ata, class_name: 'Licitacao::ItemDaAta', through: :ata_de_registro_de_precos
	has_many :itens_dos_lotes, class_name: 'Licitacao::ItemDoLote', through: :itens_da_ata, source: :item_do_lote

	validates_uniqueness_of :unidade_orcamentaria_id, scope: :ata_de_registro_de_preco_id, if: Proc.new{ self.persisted? }

	def pode_ser_deletado?
		itens_da_ata.empty?
	end

	def itens_dos_lotes_por_unidade
		itens_dos_lotes.ativos
			.merge(Licitacao::Lote.ativo)
			.includes(item_do_pedido: :itens_do_pedido_por_unidade_orcamentaria)
			.joins(:lote, item_do_pedido: { itens_do_pedido_por_unidade_orcamentaria: :unidade_orcamentaria_por_pedido })
			.where(licitacao_unidades_orcamentarias_por_pedido: { unidade_orcamentaria_id: unidade_orcamentaria.id })
			.order('licitacao_lotes.numero')
			.order('licitacao_itens_do_pedido.id')
	end
end
