docs: function f_teklif_durum_guncelle(_tahta_id, _teklif_id, _onay_durumu_id, _kul_id) {
  
          l.info("f_db_teklif_durum_guncelle");
  
          /** @type {OptionsTeklif} */
          var opts = result.OptionsTeklif({
              bArrUrunler: false,
              bKalemBilgisi: false,
              bIhaleBilgisi: false,
              bKurumBilgisi: false,
              optUrun: {}
          });
          return f_teklif_id(_teklif_id, _tahta_id, opts)
              .then(
                  /**
                   *
                   * @param {TeklifDB} _dbTeklif
                   * @returns {*}
                   */
                  function (_dbTeklif) {
  
                      if (_dbTeklif && _dbTeklif.Id > 0) {
  
                          return f_kalemin_onay_durumu_kazandi_mi(_tahta_id, _dbTeklif.Kalem_Id, _onay_durumu_id)
                              .then(function (_bKazandi) {
                                  if (_bKazandi == true) {
                                      //bir kalemin 1 kazananı olabilir.
                                      l.e("1 kalemin 1 kazananı olabilir");
                                      throw new exception.Istisna("VALİDASYON HATASI", "Seçilen kalemin onay durumu KAZANDI olarak seçili durumda. Bir kalemin sadece bir kazananı olabilir. Lütfen kontrol ediniz.");
                                  } else {
  
                                      var eski_onay_durum_id = _dbTeklif.TeklifDurumu_Id;
                                      _dbTeklif.TeklifDurumu_Id = parseInt(_onay_durumu_id);
  
                                      var kayitEdilecekTeklif = schema.f_suz_klonla(schema.SCHEMA.DB.TEKLIF, _dbTeklif);
  
                                      //teklif hash güncelle
                                      //eski onay durumunu setten kaldır yeni durumuna göre ekle
                                      return result.dbQ.Q.all([
                                          result.dbQ.hset(result.kp.teklif.tablo, _teklif_id, JSON.stringify(kayitEdilecekTeklif)),
                                          result.dbQ.srem(result.kp.teklif.ssetTeklifOnayDurumlari(eski_onay_durum_id), _teklif_id),
                                          result.dbQ.sadd(result.kp.teklif.ssetTeklifOnayDurumlari(_onay_durumu_id), _teklif_id)
                                      ]).then(function () {
                                          return f_teklif_id(_teklif_id, _tahta_id)
                                              .then(function (_dbTeklif) {
                                                  emitter.emit(schema.SABIT.OLAY.TEKLIF_DURUMU_GUNCELLENDI, _dbTeklif, _tahta_id, _dbTeklif.Kurum_Id, _kul_id);
                                                  return _dbTeklif;
                                              });
                                      });
                                  }
                              })
                      } else {
                          throw new exception.Istisna("HATA OLUŞTU", "Teklif sistemde BULUNAMADI. Lütfen kontrol ediniz.");
                      }
                  });
      }