## $Id: interfaces.py 14869 2017-10-12 08:35:31Z henrik $
##
## Copyright (C) 2011 Uli Fouquet & Henrik Bettermann
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##

import zope.i18nmessageid
from zope import schema
from zc.sourcefactory.basic import BasicSourceFactory
from waeup.kofa.interfaces import (SimpleKofaVocabulary,
    ISessionConfiguration, academic_sessions_vocab)

_ = MessageFactory = zope.i18nmessageid.MessageFactory('kofacustom.dspg')

class ICustomSessionConfiguration(ISessionConfiguration):
    """A session configuration object.
    """

    # Base fees, do not remove.

    clearance_fee = schema.Float(
        title = _(u'Acceptance Fee'),
        default = 0.0,
        required = False,
        )

    booking_fee = schema.Float(
        title = _(u'Bed Booking Fee'),
        default = 0.0,
        required = False,
        )

    maint_fee = schema.Float(
        title = _(u'Rent (fallback)'),
        default = 0.0,
        required = False,
        )

    late_registration_fee = schema.Float(
        title = _(u'Late Course Reg. Fee'),
        default = 0.0,
        required = False,
        )

    transcript_fee = schema.Float(
        title = _(u'Transcript Fee'),
        default = 0.0,
        required = False,
        )

    transfer_fee = schema.Float(
        title = _(u'Transfer Fee'),
        default = 0.0,
        required = False,
        )


    # Additional fees in custom package

    certificate_fee = schema.Float(
        title = _(u'ND Certificate Fee'),
        default = 0.0,
        required = True,
        )
    hnd_certificate_fee = schema.Float(
        title = _(u'HND Certificate Fee'),
        default = 0.0,
        required = True,
        )
    pgd_certificate_fee = schema.Float(
        title = _(u'PGD Certificate Fee'),
        default = 0.0,
        required = True,
        )
    state_result_fee = schema.Float(
        title = _(u'ND Statement of Result Fee'),
        default = 0.0,
        required = True,
        )
    hnd_state_result_fee = schema.Float(
        title = _(u'HND Statement of Result Fee'),
        default = 0.0,
        required = True,
        )
    pgd_state_result_fee = schema.Float(
        title = _(u'PGD Statement of Result Fee'),
        default = 0.0,
        required = True,
        )
    transcript_local_fee = schema.Float(
        title = _(u'ND Transcript (local) Fee'),
        default = 0.0,
        required = True,
        )
    hnd_transcript_local_fee = schema.Float(
        title = _(u'HND Transcript (local) Fee'),
        default = 0.0,
        required = True,
        )
    pgd_transcript_local_fee = schema.Float(
        title = _(u'PGD Transcript (local) Fee'),
        default = 0.0,
        required = True,
        )
    transcript_foreign_fee = schema.Float(
        title = _(u'ND Transcript (foreign) Fee'),
        default = 0.0,
        required = True,
        )
    hnd_transcript_foreign_fee = schema.Float(
        title = _(u'HND Transcript (foreign) Fee'),
        default = 0.0,
        required = True,
        )
    pgd_transcript_foreign_fee = schema.Float(
        title = _(u'PGD Transcript (foreign) Fee'),
        default = 0.0,
        required = True,
        )
    ver_result_fee = schema.Float(
        title = _(u'Verification of Result Fee'),
        default = 0.0,
        required = True,
        )
    change_course_fee = schema.Float(
        title = _(u'Change of Course Fee'),
        default = 0.0,
        required = True,
        )
    change_inst_fee = schema.Float(
        title = _(u'Change of Institute Fee'),
        default = 0.0,
        required = True,
        )
    jamb_reject_fee = schema.Float(
        title = _(u'JAMB Rejection Form Fee'),
        default = 0.0,
        required = True,
        )
    cert_of_cert_fee = schema.Float(
        title = _(u'Certification of Certificate Fee'),
        default = 0.0,
        required = True,
        )
    ref_let_fee = schema.Float(
        title = _(u'Recommendation/Reference Letter Fee'),
        default = 0.0,
        required = True,
        )
    proc_cert_fee = schema.Float(
        title = _(u'Processing of Certificate by Proxy Fee'),
        default = 0.0,
        required = True,
        )
    loss_idcard_fee = schema.Float(
        title = _(u'Loss of ID Card Fee (student)'),
        default = 0.0,
        required = True,
        )
    staff_loss_idcard_fee = schema.Float(
        title = _(u'Loss of ID Card Fee (staff)'),
        default = 0.0,
        required = True,
        )
    loss_examcard_fee = schema.Float(
        title = _(u'Loss of Exam Card Fee'),
        default = 0.0,
        required = True,
        )
    loss_result_fee = schema.Float(
        title = _(u'Loss of Result Fee'),
        default = 0.0,
        required = True,
        )
    loss_receipt_fee = schema.Float(
        title = _(u'Loss of Receipt Fee'),
        default = 0.0,
        required = True,
        )
    loss_clearance_fee = schema.Float(
        title = _(u'Loss of Clearance Fee'),
        default = 0.0,
        required = True,
        )
    conv_brochure_fee = schema.Float(
        title = _(u'ND Convocation Brochure Fee'),
        default = 0.0,
        required = True,
        )
    hnd_conv_brochure_fee = schema.Float(
        title = _(u'HND Convocation Brochure Fee'),
        default = 0.0,
        required = True,
        )
    pgd_conv_brochure_fee = schema.Float(
        title = _(u'PGD Convocation Brochure Fee'),
        default = 0.0,
        required = True,
        )
    log_book_fee = schema.Float(
        title = _(u'Log Book Fees'),
        default = 0.0,
        required = True,
        )
    jamb_regularization_fee = schema.Float(
        title = _(u'Jamb Regularization Fee'),
        default = 0.0,
        required = True,
        )
    utme_registration_fee = schema.Float(
        title = _(u'UTME Registration Fee'),
        default = 0.0,
        required = True,
        )
    utme_cbt_fee = schema.Float(
        title = _(u'UTME CBT Fee'),
        default = 0.0,
        required = True,
        )
    nysc_id_card_fee = schema.Float(
        title = _(u'NYSC ID Card Fee'),
        default = 0.0,
        required = True,
        )
    ijmb_result_fee = schema.Float(
        title = _(u'IJMB Result Fee'),
        default = 0.0,
        required = True,
        )
    carryover1_fee = schema.Float(
        title = _(u'1, 2 or 3 Carry-Over Courses Fee'),
        default = 0.0,
        required = True,
        )
    carryover4_fee = schema.Float(
        title = _(u'4 Carry-Over Courses Fee'),
        default = 0.0,
        required = True,
        )
    carryover5_fee = schema.Float(
        title = _(u'5 Carry-Over Courses Fee'),
        default = 0.0,
        required = True,
        )
    carryover6_fee = schema.Float(
        title = _(u'6 Carry-Over Courses Fee'),
        default = 0.0,
        required = True,
        )
    carryover7_fee = schema.Float(
        title = _(u'7 Carry-Over Courses Fee'),
        default = 0.0,
        required = True,
        )
    carryover8_fee = schema.Float(
        title = _(u'8 Carry-Over Courses Fee'),
        default = 0.0,
        required = True,
        )
    carryover9_fee = schema.Float(
        title = _(u'9 Carry-Over Courses Fee'),
        default = 0.0,
        required = True,
        )
    carryover10_fee = schema.Float(
        title = _(u'10 Carry-Over Courses Fee'),
        default = 0.0,
        required = True,
        )
    carryover11_fee = schema.Float(
        title = _(u'11 Carry-Over Courses Fee'),
        default = 0.0,
        required = True,
        )
    carryover12_fee = schema.Float(
        title = _(u'12 Carry-Over Courses Fee'),
        default = 0.0,
        required = True,
        )
    balance_fee = schema.Float(
        title = _(u'Balance Payment'),
        default = 0.0,
        required = True,
        )

    def getSessionString():
        """Returns the session string from the vocabulary.
        """


class ICustomSessionConfigurationAdd(ICustomSessionConfiguration):
    """A session configuration object in add mode.
    """

    academic_session = schema.Choice(
        title = _(u'Academic Session'),
        source = academic_sessions_vocab,
        default = None,
        required = True,
        readonly = False,
        )

ICustomSessionConfigurationAdd[
    'academic_session'].order =  ICustomSessionConfiguration[
    'academic_session'].order