OpenEduCat Library

openeducat_library
REPOSITORY
REPOSITORYOCA/vertical-education
GIT
GIThttps://github.com/OCA/vertical-education.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/vertical-education/tree/10.0/openeducat_library
VERSION
VERSION 3.0.0
CATEGORY
CATEGORYEducation
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTech Receptives
MAINTAINERS
MAINTAINERSTech Receptives
COMMITTERS
COMMITTERSMaxime Chambreuil, Pedro M. Baeza, Stéphane Bidoul (ACSONE), Parthiv Patel, ajaychauhan727, Ajay Chauhan
WEBSITE
WEBSITEhttp://www.openeducat.org
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:03
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/vertical-education:
    - openeducat_core
    - openeducat_activity
odoo/odoo:
    - board
    - base
    - web
    - document
    - hr
    - base_setup
    - web_kanban
    - mail
    - bus
    - web_tour
    - resource
    - website
    - web_editor
    - web_planner
    - account_accountant
    - account
    - product
    - decimal_precision
    - report
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (44)
XML IDNameModelTypeStatus
issue_media_form issue.media.form issue.media form New
library_student_dashboard_form_view board.faculty.form board.board xpath Inherits openeducat_core.board_student_form
report_library_card_barcode report_library_card_barcode ir.ui.view qweb New
report_media_barcode report_media_barcode ir.ui.view qweb New
report_student_library_card report_student_library_card ir.ui.view qweb New
reserve_media_form reserve.media.form reserve.media form New
return_media_form return.media.form return.media form New
view_media_unit_form op.media.unit.form op.media.unit form New
view_media_unit_search op.media.unit.search op.media.unit search New
view_media_unit_tree op.media.unit.tree op.media.unit tree New
view_op_author_form op.author.form op.author form New
view_op_author_search op.author.search op.author search New
view_op_author_tree op.author.tree op.author tree New
view_op_faculty_form_library_inherit op.faculty.form.library.inherit op.faculty notebook Inherits openeducat_core.view_op_faculty_form
view_op_library_card_form op.library.card.form op.library.card form New
view_op_library_card_search op.library.card.search op.library.card search New
view_op_library_card_tree op.library.card.tree op.library.card tree New
view_op_library_card_type_form op.library.card.type.form op.library.card.type form New
view_op_library_card_type_search op.library.card.type.search op.library.card.type search New
view_op_library_card_type_tree op.library.card.type.tree op.library.card.type tree New
view_op_media_form op.media.form op.media form New
view_op_media_movement_form op.media.movement.form op.media.movement form New
view_op_media_movement_search op.media.movement.search op.media.movement search New
view_op_media_movement_tree op.media.movement.tree op.media.movement tree New
view_op_media_queue_form op.media.queue.form op.media.queue form New
view_op_media_queue_search op.media.queue.search op.media.queue search New
view_op_media_queue_tree op.media.queue.tree op.media.queue tree New
view_op_media_search op.media.search op.media search New
view_op_media_tree op.media.tree op.media tree New
view_op_media_type_form op.media.type.form op.media.type form New
view_op_media_type_search op.media.type.search op.media.type search New
view_op_media_type_tree op.media.type.tree op.media.type tree New
view_op_publisher_form op.publisher.form op.publisher form New
view_op_publisher_search op.publisher.search op.publisher search New
view_op_publisher_tree op.publisher.tree op.publisher tree New
view_op_purchase_form op.media.purchase.form op.media.purchase form New
view_op_purchase_search op.media.purchase.search op.media.purchase search New
view_op_purchase_tree op.media.purchase.tree op.media.purchase tree New
view_op_student_form_library_inherit op.student.form.library.inherit op.student notebook Inherits openeducat_core.view_op_student_form
view_op_student_library_form op.student.form op.student form New
view_op_student_tree_library_inherit op.student.tree.library.inherit op.student field Inherits openeducat_core.view_op_student_tree
view_op_tag_form op.tag.form op.tag form New
view_op_tag_search op.tag.search op.tag search New
view_op_tag_tree op.tag.tree op.tag tree New
Models touched (19)

New fields (0)

No new fields.

Public methods (1)
  • action_invoice_paid(self)
    @api.multi

