Exemple #1
0
def replymsg(driver, data):
    if kelas.getKodeDosen(data[0]):
        kode_dosen = kelas.getKodeDosen(data[0])
        dosen_homebase = getHomebaseDosen(kode_dosen)
        nama_file = f'jadwal_sidang_ta_{dosen_homebase}.xlsx'
        status, df = openJadwalExcel(nama_file)
        if status == False:
            msgreply = 'mohon untuk memberikan jadwal sidang dalam bentuk excel ke admin'
        else:
            if 'penguji pendamping' in message.normalize(data[3]):
                msgreply = 'ini dia jadwal sidangnya yaaa....\n\n'
                for i, j in df.iterrows():
                    if j[3] == kode_dosen:
                        msgreply += f'PENGUJI UTAMA: {kelas.getNamaDosen(j[2])}\n' \
                                    f'PENGUJI PENDAMPING: {kelas.getNamaDosen(j[3])}\n' \
                                    f'NPM MAHASISWA: {j[4]}\n' \
                                    f'NAMA MAHASISWA: {kelas.getStudentNameOnly(j[4])}\n' \
                                    f'JADWAL SIDANG: {j[5]}\n' \
                                    f'JAM SIDANG: {j[6]}\n\n'
            elif 'penguji utama' in message.normalize(data[3]):
                msgreply = 'ini dia jadwal sidangnya yaaa....\n\n'
                for i, j in df.iterrows():
                    if j[2] == kode_dosen:
                        msgreply += f'PENGUJI UTAMA: {kelas.getNamaDosen(j[2])}\n' \
                                    f'PENGUJI PENDAMPING: {kelas.getNamaDosen(j[3])}\n' \
                                    f'NPM MAHASISWA: {j[4]}\n' \
                                    f'NAMA MAHASISWA: {kelas.getStudentNameOnly(j[4])}\n' \
                                    f'JADWAL SIDANG: {j[5]}\n' \
                                    f'JAM SIDANG: {j[6]}\n\n'
            else:
                msgreply = 'ini dia jadwal sidangnya yaaa....\n\n'
                for i, j in df.iterrows():
                    if j[2] == kode_dosen or j[3] == kode_dosen:
                        msgreply+=f'PENGUJI UTAMA: {kelas.getNamaDosen(j[2])}\n' \
                                  f'PENGUJI PENDAMPING: {kelas.getNamaDosen(j[3])}\n' \
                                  f'NPM MAHASISWA: {j[4]}\n' \
                                  f'NAMA MAHASISWA: {kelas.getStudentNameOnly(j[4])}\n' \
                                  f'JADWAL SIDANG: {j[5]}\n' \
                                  f'JAM SIDANG: {j[6]}\n\n'
    else:
        mahasiswa_homebase = kelas.getProdiIDwithStudentID(
            kelas.getNpmandNameMahasiswa(data[0])[0])
        nama_file = f'jadwal_sidang_ta_{mahasiswa_homebase}.xlsx'
        status, df = openJadwalExcel(nama_file)
        if status == False:
            msgreply = 'mohon untuk memberikan jadwal sidang dalam bentuk excel ke admin'
        else:
            msgreply = 'ini dia jadwal sidangnya yaaa....\n\n'
            for i, j in df.iterrows():
                if str(j[4]) == str(kelas.getNpmandNameMahasiswa(data[0])[0]):
                    msgreply += f'PENGUJI UTAMA: {kelas.getNamaDosen(j[2])}\n' \
                                f'PENGUJI PENDAMPING: {kelas.getNamaDosen(j[3])}\n' \
                                f'NPM MAHASISWA: {j[4]}\n' \
                                f'NAMA MAHASISWA: {kelas.getStudentNameOnly(j[4])}\n' \
                                f'JADWAL SIDANG: {j[5]}\n' \
                                f'JAM SIDANG: {j[6]}\n\n'
    return msgreply
