Sık Sorulan Sorular

INSUFFICIENT_PRIVILEGES hatası alıyoruz, ne yapabiliriz?

Kullanıcının ilgili işlem için giriş yapılan firmada yetkileri açık olmalıdır. Firma kodu mutlaka kontrol edilmelidir. DiaApp üzerinden Kullanıcılar ekranından yetkileri ayarlayabilirsiniz. Firma koduna ise Firmalar ekranından ulaşabilirsiniz.

INVALID_SESSION hatası alıyoruz, ne yapabiliriz?

Invalid session hatası, session_id bilgisinin hatalı olması durumda veya sisteme login olamadığınızda, login olduktan sonra bağlantı kopması, timeout süresinin dolması gibi sebeplerle oturum kapandığında alınıyor olabilir. Sisteme login olup olunmadığını kontrol ederek işlemlerin tekrarlanmasını sağlayıp sorunun çözülmemesi durumunda ise gönderdiğiniz firma ve dönem kodu parametrelerinizin doğruluğundan emin olup tekrar deneyebilirsiniz.

TypeError("bad operand type for unary -: 'NoneType'",) bad operand type for unary -: 'NoneType'"

Bu hatanın sebebi sebebi veri tipine uygun değer gönderilmemesi olabilir, parametrelerinizin tiplerini kontrol etmelisiniz. Model dökümanımızdan veri tiplerine bakabilirsiniz.

Array value must start with "{" or dimension information.\n',) malformed array literal: DETAIL: Array value must start with "{" or dimension information.

Array veri tipindeki bir alana string değer göndermek istediğinizde bu hata ile karşılaşırsınız, alanların veri tipleri model dökümanlarımızdan kontrol edebilirsiniz.

"msg": "DataError('value too long for type character varying(128)\\n',)\nvalue too long for type character varying(128)\n"

İlgili alan için çok uzun bir veri girildiyse bu hata alınabilir, alanlarınızın uzunluğunu kontrol etmelisiniz.

"Kritere uygun birden fazla kayıt var!" uyarısı alıyoruz. Ne yapabiliriz?

Gönderdiğiniz parametreye işaret eden birden fazla kayıt varsa bu uyarıyı alıyorsunuz. Bu durumda parametre filtrelerini artırarak benzer bir kayıta işaret etmediğinden emin olmalısınız ya da direkt key değeri vermelisiniz. Örneğin; “_key_sis_sube_source”: {“subekodu”: “000001”, “subeadi”:“İSTANBUL”} . Ya da uyarıda parantez içinde dönen tablonun modelini getirebilmek için ilgili getir servisini çağırıp _key değerini elde ederek direkt olarak _key ile örneğin “_key_sis_sube_source”: 123456 şeklinde işlem yapmalısınız.

"... girilmelidir" şeklinde uyarı alıyoruz, zorunlu alan kontrolüne takılıyoruz. Ne yapabiliriz?

Bu uyarı eğer zorunlu alan kontrolü kaynaklı ise; zorunlu alanlar sistem parametrelerinden firma bazında ayarlanmaktadır. İşlem yaptığınız firma için hangi alanların zorunlu olduğu bilgisini DiaApp üzerinden öğrenebilirsiniz. Ayrıca web servis çağrısında zorunlu alanlardan kaynaklanan uyarılar da hangi alanlar olduğu döndürülmektedir, oradan takip edebilirsiniz.

Fatura kalemlerindeki ürün stok kartı kodunu ne şekilde belirteceğiz?

_key_kalemturu alanı stok ya da hizmetin _key alanıdır, buraya ilgili stoğun _key değeri verilmelidir stokkartkodu direkt verilemez, ancak filtre ile örneğin {“stokkartkodu”: “ABC001”} şeklinde verilebilir.

''_key_kalemturu'' nedir?

_key_kalemturu değerine fişinize ekleyeceğiniz stok ya da hizmet kartın _key bilgisini yazmanız gerekmektedir.

''_key_scf_kalem_birimleri'' nedir?

_key_scf_kalem_birimleri alanına ilgili stoğun ya da hizmetin fiş kaleminde olmasını istediğiniz biriminin _key değeridir. Bu _key değerini scf_stokkart_birimleri_listele servisinden elde edebilirsiniz ya da tek birimli stok kullanıyorsanız ve birimin kodu-adını biliyorsanız daha pratik bir yöntem olarak {“birimadi”:“Adet”} veya {“birimkod”:“AD”} şeklinde filtreleyerek bu alanı doldurabilirsiniz.

Parametrelerdeki kodların karşılıklarını nasıl elde edebilirim ve DiaApp'deki combobox olarak gelen alanların kısaltmaları nelerdir?

Web servislerimizde kullanılan alanların karşılıklarını model dökümanımızdan öğrenebilirsiniz. Örneğin cari kart ekleme servisinde kullanabileceğiniz alanlara carikart model alanlarından bakabilirsiniz. Servislerin gittiği ilgili modelleri ise getir servislerinin dökümanlarından görebilirsiniz.