New fields (8)
  • faculty_id Many2one → op.faculty
    args: 'op.faculty', 'Faculty'
  • issued_date Date
    default=fields.Date.today() required=True args: 'Issued Date'
  • library_card_id Many2one → op.library.card
    required=True args: 'op.library.card', 'Library Card'
  • media_id Many2one → op.media
    required=True args: 'op.media', 'Media'
  • media_unit_id Many2one → op.media.unit
    required=True args: 'op.media.unit', 'Media Unit'
  • return_date Date
    required=True args: 'Return Date'
  • student_id Many2one → op.student
    args: 'op.student', 'Student'
  • type Selection
    default='student' required=True args: [('student', 'Student'), ('faculty', 'Faculty')], 'Type'
Public methods (3)
  • check_max_issue(self, student_id, library_card_id)
  • do_issue(self)
    @api.multi
  • onchange_library_card_id(self)
    @api.onchange('library_card_id')

New fields (3)
  • address Many2one → res.partner
    args: 'res.partner', 'Address'
  • media_ids Many2many → op.media
    string='media(s)' args: 'op.media'
  • name Char
    required=True size=128 args: 'Name'
Public methods (0)

No public methods.

New fields (2)
  • library_card_id Many2one → op.library.card
    args: 'op.library.card', 'Library Card'
  • media_movement_lines One2many → op.media.movement
    args: 'op.media.movement', 'faculty_id', 'Movements'
Public methods (0)

No public methods.

New fields (7)
  • faculty_id Many2one → op.faculty
    args: 'op.faculty', 'Faculty'
  • issue_date Date
    default=fields.Date.today() required=True args: 'Issue Date'
  • library_card_type_id Many2one → op.library.card.type
    required=True args: 'op.library.card.type', 'Card Type'
  • number Char
    readonly=True size=256 args: 'Number'
  • partner_id Many2one → res.partner
    required=True args: 'res.partner', 'Student/Faculty'
  • student_id Many2one → op.student
    args: 'op.student', 'Student'
  • type Selection
    default='student' required=True args: [('student', 'Student'), ('faculty', 'Faculty')], 'Type'
Public methods (3)
  • create(self, vals)
    @api.model
  • onchange_student_faculty(self)
    @api.onchange('student_id', 'faculty_id')
  • onchange_type(self)
    @api.onchange('type')

New fields (4)
  • allow_media Integer
    required=True size=10 args: 'No of medias Allowed'
  • duration Integer
    help='Duration in terms of Number of Lead Days' required=True args: 'Duration'
  • name Char
    required=True size=256 args: 'Name'
  • penalty_amt_per_day Float
    required=True args: 'Penalty Amount per Day'
Public methods (1)
  • check_details(self)
    @api.constrains('allow_media', 'duration', 'penalty_amt_per_day')

New fields (14)
  • author_ids Many2many → op.author
    required=True string='Author(s)' args: 'op.author'
  • course_ids Many2many → op.course
    string='Course' args: 'op.course'
  • description Text
    args: 'Description'
  • edition Char
    args: 'Edition'
  • internal_code Char
    size=64 args: 'Internal Code'
  • isbn Char
    size=64 args: 'ISBN Code'
  • media_type_id Many2one → op.media.type
    args: 'op.media.type', 'Media Type'
  • movement_line One2many → op.media.movement
    args: 'op.media.movement', 'media_id', 'Movements'
  • name Char
    required=True size=128 args: 'Title'
  • publisher_ids Many2many → op.publisher
    required=True string='Publisher(s)' args: 'op.publisher'
  • queue_ids One2many → op.media.queue
    args: 'op.media.queue', 'media_id', 'Media Queue'
  • subject_ids Many2many → op.subject
    string='Subjects' args: 'op.subject'
  • tags Many2many → op.tag
    string='Tag(s)' args: 'op.tag'
  • unit_ids One2many → op.media.unit
    args: 'op.media.unit', 'media_id', 'Units'
Public methods (0)

No public methods.

New fields (16)
  • actual_return_date Date
    args: 'Actual Return Date'
  • faculty_id Many2one → op.faculty
    args: 'op.faculty', 'Faculty'
  • invoice_id Many2one → account.invoice
    readonly=True args: 'account.invoice', 'Invoice'
  • issued_date Date
    default=fields.Date.today() required=True args: 'Issued Date'
  • library_card_id Many2one → op.library.card
    required=True track_visibility='onchange' args: 'op.library.card', 'Library Card'
  • media_id Many2one → op.media
    required=True args: 'op.media', 'Media'
  • media_type_id Many2one
    related='media_id.media_type_id' store=True string='Media Type'
  • media_unit_id Many2one → op.media.unit
    required=True track_visibility='onchange' args: 'op.media.unit', 'Media Unit'
  • partner_id Many2one → res.partner
    track_visibility='onchange' args: 'res.partner', 'Person'
  • penalty Float
    args: 'Penalty'
  • reserver_name Char
    size=256 args: 'Person Name'
  • return_date Date
    required=True args: 'Due Date'
  • state Selection
    default='available' track_visibility='onchange' args: [('available', 'Available'), ('reserve', 'Reserved'), ('issue', 'Issued'), ('lost', 'Lost'), ('return', 'Returned'), ('return_done', 'Returned Done')], 'Status'
  • student_id Many2one → op.student
    args: 'op.student', 'Student'
  • type Selection
    required=True args: [('student', 'Student'), ('faculty', 'Faculty')], 'Student/Faculty'
  • user_id Many2one → res.users
    related='student_id.user_id' string='Users' args: 'res.users'
