Ana içeriğe geç

Sipariş Oluşturma - createShipping()

Sipariş Oluşturma

Horoz Lojistik Yurtiçi Dağıtım Entegrasyonu üzerinde bulunan createShipping() metodu, Horoz sisteminde göndericisinden alıcısına taşınacak, bünyesinde bir yada birden fazla koli, paket, palet vb taşınacak fiziksel ürün bulunduran bir sevk emri oluşturmak için kullanılması gereken web servis metodudur.

Horoz Lojistik ile yurtiçi dağıtım operasyonu kapsamında anlaşması olan satıcı kendi deposundan son tüketicilerine yapılacak ürün çıkışları için ve/veya bünyesindeki pazar yeri satıcılarının son tüketicilerine ürün çıkışları için createShipping() metodunu kullanarak Horoz Lojistik Yurtiçi Dağıtım Entegrasyonu üzerinden Horoz sistemine sevk emri verisi oluşturabilir.

İstemci tarafından Horoz Lojistik sistemine gönderilen sevk emri bir iş emri niteliğinde olup, Horoz Lojistik Yurtiçi Dağıtım Operasyon Birimi tarafından yapılan planlama ve mal kabul işlemlerinin akabinde operasyon yaşam döngüsüne girerek, satıcısından son tüketicisine taşınacak bir sipariş niteliği kazanır. createShipping() metodu ile ilgili önemli bilgiler ve Horoz sisteminde sevk emri oluşturulurken dikkat edilmesi gerekenler liste halinde aşağıda istemcilerin bilgisine sunulmuştur.

  • createShipping() metodu POST yöntem ile JSON formatta veri alan, bir RESTful web servis metodudur.

  • createShipping() metodu ile Horoz sistemine sevk emri gönderimi yaparken, siparişe ait bilgiler metodun body kısmına JSON veri tipinde geçilmelidir. İstemciye ait processKey bilgisi metodun header kısmına parametre tipinde geçilmelidir. createShipping() metodu ile yapılan gönderim UTF-8 olarak encode edilerek Horoz Lojistik Yurtiçi Dağıtım Entegrasyonu Web servisine iletilmelidir.

  • createShipping() metodu bir ana sevk emri verisi yapısı ve bu ana sevk emri verisi yapısının altında bir dizi listesi olarak içeriğinde ürün bilgileri bulunan bir detay sevk emri yapısından oluşur. Bir sevk emri yapısı içerisinde, son tüketicinin satıcıya verdiği siparişe ait sipariş numarası, gönderen bilgileri, alıcı bilgileri, toplam adet, toplam desi bilgileri ve bu sevk emrinin detayında ilgili siparişe ait bir veya birden fazla ürünü niteleyen ürün kodu, ürün adı, ürün adedi, ürün desisi, ürün ağırlığı bilgilerini içeren ürün bilgileri bulunur.

  • createShipping() metodu ile Horoz sistemine istemci tarafından bir sevk emri iletilirken, senderCity, senderCounty, recipientCity ve recipientCounty alanlarına istemci tarafından geçilecek bilgilerin Horoz Lojistik sisteminde tanımlı il ve ilçe bilgileri olması gerekir. Aksi halde istemciye createShipping() metodundan hata döner. İstemci Horoz Lojistik sisteminde tanımlı il ve ilçe bilgilerini Horoz Lojistik Yurtiçi Dağıtım Entegrasyonu içerisinde bulunan, GET yöntem ile çalışan listCounties() metodunu kullanarak elde edebilir. Horoz Lojistik sisteminde tanımlı il-ilçe bilgileri, Türkiye Cumhuriyeti İçişleri Bakanlığı Türkiye Mülki İdare Bölümleri Envanteri sisteminden alınarak kümelenip oluşturulmuştur. Mevcut veri aralıklar ile manuel olarak kontrol edilmektedir.

  • createShipping() metodu ile Horoz sistemine istemci tarafından bir sevk emri iletilirken, Horoz Yurtiçi Dağıtım Entegrasyonu Web servisine gönderilecek istek içerisindeki totalDesi ve shipmentCount alanlarına girilen siparişin bünyesindeki ürünlere ait toplam desi ve toplam adet bilgileri shippingDetail dizi listesi içerisine item olarak geçilen ürün bilgilerindeki desi ve quantity alanlarına geçilen ürün bazındaki desi ve adet bilgileri ile uyumlu olmalıdır. Sipariş gönderimi yapılırken createShipping() metodunun içerisindeki master ve detay bilgilerinde bulunan adet ve desi uyum ilişkisi için hatalı ve beklenen birer örnek gösterim aşağıdaki tablolarda belirtilmiştir.