Exemple #2
0
def replymsg(driver, data):
    npm, nama = kelas.getNpmandNameMahasiswa(data[0])
    datava = getDataPayment(npm)
    if datava:
        datenow = datetime.date(datetime.now()).strftime('%d-%m-%Y')
        yearnow = datetime.date(datetime.now()).strftime('%Y')
        trxid = datava['trx_id']
        npm = app.cekNpmInTrxID(trxid)
        tipesemester = app.cekTipeSemester(trxid)
        tahunid = f'{yearnow}{tipesemester}'
        prodiid = f'{npm[0]}{npm[3]}'
        virtual_account = datava['virtual_account']
        customer_name = datava['customer_name']
        trx_amount = datava['trx_amount']
        payment_amount = datava['payment_amount']
        cumulative_payment_amount = datava['cumulative_payment_amount']
        payment_ntb = datava['payment_ntb']
        datetime_payment = datava['datetime_payment']
        datetime_payment_iso8601 = datava['datetime_payment_iso8601']
        ws = app.openfile().active
        prodi_singkatan = app.getProdiSingkatanFromProdiID(
            kelas.getProdiIDwithStudentID(npm)).lower()
        tingkat = f"tk{int(datetime.now().strftime('%Y')) - int(kelas.getTahunAngkatanWithStudentID(npm)) + 1}"
        angkatan = kelas.getTahunAngkatanWithStudentID(npm)
        key = f'{prodi_singkatan}{tingkat}{angkatan}'
        default_amount_payment = app.getDataDefault(key, ws)
        message = f'Hai haiiiii kamu sudah transfer pembayaran semester yaaaa dengan\n\n*NPM: {npm}*\n*Nama: {customer_name}*\n*Virtual Account: {virtual_account}*\n*Tanggal: {datetime_payment}*\n*Jumlah Transfer: {app.floatToRupiah(payment_amount)}*\n*Total Sudah Bayar: {app.floatToRupiah(cumulative_payment_amount)}*\n*Total Harus Bayar: {app.floatToRupiah(trx_amount)}*\n*Sisa Yang Harus Dibayar: {app.floatToRupiah(float(int(trx_amount)-int(cumulative_payment_amount)))}*'
        if int(trx_amount) > int(default_amount_payment):
            amount_tunggakan = int(trx_amount) - int(default_amount_payment)
            fifty_percent_default_payment = int(default_amount_payment) / 2
            minimum_payment = int(amount_tunggakan) + int(
                fifty_percent_default_payment)
        else:
            minimum_payment = int(trx_amount) / 2
        app.openfile().close()
        if float(cumulative_payment_amount) >= float(minimum_payment):
            if app.cekSudahAdaKHS(npm, tahunid, 'A'):
                app.updateBiayaKHS(npm, tahunid,
                                   trx_amount - cumulative_payment_amount)
                message += f'\n\nterima kasih yaaa sudah bayar semester, semangat kuliahnya kakaaaa......'
            else:
                message += f'\n\nKamu *sudah bisa* isi KRS yaaa coba cek di *SIAP* yaaa...., #BOTNAME# ucapkan terima kasihhhh dan jangan salah saat isi KRS yaaa....'
                message = message.replace('#BOTNAME#', config.bot_name)
                app.insertnewKHS(npm, tahunid, prodiid,
                                 app.cekSesiSemester(tipesemester, npm),
                                 trx_amount - cumulative_payment_amount)
        else:
            message += f'\n\nYahhhh kamu *belum bisa* isi KRS nihhhh coba *buat surat* lalu *ajukan ke pihak BAUK* agar kamu bisa isi KRS..... Suratnya udah {config.bot_name} kirim ke *{kelas.getStudentEmail(npm)}*'
            surat_va.makePdfAndSendToEmail(npm)
        msgreply = message
    else:
        msgreply = 'kamu belum ada transfer'
    return msgreply
Exemple #3
0
def mainMakePdf(list_mahasiswa, kode_dosen, tipe_bimbingan):

    doc = SimpleDocTemplate(
        f'./beritaacarapitak/BERITA ACARA PITAK-{tipe_bimbingan.upper()}-{kelas.getTahunID()}-{kode_dosen}-{kelas.getEmailDosen(kode_dosen)}.pdf',
        pagesize=A4,
        rightMargin=30,
        leftMargin=30,
        topMargin=30,
        bottomMargin=18)
    doc.pagesize = portrait(A4)
    elements = []

    logo = Image("logoKAMBING.PNG", 3.5 * inch, 1 * inch)
    logo.hAlign = "LEFT"

    styles = getSampleStyleSheet()
    styles.add(ParagraphStyle(name='Justify', alignment=TA_JUSTIFY))
    styles.add(ParagraphStyle(name='Center', alignment=TA_CENTER))
    styles.add(ParagraphStyle(name='Right', alignment=TA_RIGHT))

    for npm in list_mahasiswa:
        studentid, studentname = getDataMahasiswa(npm)
        status_nilai, nilai_total = totalNilai(
            studentid, config.MINIMUM_PERTEMUAN_BIMBINGAN, kode_dosen,
            tipe_bimbingan)
        status_nilai = True
        if status_nilai:
            JUDUL_BIMBINGAN = f"{getJudulFromNpm(npm)}"
            KODE_DOSEN = kode_dosen
            NAMA_DOSEN = kelas.getNamaDosen(KODE_DOSEN)
            NIDN_DOSEN = getNIDNDosen(KODE_DOSEN)
            TAHUN_AJARAN = kelas.getTahunAjaran(
                kelas.getProdiIDwithStudentID(studentid)).split(' ')[-1]
            makePdf(npm_mahasiswa=studentid,
                    nama_mahasiswa=studentname,
                    tipe_bimbingan=getTipeBimbingan(studentid),
                    nama_pembimbing=NAMA_DOSEN,
                    kode_dosen_pembimbing=KODE_DOSEN,
                    nidn_pembimbing=NIDN_DOSEN,
                    tahun_ajaran=TAHUN_AJARAN,
                    photo=cekPhotoRoute(studentid),
                    judul=JUDUL_BIMBINGAN,
                    total_nilai=str(nilai_total),
                    elements=elements,
                    logo=logo,
                    styles=styles,
                    kode_dosen_koordinator='NN056L')
            elements.append(PageBreak())

        else:
            pass

    doc.build(elements)
