Satış Siparişi ve Rezerve İşlemleri


Sipariş alındığında stoklar siparişe özel olarak rezerv edilir.Rezerve işlemi ve çalışan fonksiyonlar.

Fonksiyon

Açıklama

Tablolar veya Kolonlar

check_reserved_rows()

Sipariste belge bazında rezervasyon seceneğine baglı olarak satır rezerve tiplerini edit eder. Satırda sipariş aşaması kapatılmıs ve fazla teslimat asaması haricindeki tum satırlar rezerve olarak set ediliyor.

Bu fonksiyon "Stok Rezerve Et" checbox'ında  ve saveForm()  fonksiyonun kullanıldığı yerde tetikleniyor.

Sipariş kayıt edilirken session da spect_type varsa ve 5'e eşitse ve ürün silinmemiş ise Rezerve edilecek stok Spec icin secilen stock_row satirlarini STOCKS_ROW_RESERVED tablosuna kaydeder.

ORDER_ROW Tablosunda RESERVE_TYPE alanı

STOCKS_ROW_RESERVED tablosuna ekleme yapılıyor

add_reserve_row()

Siparişte rezerve bilgilerini ve satır aşamalarını günceller.

Siparişin irsaliye-fatura bağlantısını oluşturur. Faturalardan irsaliyeye cekilen sipariş varsa irsaliye iptal edildiğinde irsaliyeye çekilmiş siparişle bağlantısının silinmesi, sipariş satır aşamalarının güncellenmesi de add_reserve_row fonskiyonu içinde yapılır.

  1. İPTAL İRSALİYE : irsaliye iptal seçildiğinde, irsaliyeye çekilmiş sipariş varsa; irsaliye-sipariş bağlantıları koparılıp, sipariş satır aşamaları ve rezerve tipleri güncellenir.

  2. irsaliyeye çekilmis olsada sipariş satırında rezerve değil seçilmişse rezerve tipi değiştirilmez CHANGE_RESERVE_STATUS 0 olan yani no_change_order_list listesindeki siparişlerin rezerve aşamaları da değistirilmez. Stok hareketi yapan irsaliyeye çekilmemiş satır siparişteki rezerve tipini korur

  3. Ekleme ve Güncelleme İşlemlerinde tek bir satır bile rezerve veya kısmı rezerve ise belge bazında rezervasyon seçilir. Silme ve iptal işlemlerinde kısmı rezerve ve kapatılan rezerve satırlar asağıda rezerve olarak update edileceğinden belge bazında rezervede seçilmelidir

  4. İrsaliyelere çekilen toplam miktarına göre sipariş aşaması, stok hareketi yapan miktara bağlı olarak ise rezerve türü update ediliyor. (ORDER_ROW tablosu)

  5. Siparişin çekildiği irsaliye yoksa eksik teslimat, kapatıldı ve fazla teslimat aşamaları tekrar sevk haline getiriliyor kapatılmış ve eksik rezerve satırlar rezerve olarak update ediliyor

  6. Siparişle ilişkili irsaliye ve fatura kontrol edilerek ORDERS tablosunda IS_PROCESSED değeri şekilleniyor ve RESERVED alanı paper_general_reserve_type true ise 1 set edilir. Yani ekleme ve güncelleme de bir satır bile rezerve veya kısmı rezerve ise belge bazında rezerve seçili olmuş oluyor ve bu alan (RESERVED ="stok rezerve et") hep işaretli olarak gelir.

ORDER_ROW_RESERVED

İrsaliyesi kesilince;

