## $Id: interfaces.py 14664 2017-04-05 04:41:10Z 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('waeup.kwarapoly')

# It's recommended to replicate all fields from the base package here.
class ICustomSessionConfiguration(ISessionConfiguration):
    """A session configuration object.
    """

    # Base fees, do not remove.

    school_fee_base = schema.Float(
        title = _(u'School Fee (ignored)'),
        default = 0.0,
        required = True,
        )

    clearance_fee = schema.Float(
        title = _(u'Clearance Fee'),
        default = 0.0,
        required = True,
        )

    booking_fee = schema.Float(
        title = _(u'Booking Fee'),
        default = 0.0,
        required = True,
        )

    # Additional fees in custom package

    maint_fee = schema.Float(
        title = _(u'Maintenance Fee (fallback)'),
        default = 0.0,
        required = True,
        )
    gown_fee = schema.Float(
        title = _(u'Gown Fee'),
        default = 0.0,
        required = True,
        )
    transfer_fee = schema.Float(
        title = _(u'Transfer Fee'),
        default = 0.0,
        required = True,
        )
    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,
        )
    balance_fee = schema.Float(
        title = _(u'Balance'),
        default = 0.0,
        required = True,
        )
    penalty_ug = schema.Float(
        title = _(u'UG Penalty Fee'),
        default = 0.0,
        required = True,
        )
    penalty_pg = schema.Float(
        title = _(u'PG Penalty Fee'),
        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