venue_management/app/models/venue_management_contract.rb

82 lines
2.7 KiB
Ruby

# frozen_string_literal: true
require 'orbit_form_helper'
class VenueManagementContract
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Enum
PAYERS = [ :school, :vendor].freeze
BID_RESULTS = [ :failure, :abandoned, :qualified].freeze
# Copy from Inviting
field :renewal_permission, type: Boolean,default: false
field :renewal_deadline, type: Date
field :case_no, type: String
field :publish_times, type: Integer
field :start_date, type: Date, default: Time.now
field :end_date, type: Date
field :close_date, type: Date
field :bid_date, type: Date
field :evaluation_date, type: Date
field :early_rent, type: Integer
field :operation_rent, type: Integer
field :royalty, type: Integer
field :contractor_manager # save user_id
enum :house_tax_payer, PAYERS
enum :land_tax_payer, PAYERS
enum :bid_result, BID_RESULTS
field :details, localize: true
# Other fields
field :vendor # save user_id
field :contract_start_date, type: Date
field :contract_end_date, type: Date
field :construction_start_date, type: Date
field :construction_end_date, type: Date
field :operation_start_date, type: Date
field :operation_end_date, type: Date
field :free_period_start_date, type: Date
field :free_period_end_date, type: Date
field :renewal_permission, type: Boolean
field :sign_date, type: Date
field :handover_date, type: Date
field :deposit_payment_date, type: Date
field :deposit_type, type: String
field :deposit_exp_date, type: Date
field :insurance_type, type: String
field :insurance_payment_deadline, type: Date
field :insurance_payment_date, type: Date
field :other_commitment, localize: true
field :note, localize: true
belongs_to :venue_management_main
belongs_to :venue_management_inviting
include VenueLinkFile
before_save do
org_contract = VenueManagementContract.find(self.id)
inviting = VenueManagementInviting.find(self.venue_management_inviting_id) rescue nil
if !inviting.nil?
%i(case_no publish_times start_date end_date close_date bid_date evaluation_date contractor_manager bid_result details).each do |attr_|
self[attr_] = inviting.send(attr_) rescue nil
end
else
self[:case_no] = nil
end
update_flag = true
if org_contract.venue_management_inviting_id == self.venue_management_inviting_id
%i(early_rent operation_rent royalty house_tax_payer land_tax_payer).each do |attr_|
if self[attr_] != (inviting.send(attr_) rescue nil)
update_flag = false
end
end
end
if update_flag && !inviting.nil?
%i(early_rent operation_rent royalty house_tax_payer land_tax_payer).each do |attr_|
self[attr_] = (inviting.send(attr_) rescue nil)
end
end
end
end