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

AlanAçıklamaDeğer
ListAktarı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;
AlanGeri Dönüş Değeri
HasError false
HasIgnoredSerials true 
MessageList[?].TypeResponseMessageType.Warrning

Aktarım Senaryosu 2

var request=new ProductSerialNumberRequest();
request.OnFailure = OnFailureRule.TryNext;
request.OnWarning = OnWarningBehavior.ShowAsError;
AlanGeri Dönüş Değeri
HasError true
HasIgnoredSerials true 
MessageList[?].TypeResponseMessageType.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

AlanAçıklamaDeğ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
HasIgnoredSerialsGö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)

AlanAçıklama
Değer
AuthTicketKimlik doğrulaması için kullanılacak ticketZorunlu
SerialNumberFiziki olarak cihaz üzerinde bulunana seri numarasıZorunlu
SalesDate
Satış tarihi

Zorunlu
WaybillNumberİrsaliye numarası
Zorunlu
Product.CodeSeri numarasının ait olduğu ürün Kodu
Zorunlu
Dealer.CodeBayi tanımlıyıcı kodu 
Zorunlu
PartnerType.CodePartner 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ı
QuoteNumberTeklif numarası, Sipariş Numarası
İsteğe Bağlı

Response (Cevap)

AlanAçı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.
MessageListHasError 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.

AlanAçıklama
MessageHata veya Bilgi mesajı metin olarak buradan alınabilir.
Urlhttps://weburl.com/api/ERP/ImportProductSerialNumbers
TypeServis 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
}