def paymentSpp(npm):
    prodi_singkatan = app.getProdiSingkatanFromProdiID(kelas.getProdiIDwithStudentID(npm)).lower()
    tingkat = f"tk{int(kelas.getTahunID()[:-1]) - int(kelas.getTahunAngkatanWithStudentID(npm)) + 1}"
    angkatan = kelas.getTahunAngkatanWithStudentID(npm)
    payment_spp = getSPP(npm)
    if angkatan == '2020':
        return f'*DATA VIRTUAL ACCOUNT BNI SPP (Semester Ganjil 2020/2021)*\n\n' \
                   f'*Kode Transaksi: {payment_spp["trx_id"]}*\n' \
                   f'*Virtual Account: {payment_spp["virtual_account"]}*\n' \
                   f'Status Virtual Account: Aktif\n' \
                   f'Customer Name: {payment_spp["customer_name"]}\n' \
                   f'Customer Email: {payment_spp["customer_email"]}\n' \
                   f'Customer Phone Number: {payment_spp["customer_phone"]}\n' \
                   f'Jumlah Tagihan: {app.floatToRupiah(float(payment_spp["trx_amount"]))}\n'
    key = f'{prodi_singkatan}{tingkat}{angkatan}'
    ws = app.openfile().active
    biaya_pokok_spp = app.getDataDefault(key, ws)
    app.openfile().close()
    try:
        if biaya_pokok_spp:
            biaya_pokok_spp=int(biaya_pokok_spp)
        else:
            if prodi_singkatan[:2] == 'd4':
                biaya_pokok_spp = 2500000
            elif prodi_singkatan[:2] == 'd3':
                biaya_pokok_spp = 2000000
            else:
                biaya_pokok_spp = int(biaya_pokok_spp)
        if int(payment_spp['trx_amount']) > int(biaya_pokok_spp):
            tunggakan = float(int(payment_spp['trx_amount']) - int(biaya_pokok_spp))
            amount_tunggakan = int(payment_spp["trx_amount"]) - int(biaya_pokok_spp)
            fifty_percent_default_payment = int(biaya_pokok_spp) * (75/100)
            minimum_payment = int(amount_tunggakan) + int(fifty_percent_default_payment)
        else:
            tunggakan = float(0)
            potongan = int(biaya_pokok_spp) - int(payment_spp['trx_amount'])
            minimum_payment = (int(biaya_pokok_spp) - int(potongan)) * (75/100)
        if datetime.now() < payment_spp['expired_date']:
            msgreply = f'*DATA VIRTUAL ACCOUNT BNI SPP (Semester Genap 2020/2021)*\n\n' \
                       f'*Kode Transaksi: {payment_spp["trx_id"]}*\n' \
                       f'*Virtual Account: {payment_spp["virtual_account"]}*\n' \
                       f'Status Virtual Account: Aktif\n' \
                       f'Customer Name: {payment_spp["customer_name"]}\n' \
                       f'Customer Email: {payment_spp["customer_email"]}\n' \
                       f'Customer Phone Number: {payment_spp["customer_phone"]}\n' \
                       f'Biaya Paket SPP Per Semester: {app.floatToRupiah(float(biaya_pokok_spp))}\n' \
                       f'Biaya Tunggakan SPP: {app.floatToRupiah(tunggakan)}\n' \
                       f'Jumlah Tagihan: {app.floatToRupiah(float(payment_spp["trx_amount"]))}\n'
        else:
            msgreply = f'*DATA SPP TIDAK ADA*\n\n'
    except Exception as error:
        msgreply = f'Nomor Hp kamu Benerin dulu dongggg yang bener baru {config.bot_name} kasih liat datanya....\nATAU\nData kamu belum diupload..\n\n'
    return msgreply
Exemple #5
0
def replymsg(driver, data):
    npm, nama_mahasiswa, prodi_id, phonenumber, email, penasehat_akademik = getDataMahasiswa(
        data[0])
    virtual_account, customer_name, customer_email, customer_phone, trx_amount = getDataVaforMahasiswa(
        data[0])
    ws = app.openfile().active
    prodi_singkatan = app.getProdiSingkatanFromProdiID(
        kelas.getProdiIDwithStudentID(npm)).lower()
    tingkat = f"tk{int(datetime.now().strftime('%Y')) - int(kelas.getTahunAngkatanWithStudentID(npm)) + 1}"
    angkatan = kelas.getTahunAngkatanWithStudentID(npm)
    key = f'{prodi_singkatan}{tingkat}{angkatan}'
    biaya_pokok_spp = app.getDataDefault(key, ws)
    if trx_amount > biaya_pokok_spp:
        tunggakan = float(int(trx_amount) - int(biaya_pokok_spp))
        lima_puluh_persen_spp = int(biaya_pokok_spp / 2)
        minimum_pembayaran = tunggakan + lima_puluh_persen_spp
    else:
        tunggakan = float(0)
        minimum_pembayaran = int(biaya_pokok_spp / 2)
    app.openfile().close()
    ayah, ibu, handphoneortu = getNamaOrangTua(npm)
    msgreply=f'*BIODATA MAHASISWA*\n' \
             f'NPM: {npm}\n' \
             f'Nama: {nama_mahasiswa}\n' \
             f'Prodi: {kelas.getProdiNameWithStudentID(npm)}\n' \
             f'Nomor Handphone: {phonenumber}\n' \
             f'E-mail: {email}\n' \
             f'Dosen Wali: {kelas.getNamaDosen(penasehat_akademik)}\n' \
             f'Nama Orang Tua/Wali: {ayah} (Ayah) | {ibu} (Ibu)\n' \
             f'No HP orang Tua/Wali: {handphoneortu}\n\n' \
             f'*DATA VIRTUAL ACCOUNT BNI (Semester Ganjil 2020/2021)*\n' \
             f'Virtual Account: {virtual_account}\n' \
             f'Status Virtual Account: Aktif\n' \
             f'Customer Name: {customer_name}\n' \
             f'Customer Email: {customer_email}\n' \
             f'Customer Phone Number: {customer_phone}\n' \
             f'Biaya Pokok SPP: {app.floatToRupiah(float(biaya_pokok_spp))}\n' \
             f'Biaya Tunggakan SPP: {app.floatToRupiah(tunggakan)}\n' \
             f'Biaya Paket SPP Per Semester: {app.floatToRupiah(float(trx_amount))}\n' \
             f'Biaya Minimal Pembayaran: {app.floatToRupiah(float(trx_amount)/2)}\n' \
             f'Batas KRS: 12 Oktober 2020 - 16 Oktober 2020\n\n'\
             f'*CATATAN:* Untuk mempercepat layanan KRS Realtime *(langsung bayar langsung aktif dan bisa isi KRS)* anda diwajibkan melakukan pembayaran SPP menggunakan account VA anda, apabila pembayaran SPP tidak menggunakan account VA atau menggunakan metode transfer ke rekening YPBPI atau Giro Pos maka pengisian KRS dan aktivasi membutuhkan waktu 2 s.d 4 hari untuk mengecek bukti validasi pembayaran anda. Mohon kerjasamanya.'
    return msgreply