Toplu ekleme veya silme işlemi yapabilir miyiz?

Ekleme, silme ve güncelleme servislerimiz tek bir kart için çalışmaktadır.

Firmadan firmaya kopyalama işlemi yapabilir miyiz?

İşlem yaptığınız web servislerin parametrelerindeki firma_kodu, donem_kodu parametrelerine diğer firmanın bilgilerini vererek web servisi tekrar çağırarak işlem yapmayı deneyebilirsiniz. Ayrıca _key ile başlayan verileri de uyarlamanız gerekecektir.

Çok fazla stoğumuz var listelemek uzun süre alıyor, tahmin edilebilir bir işlem süresi var mıdır?

Stok kart listeleme işleminizin en azından belirlenebilir bir süre içerisinde gerçekleşebilmesi için bir çözüm yolu önereceğiz. Aşağıda örneğini bulunan json verisinin çalışma mantığı şu şekilde; stokkartkodu parametresinin value değerini başlangıçta sıfır vererek stoklarınızın unique bir değeri olan ilk stokkartkodu değerini alıyoruz, artan şekilde sıralı olarak ilk 100 sonucu elde ettikten sonra value parametresine son stokkartkodu değerini veriyoruz, bu şekilde limit 100 değeri sabit olmak üzere tüm stokkartlarınızı listeleyebilirsiniz. Yani aslında kendi offset değerimizi kendimiz belirlemiş olup offsetten farklı olarak da her seferinde tüm listeyi çekip o offset değerine gitmektense filtreleme ile direkt sonraki stokkartlara gidip hızlı veri getirmiş oluyoruz. Bu yöntem size 10 saniye gibi bir süre içerisinde 100 stokkart listeleyerek stoklarınızın tamamını 10'ar saniyelik dilimler halinde en azından belirlenebilir bir sürede alabilmenizi sağlayacak. Tavsiye ettiğimiz yöntemi inceleyip tekrar sorunuz olması durumda bize ulaşabilirsiniz.
 {"scf_stokkart_listele" :
    {"session_id": "{session_id}",
     "firma_kodu": {firma_kodu},
     "donem_kodu": {donem_kodu},
     "filters":[{"field": "durum", "operator": "=", "value": "A"},
                     {"field": "stokkartkodu", "operator": ">", "value": "0"}],
     "sorts": [{"field": "stokkartkodu", "sorttype": "ASC"}],
     "limit": 100
    }
} 

Listeleme servislerinde sunucuyu yormamak ve veri kalabalıklığı olmaması için sadece bazı alanları getirmek istiyoruz, nasıl yapabiliriz?

Listeleme servislerimizde kullanabileceğiniz selectHeader parametresi ile bu mümkündür. Örneğin stokkarttaki sadece stokkartkodu, birimkeyleri, birimisimleri, fiili_stok, fiyat1 alanlarını çekmek isterseniz
 "params": { "__selectHeader": ["stokkartkodu", "birimkeyleri", "birimisimleri", "fiili_stok", "fiyat1"]} 
şeklinde parametre göndermeniz yeterlidir. Bu kullanım veri getirme süresini de kısaltacaktır.

Belirli depolardaki stok miktarlarını görmek istiyoruz, nasıl yapabiliriz?

scf_stokkart_listele web servisimizde paramsdaki _key_sis_depo alanına ilgili deponun _key değerini yazarak belirli bir depodaki stokları filtreleyerek çekebilirsiniz. Eğer birden fazla depoyla işlem yapmak istiyorsanız sis_depo_grubu_listele servisimizle elde edeceğiniz depo grubu _key değeri ile birden fazla depodaki stokları elde edebilirsiniz.

Stok kartın miktarlarını anlık olarak görmek istiyoruz. scf_stokkart_hareket_listele tek stok için çalışıyor ne yapabiliriz?

Genelde uygulanan çözüm, belirli periyotlarla (örneğin 20 dakikada bir) “scf_stokkart_listele” servisiyle istenen stokları alıp, veritabanının güncellenmesi şeklindedir. Miktar anlık olarak hareketler üzerinden hesaplandığı için değişim durumu bu serviste gösterilememektedir.

Tüm ürünlerin varyantlarını, barkodlarını, resimlerini, fiyat kartlarını tek seferde çekebilir miyiz?

scf_stokkart_detay_listele servisini kullanabilirsiniz.

Stokların en güncel halini nasıl görebiliriz?

_date alanına göre verileri filtreleyerek listeyi çekerseniz son değiştirilen ürünleri elde edebilirsiniz. Cron mantığıyla belirli aralıklarla web servis çağrısı yapabilirsiniz.

Stoklardaki resimleri nasıl elde edebiliriz?

Resim dosyalarının urllerini elde edebilmeniz için sis_aws_dosya_listele web servisimizi kullanabilirsiniz. Örneğin bir stok kartın resmini çekmek istiyorsanız kayitturu alanını 'kayitturu': 'scf_stokkart' şeklinde _key_kayit alanını ise stokkartın _key değeri olacak şekilde göndererek resmin aws_url alanından url bilgisini elde edebilirsiniz.

