class Licitacao::ItemDoAditivoDeMudanca < ApplicationRecord
	has_paper_trail

	belongs_to :aditivo, class_name: 'Licitacao::Aditivo', required: true
	belongs_to :item, class_name: 'Base::Item', required: true
	belongs_to :item_origem, class_name: 'Base::Item', foreign_key: :item_origem_id

	validates :item_id, :aditivo_id, :item_origem_id, presence: true

	before_destroy :altera_item_do_pedido_origem

	def tem_item_no_empenho?
		self.aditivo.contrato.itens_do_contrato.joins(item_do_lote: [item_do_pedido: :item]).where(base_itens: {id: self.aditivo.contrato.itens_dos_empenhos.pluck(:item_id)}).any?
	end

	def item_do_pedido_origem
		Licitacao::ItemDoPedido.where(item: self.item_origem_id).where(pedido: self.aditivo.contrato.projeto.pedido).take
	end

	def item_do_pedido_novo
		Licitacao::ItemDoPedido.where(item: self.item).where(pedido: self.aditivo.contrato.projeto.pedido).take
	end

	def altera_item_do_pedido_novo
		item_do_pedido_atual = item_do_pedido_origem
		item_do_pedido_atual.item = self.item
		item_do_pedido_atual.save
	end

	def altera_item_do_pedido_origem
		if self.aditivo.confirmado?
			item_do_pedido_novo.update_column(:item_id, self.item_origem_id)
		end
	end

end