Exemple #6
0
def replymsg(driver, data):
    msgreply = ''
    npms = kelas.getStudentIdFromParentPhoneNumber(data[0])
    for npm in npms:
        npm = npm[0]
        nama = kelas.getStudentNameOnly(npm)
        for trx_id in getTrxIDList(npm):
            trx_id = trx_id[0]
            payment = getDataPembayaran(trx_id)
            kode_transaksi = trx_id
            judul_transaksi = trx_id.split('-')[1]
            virtual_account = payment['virtual_account']
            customer_name = payment['customer_name']
            trx_amount = payment['trx_amount']
            payment_amount = payment['payment_amount']
            cumulative_payment_amount = payment['cumulative_payment_amount']
            datetime_payment = payment['datetime_payment']
            percentage = ''
            if 'SPP' in trx_id:
                npm = app.cekNpmInTrxID(trx_id)
                ws = app.openfile().active
                prodi_singkatan = app.getProdiSingkatanFromProdiID(
                    kelas.getProdiIDwithStudentID(npm)).lower()
                tingkat = f"tk{int(kelas.getTahunID()[:-1]) - int(kelas.getTahunAngkatanWithStudentID(npm)) + 1}"
                angkatan = kelas.getTahunAngkatanWithStudentID(npm)
                if angkatan == '2020':
                    pass
                else:
                    key = f'{prodi_singkatan}{tingkat}{angkatan}'
                    default_amount_payment = app.getDataDefault(key, ws)
                    if int(trx_amount) > int(default_amount_payment):
                        amount_tunggakan = int(trx_amount) - int(
                            default_amount_payment)
                        transfer_spp = int(cumulative_payment_amount) - int(
                            amount_tunggakan)
                        percentage = float(
                            int(transfer_spp) /
                            int(default_amount_payment)) * 100
                    else:
                        potongan = int(default_amount_payment) - int(
                            trx_amount)
                        cumulative_payment_amount += potongan
                        transfer_spp = int(cumulative_payment_amount)
                        percentage = float(
                            int(transfer_spp) /
                            int(default_amount_payment)) * 100
                    app.openfile().close()
            if angkatan == '2020':
                msgreply += f'Jenis Pembayaran: *{judul_transaksi}*\n' \
                            f'Kode Transaksi: *{kode_transaksi}*\n' \
                            f'Virtual Account: *{virtual_account}*\n' \
                            f'Nama Pelanggan: *{customer_name}*\n' \
                            f'Jumlah Yang Harus Dibayar: *{app.floatToRupiah(float(trx_amount))}*\n' \
                            f'Jumlah Transfer: *{app.floatToRupiah(float(payment_amount))}*\n' \
                            f'Total Transfer: *{app.floatToRupiah(float(cumulative_payment_amount))}*\n' \
                            f'Tanggal dan Jam Transfer: *{datetime_payment}*\n\n'
            else:
                msgreply += f'Jenis Pembayaran: *{judul_transaksi}*\n' \
                            f'Kode Transaksi: *{kode_transaksi}*\n' \
                            f'Virtual Account: *{virtual_account}*\n' \
                            f'Nama Pelanggan: *{customer_name}*\n' \
                            f'Jumlah Yang Harus Dibayar: *{app.floatToRupiah(float(trx_amount))}*\n' \
                            f'Jumlah Transfer: *{app.floatToRupiah(float(payment_amount))}*\n' \
                            f'Total Transfer: *{app.floatToRupiah(float(cumulative_payment_amount))}*\n' \
                            f'Tanggal dan Jam Transfer: *{datetime_payment}*\n' \
                            f'Persentase Pembayaran SPP: {round(percentage)}%\n\n'
    return msgreply