Irsaliyeye çekilen sipariş var mı diye bakılıyor varsa eğer add_reserve_row fonksiyonuna is_order_process değerini 1 olarak gönderiyor sipariş ve faturayla ilişkili olduğu halde bu işlemler güncellendigin satır rezervleri değişmeyecek siparişler çekiliyor (ship_id değerine göre orders_ship tablosunun order_id ve change_reserve_status alanları çekiliyor) ekleme ve reserve çözme işlemlerin hariç bu order id değerlerini listeye atıyor daha sonra sipariş irsaliyeye cekme işlemiyse siparişin satır aşamaları güncelleniyor irsaliye güncelleme veya silme sayfasında çağrıliyorsa önceo irsaliye ye ait orders_ship kayıtları silinir orders_ship tablosuna kayıt yazılması için;
1.irsaliye ilişkisi kesilmiş siparişler listesinde olmamalı 
2.iptal veya silme isleminde çağrışmamış olmalı 
3.güncelleme işleminde çağrılmışsa değiştirilmeyecek siparişler listesinde olmamalı çünkü güncelleme de bu siparişlerin orders_ship kayıtları silinmiyor
Siparişin ürün miktarları alınmış ve burda bu query den dönen değerlere gore rezerve type ve miktarları hesaplanır. Irsaliyeden çağrıliyorsa order_row_reserved tablosuna order_id order_wrk_row_id ship_id ve period_id alanları dolduruluyor irsaliye satırlarındaki sipariş bağlantısı wrk_row_relation_id alanında tutuluyor bu alan satırın ilgili olduğu siparişin wrk_row_id değerlerini taşır.
Stok durum listesinde stock_id spect_id ve miktar göndererek ürün reserve ediliyor reserve çözme işlemi değilse order_row dan değerler alınır değilse order_row_reserved tablosunda alınır. Bu tablodan;

1.çözülebilecek max. Reserve miktarı belirlenir
2.iptal edilecek miktar çözülecek veya reserve edilecek miktara ekleniyor reserve amount max.reserve amount dan büyük ise uyarı verir "mak. Rezerve miktarını aştınız " şeklinde

3.reserve amount değeri sıfırdan büyük ise order_row_reserved tablosuna değerler atanır burda ki değerleri alıp order_row da reserve_type alanlarını günceller bu tablodaki reserve_type degerini reserve_order_id ye göre cekip orders tablosunda reserved alanını update eder.

Sipariş Aşaması
Rezerve Tipi
-1 Açık, -2 Tedarik, -3 Kapatıldı, -4 Kısmi Üretim, -5 Üretim, -6 Sevk, -7 Eksik Teslimat, -8 Fazla Teslimat, -9 İptal, -10 Kapatıldı(Manuel)
-1 rezerve , -2 kısmi rezerve, -3 rezerve değil, -4 rezerve kapatıldı
sipariş aşaması (order_currency) irsaliyelestirilen toplam miktara gore bulunuyor.
rezerve_type stok hareketi yapan irsaliyelerdeki miktarlara gore hesaplanır.Siparis satırlarının reserve_type belirlenmesi siparişin amount değeri ile rezerve edilen amount değeri kıyaslaması sonucu belirlenir.
Sipariş amount değeri irsaliye amount değerinden eşit ise --->Kapatıldı
büyük ise ---> Eksik Teslimat
küçük ise ---> Fazla Teslimat aşamasına alınır
Sipariş amount değeri rezerve amount değerinden küçük ise --->Rezerve Kapatıldı
büyük ise ---> Kısmi Rezerve 
yok ise yani 0 ise ----> Rezerve Değil şeklinde update edilir
sipariş aşaması eğer -3,-7,-8 ise ve sipariş amount değeri irsaliye amount değerinden büyük ise sipariş aşaması Sevk Teslimat aşamasına alınır
siparişin rezerve tipi Rezerve Değil ise ve Sipariş aşaması Kapatıldı(Manuel) ve İptal ise siparişin rezerve tipi değiştirilmez sipariş de ne ise o gelir. irsaliyeye cekilmis olsada siparis satırında rezerve degil secilmisse rezerve tipi değiştirilmez

siparisin cekildigi irsaliye yoksa eksik teslimat, kapatıldı ve fazla teslimat aşamaları tekrar sevk haline getiriliyor kapatılmıs ve eksik rezerve satırlar rezerve olarak update ediliyor

Geri Bildirim

Bu içeriği faydalı buldunuz mu?