uyilmaz

Rest Sırgulama Hastası

  Tiger/REST

Rest servisi üzerinden fatura numarası belirli bir şablonda olan en son kesilen faturayı almak istiyorum. Bununla alakalı yaptığım test sorgulaması için hata alıyorum. 

Rest sorgusu: http://192.168.2.107:9090/api/v1/salesInvoices?limit=1&sort=NUMBER desc&q=NUMBER eq '00000007'

bu sorgu ile "00000007" numaralı faturayı almak istiyorum ancak geriye tüm faturalar dönüyor. Hatayı tam olarak anlayamadım. Ayrıca eq yerine like kullanabilir miyim.


NOT: Bu sorgunun amacı yeni fatura insert etmek için en son kesilmiş fatura numarasını alıp kaldığı yerden artırarak devem etmek.




NaciO

Merhaba,

Bazı sorgu parametreleri diğer parametreler ile birlikte kullanılamıyor. Ayrıca "q=x" sorgulaması belli sayıdaki faturanın tek tek tüm kaydın okunması ile oluşturuluyor. Dolayısıyla bu sorgulama yöntemi arzu ettiğiniz performansı size sunamayacaktır. 

Tavsiyem, aşağıdaki yöntemle veritabanından, t-sql sorguları ile veriye ulaşmanızdır.

http://docs.logo.com.tr/public/wua/logo-objects-rest-servis/logo-rest-baslangic/rest-service-5a-bueyuek-sql-sorgularini-calistirma

Yapmaya çalıştığınız işlem özelinde ise, REST Servis zaten bu işi sizin sorgulamanıza gerek duymadan yapabilir. Aşağıdaki şekilde fiş numarası kısmında eğer "~" (tilde) işareti kullanırsanız, sistem zaten (numaralandırma şablonuna göre) sıradaki numara ile devam edecektir.

Aşağıdaki örnek sipariş için, ancak faturada da aynı durum geçerli. Dikkat ederseniz NUMBER kısmında tilde işareti yer alıyor.

{
 "INTERNAL_REFERENCE": 0,
 "NUMBER": "~",
 "DATE": "2018-02-21T00:00:00",
 "TIME": 102581337,
 "ARP_CODE": "CARI.01",
 "CURRSEL_TOTAL": 1,
 "TRANSACTIONS": {
 "items": [
 {
 "TYPE": 0,
 "MASTER_CODE": "MALZEME.01",
 "QUANTITY": 5,
 "PRICE": 10,
 "VAT_RATE": 18,
 "UNIT_CODE": "ADET",
 "UNIT_CONV1": 1,
 "UNIT_CONV2": 1,
 "EDT_CURR": 1
 }
 ]
 }
 }




31/07/18 15:07


uyilmaz

Naci bey öncelikle cevabınız için teşekkür ederim. Yalnız bu durumda şöyle bir senaryo oluşuyor farklı fatura türleri olduğundan birden fazla şablon tanımlaması yapmak gerekiyor ve bu durumda "~" ile otomatik numaralandırma yaptırmak istediğimde hangi şablonu kullanacağını belirtmeliyim, bu numarala şablonunun hangisi kullanılacağını requestte nasıl belirtebilirim.

Ayrıca tsql sorgulaması üzerinden yapmak için salesInvoices hangi tabloyu kullanıyor bilmiyortum. Muhtemelen dönemsel bir tablodur bu durumda aktif dönem numarasınıda sorgulamam gerekiyor ancak bu sorgu nasıl yapılacağını dökümanlarda bulamadım


31/07/18 17:53


NaciO

Merhaba,

REST Servis, Logo Objects metodlarını destekler. Dolayısıyla REST Dökümantasyonunda Logo Objects metodlarını tekrar açıklama gereği duymadık. Örneğin, ihtiyacınız olan metod, Logo Objects tarafındaki GetTableName metodudur. Bu metod REST servisten şu şekilde çağırılabilir(parametrelerinin neler olduğunun Logo Objects dökümanında bulabilirsiniz);

GET Request

http://172.16.57.114:32001/api/v1/methods/GetTableName/14/1/1

Response

LG_001_01_INVOICE

Ancak yine de "~" işaretiyle ilerleyebilirsiniz. REST Servis fatura tipine göre, ilgili faturanın numaralandırma şablonuna bakarak işlem yapar. Hatta daha özel şablonlar oluşturulduysa, misal; A carisine kesilen X özel kodundaki perakende satış faturaları için bir şablon oluşturulduysa REST Servise gönderdiğiniz JSON içeriğine göre işleyip Tiger hangi şablona göre işlem yapıyorsa o şablonu yakalayıp işlemi gerçekleştirir. 

Proje içeriğinize hakim olmadığım için ısrarcı olamam, fakat şablon tanımlarında bir sıkıntı olmadığı sürece en kısa ve güvenli çözüm tilda olacağı kanaatindeyim.

Saygılarımla.





31/07/18 22:23


uyilmaz

Period numarası = 1

Firma numarası = 993


sorgu url = "http://192.168.2.107:9090/api/v1/methods/GetTableName/14/993/1"


sorgu sonucu = 

Error: Bad Request / {"Message":"The request is invalid.","ModelState":{"LOError:":["Sonraki satıra konumlanılamadı."]}}


bu hatayı neden aldığım konusunda yardımcı olabilir misiniz.



NOT:  "~" üzerinden fatura kesme noktasında bende ısrarcıyım ancak müşterideki durum biraz farklı onlarda Satış Faturası için "Verilen Hizmet Numarası" şablonu 16 haneli rakamlardan oluşuyor ancak elektrik faturası kesecekleri zaman bu numara yerine K000 ile başlayan bir seriden elle girip kesiyorlar hakeza su için S00000, gaz için G0000 bundan ötürü sablon üzerinden gidemiyorlar.


01/08/18 12:00

Cevap vermek için giriş yapmanız gerekmektedir.