Seri Numarası Entegrasyonu
Üretimi planlanmış veya yapılmış ürünlere servis hizmeti verilebilmesi için, seri numaralarının Licrus’ta tanımlı olması gerekemektedir. Cihaz seri numaralarının toplu olarak veya tek tek aktarılması için ImportProductSerialNumbers metodu kullanılır. Seri Numarası (ProductSerialNumber) nesnesinin detayları için bu dokümandaki Veri Nesneleri başlığına bakınız.
Fonksiyon
ProductSerialNumberResponse ImportProductSerialNumbers(ProductSerialNumberRequest)
ProductSerialNumberRequest Nesnesi
Alan | Açıklama | Değer |
List | Aktarılmak istenen seri numarası listesi. Bu listeye eklenecek kayıtlar. Seri Numarası (ProductSerialNumber) nesnesinin detayları için Veri Nesneleri başlığına bakınız. | ProductSerialNumber |
OnFailure (Beta) | İşlem sırasında seri numaralarından biri aktarılamadığında işlemin tamamı için izlenecek davranışını belirler. Varsayılan değeri TryNext. enum OnFailureRule { TryNext = 0, RollBackAll = 1, } TryNext seçildiğinde bir seri numarasında hata alındığında bir sonrakini aktarmaya devam eder ve aktarılmayanlar için geriye uyarı mesajı döner. RollBackAll seçildiğinde bir seri numarası aktarılmadığında işlemi iptal eder ve aktarılanlar geri alır. | OnFailureRule |
OnWarning (Beta) | Aktarım sırasında OnFailure kuralı TryNext seçildiğinde alınan uyarı mesajlarının seviyesini belirler. Varsayılan değeri ShowAsWarning. enum OnWarningBehavior { ShowAsWarning = 0, ShowAsError = 1, } | OnWarningBehavior |
Aktarım sırasında gönderilen seri numaralarından bir kısmı aktarılamadığında, Web Servisden gelen cevap nesnesinde iki farklı durum olabilir.
Aktarım Senaryosu 1
var request=new ProductSerialNumberRequest(); request.OnFailure = OnFailureRule.TryNext; request.OnWarning = OnWarningBehavior.ShowAsWarning;
Alan | Geri Dönüş Değeri |
HasError | false |
HasIgnoredSerials | true |
MessageList[?].Type | ResponseMessageType.Warrning |
Aktarım Senaryosu 2
var request=new ProductSerialNumberRequest(); request.OnFailure = OnFailureRule.TryNext; request.OnWarning = OnWarningBehavior.ShowAsError;
Alan | Geri Dönüş Değeri |
HasError | true |
HasIgnoredSerials | true |
MessageList[?].Type | ResponseMessageType.Error |
Örnek
var licrusService = new LicrusWebServices.Integration(); var request = new ProductSerialNumberRequest(); request.AuthTicket = ticket; //Login metoduyla alınmış ticket var list = new List<ProductSerialNumber>();// aktarılmak istenen seri numarası dizisi/listesi var ps = new ProductSerialNumber(); ps.SerialNumber = "SERINO001"; ps.SalesDate = new DateTime(2018, 01, 01); ps.WaybillNumber = "IRS-001"; ps.Product = new Product() { Code = "URUN001" }; ps.Dealer = new Dealer() { Code = "BAYI001" }; list.Add(ps); request.List = list.ToArray(); var response = licrusService.ImportProductSerialNumbers(request);
Response Mesajları
Servis işlemi sonucunda alınan; Hata, uyarı ve bilgi mesajlarına response üzerinden erişilebilir.
/* servis sunucu hatası, yetki hatası. beklenmeyen hatalar ve benzeri durumlar */ if (response.HasError) { var errorList = response.MessageList.Select(x => x.Message).ToArray(); var errorString = String.Join(Environment.NewLine, errorList); Console.WriteLine(errorString); } else { /*aktarım durumu kontrol ediliyor*/ //kısmen aktarıldı if (response.HasIgnoredSerials) { /*kısmen aktarıldı*/ //response.IgnoredSerials üzerinden aktrılamayanlar alınabilir. } else { /*tamamı aktarıldı*/ //tüm seri numaraları aktarıldığında ServiceResponseMessageType.Info tipinde sadece bir adet mesaj gelir. var successMessage = response.MessageList .Where(x => x.Type == ServiceResponseMessageType.Info) .FirstOrDefault(); if (successMessage != null) { /* log tutabilirsiniz veya kullanıcıya bilgilendirme yapabilirsiniz.*/ } } }
ProductSerialNumberResponse Nesnesi
Alan | Açıklama | Değer |
RequestCount | İşlemi sırasında Request nesnesiyle gönderilen toplam seri numaraıs saysı. | int |
AffectedCount | İşlem sonunda kaydedilen toplam seri numarası sayısı. | int |
IgnoredSerials | İşlem sırasında çeşitli nedenlerle kaydedilmeyen seri numaralarının listesidir. Bu listede yer alan kayıtlar doğrudan Request nesnesiyle gönderilen seri numarası nesnesidir. Seri Numarası (ProductSerialNumber) nesnesinin detayları için Veri Nesneleri başlığına bakınız. | ProductSerialNumber |
HasIgnoredSerials | Gönderilen seri numaralarından tamamı aktarılmadığın true değer verir. AKtarılmayan seri numaralarının neden aktarılmadığıyla ilgili bilgi response.MessageList dizisine yer alan ve Type değer Warning olan mesajlardan öğrenilebilir. | boolean |
Servis Nesneleri
Servis üzerinden yayınlanan tüm metotlar, Request nesnesi alır ve Response nesnesi döner. Request ve Response nesneleri kullanıldığı metoda özgü alanlar içermekle birlikte ortak bazı alanlar da içerirler;
Request (İstek)
Alan | Açıklama | Değer |
AuthTicket | Kimlik doğrulaması için kullanılacak ticket | Zorunlu |
SerialNumber | Fiziki olarak cihaz üzerinde bulunana seri numarası | Zorunlu |
SalesDate | Satış tarihi | Zorunlu |
WaybillNumber | İrsaliye numarası | Zorunlu |
Product.Code | Seri numarasının ait olduğu ürün Kodu | Zorunlu |
Dealer.Code | Bayi tanımlıyıcı kodu | Zorunlu |
PartnerType.Code | Partner Türü için tanımlayıcı kod (örnek: ana bayi ve tali bayi tanımların kodları) | İsteğe Bağlı |
ManufacturedYear | Üretildiği yıl | İsteğe Bağlı |
ManufacturedMonth | Üretildiği ay | İsteğe Bağlı |
ManufacturedWeek | Üretildiği hafta | İsteğe Bağlı |
QuoteNumber | Teklif numarası, Sipariş Numarası | İsteğe Bağlı |
Response (Cevap)
Alan | Açıklama |
HasError | İşlem sonucunda bir hata oluştuysa true değer döner. Yapılan işlem başarılıysa false değer alır. |
HasMessage | İşlem sonucunda paylaşılan bir bilgi mesajı varsa true değer verir. |
MessageList | HasError veya HasMessage alanlarından herhangi bir true ise hata veya bilgi mesajı buradan alınabilir. |
Response.MessageList
Mesaj nesnesini barındıran listedir ve içerisinde yer alan Message nesnesinin detayları aşağıdaki gibidir.
Alan | Açıklama |
Message | Hata veya Bilgi mesajı metin olarak buradan alınabilir. |
Url | https://weburl.com/api/ERP/ImportProductSerialNumbers |
Type | Servis tarafından gönderilen mesajın tipini verir. ServiceResponseMessageType tipinde bir enum değeri taşır. Bu alan 3 tip değer alabilir, bunlar; Error: Hata Info: Bilgi Warning: Uyarı |
GetProduct JSON Request Modeli
{ "AuthTicket": "demodemodemodemodemodemodemodemo", "List": [ { "SerialNumber": "SERINO001", "SalesDate": "2022-11-17T12:30:00", "WaybillNumber": "IRS-001", "Product": { "Code": "URUN001" }, "Dealer": { "Code": "BAYI001" }, "ManufacturedYear": 2022, "ManufacturedMonth": 11, "ManufacturedWeek": 3, "QuoteNumber": "QUOTE123" } ] }
GetProduct JSON Response Modeli
4 adet seri numarasının olduğu json isteği ve sadece 2 tanesi aktarılmış diğerleri aktarılmamış dönen response isteği.Aktarılmayanların bilgileri ve mesajlarını döner.
{ "HasIgnoredSerials": true, "RequestCount": 4, "AffectedCount": 2, "IgnoredSerials": [ { "Product": { "Code": "8216180100", "Name": null, "MainGroup": null, "Point": 0.0, "Brand": null, "Model": null, "Manufacturer": null, "Price": 0.0, "Currency": null, "PreviewImage": null, "Description": null, "Images": null, "WarrantyPeriod": 0, "SerialNumberCount": 0, "Width": 0.0, "Height": 0.0, "Id": 0, "IsActive": false, "Text": null }, "Dealer": { "Code": "435", "Name": null, "PartnerType": null, "Id": 0, "IsActive": false, "Text": null }, "SerialNumber": "SERINO16511001", "ManufacturedYear": null, "ManufacturedMonth": null, "ManufacturedWeek": null, "SalesDate": "2022-11-17T12:30:00", "SalesDateAsString": "11/17/2022 12:30:00 PM", "FirstRunDate": null, "FirstRunDateAsString": "", "WarrantyLevel2": null, "WaybillNumber": "IRS-001", "IsWarrantyVoid": false, "WarrantyVoidReason": null, "WarrantyVoidDate": null, "WarrantyVoidDateAsString": "", "WarrantyInfo": null, "QuoteNumber": null, "Id": 0, "IsActive": false, "Text": null }, { "Product": { "Code": "324", "Name": null, "MainGroup": null, "Point": 0.0, "Brand": null, "Model": null, "Manufacturer": null, "Price": 0.0, "Currency": null, "PreviewImage": null, "Description": null, "Images": null, "WarrantyPeriod": 0, "SerialNumberCount": 0, "Width": 0.0, "Height": 0.0, "Id": 0, "IsActive": false, "Text": null }, "Dealer": { "Code": "2202340", "Name": null, "PartnerType": null, "Id": 0, "IsActive": false, "Text": null }, "SerialNumber": "SERINO435001", "ManufacturedYear": null, "ManufacturedMonth": null, "ManufacturedWeek": null, "SalesDate": "2022-11-17T12:30:00", "SalesDateAsString": "11/17/2022 12:30:00 PM", "FirstRunDate": null, "FirstRunDateAsString": "", "WarrantyLevel2": null, "WaybillNumber": "IRS-001", "IsWarrantyVoid": false, "WarrantyVoidReason": null, "WarrantyVoidDate": null, "WarrantyVoidDateAsString": "", "WarrantyInfo": null, "QuoteNumber": null, "Id": 0, "IsActive": false, "Text": null } ], "Results": null, "MessageList": [ { "Type": 1, "Message": "SERINO16511001;SERINO16511001 seri numarası için bayi tanımı bulunamadı. Bayi Kodu: 435" }, { "Type": 1, "Message": "SERINO435001;SERINO435001 seri numarası için ürün tanımı bulunamadı. Ürün Kodu: 324" } ], "HasError": false, "HasMessage": true }
Hepsinin aktarıldığı durumda.
{ "HasIgnoredSerials": false, "RequestCount": 4, "AffectedCount": 4, "IgnoredSerials": [], "Results": null, "MessageList": [ { "Type": 2, "Message": "4 adet seri numarasının tümü kaydedildi." } ], "HasError": false, "HasMessage": true }