Dinamik alan verilerini nasıl getirebiliriz?

Dinamik alan verileri, ayrı bir tabloda değil ilgili tablodaki __dinamik ön ekli kolonlarda tutulmaktadır. İstediğiniz veriler için, ilgili modeldeki dinamik alanlara bakabilirsiniz. Örneğin cari karta ait dinamik alanlar için ScfCarikartModel'e bakmanız gerekir.

Faturanın toplam tutar bilgisini gönderecek miyiz?

Toplam tutar bilgisini göndermeyip, varsa indirim, birim fiyat ve miktar gibi parametreler üzerinden toplam tutarın hesaplanmasını sağlayabilirsiniz.

Bütün firmalardaki carilerin toplu şekilde hareketlerini çekmek istiyoruz, nasıl yapabiliriz?

scf_carikart_hareket_listele servisimiz tek cari için çalışır. Benzer işlem için Cari Kart Bakiye raporumuzu incelemenizi ve ihtiyacınızı karşılıyorsa bu raporun sonucunu web servis ile almanızı önerebiliriz. Web servis ile rapor sonucu alınabilmesi hakkındaki dökümanımızı da inceleyebilirsiniz.

E-fatura oluşturmak istiyoruz, nasıl yapabiliriz?

scf_fatura_ekle web servisimiz ile E-fatura veya E-arşiv ekleyebilmek için efaturatipkodu, efaturasenaryosu, efatalias gibi alanlara E-fatura veya E-arşiv olması durumuna göre parametrelerinizi düzenleyerek göndermelisiniz bu parametrelerin karşılıklarını ScfFaturaModel modelde görebilirsiniz. Posta kutusu adresi bilgisini earsivgonderimeposta alanı ile gönderebilirsiniz. E-fatura kullanıcıları listesinde bulunmayan her cari E-arşiv olarak işlenebilir. Bir de dikkat edilmesi gereken uygun bir numara göndermektir bunun için DiaApp üzerindeki kayıt numara şablonlarını E-fatura ve E-arşiv için oluşturduktan sonra sis_numara_getir web servisimiz ile E-arşiv ya da E-fatura numarası üretebilirsiniz.

Belge eklerken nasıl otomatik numara üretebiliriz?

Sistemdeki kayıt numara şablonuna göre numara getirmek ya da sıradaki numarayı alabilmek için sis_numara_getir servisimiz mevcuttur. Bu servise ilgili parametreleri vererek sıradaki numarayı getirebilirsiniz. Fatura eklerken bu numaranın gelmesi için, scf_fatura_ekle servisindeki belgeno2 alanına bu değeri vererek işlem yapabilirsiniz.

E-fatura için kayıt numara şablonu ile nasıl numara üretebiliriz?

Oluşturduğunuz kayıt numara şablonlarından doğru veri elde edebilmek için net parametrelerle göndermeniz gereklidir, parametrelere uygun bir numara bulunmadığında sistem en büyük numaradan sonraki numarayı üretmeye başlar. Aşağıda E-arşiv için örnek bir json verisi bulunmaktadır, bazı parametrelerin yanlarında E-fatura için yapılması gereken örnek parametreler de yer almaktadır.
 {"sis_numara_getir" :
    {"session_id": "{session_id}",
     "firma_kodu": {firma_kodu},
     "donem_kodu":{donem_kodu} ,
     "table_name": "scf_fatura",
     "column_name" : "belgeno2",
     "template_type": "FAT_S_FATURANO",
     "tarih": "2020-05-06",
     "statu": 1,
     "on_eki": "VCI2020", //ya da  "on_eki": "VCB2020"
     "subekey": 0,
     "depokey": 0,
     "kasakey": 0,
     "kategori": "F",
     "earsiv": "E", //ya da "efatura": "E"
     "efaturasenaryosu": "3", //ya da  "efaturasenaryosu": "0"
     "filters":[]
    }
 } 

Web servis üzerinden malzemeye ait son alış fiyatı veya ortalama giriş maliyetini almak istiyoruz, mümkün müdür?

Fiyat hazırlama için özel bir web servisimiz bulunmamaktadır, bunun yerine özel rapor hazırlayarak ilgili alanları elde edip bu raporu web servisle çağırabilirsiniz. Web servisle rapor getirme ve özel rapor hazırlama konularındaki dökümanlarımızı inceleyebilirsiniz.

Basit üretime girdiğimiz reçete ve alt reçeteleri özel rapor ekranında ve webserviste görebilir miyimiz?

scf_stokkart_getir web servisimiz ile basit üretim malzeme reçetesinde bulunan stokkartlarına erişebilirsiniz. Burada reçetesi olan bir stok için m_altmalzemeler alanı gelmelidir. Özel rapor için ise ScfStokkartAltmamulModel'i ScfStokkartModel ile eşleyerek reçete verilerini elde edebilirsiniz. ScfStokkartAltmamulModel'deki _key_altmamul başka bir stoğun _key değeridir.