Ana Kayıt;

REQUESTNUMBERSENDERTITLERECIPIENTTITLESHIPMENTCOUNTTOTALDESI
123456SATICI UNVANALICI UNVAN2320,000

Hatalı Kayıt Detayı;

PRODUCTCODEPRODUCTNAMEQUANTITYWEIGHTINKGTOTALDESIPRODUCTCATEGORY
PRODUCTCODE-1PRODUCTNAME-11,00020,650160,000YATAK
PRODUCTCODE-1PRODUCTNAME-11,00020,650160,000YATAK

Doğru Kayıt Detayı;

PRODUCTCODEPRODUCTNAMEQUANTITYWEIGHTINKGTOTALDESIPRODUCTCATEGORY
PRODUCTCODE-1PRODUCTNAME-12,00041,300320,000YATAK
  • createShipping() metodu ile Horoz sistemine istemci tarafından bir sevk emri iletilirken, Horoz Yurtiçi Dağıtım Entegrasyonu Web servisine gönderilecek istek içerisindeki alanlardan enum veri tipi dışında değer alan shippingType alanı dışındaki string veri tipinde değer alan diğer tüm alanlara geçilecek verilerin UPPERCASE ve Türkçe karakter olarak geçilmesi beklenir.

  • createShipping() metodu ile Horoz sistemine istemci tarafından bir sevk emri iletilirken, Horoz Yurtiçi Dağıtım Entegrasyonu Web servisine gönderilecek istek içerisindeki alanlardan requestNumber, shipmentCount, totalDesi, quantity, desi ve weightInKg alanları mutlaka dolu geçilmelidir.

  • İstemci tarafından createShipping() metodu ile Horoz sistemine iletilen sevk emirleri içerisindeki siparişlere ait bilgilerden özellikle desi bilgilerini niteleyen alanlara (totalDesi, desi), siparişlerin bünyesindeki ürünlere ait gerçek desi bilgileri geçilmelidir. Aksi halde sevk emrinin onaylanıp, mal kabul işlemi öncesinde araç planlaması yapılacak aşamada lojistik operasyon için sorun yaşanacaktır. Bu nedenle entegrasyon üzerinden iletilecek sevk emri verisinin gerçekten fiziksel olarak taşınacak ürünlere ait adet ve desi bilgilerini içermesi gerekir.

  • İstemci tarafından createShipping() metodu ile Horoz sistemine iletilen sevk emirleri içerisindeki ürünlerin bilgileri geçilirken desi ve weightInKg alanlarının her ikisinede ürün bazında birim desi bilgilerinin adet ile çarpılmış hallerinin geçilmesi beklenir.

  • Horoz Lojistik Yurtiçi Dağıtım Entegrasyonu kapsamında, istemci tarafından createShipping() metodu ile Horoz sistemine dört tip sevk emri verisi gönderilebilir. createShipping() metodu ile gönderilen sevk emirleri için sevk tipi bilgileri, istek içerisinde bulunan shippingType alanına geçilir. Sevk emri tipleri hakkında detaylı bilgi aşağıdaki başlıklar altından görebilirsiniz.

shippingRequest

shippingRequest değeri Horoz Lojistik ile yurtiçi dağıtım operasyonu için anlaşması bulunan satıcının kendi deposundan çıkış yapacağı siparişler için createShipping() metodu ile Horoz sistemine gönderim yapılırken shippingType alanına geçilecek değerdir.

Bu tipin geçildiği sevk emri Horoz Lojistik’in yurtiçi dağıtım operasyonu için anlaşmalı olduğu satıcısından, satıcının son müşterisine yönlü bir siparişi temsil eder. İstemci bu tip bir bildirim için createShipping() metodu ile veri gönderimi yaparken istek içeriğindeki gönderici alanlarına1 siparişlerin çıkış yapacağı deposunun veya çıkış noktasının bilgilerini geçmelidir. Bunun 2 yöntemi vardır.

İlk yöntem olarak, istemci senderCode alanına daha önce Horoz Lojistik sisteminde tanımlanmış ilgili çıkış noktasının kodunu geçerek, diğer gönderici alanlarını1 boş bırakır. createShipping() metodunda senderCode alanına geçilen kod bilgisi, sevk emri oluşurken Horoz sisteminde tanımlı müşterinin çıkış lokasyonu bilgilerine bakarak diğer gönderen alanlarını doldurur.

