FactoryBot.define do
  factory :pagamento_da_retencao_iss, class: 'Contabilidade::PagamentoDaRetencao' do
    valor { 9.99 }
    retencao_id { FactoryBot.create(:retencao_iss).id }
    conta_origem_id { FactoryBot.create(:conta_bancaria, :com_unidade_orcamentaria).id }
    conta_destino_id { FactoryBot.create(:conta_bancaria, :com_unidade_orcamentaria).id  }

    trait :pagar_recolher do
      after :build do |pagamento_da_retencao|
        pagamento_da_retencao.retencao.update_attribute(:tipo_de_acao, 'pagar_recolher')
      end
    end

    trait :transferir do
      after :build do |pagamento_da_retencao|
        pagamento_da_retencao.retencao.update_attribute(:tipo_de_acao, 'transferir')
      end
    end

    trait :nao_selecionar do
      after :build do |pagamento_da_retencao|
        pagamento_da_retencao.retencao.update_attribute(:tipo_de_acao, 'nao_selecionar')
      end
    end

    after :build do |pagamento_da_retencao|
      pagamento_da_retencao.conta_origem.contas_bancarias_por_unidade_orcamentaria.update_all(saldo_atual: 1000)

      FactoryBot.create(:loa_gestor, 
        unidade_gestora_id: pagamento_da_retencao.conta_origem.unidade_orcamentaria_principal.unidade_gestora_id,
        inicio_da_gestao: pagamento_da_retencao.pagamento.data
      )

      conta_extra_orcamentaria = FactoryBot.create(:conta_extra_orcamentaria)
      pagamento_da_retencao.retencao.update_attribute(:conta_extra_orcamentaria_id, conta_extra_orcamentaria.id)
      FactoryBot.create(:contabilidade_lancamento_extraorcamentario_receita, conta_extra_orcamentaria_id: conta_extra_orcamentaria.id)
      pagamento_da_retencao.liquidacao.unidade_orcamentaria.update_attribute(:pessoa_id, FactoryBot.create(:pessoa_juridica).id)
    end
  end
end
