user.rb 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. class User < ActiveRecord::Base
  2. # Include default devise modules. Others available are:
  3. # :confirmable, :lockable, :timeoutable and :omniauthable
  4. devise :database_authenticatable, :registerable,
  5. :recoverable, :rememberable, :trackable, :validatable
  6. devise :session_limitable # other devise options
  7. before_update :warehouse_or_pointsale
  8. #-- Associations
  9. belongs_to :pointsale
  10. belongs_to :warehouse
  11. has_many :pre_sales
  12. has_many :product_wastes
  13. has_many :pre_purchases
  14. has_many :open_cash_registers
  15. has_many :credit_payments
  16. has_many :cash_outs
  17. has_many :special_prices
  18. has_many :transfers
  19. has_many :commissions
  20. has_many :products_returns
  21. enum status: [ :erased, :active, :inactive ]
  22. ##--- Llevar registro de Actividad del usuario
  23. audited
  24. ##--- Validaciones previas de guardar
  25. attr_accessor :skip_validations_from_pointsale
  26. attr_accessor :skip_validations_when_edit
  27. validates_presence_of :userid, message: "Debe especificar el nombre de usuario, es con el que el usuario iniciará sesión."
  28. validates :password, :presence => { :message => "Debe especificar la contraseña nueva"}, length: { :within => Devise.password_length, too_short: "La contraseña no puede ser menor a %{count}." }, unless: :skip_validations_when_edit
  29. validates :password_confirmation, :presence => { :message => "Debe confirmar la contraseña nueva"}, unless: :skip_validations_when_edit
  30. # validates_presence_of :pointsale_id, message: "Debe seleccionar el punto de venta al que pertenecerá el usuario.", :on => [:create, :update], unless: :skip_validations_from_pointsale
  31. validates_presence_of :usertype, message: "Debe seleccionar el tipo de usuario, con este se determinara los permisos que tendrá dentro del sistema.", :on => [:create, :update], unless: :skip_validations_from_pointsale
  32. validates :pointsale_id , presence: { message: "Debe seleccionar un almacén o un punto de venta al que pertenecerá el usuario." },
  33. :if => Proc.new {|c| c.warehouse_id.blank?}, :on => [:create, :update], unless: :skip_validations_from_pointsale
  34. validates :warehouse_id , presence: { message: "Debe seleccionar un almacén o un punto de venta al que pertenecerá el usuario." },
  35. :if => Proc.new {|c| c.pointsale_id.blank?}, :on => [:create, :update], unless: :skip_validations_from_pointsale
  36. validates :userid, uniqueness: { message: "El usuario ya fue utilizado, favor de especificar otro." }
  37. def full_name
  38. "#{first_name} #{last_name}"
  39. end
  40. def get_open_cash_register
  41. self.open_cash_registers.where(:status => 0).last
  42. end
  43. def warehouse_or_pointsale
  44. if pointsale_id.present?
  45. self.warehouse_id = nil
  46. elsif warehouse_id.present?
  47. self.pointsale_id = nil
  48. end
  49. end
  50. end