def sta15_get(satinalma_id, form=None, action_code=None):
        if form:
            modal_form = form
        else:
            modal_form = IslemFormlari.STA15()

        satinalma = satinalma_bilgisi(satinalma_id)
        aciklama = satinalma_islem_aciklmasi(action_code)
        proje = proje_bilgisi(satinalma.proje_id)

        if not form:
            talep_kalemleri = satinalma.talep_kalemleri
            for talep_kalemi in talep_kalemleri:
                modal_form.talep_kalemleri.append_entry({
                    "talep_kalemi_id": talep_kalemi.id,
                    "kalem_adi": talep_kalemi.proje_kalemi.ad,
                    "talep_miktari": talep_kalemi.talep_miktari,
                    "birim": talep_kalemi.proje_kalemi.birim.value,
                    "teknik_sartname_id": talep_kalemi.teknik_sartname_file_id
                })

        return render_template("satinalma_dashboard/islem_modal/sta15.html",
                               proje_numarasi=proje.proje_no,
                               proje_adi=proje.proje_basligi,
                               proje_id=proje.id,
                               app_state_description=aciklama,
                               form=modal_form
                               )
    def sta2_get(satinalma_id, form=None, action_code=None):
        if form:
            modal_form = form
        else:
            modal_form = IslemFormlari.STA2()

        satinalma = satinalma_bilgisi(satinalma_id)
        aciklma = satinalma_islem_aciklmasi(action_code)
        proje = proje_bilgisi(satinalma.proje_id)

        proje_satinalma_talebi = DB.session.query(ProjeSatinAlmaTalebi).options(
            joinedload(ProjeSatinAlmaTalebi.talep_kalemleri).joinedload(
                TalepKalemleri.proje_kalemi)).filter(
            ProjeSatinAlmaTalebi.id == satinalma_id).one()

        for index, talep_kalemi in enumerate(proje_satinalma_talebi.talep_kalemleri):
            data = {
                'talep_kalemi_id': talep_kalemi.id,
                'kalem_adi': talep_kalemi.proje_kalemi.ad,
                'talep_miktari': talep_kalemi.talep_miktari,
                'birim': talep_kalemi.proje_kalemi.birim,
            }

            modal_form.talep_kalemleri.append_entry(data)
            modal_form.talep_kalemleri[index].talep_miktari.render_kw = {'min': 1,
                                                                         'max': talep_kalemi.talep_miktari,
                                                                         'type': 'number'}

        return render_template("satinalma_dashboard/islem_modal/sta2.html",
                               proje_numarasi=proje.proje_no,
                               proje_adi=proje.proje_basligi,
                               proje_id=proje.id,
                               app_state_description=aciklma,
                               form=modal_form
                               )
    def sta3_get(satinalma_id, form=None, action_code=None):
        if form:
            modal_form = form
        else:
            modal_form = IslemFormlari.STA3()

        satinalma = satinalma_bilgisi(satinalma_id)
        aciklma = satinalma_islem_aciklmasi(action_code)
        proje = proje_bilgisi(satinalma.proje_id)

        return render_template("satinalma_dashboard/islem_modal/sta3.html",
                               proje_numarasi=proje.proje_no,
                               proje_adi=proje.proje_basligi,
                               proje_id=proje.id,
                               app_state_description=aciklma,
                               form=modal_form
                               )
    def sta13_get(satinalma_id, form=None, action_code=None):
        if form:
            modal_form = form
        else:
            modal_form = IslemFormlari.STA13()

        satinalma = satinalma_bilgisi(satinalma_id)
        aciklama = satinalma_islem_aciklmasi(action_code)
        proje = proje_bilgisi(satinalma.proje_id)

        if not form:
            satinalma_talep_ids = [talep_kalemi.id for talep_kalemi in satinalma.talep_kalemleri]

            # siparisleri related modelleri ile birlikte getirir
            siparisler = DB.session.query(SiparisTakip).options(
                joinedload(SiparisTakip.satinalma_talep_kalemleri).joinedload(
                    TalepKalemleri.proje_kalemi),
                joinedload(SiparisTakip.kazanan_firma_teklif).joinedload(
                    FirmaTeklifKalemi.satinalma_teklif).joinedload(FirmaSatinalmaTeklif.firma)
            ).filter(
                SiparisTakip.satinalma_talep_kalemleri_id.in_(satinalma_talep_ids),
                SiparisTakip.siparis_durumu != SiparisDurumu.siparis_tamamlandi,
                SiparisTakip.siparis_durumu != SiparisDurumu.siparis_iptal_edildi
            ).all()

            for siparis in siparisler:
                modal_form.siparisler.append_entry({
                    "secili_mi": False,
                    "siparis_id": siparis.id,
                    "firma_adi": siparis.kazanan_firma_teklif.satinalma_teklif.firma.adi,
                    "proje_kalemi_adi": siparis.satinalma_talep_kalemleri.proje_kalemi.ad,
                    "talep_miktari": siparis.satinalma_talep_kalemleri.talep_miktari,
                    "birim": siparis.satinalma_talep_kalemleri.proje_kalemi.birim.value,
                })

        return render_template("satinalma_dashboard/islem_modal/sta7_8_9_10.html",
                               proje_numarasi=proje.proje_no,
                               proje_adi=proje.proje_basligi,
                               proje_id=proje.id,
                               app_state_description=aciklama,
                               form=modal_form
                               )