İkinci yöntem olarak, istemcinin senderCode alanına 0 geçerek diğer gönderici alanlarını1 doldurması beklenir.
Aynı şekilde her iki yöntemde recipientCode alanına uygulanabilmektedir.

return

return değeri Horoz Lojistik ile yurtiçi dağıtım operasyonu için anlaşması bulunan satıcının müşterisinden kendi deposuna iade operasyonunun yürütülmesini istediği siparişler için createShipping() metodu ile Horoz sistemine gönderim yapılırken shippingType alanına geçilecek değerdir.

Bu tipin geçildiği sevk emri Horoz Lojistik’in yurtiçi dağıtım operasyonu için anlaşmalı olduğu satıcısının müşterisinden, satıcının kendisine yönlü bir siparişi temsil eder. İstemci bu tip bir bildirim için createShipping() metodu ile veri gönderimi yaparken istek içeriğindeki gönderici alanlarına1 siparişlerin alınacağı son müşterinin bilgilerini veya deponun bilgilerini geçmelidir. Bunun 2 yöntemi vardır.

İlk yöntem olarak, istemci senderCode alanına daha önce Horoz Lojistik sisteminde tanımlanmış ilgili çıkış noktasının kodunu geçerek, diğer gönderici alanlarını1 boş bırakır. createShipping() metodunda senderCode alanına geçilen kod bilgisi, sevk emri oluşurken Horoz sisteminde tanımlı müşterinin çıkış lokasyonu bilgilerine bakarak diğer gönderen alanlarını doldurur.

İkinci yöntem olarak, istemcinin senderCode alanına 0 geçerek diğer gönderici alanlarını1 doldurması beklenir.
Aynı şekilde her iki yöntemde recipientCode alanına uygulanabilmektedir.

branchSales

branchSales değeri Horoz Lojistik ile yurtiçi dağıtım operasyonu için anlaşması bulunan satıcının e-ticaret operasyonu kapsamında pazaryeri ve/veya mağaza çıkışlarını yapacağı siparişler için createShipping() metodu ile Horoz sistemine gönderim yapılırken shippingType alanına geçilecek değerdir.

Bu tipin geçildiği sevk emri Horoz Lojistik’in yurtiçi dağıtım operasyonu için anlaşmalı olduğu satıcısından, pazaryerinden satıcının son müşterisine yönlü bir siparişi temsil eder. İlgili satıcının pazaryeri ve/veya mağaza çıkışları için createShipping() metodunun alanları doldurulurken senderCode bilgisi 0 geçilir ve diğer gönderici alanları1 ilgili satıcı pazaryerinin bilgileri ile doldurulur. Aynı şekilde alıcı bilgileri içinde recipientCode bilgisi 0 geçilir ve diğer alıcı alanları2 alıcı bilgileri ile doldurulur.

branchReturn

branchReturn değeri Horoz Lojistik ile yurtiçi dağıtım operasyonu için anlaşması bulunan satıcının e-ticaret operasyonu kapsamında pazaryeri ve/veya mağazalara müşterilerinden geri dönecek olan siparişler için createShipping() metodu ile Horoz sistemine gönderim yapılırken shippingType alanına geçilecek değerdir.

Bu tipin geçildiği sevk emri Horoz Lojistik’in yurtiçi dağıtım operasyonu için anlaşmalı olduğu satıcının son müşterisinden, ilgili pazaryerine yönlü bir siparişi temsil eder. İlgili satıcının pazaryeri ve/veya mağaza çıkışları için createShipping() metodunun alanları doldurulurken senderCode bilgisi 0 geçilir ve diğer gönderici alanları1 ilgili satıcı pazaryerinin bilgileri ile doldurulur. Aynı şekilde alıcı bilgileri içinde recipientCode bilgisi 0 geçilir ve diğer alıcı alanları2 alıcı bilgileri ile doldurulur.


POST createShipping()

Parametre Açıklamaları & Kuralları

Aşağıdaki tabloda createShipping() işleminin giriş ve çıkış parametreleri ve bu parametrelerin tür ve formatları listelenmiştir.