def callback_api_va(token):
    try:
        datenow = datetime.date(datetime.now()).strftime('%d-%m-%Y')
        yearnow=datetime.date(datetime.now()).strftime('%Y')
        req=request.json
        trxid=req['trx_id']
        npm=cekNpmInTrxID(trxid)
        tipesemester=cekTipeSemester(trxid)
        tahunid=f'{yearnow}{tipesemester}'
        prodiid=f'{npm[0]}{npm[3]}'
        virtual_account=req['virtual_account']
        customer_name=req['customer_name']
        trx_amount=req['trx_amount']
        payment_amount=req['payment_amount']
        cumulative_payment_amount=req['cumulative_payment_amount']
        payment_ntb=req['payment_ntb']
        datetime_payment=req['datetime_payment']
        datetime_payment_iso8601=req['datetime_payment_iso8601']
        resultpasscode, status = decryptToken(config.key_va, config.iv_va, token)
        if 'SPP' in trxid.split('-'):
            if status:
                passcodetrxid=resultpasscode.split(';')[0].replace('\n', '').replace(' ', '')
                passcodevirtualaccount=resultpasscode.split(';')[1].replace('\n', '').replace(' ', '')
                passcodedatetime=resultpasscode.split(';')[2].replace('\n', '').replace(' ', '')
                if passcodetrxid == trxid and passcodevirtualaccount == virtual_account and passcodedatetime == datenow:
                    message = f'Hai haiiiii kamu sudah transfer pembayaran semester yaaaa dengan{config.whatsapp_api_lineBreak}{config.whatsapp_api_lineBreak}*NPM: {npm}*{config.whatsapp_api_lineBreak}*Nama: {customer_name}*{config.whatsapp_api_lineBreak}*Virtual Account: {virtual_account}*{config.whatsapp_api_lineBreak}*Tanggal: {datetime_payment}*{config.whatsapp_api_lineBreak}*Jumlah Transfer: {floatToRupiah(payment_amount)}*{config.whatsapp_api_lineBreak}*Total Sudah Bayar: {floatToRupiah(cumulative_payment_amount)}*{config.whatsapp_api_lineBreak}*Total Harus Bayar: {floatToRupiah(trx_amount)}*'
                    ws = openfile().active
                    prodi_singkatan = getProdiSingkatanFromProdiID(kelas.getProdiIDwithStudentID(npm)).lower()
                    tingkat = f"tk{int(datetime.now().strftime('%Y')) - int(kelas.getTahunAngkatanWithStudentID(npm)) + 1}"
                    angkatan = kelas.getTahunAngkatanWithStudentID(npm)
                    key = f'{prodi_singkatan}{tingkat}{angkatan}'
                    default_amount_payment = getDataDefault(key, ws)
                    if int(trx_amount) > int(default_amount_payment):
                        amount_tunggakan = int(trx_amount) - int(default_amount_payment)
                        fifty_percent_default_payment = int(default_amount_payment) / 2
                        minimum_payment = int(amount_tunggakan) + int(fifty_percent_default_payment)
                    else:
                        minimum_payment = int(trx_amount) / 2
                    openfile().close()
                    if float(cumulative_payment_amount) >= float(minimum_payment):
                        if cekSudahAdaKHS(npm, tahunid, 'A'):
                            updateBiayaKHS(npm, tahunid, trx_amount-cumulative_payment_amount)
                            message += f'{config.whatsapp_api_lineBreak}{config.whatsapp_api_lineBreak}terima kasih yaaa sudah bayar semester, semangat kuliahnya kakaaaa......'
                        else:
                            message += f'{config.whatsapp_api_lineBreak}{config.whatsapp_api_lineBreak}Kamu *sudah bisa* isi KRS yaaa coba cek di *SIAP* yaaa...., #BOTNAME# ucapkan terima kasihhhh dan jangan salah saat isi KRS yaaa....'
                            message = message.replace('#BOTNAME#', config.bot_name)
                            insertnewKHS(npm, tahunid, prodiid, cekSesiSemester(tipesemester, npm), trx_amount-cumulative_payment_amount)
                        wa.setOutbox(kelas.getHandphoneMahasiswa(npm), message)
                        return make_response(jsonify(
                            {
                                "message": "success",
                                "status": "krs otomatis"
                            }
                        ), 200)
                    else:
                        message+=f'{config.whatsapp_api_lineBreak}{config.whatsapp_api_lineBreak}Yahhhh kamu *belum bisa* isi KRS nihhhh coba *buat surat* lalu *ajukan ke pihak BAUK* agar kamu bisa isi KRS..... Suratnya udah {config.bot_name} kirim ke *{kelas.getStudentEmail(npm)}*'
                        wa.setOutbox(kelas.getHandphoneMahasiswa(npm), message)
                        tes=surat_va.makePdfAndSendToEmail(npm)
                        return make_response(jsonify(
                            {
                                "message": "success",
                                "status": "kirim whatsapp bikin surat"
                            }
                        ), 200)
                else:
                    return make_response(jsonify({'message': 'bad token'}), 401)
            else:
                return make_response(jsonify({'message': 'bad token'}), 401)
        else:
            return make_response(jsonify({'message': 'not spp'}), 200)
    except Exception as e:
        return {
            "code": 404,
            "message": f"ERROR={e}"
        }
