Voile.Schema.Library.LoanRuleResolver (Voile v0.1.26)

Copy Markdown View Source

Resolves loan rules with proper precedence:

  1. Node-level rules (if override_loan_rules is true)
  2. Member type rules
  3. System defaults

This allows flexible policy management across different branches/nodes while maintaining member type-based rules as the foundation.

Summary

Functions

Checks node-specific operational policies.

Calculates fine amount based on resolved rules.

Checks if a specific operation is allowed based on node and member type rules.

Returns a human-readable explanation of which rules are being applied.

Resolves the effective loan rules for a given node and member type.

Returns system defaults for reference.

Functions

allows_node_operation?(node, arg2)

Checks node-specific operational policies.

calculate_fine(node, member_type, days_overdue)

Calculates fine amount based on resolved rules.

can_perform?(node, member_type, operation)

Checks if a specific operation is allowed based on node and member type rules.

Examples

can_perform?(node, member_type, :reserve)
# => true | false

can_perform?(node, member_type, :renew)
# => true | false

explain_rules(node, member_type)

Returns a human-readable explanation of which rules are being applied.

resolve_rules(node \\ nil, member_type \\ nil)

Resolves the effective loan rules for a given node and member type.

Examples

# Node overrides member type
resolve_rules(node_with_override, member_type)
# => %{max_items: 10, source: :node, ...}

# Member type rules apply
resolve_rules(node_without_override, member_type)
# => %{max_items: 5, source: :member_type, ...}

# Falls back to defaults
resolve_rules(nil, nil)
# => %{max_items: 3, source: :system_default, ...}

system_defaults()

Returns system defaults for reference.