docs: function f_ekle_genel(_es_ihale, _db_ihale, _kullanici_id) {
  
          /**
           * İhale bilgisini sisteme ekleyen fonk
           * @param _es_ihale
           * @param _db_ihale
           * @param _kul_id
           * @returns {*}
           */
          function f_ihaleEkle(_es_ihale, _db_ihale, _kul_id) {
  
              _kul_id = _kul_id || _kullanici_id;
  
              return result.dbQ.incr(result.kp.ihale.idx)
                  .then(function (_id) {
                      _es_ihale.Id = _id;
                      _db_ihale.Id = _id;
  
                      return result.dbQ.Q.all([
                              result.dbQ.hset(result.kp.ihale.tablo, _db_ihale.Id, JSON.stringify(_db_ihale)),
                              result.dbQ.sadd(result.kp.ihale.ssetGenel, _db_ihale.Id),
                              result.dbQ.sadd(result.kp.ihale.ssetIhaleUsulAdlari, _db_ihale.IhaleUsul),
                              result.dbQ.sadd(result.kp.ihale.ssetGenel, _db_ihale.Id),
                              result.dbQ.hset(result.kp.ihale.hsetIhale_ihaleDunyasiId, _es_ihale.IhaleProviders.IhaleDunyasi.IhaleDunyasiId, _db_ihale.Id),
                              result.dbQ.zadd(result.kp.ihale.zsetYapilmaTarihi, _db_ihale.IhaleTarihi, _db_ihale.Id)
                          ])
                          .then(function () {
                              //şehir ekle
                              if (_db_ihale.IlAdi) {
                                  var db_sehir = require("./db_sehir");
                                  return db_sehir.f_db_sehir_ekle(/** @type {Sehir} */{Id: 0, Adi: _db_ihale.IlAdi});
                              } else {
                                  return _id;
                              }
                          })
                          .then(function () {
                              //bölge ekle
                              if (_db_ihale.BolgeAdi) {
                                  var db_bolge = require("./db_bolge");
                                  return db_bolge.f_db_bolge_ekle(/** @type {Bolge} */{Id: 0, Adi: _db_ihale.BolgeAdi});
                              } else {
                                  return _id;
                              }
                          })
                  });
          }
  
          /**
           * Tüm tahtaları çekip,
           * her biri içinde dönüp
           * ürünün/kurumun/tahtanın/kullanıcının
           * anahtarlarına bağlı satır açıklama veya branş kodu varsa
           * ihale_id ve kalem_id yi indexliyoruz
           */
          function f_ihaleyiKurumlaIliskilendir(_es_ihale, _db_ihale, _kul_id) {
              _kul_id = _kul_id || _kullanici_id;
              l.i("İhale kurumla ilişkilenecek > ihaleId: " + _db_ihale.Id + " - kurumId: " + _db_ihale.Kurum_Id);
              // - kurumun ihalelerine ekle
              // - ihalenin kurumunu ata
              if (_db_ihale.Id) {
                  return result.dbQ.Q.all([
                      result.dbQ.sadd(result.kp.kurum.ssetIhaleleri(_db_ihale.Kurum_Id), _db_ihale.Id),
                      result.dbQ.hset(result.kp.ihale.hsetYapanKurumlari, _db_ihale.Id, _db_ihale.Kurum_Id)
                  ]).then(function () {
                      return _es_ihale;
                  });
              } else {
                  return _es_ihale;
              }
          };
  
          function f_kalemleriniEkle(_es_ihale, _db_ihale, _kul_id) {
              _kul_id = _kul_id || _kullanici_id;
              // Kalemleri ayıralım
              var ihaleKalemleri = _es_ihale.Kalemler.slice();
              var db_kalem = require('./db_kalem');
              return db_kalem.f_db_kalemleri_ekle(_db_ihale.Id, ihaleKalemleri, _kul_id)
                  .then(function () {
                      emitter.emit(schema.SABIT.OLAY.IHALE_EKLENDI, _es_ihale, _es_ihale.Kurum_Id, 0, _kullanici_id);
                      return _es_ihale;
                  });
          };
  
          return f_ihaleEkle(_es_ihale, _db_ihale, _kullanici_id)
              .then(function () {
                  return f_ihaleyiKurumlaIliskilendir(_es_ihale, _db_ihale, _kullanici_id)
              })
              .then(function () {
                  return f_kalemleriniEkle(_es_ihale, _db_ihale, _kullanici_id)
              })
              .then(function () {
                  //ihale bilgisini dön
                  /** @type {OptionsIhale} */
                  var opts = {};
                  opts.bArrKalemleri = true;
                  opts.bYapanKurum = true;
                  opts.bTakip = false;
                  return f_id(_db_ihale.Id, 0, opts)
                      .then(function (_dbIhale) {
                          emitter.emit(schema.SABIT.OLAY.IHALE_EKLENDI, _dbIhale, _dbIhale.Kurum_Id, 0, _kullanici_id);
                          return _dbIhale;
                      });
              });
      }