def replymsg(driver, data):
    npm, nama = kelas.getNpmandNameMahasiswa(data[0])
    datava = getDataPayment(npm)
    if datava:
        datenow = datetime.date(datetime.now()).strftime('%d-%m-%Y')
        yearnow = datetime.date(datetime.now()).strftime('%Y')
        trxid = datava['trx_id']
        npm = app.cekNpmInTrxID(trxid)
        tipesemester = app.cekTipeSemester(trxid)
        tahunid = f'{yearnow}{tipesemester}'
        prodiid = getProdiIDfromNPM(npm)
        if prodiid == '64':
            prodiid = '54'
        virtual_account = datava['virtual_account']
        customer_name = datava['customer_name']
        trx_amount = datava['trx_amount']
        payment_amount = datava['payment_amount']
        cumulative_payment_amount = datava['cumulative_payment_amount']
        payment_ntb = datava['payment_ntb']
        datetime_payment = datava['datetime_payment']
        datetime_payment_iso8601 = datava['datetime_payment_iso8601']
        ws = app.openfile().active
        prodi_singkatan = app.getProdiSingkatanFromProdiID(
            kelas.getProdiIDwithStudentID(npm)).lower()
        tingkat = f"tk{int(kelas.getTahunID()[:-1]) - int(kelas.getTahunAngkatanWithStudentID(npm)) + 1}"
        angkatan = kelas.getTahunAngkatanWithStudentID(npm)
        message = f'Hai haiiiii kamu sudah transfer pembayaran semester yaaaa dengan\n\n*NPM: {npm}*\n*Nama: {customer_name}*\n*Virtual Account: {virtual_account}*\n*Tanggal: {datetime_payment}*\n*Jumlah Transfer: {app.floatToRupiah(payment_amount)}*\n*Total Sudah Bayar: {app.floatToRupiah(cumulative_payment_amount)}*\n*Total Harus Bayar: {app.floatToRupiah(trx_amount)}*\n*Sisa Yang Harus Dibayar: {app.floatToRupiah(float(int(trx_amount)-int(cumulative_payment_amount)))}*'
        if str(angkatan) == '2020':
            biaya_sisa = trx_amount - cumulative_payment_amount
            if biaya_sisa <= 0:
                percentage = 100
            else:
                percentage = 75
            app.updateBiayaKHS(npm, kelas.getTahunID(), biaya_sisa, percentage)
            message += f'\n\nterima kasih yaaa sudah bayar semester, semangat kuliahnya kakaaaa......'
            return message
            # return f'Mohon maaf untuk angkatan {angkatan}, sementara waktu verifikasi keuangan *BELUM* dapat dilakukan silahkan *VERIFIKASI KEMBALI SETELAH* tanggal *4 Desember 2020*.'
        key = f'{prodi_singkatan}{tingkat}{angkatan}'
        default_amount_payment = app.getDataDefault(key, ws)
        if default_amount_payment:
            default_amount_payment = int(default_amount_payment)
        else:
            if prodi_singkatan[:2] == 'd4':
                default_amount_payment = 2500000
            elif prodi_singkatan[:2] == 'd3':
                default_amount_payment = 2000000
            else:
                default_amount_payment = int(default_amount_payment)
        message = f'Hai haiiiii kamu sudah transfer pembayaran semester yaaaa dengan\n\n*NPM: {npm}*\n*Nama: {customer_name}*\n*Virtual Account: {virtual_account}*\n*Tanggal: {datetime_payment}*\n*Jumlah Transfer: {app.floatToRupiah(payment_amount)}*\n*Total Sudah Bayar: {app.floatToRupiah(cumulative_payment_amount)}*\n*Total Harus Bayar: {app.floatToRupiah(trx_amount)}*\n*Sisa Yang Harus Dibayar: {app.floatToRupiah(float(int(trx_amount)-int(cumulative_payment_amount)))}*'
        if int(trx_amount) > int(default_amount_payment):
            amount_tunggakan = int(trx_amount) - int(default_amount_payment)
            fifty_percent_default_payment = int(default_amount_payment) / 2
            minimum_payment = int(amount_tunggakan) + int(
                fifty_percent_default_payment)
            transfer_spp = int(cumulative_payment_amount) - int(
                amount_tunggakan)
            percentage = int(
                float(int(transfer_spp) / int(default_amount_payment)) * 100)
        else:
            potongan = int(default_amount_payment) - int(trx_amount)
            minimum_payment = int(default_amount_payment) / 2
            cumulative_payment_amount += potongan
            transfer_spp = int(cumulative_payment_amount)
            percentage = int(
                float(int(transfer_spp) / int(default_amount_payment)) * 100)
        if percentage >= 75 and percentage <= 100:
            if percentage == 100:
                percentage = 100
            else:
                percentage = 75
        else:
            percentage = 0
        app.openfile().close()
        if float(cumulative_payment_amount) >= float(minimum_payment):
            if app.cekSudahAdaKHS(npm, kelas.getTahunID(), 'A'):
                app.updateBiayaKHS(npm, kelas.getTahunID(),
                                   trx_amount - cumulative_payment_amount,
                                   percentage)
                message += f'\n\nterima kasih yaaa sudah bayar semester, semangat kuliahnya kakaaaa......'
            else:
                message += f'\n\nKamu *sudah bisa* isi KRS yaaa coba cek di *SIAP* yaaa...., #BOTNAME# ucapkan terima kasihhhh dan jangan salah saat isi KRS yaaa....'
                message = message.replace('#BOTNAME#', config.bot_name)
                app.insertnewKHS(npm, kelas.getTahunID(), prodiid,
                                 app.cekSesiSemester(tipesemester, npm),
                                 trx_amount - cumulative_payment_amount,
                                 percentage)
        else:
            message += f'\n\nYahhhh kamu *belum bisa* isi KRS nihhhh coba *buat surat* lalu *ajukan ke pihak BAUK* agar kamu bisa isi KRS..... Suratnya udah {config.bot_name} kirim ke *{kelas.getStudentEmail(npm)}*'
            surat_va.makePdfAndSendToEmail(npm)
        msgreply = message
    else:
        msgreply = 'kamu belum ada transfer'
    return msgreply