Public methods (7)
  • calculate_penalty(self)
    @api.multi
  • check_actual_return_date(self)
    @api.constrains('issued_date', 'actual_return_date')
  • create_penalty_invoice(self)
    @api.multi
  • issue_media(self)
    @api.multi
    function to issue media
  • onchange_library_card_id(self)
    @api.onchange('library_card_id')
  • onchange_media_unit_id(self)
    @api.onchange('media_unit_id')
  • return_media(self, return_date)
    @api.multi

New fields (9)
  • author Char
    required=True size=256 track_visibility='onchange' args: 'Author(s)'
  • course_ids Many2one → op.course
    required=True track_visibility='onchange' args: 'op.course', 'Course'
  • edition Char
    args: 'Edition'
  • media_type_id Many2one → op.media.type
    args: 'op.media.type', 'Media Type'
  • name Char
    required=True size=128 args: 'Title'
  • publisher Char
    size=256 args: 'Publisher(s)'
  • requested_id Many2one → res.partner
    default=<expr> args: 'res.partner', 'Requested By'
  • state Selection
    default='draft' readonly=True track_visibility='onchange' args: [('draft', 'Draft'), ('request', 'Requested'), ('reject', 'Rejected'), ('accept', 'Accepted')], 'State'
  • subject_ids Many2one → op.subject
    required=True track_visibility='onchange' args: 'op.subject', 'Subject'
Public methods (3)
  • act_accept(self)
    @api.multi
  • act_reject(self)
    @api.multi
  • act_requested(self)
    @api.multi

New fields (7)
  • date_from Date
    default=fields.Date.today() required=True args: 'From Date'
  • date_to Date
    required=True args: 'To Date'
  • media_id Many2one → op.media
    required=True track_visibility='onchange' args: 'op.media', 'Media'
  • name Char
    copy=False default='/' readonly=True args: 'Sequence No'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Student/Faculty'
  • state Selection
    copy=False default='request' track_visibility='onchange' args: [('request', 'Request'), ('accept', 'Accepted'), ('reject', 'Rejected')], 'Status'
  • user_id Many2one → res.users
    default=<expr> readonly=True args: 'res.users', 'User'
Public methods (5)
  • create(self, vals)
    @api.model
  • do_accept(self)
    @api.multi
  • do_reject(self)
    @api.multi
  • do_request_again(self)
    @api.multi
  • onchange_user(self)
    @api.onchange('user_id')

New fields (2)
  • code Char
    required=True size=64 args: 'Code'
  • name Char
    required=True size=64 args: 'Name'
Public methods (0)

No public methods.

New fields (6)
  • barcode Char
    size=20 args: 'Barcode'
  • media_id Many2one → op.media
    required=True track_visibility='onchange' args: 'op.media', 'Media'
  • media_type_id Many2one
    related='media_id.media_type_id' store=True string='Media Type'
  • movement_lines One2many → op.media.movement
    args: 'op.media.movement', 'media_unit_id', 'Movements'
  • name Char
    required=True args: 'Name'
  • state Selection
    default='available' track_visibility='onchange' args: [('available', 'Available'), ('issue', 'Issued')], 'State'
Public methods (2)
  • create(self, vals)
    @api.model
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model

New fields (3)
  • address_id Many2one → res.partner
    args: 'res.partner', 'Address'
  • media_ids Many2many → op.media
    string='media(s)' args: 'op.media'
  • name Char
    required=True size=20 args: 'Name'
Public methods (0)

No public methods.

New fields (2)
  • library_card_id Many2one → op.library.card
    args: 'op.library.card', 'Library Card'
  • media_movement_lines One2many → op.media.movement
    args: 'op.media.movement', 'student_id', 'Movements'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    required=True size=64 args: 'Name'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • get_barcode(self, type, value, width=350, height=60, hr=1)
    genrating image for barcode
  • render_html(self, docids, data=None)
    @api.model

