## $Id: interfaces.py 16913 2022-04-07 16:43:08Z 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)'),
        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

    hnd_clearance_fee = schema.Float(
        title = _(u'HND Non-Local Acceptance Fee'),
        default = 0.0,
        required = False,
        )

    nd_clearance_fee = schema.Float(
        title = _(u'ND Non-Local Acceptance Fee'),
        default = 0.0,
        required = False,
        )

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

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

    hndpt_clearance_fee = schema.Float(
        title = _(u'HND Part-Time Acceptance Fee'),
        default = 0.0,
        required = False,
        )

    ndpt_clearance_fee = schema.Float(
        title = _(u'ND Part-Time Acceptance Fee'),
        default = 0.0,
        required = False,
        )

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

    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,
        )

    sports_fee = schema.Float(
        title = _(u'Sports Clearance Levy'),
        default = 0.0,
        required = True,
        )

    siwes_fee = schema.Float(
        title = _(u'SIWES Fee'),
        default = 0.0,
        required = True,
        )

    eed_1_fee = schema.Float(
        title = _(u'EED 1 Fee'),
        default = 0.0,
        required = True,
        )

    eed_2_fee = schema.Float(
        title = _(u'EED 2 Fee'),
        default = 0.0,
        required = True,
        )

    eed_extra_fee = schema.Float(
        title = _(u'EED Extra Fee'),
        default = 0.0,
        required = True,
        )

    olevel_results_1_fee = schema.Float(
        title = _(u'O Level Results Verification 1'),
        default = 0.0,
        required = True,
        )

    olevel_results_2_fee = schema.Float(
        title = _(u'O Level Results Verification 2'),
        default = 0.0,
        required = True,
        )

    eng_1_fee = schema.Float(
        title = _(u'School of Engineering Dues I'),
        default = 0.0,
        required = True,
        )

    eng_2_fee = schema.Float(
        title = _(u'School of Engineering Dues II'),
        default = 0.0,
        required = True,
        )

    sbs_1_fee = schema.Float(
        title = _(u'SBS Pack I'),
        default = 0.0,
        required = True,
        )

    sbs_2_fee = schema.Float(
        title = _(u'SBS Pack II'),
        default = 0.0,
        required = True,
        )

    gns_1_fee = schema.Float(
        title = _(u'GNS Pack I'),
        default = 0.0,
        required = True,
        )

    gns_2_fee = schema.Float(
        title = _(u'GNS Pack II'),
        default = 0.0,
        required = True,
        )

    bfn_fee = schema.Float(
        title = _(u'BFN Pack'),
        default = 0.0,
        required = True,
        )

    mkt_fee = schema.Float(
        title = _(u'MKT Pack'),
        default = 0.0,
        required = True,
        )

    mcn_fee = schema.Float(
        title = _(u'MCN Pack'),
        default = 0.0,
        required = True,
        )

    otm_fee = schema.Float(
        title = _(u'OTM Pack'),
        default = 0.0,
        required = True,
        )

    acct_fee = schema.Float(
        title = _(u'ACCT Pack'),
        default = 0.0,
        required = True,
        )

    bam_fee = schema.Float(
        title = _(u'BAM Pack'),
        default = 0.0,
        required = True,
        )

    pom_fee = schema.Float(
        title = _(u'POM Pack'),
        default = 0.0,
        required = True,
        )

    hrm_fee = schema.Float(
        title = _(u'HRM Pack'),
        default = 0.0,
        required = True,
        )

    hndgrad_fee = schema.Float(
        title = _(u'HND Final Clearance Pack'),
        default = 0.0,
        required = True,
        )

    ndgrad_fee = schema.Float(
        title = _(u'ND Final Clearance Pack'),
        default = 0.0,
        required = True,
        )

    lsfp_penalty_fee = schema.Float(
        title = _(u'Late School Fee Payment Penalty Fee'),
        default = 0.0,
        required = True,
        )

    conv_fee = schema.Float(
        title = _(u'Convocation Pack'),
        default = 0.0,
        required = True,
        )

    facilities_fee = schema.Float(
        title = _(u'Facilities Upgrade Fee'),
        default = 0.0,
        required = True,
        )

    sas_1_fee = schema.Float(
        title = _(u'SAS Pack I'),
        default = 0.0,
        required = True,
        )

    sas_2_fee = schema.Float(
        title = _(u'SAS Pack II'),
        default = 0.0,
        required = True,
        )

    com_fee = schema.Float(
        title = _(u'COM Pack'),
        default = 0.0,
        required = True,
        )

    sta_fee = schema.Float(
        title = _(u'STA Pack'),
        default = 0.0,
        required = True,
        )

    slt_1_fee = schema.Float(
        title = _(u'SLT Pack I'),
        default = 0.0,
        required = True,
        )

    slt_2_fee = schema.Float(
        title = _(u'SLT Pack II'),
        default = 0.0,
        required = True,
        )

    lis_fee = schema.Float(
        title = _(u'LIS Pack'),
        default = 0.0,
        required = True,
        )

    htm_fee = schema.Float(
        title = _(u'HTM Pack'),
        default = 0.0,
        required = True,
        )

    pa_fee = schema.Float(
        title = _(u'PAD Pack'),
        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