def replymsg(driver, data):
    ssl._create_default_https_context = ssl._create_unverified_context
    num = numbers.normalize(data[0])
    studentid,studentname=kelas.getNpmandNameMahasiswa(num)
    tipe_bimbingan = cek_bimbingan_dosen.cekTipeBimbingan(data[3])
    statusapprovalkambing = cekApprovalKambingAtBeginning(studentid, tipe_bimbingan)
    if tipe_bimbingan:
        if statusapprovalkambing is not None:
            if tipe_bimbingan == 'ta':
                if 'false' in statusapprovalkambing or '' in statusapprovalkambing:
                    msgreply = 'wiwiwiwiwi KAMBING kamu belum di approve nih sama Bapak/Ibu dosen yang ini nih:'
                    if 'false' == statusapprovalkambing[0] or '' == statusapprovalkambing[0]:
                        kodedosen1 = getKodeDosenBimbingan(studentid)[0]
                        namadosen = kelas.getNamaDosen(kodedosen1)
                        msgreply += f'\n{kodedosen1} | {namadosen} | PEMBIMBING 1'
                    if 'false' == statusapprovalkambing[1] or '' == statusapprovalkambing[1]:
                        kodedosen1 = getKodeDosenBimbingan(studentid)[1]
                        namadosen = kelas.getNamaDosen(kodedosen1)
                        msgreply += f'\n{kodedosen1} | {namadosen} | PEMBIMBING 2'
                else:
                    KODE_DOSEN_BIMBINGAN = getKodeDosenBimbingan(studentid)
                    status_nilai1, nilai_total1 = totalNilai(studentid, config.MINIMUM_PERTEMUAN_BIMBINGAN,
                                                             KODE_DOSEN_BIMBINGAN[0])
                    status_nilai2, nilai_total2 = totalNilai(studentid, config.MINIMUM_PERTEMUAN_BIMBINGAN,
                                                             KODE_DOSEN_BIMBINGAN[1])
                    if status_nilai1 and status_nilai2:
                        JUDUL_BIMBINGAN = getJudulBimbingan(studentid, kelas.getTahunID())
                        KODE_DOSEN_BIMBINGAN = getKodeDosenBimbingan(studentid)
                        if KODE_DOSEN_BIMBINGAN is None:
                            msgreply = f'data dengan npm {studentid} tidak ditemukan'
                        else:
                            for KODE_DOSEN in KODE_DOSEN_BIMBINGAN:
                                NAMA_DOSEN = kelas.getNamaDosen(KODE_DOSEN)
                                NIDN_DOSEN = getNIDNDosen(KODE_DOSEN)
                                TAHUN_AJARAN = kelas.getTahunAjaran(kelas.getProdiIDwithStudentID(studentid)).split(' ')[-1]
                                photo = berita_acara_pitak.cekPhotoRoute(studentid)
                                makePdf(
                                    npm_mahasiswa=studentid,
                                    nama_mahasiswa=studentname,
                                    tipe_bimbingan=tipe_bimbingan,
                                    nama_pembimbing=NAMA_DOSEN,
                                    kode_dosen_pembimbing=KODE_DOSEN,
                                    nidn_pembimbing=NIDN_DOSEN,
                                    tahun_ajaran=TAHUN_AJARAN,
                                    photo=photo,
                                    judul=JUDUL_BIMBINGAN,
                                    total_nilai=totalNilai(studentid, config.MINIMUM_PERTEMUAN_BIMBINGAN, KODE_DOSEN)[1]
                                )
                            bkd.mail(kelas.getDataMahasiswa(studentid)[3],
                                     f'eyyowwwwwww {config.bot_name} nihhhh mau nganter file yang kamu mintaaa',
                                     f'ini ya file KAMBING (Kartu Bimbingan) yang Akang/Teteh minta silahkan di cek... ehee....',
                                     bkd.getFilePath(kelas.getDataMahasiswa(studentid)[3], 'kambing', switcherTipeBimbingan(tipe_bimbingan)))
                            msgreply = f"sudah selesai dan sudah dikirim ke email kamu yang {kelas.getDataMahasiswa(studentid)[3]} yaa...."
                    else:
                        msgreply = f'mohon maaf belum bisa cetak kartu bimbingan dikarenakan pertemuan masih ada yang kurang'
                        if status_nilai1 == False:
                            msgreply += f'\n{KODE_DOSEN_BIMBINGAN[0]} | {kelas.getNamaDosen(KODE_DOSEN_BIMBINGAN[0])}'
                        if status_nilai2 == False:
                            msgreply += f'\n{KODE_DOSEN_BIMBINGAN[1]} | {kelas.getNamaDosen(KODE_DOSEN_BIMBINGAN[1])}'
            else:
                if statusapprovalkambing[0] == 'false' or statusapprovalkambing[0] == '':
                    msgreply = 'wiwiwiwiwi KAMBING kamu belum di approve nih sama Bapak/Ibu dosen yang ini nih:'
                    kodedosen1 = getKodeDosenBimbingan(studentid)[0]
                    namadosen = kelas.getNamaDosen(kodedosen1)
                    msgreply += f'\n{kodedosen1} | {namadosen} | PEMBIMBING 1'
                else:
                    KODE_DOSEN_BIMBINGAN = getKodeDosenBimbingan(studentid)
                    status_nilai1, nilai_total1 = totalNilai(studentid, config.MINIMUM_PERTEMUAN_BIMBINGAN,
                                                             KODE_DOSEN_BIMBINGAN[0])
                    if status_nilai1:
                        JUDUL_BIMBINGAN = getJudulBimbingan(studentid, kelas.getTahunID())
                        KODE_DOSEN_BIMBINGAN = getKodeDosenBimbingan(studentid)
                        if KODE_DOSEN_BIMBINGAN is None:
                            msgreply = f'data dengan npm {studentid} tidak ditemukan'
                        else:
                            KODE_DOSEN = KODE_DOSEN_BIMBINGAN[0]
                            NAMA_DOSEN = kelas.getNamaDosen(KODE_DOSEN)
                            NIDN_DOSEN = getNIDNDosen(KODE_DOSEN)
                            TAHUN_AJARAN = kelas.getTahunAjaran(kelas.getProdiIDwithStudentID(studentid)).split(' ')[-1]
                            photo = berita_acara_pitak.cekPhotoRoute(studentid)
                            makePdf(
                                npm_mahasiswa=studentid,
                                nama_mahasiswa=studentname,
                                tipe_bimbingan=tipe_bimbingan,
                                nama_pembimbing=NAMA_DOSEN,
                                kode_dosen_pembimbing=KODE_DOSEN,
                                nidn_pembimbing=NIDN_DOSEN,
                                tahun_ajaran=TAHUN_AJARAN,
                                photo=photo,
                                judul=JUDUL_BIMBINGAN,
                                total_nilai=totalNilai(studentid, config.MINIMUM_PERTEMUAN_BIMBINGAN, KODE_DOSEN)[1]
                            )
                            getFilePath(kelas.getDataMahasiswa(studentid)[3], 'kambing',
                                            switcherTipeBimbingan(tipe_bimbingan))
                            bkd.mail(kelas.getDataMahasiswa(studentid)[3],
                                     f'eyyowwwwwww {config.bot_name} nihhhh mau nganter file yang kamu mintaaa',
                                     f'ini ya file KAMBING (Kartu Bimbingan) yang Akang/Teteh minta silahkan di cek... ehee....',
                                     getFilePath(kelas.getDataMahasiswa(studentid)[3], 'kambing', switcherTipeBimbingan(tipe_bimbingan)))
                            msgreply = f"sudah selesai dan sudah dikirim ke email kamu yang {kelas.getDataMahasiswa(studentid)[3]} yaa...."
                    else:
                        msgreply = f'mohon maaf belum bisa cetak kartu bimbingan dikarenakan pertemuan masih ada yang kurang:'
                        if status_nilai1 == False:
                            msgreply += f'\n{KODE_DOSEN_BIMBINGAN[0]} | {kelas.getNamaDosen(KODE_DOSEN_BIMBINGAN[0])}'
        else:
            msgreply = f'mohon maaf data dengan npm {studentid} tidak bisa ditemukan'
    else:
        msgreply = 'Mana nihhhh tipe bimbingannya coba dicek lagi yaa....'

    return msgreply