AlanlarAçıklamaVeri TipiUzunlukAlan YeriZorunluluk
processKeyİstemci için tanımlanan processKey bilgisistring100HeaderZorunlu
requestNumberSipariş numarasıstring50inBody RequestZorunlu
senderCodeGönderen koduinteger-inBody RequestZorunlu
senderTitleGönderen unvanıstring100inBody RequestZorunlu
senderCityGönderen il adıstring50inBody RequestZorunlu
senderCountyGönderen ilçe adıstring50inBody RequestZorunlu
senderAdressGönderen adresstring500inBody RequestZorunlu
senderPhoneNumberGönderen telefon numarasıstring20inBody RequestZorunlu
senderEmailGönderen emailstring100inBody RequestOpsiyonel
recipientCodeAlıcı koduinteger-inBody RequestZorunlu
recipientTitleAlıcı unvanıstring100inBody RequestZorunlu
recipientCityAlıcı il adıstring50inBody RequestZorunlu
recipientCountyAlıcı ilçe adıstring50inBody RequestZorunlu
recipientAddressAlıcı adresstring500inBody RequestZorunlu
recipientPhoneNumberAlıcı telefon numarasıstring20inBody RequestZorunlu
recipientEmailAlıcı emailstring100inBody RequestOpsiyonel
taxOfficeVergi dairesistring20inBody RequestOpsiyonel
taxNumberVergi numarasıstring20inBody RequestOpsiyonel
shipmentCountToplam adetinteger-inBody RequestZorunlu
totalDesiToplam desifloat-inBody RequestZorunlu
shippingTypeSevk tipistring20inBody RequestZorunlu
requestDateİstek gönderim tarihiDATEYYYY-MM-DDinBody RequestZorunlu
requestedDeliveryDateİstenilen teslimat tarihiDATEYYYY-MM-DDinBody RequestZorunlu
shippingDetail[]Sevk detayıArrayList-inBody RequestZorunlu
productCodeÜrün kodustring50inBody RequestZorunlu
productNameÜrün adıstring100inBody RequestZorunlu
quantityAdetinteger-inBody RequestZorunlu
weightInKgAğırlıkfloat-inBody RequestZorunlu
desiDesifloat-inBody RequestZorunlu
productCategoryÜrün kategorisistring100inBody RequestZorunlu

Servis Cevapları

Response KoduResponse MesajıAçıklama
STA-100Kayit islemi basariliSevkiyat oluşturma işleminin başarılı olduğunu ifade eder.
ERR-20001HATALI IŞLEM ANAHTARIGeçilen processKey bilgisinin yanlış olduğunu belirtir.
ERR-20002EKSİK PARAMETRE: TALEP NUMARASIrequestNumber bilgisinin eksik girildiğini ifade eder.
ERR-20002GİRİLEN DEĞER ÇOK UZUN: Alan AdıBelirtilen alana girilen değerin çok uzun olduğunu belirtir.
ERR-20003BU TALEP NUMARASI SISTEMDE MEVCUT - Key: XXX TalepNo: XXXDaha önce aynı requestNumber bilgisi ile bir sevkiyat oluşturulduğunu belirtir.
ERR-20005GEÇERSİZ GÖNDEREN BİLGİSİsenderCode alanına girilen değerin Horoz Sisteminde tanımlı olmadığını belirtir.
ERR-20006GEÇERSİZ ALICI BİLGİSİrecipientCode alanına girilen değerin Horoz Sisteminde tanımlı olmadığını belirtir.
ERR-20007EKSİK PARAMETRE: TOPLAM ADET/DESİtotalDesi ve shipmentCount alanlarının boş geçildiğini ifade eder.
ERR-20008EKSİK PARAMETRE: KARGO BİLGİLERİshippingDetail arrayi altındaki alanlarda eksik olduğunu ifade eder.
ERR-20009DESI BILGISI SIFIR OLAMAZ.desi alanlarına girilen değerin 0'dan büyük olması gerekir.
ERR-20012TOPLAM DESI SIFIR OLAMAZtotalDesi alanına girilen değerin 0'dan büyük olması gerekir.
ERR-20056shippingType BİLGİSİ BOŞ GEÇİLEMEZ.shippingType alanına değer girilmesi gerektiğini belirtir.
ERR-20071BU TALEP DAHA ÖNCE GÖNDEREN İL/İLÇE YADA ALICI İL/İLÇE BOZUK OLARAK SİSTEME GÖNDERİLMİŞ. KAYDI DÜZELTİP TEKRAR DENEYİNİZİstekte geçilen requestNumber bilgisi ile daha önce il ve ilçe bilgileri hatalı bir kayıt oluşturulduğunu ve il ilçe bilgilerini doğru bir şekilde girerek aynı requestNumber ile kaydın oluşturulması gerektiğini ifade eder.

Dip Notlar

Footnotes

  1. (senderTitle, senderCity, senderCounty, senderAddress, senderPhone...) 2 3 4 5 6 7 8

  2. (recipeintTitle, recipientCity, recipientCounty, recipientAddress, recipientPhone...) 2