New fields (0)

No new fields.

Public methods (2)
  • get_barcode(self, type, value, width=350, height=60, hr=1)
    genrating image for barcode
  • render_html(self, docids, data=None)
    @api.model

New fields (1)
  • partner_id Many2one → res.partner
    required=True args: 'res.partner'
Public methods (1)
  • set_partner(self)
    @api.multi

New fields (3)
  • actual_return_date Date
    default=<expr> required=True args: 'Actual Return Date'
  • media_id Many2one → op.media
    readonly=True args: 'op.media', 'Media'
  • media_unit_id Many2one → op.media.unit
    readonly=True required=True args: 'op.media.unit', 'Media Unit'
Public methods (1)
  • do_return(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/vertical-education
GIT
GIThttps://github.com/OCA/vertical-education.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/vertical-education/tree/9.0/openeducat_library
VERSION
VERSION 2.4.0
CATEGORY
CATEGORYOpenerp Education
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTech Receptives
MAINTAINERS
MAINTAINERSTech Receptives
COMMITTERS
COMMITTERSStéphane Bidoul (ACSONE), ajaychauhan727, siddharth-techreceptives
WEBSITE
WEBSITEhttp://www.openeducat.org
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:25
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/vertical-education:
    - openeducat_core
odoo/odoo:
    - board
    - base
    - web
    - document
    - hr
    - base_setup
    - web_kanban
    - mail
    - bus
    - resource
    - web_tip
    - website
    - web_editor
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
        This module provide feature of Library Management.

    

Code Analysis

Views touched (40)
XML IDNameModelTypeStatus
board_libray_form board.libray.form board.board form New
issue_book_form issue.book.form issue.book form New
report_book_barcode report_book_barcode ir.ui.view qweb New
report_student_library_card report_student_library_card ir.ui.view qweb New
reserve_book_form reserve.book.form reserve.book form New
return_book_form return.book.form return.book form New
return_date_form return.date.form return.date form New
view_book_unit_form op.book.unit.form op.book.unit form New
view_book_unit_search op.book.unit.search op.book.unit search New
view_book_unit_tree op.book.unit.tree op.book.unit tree New
view_op_author_form op.author.form op.author form New
view_op_author_search op.author.search op.author search New
view_op_author_tree op.author.tree op.author tree New
view_op_book_form op.book.form op.book form New
view_op_book_movement_form op.book.movement.form op.book.movement form New
view_op_book_movement_search op.book.movement.search op.book.movement search New
view_op_book_movement_tree op.book.movement.tree op.book.movement tree New
view_op_book_queue_form op.book.queue.form op.book.queue form New
view_op_book_queue_search op.book.queue.search op.book.queue search New
view_op_book_queue_tree op.book.queue.tree op.book.queue tree New
view_op_book_search op.book.search op.book search New
view_op_book_tree op.book.tree op.book tree New
view_op_faculty_form_library_inherit op.faculty.form.library.inherit op.faculty notebook Inherits openeducat_core.view_op_faculty_form
view_op_library_card_form op.library.card.form op.library.card form New
view_op_library_card_search op.library.card.search op.library.card search New
view_op_library_card_tree op.library.card.tree op.library.card tree New
view_op_library_card_type_form op.library.card.type.form op.library.card.type form New
view_op_library_card_type_search op.library.card.type.search op.library.card.type search New
view_op_library_card_type_tree op.library.card.type.tree op.library.card.type tree New
view_op_publisher_form op.publisher.form op.publisher form New
view_op_publisher_search op.publisher.search op.publisher search New
view_op_publisher_tree op.publisher.tree op.publisher tree New
view_op_purchase_form op.book.purchase.form op.book.purchase form New
view_op_purchase_search op.book.purchase.search op.book.purchase search New
view_op_purchase_tree op.book.purchase.tree op.book.purchase tree New
view_op_student_form_library_inherit op.student.form.library.inherit op.student notebook Inherits openeducat_core.view_op_student_form
view_op_student_tree_library_inherit op.student.tree.library.inherit op.student field Inherits openeducat_core.view_op_student_tree
view_op_tag_form op.tag.form op.tag form New
view_op_tag_search op.tag.search op.tag search New
view_op_tag_tree op.tag.tree op.tag tree New
Models touched (17)

New fields (8)
  • book_id Many2one → op.book
    required=True args: 'op.book', 'Book'
  • book_unit_id Many2one → op.book.unit
    required=True args: 'op.book.unit', 'Book Unit'
  • faculty_id Many2one → op.faculty
    args: 'op.faculty', 'Faculty'
  • issued_date Date
    default=fields.Date.today() required=True args: 'Issued Date'
  • library_card_id Many2one → op.library.card
    required=True args: 'op.library.card', 'Library Card'
  • return_date Date
    required=True args: 'Return Date'
  • student_id Many2one → op.student
    args: 'op.student', 'Student'
  • type Selection
    default='student' required=True args: [('student', 'Student'), ('faculty', 'Faculty')], 'Type'
Public methods (3)
  • check_max_issue(self, student_id, library_card_id)
    @api.one
  • do_issue(self)
    @api.one
  • onchange_library_card_id(self)
    @api.onchange('library_card_id')

New fields (3)
  • address Many2one → res.partner
    args: 'res.partner', 'Address'
  • book_ids Many2many → op.book
    string='Book(s)' args: 'op.book'
  • name Char
    required=True size=128 args: 'Name'
Public methods (0)

No public methods.

New fields (13)
  • author_ids Many2many → op.author
    required=True string='Author(s)' args: 'op.author'
  • course_ids Many2many → op.course
    required=True string='Course' args: 'op.course'
  • description Text
    args: 'Description'
  • edition Char
    args: 'Edition'
  • internal_code Char
    size=64 args: 'Internal Code'
  • isbn Char
    size=64 args: 'ISBN Code'
  • movement_line One2many → op.book.movement
    args: 'op.book.movement', 'book_id', 'Movements'
  • name Char
    required=True size=128 args: 'Title'
  • publisher_ids Many2many → op.publisher
    required=True string='Publisher(s)' args: 'op.publisher'
  • queue_ids One2many → op.book.queue
    args: 'op.book.queue', 'book_id', 'Book Queue'
  • subject_ids Many2many → op.subject
    required=True string='Subjects' args: 'op.subject'
  • tags Many2many → op.tag
    string='Tag(s)' args: 'op.tag'
  • unit_ids One2many → op.book.unit
    args: 'op.book.unit', 'book_id', 'Units'
Public methods (0)

No public methods.

New fields (13)
  • actual_return_date Date
    args: 'Actual Return Date'
  • book_id Many2one → op.book
    required=True args: 'op.book', 'Book'
  • book_unit_id Many2one → op.book.unit
    required=True track_visibility='onchange' args: 'op.book.unit', 'Book Unit'
  • faculty_id Many2one → op.faculty
    args: 'op.faculty', 'Faculty'
  • issued_date Date
    default=fields.Date.today() required=True args: 'Issued Date'
  • library_card_id Many2one → op.library.card
    required=True track_visibility='onchange' args: 'op.library.card', 'Library Card'
  • partner_id Many2one → res.partner
    track_visibility='onchange' args: 'res.partner', 'Person'
  • penalty Float
    args: 'Penalty'
  • reserver_name Char
    size=256 args: 'Person Name'
  • return_date Date
    required=True args: 'Return Date'
  • state Selection
    default='available' track_visibility='onchange' args: [('available', 'Available'), ('reserve', 'Reserved'), ('issue', 'Issued'), ('lost', 'Lost'), ('return', 'Returned')], 'Status'
  • student_id Many2one → op.student
    args: 'op.student', 'Student'
  • type Selection
    required=True args: [('student', 'Student'), ('faculty', 'Faculty')], 'Student/Faculty'
Public methods (7)
  • calculate_penalty(self)
    @api.one
  • check_actual_return_date(self)
    @api.constrains('issued_date', 'actual_return_date')
  • do_book_reservation(self)
    @api.multi
    function to reserve book
  • issue_book(self)
    @api.one
    function to issue book
  • onchange_book_unit_id(self)
    @api.onchange('book_unit_id')
  • onchange_library_card_id(self)
    @api.onchange('library_card_id')
  • return_book(self)
    @api.multi
    function to return book

New fields (8)
  • author Char
    required=True size=256 track_visibility='onchange' args: 'Author(s)'
  • course_ids Many2one → op.course
    required=True track_visibility='onchange' args: 'op.course', 'Course'
  • edition Char
    args: 'Edition'
  • name Char
    required=True size=128 args: 'Title'
  • publisher Char
    size=256 args: 'Publisher(s)'
  • requested_id Many2one → res.partner
    default=<expr> args: 'res.partner', 'Requested By'
  • state Selection
    default='draft' readonly=True select=True track_visibility='onchange' args: [('draft', 'Draft'), ('request', 'Requested'), ('reject', 'Rejected'), ('accept', 'Accepted')], 'State'
  • subject_ids Many2one → op.subject
    required=True track_visibility='onchange' args: 'op.subject', 'Subject'
Public methods (3)
  • act_accept(self)
    @api.one
  • act_reject(self)
    @api.one
  • act_requested(self)
    @api.one

New fields (7)
  • book_id Many2one → op.book
    required=True track_visibility='onchange' args: 'op.book', 'Book'
  • date_from Date
    default=fields.Date.today() required=True args: 'From Date'
  • date_to Date
    required=True args: 'To Date'
  • name Char
    copy=False default='/' readonly=True args: 'Sequence No'
  • partner_id Many2one → res.partner
    args: 'res.partner', 'Student/Faculty'
  • state Selection
    copy=False default='request' track_visibility='onchange' args: [('request', 'Request'), ('accept', 'Accepted'), ('reject', 'Rejected')], 'Status'
  • user_id Many2one → res.users
    default=<expr> readonly=True args: 'res.users', 'User'
Public methods (5)
  • create(self, vals)
    @api.model
  • do_accept(self)
    @api.one
  • do_reject(self)
    @api.one
  • do_request_again(self)
    @api.one
  • onchange_user(self)
    @api.onchange('user_id')

New fields (5)
  • barcode Char
    size=20 args: 'Barcode'
  • book_id Many2one → op.book
    required=True track_visibility='onchange' args: 'op.book', 'Book'
  • movement_lines One2many → op.book.movement
    args: 'op.book.movement', 'book_unit_id', 'Movements'
  • name Char
    required=True args: 'Name'
  • state Selection
    default='available' track_visibility='onchange' args: unit_states, 'State'
Public methods (0)

No public methods.

New fields (2)
  • book_movement_lines One2many → op.book.movement
    args: 'op.book.movement', 'faculty_id', 'Movements'
  • library_card_id Many2one → op.library.card
    args: 'op.library.card', 'Library Card'
Public methods (0)

No public methods.

New fields (7)
  • faculty_id Many2one → op.faculty
    args: 'op.faculty', 'Faculty'
  • issue_date Date
    default=fields.Date.today() required=True args: 'Issue Date'
  • library_card_type_id Many2one → op.library.card.type
    required=True args: 'op.library.card.type', 'Card Type'
  • number Char
    required=True size=256 args: 'Number'
  • partner_id Many2one → res.partner
    required=True args: 'res.partner', 'Student/Faculty'
  • student_id Many2one → op.student
    args: 'op.student', 'Student'
  • type Selection
    default='student' required=True args: [('student', 'Student'), ('faculty', 'Faculty')], 'Type'
Public methods (0)

No public methods.

New fields (4)
  • allow_book Integer
    required=True size=10 args: 'No of Books Allowed'
  • duration Integer
    help='Duration in terms of Number of Lead Days' required=True args: 'Duration'
  • name Char
    required=True size=256 args: 'Name'
  • penalty_amt_per_day Float
    required=True args: 'Penalty Amount per Day'
Public methods (1)
  • check_details(self)
    @api.constrains('allow_book', 'duration', 'penalty_amt_per_day')

New fields (3)
  • address_id Many2one → res.partner
    args: 'res.partner', 'Address'
  • book_ids Many2many → op.book
    string='Book(s)' args: 'op.book'
  • name Char
    required=True size=20 args: 'Name'
Public methods (0)

No public methods.

New fields (2)
  • book_movement_lines One2many → op.book.movement
    args: 'op.book.movement', 'student_id', 'Movements'
  • library_card_id Many2one → op.library.card
    args: 'op.library.card', 'Library Card'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    required=True size=64 args: 'Name'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • partner_id Many2one → res.partner
    required=True args: 'res.partner'
Public methods (1)
  • set_partner(self)
    @api.one

New fields (3)
  • actual_return_date Date
    default=<expr> required=True args: 'Actual Return Date'
  • book_id Many2one → op.book
    readonly=True args: 'op.book', 'Book'
  • book_unit_id Many2one → op.book.unit
    readonly=True required=True args: 'op.book.unit', 'Book Unit'
Public methods (1)
  • do_return(self)
    @api.one

New fields (1)
  • actual_return_date Date
    default=<expr> required=True args: 'Actual Return Date'
Public methods (1)
  • assign_return_date(self)
    @api.one