Exemple #10
0
def paymentSpp(npm):
    prodi_singkatan = app.getProdiSingkatanFromProdiID(kelas.getProdiIDwithStudentID(npm)).lower()
    tingkat = f"tk{int(kelas.getTahunID()[:-1]) - int(kelas.getTahunAngkatanWithStudentID(npm)) + 1}"
    angkatan = kelas.getTahunAngkatanWithStudentID(npm)
    key = f'{prodi_singkatan}{tingkat}{angkatan}'
    ws = app.openfile().active
    biaya_pokok_spp = app.getDataDefault(key, ws)
    app.openfile().close()
    payment_spp=cek_biodata_va_mahasiswa.getSPP(npm)
    try:
        if biaya_pokok_spp:
            biaya_pokok_spp=int(biaya_pokok_spp)
        else:
            if prodi_singkatan[:2] == 'd4':
                biaya_pokok_spp = 2500000
            elif prodi_singkatan[:2] == 'd3':
                biaya_pokok_spp = 2000000
            else:
                biaya_pokok_spp = int(biaya_pokok_spp)
        if int(payment_spp['trx_amount']) > int(biaya_pokok_spp):
            tunggakan = float(int(payment_spp['trx_amount']) - int(biaya_pokok_spp))
            amount_tunggakan = int(payment_spp["trx_amount"]) - int(biaya_pokok_spp)
            fifty_percent_default_payment = int(biaya_pokok_spp) * (75/100)
            minimum_payment = int(amount_tunggakan) + int(fifty_percent_default_payment)
        else:
            tunggakan = float(0)
            potongan = int(biaya_pokok_spp) - int(payment_spp['trx_amount'])
            minimum_payment = (int(biaya_pokok_spp) - int(potongan)) * (75/100)
        msgreply=''
        percentage = ''
        trx_id=payment_spp['trx_id']
        trx_amount=payment_spp['trx_amount']
        cumulative_payment_amount=payment_spp['trx_amount']
        if 'SPP' in trx_id:
            npm = app.cekNpmInTrxID(trx_id)
            ws = app.openfile().active
            prodi_singkatan = app.getProdiSingkatanFromProdiID(kelas.getProdiIDwithStudentID(npm)).lower()
            tingkat = f"tk{int(kelas.getTahunID()[:-1]) - int(kelas.getTahunAngkatanWithStudentID(npm)) + 1}"
            angkatan = kelas.getTahunAngkatanWithStudentID(npm)
            if angkatan == '2020':
                return f'*DATA VIRTUAL ACCOUNT BNI SPP (Semester Ganjil 2020/2021)*\n\n' \
                            f'*Kode Transaksi: {payment_spp["trx_id"]}*\n' \
                            f'*Virtual Account: {payment_spp["virtual_account"]}*\n' \
                            f'Status Virtual Account: Aktif\n' \
                            f'Customer Name: {payment_spp["customer_name"]}\n' \
                            f'Customer Email: {payment_spp["customer_email"]}\n' \
                            f'Customer Phone Number: {payment_spp["customer_phone"]}\n' \
                            f'Jumlah Tagihan: {app.floatToRupiah(float(payment_spp["trx_amount"]))}\n' \
                            f'Mohon *lunasi tagihan sesuai nominal* diatas agar dapat *melaksanakan UTS* sesuai *syarat dan ketentuan* bidang keuangan\n\n'
            key = f'{prodi_singkatan}{tingkat}{angkatan}'
            default_amount_payment = app.getDataDefault(key, ws)
            if int(trx_amount) > int(default_amount_payment):
                amount_tunggakan = int(trx_amount) - int(default_amount_payment)
                transfer_spp = int(cumulative_payment_amount) - int(amount_tunggakan)
                percentage = float(int(transfer_spp) / int(default_amount_payment)) * 100
            else:
                potongan = int(default_amount_payment) - int(trx_amount)
                cumulative_payment_amount += potongan
                transfer_spp = int(cumulative_payment_amount)
                percentage = float(int(transfer_spp) / int(default_amount_payment)) * 100
            app.openfile().close()
        if datetime.now() < payment_spp['expired_date']:
            msgreply = f'*DATA VIRTUAL ACCOUNT BNI SPP (Semester Genap 2020/2021)*\n\n' \
                        f'*Kode Transaksi: {payment_spp["trx_id"]}*\n' \
                        f'*Virtual Account: {payment_spp["virtual_account"]}*\n' \
                        f'Status Virtual Account: Aktif\n' \
                        f'Customer Name: {payment_spp["customer_name"]}\n' \
                        f'Customer Email: {payment_spp["customer_email"]}\n' \
                        f'Customer Phone Number: {payment_spp["customer_phone"]}\n' \
                        f'Biaya Paket SPP Per Semester: {app.floatToRupiah(float(biaya_pokok_spp))}\n' \
                        f'Biaya Tunggakan SPP: {app.floatToRupiah(tunggakan)}\n' \
                        f'Jumlah Tagihan: {app.floatToRupiah(float(payment_spp["trx_amount"]))}\n'
    except Exception as error:
        msgreply = f'ERROR: {error}\n\n'
    return msgreply