ÖZEL SÜREÇ YÖNETİMİ PARAMETRE ve PROSEDÜRLERİ

Özel süreçlerin uyarlanabilmesi için kullanılan fiyat değişiklik kontrol ve ve özel süreç kontrol parametreleri bu kısmın konusunu oluşturur.

Parametre açılması ve parametrenin veritabanındaki ilgili prosedür karşılığının özelleştirmesi ile kullanılır.

1) Fiyat Kontrolü: Yetkili kişi tarafından yapılabilen Net fiyat – Kalem İskontosu – Genel İskonto gibi alanların güncellemesi sırasında yönetimsel kontrol koyulabilmesini sağlayan özelleştirmelerdir. (Ör: Plasiyerler %50 üzerinde iskonto yapamasın, X Plasiyer %30 üzerinde iskonto yapabilsin – Y Plasiyer yapamasın vb)

2) Özel Süreç Kontrolü: B2B içerisinde belli bir tıklama, ekrana gidiş, ekrandan çıkış vb sırasında tetiklenebilen prosedürler "Özel süreç kontrol parametreleri" ile kontrol edilirler. (Ör: Sepete X ürünü eklerken 6 nın katları şeklinde ekleme zorunluluğu, x ürünü eklerken y ürünü de eklemek, Sepete giderken belli bir kondisyon gereği ek alanları istenilen şekilde güncelleyebilmek vb)


FİYAT KONTROLÜ PARAMETRELERİ

Ayarlar > Sipariş Ayarları > Parametreler > Fiyat Kontrolü bölümü altında bulunan parametrelerdir.


Bahsedilecek parametreler sırası ile: 

  1. Özel fiyatlandırma kullanılsın?
  2. Fiyat aralık kontrolü yapılsın?
  3. Net fiyat aralık kontrolü yapılsın?
  4. Kalem iskontosu aralık kontrolü yapılsın?
  5. Genel iskonto 1 aralık kontrolü yapılsın?
  6. Genel iskonto 2 aralık kontrolü yapılsın?
  7. Genel iskonto 3 aralık kontrolü yapılsın?


1- ÖZEL FİYATLANDIRMA KULLANILSIN?

Parametre işaretlenmesi durumunda veritabanındaki PRTSP_GET_SPECIAL_PRICE prosedürü kontrol edilir. Uyarlama ile bu prosedür içerisine sipariş üst bilgileri arasından koşul ve kısıt verilerek özel fiyat tanımlaması yapılabilir.

Ör: Bir cari için teslimat müşterisi bazında özel fiyat tanımı yaptırılabilir.

-Veritabanı uyarlama örneği için uyarlama bölümünü inceleyebilirsiniz.


@FX_TYPE  için atanan değer de döndürülecek özel fiyatın para birimidir. 


Uyarlama Örneği:  

ALTER PROCEDURE [dbo].[PRTSP_GET_SPECIAL_PRICE]
 @BASKET_ID INT,
 @STOCK_CODE VARCHAR(35)
AS
 
DECLARE @SPECIAL_PRICE DECIMAL(28,8)
DECLARE @FX_TYPE INT
 
DECLARE @USER_ID INT                                                --SsoUserId
DECLARE @ACCOUNT_CODE VARCHAR(15)                        --Cari Kodu
DECLARE @DELIVERY_ACCOUNT_CODE VARCHAR(15)        --Teslim Cari Kodu
DECLARE @BRANCH_ID SMALLINT                                        --Şube Kodu
 
SELECT                @USER_ID = B.[USER_ID],
                 @ACCOUNT_CODE = B.ACCOUNT_CODE,
                 @DELIVERY_ACCOUNT_CODE = B.DELIVERY_ACCOUNT_CODE
FROM                PRT_BASKET B
WHERE                B.ID = @BASKET_ID
 
SELECT                @BRANCH_ID = n.[V$SUBE_KODU]
FROM                NETCONTEXT n
 
/*******************************************
*        Özel fiyat uygulamak istiyorsanız
*        @SPECIAL_PRICE değişkenine bir değer atayınız.
*        Eğer bir değer atamazsanız o ürün için
*        sistemde tanımlı fiyat kullanılır.
*******************************************/
 
SET @SPECIAL_PRICE = -1
SET @FX_TYPE = 0
 
IF @STOCK_CODE = 'LUK621304109'
BEGIN
 IF @DELIVERY_ACCOUNT_CODE = '001'
         SET @SPECIAL_PRICE = 250
 ELSE
         SET @SPECIAL_PRICE = 350        
END
 SELECT @SPECIAL_PRICE AS SPECIAL_PRICE, @FX_TYPE AS FX_TYPE


 

2- FİYAT ARALIK KONTROLÜ YAPILSIN?

Parametre işaretlenmesi durumunda veritabanındaki PRTSP_CONTROL_ITEM_PRICE_RANGE prosedürü kontrol edilir. Uyarlama ile bu prosedür içerisinde yapılacak tanımlama ile stoklara belli bir fiyat aralığı belirlenebilir ve plasiyerin bu aralık dışında değer girmesi durumunda işlem engellenerek ekrana da istenilen bir uyarı mesajı bastırılabilir.


3- NET FİYAT ARALIK KONTROLÜ YAPILSIN?

Parametre işaretlenmesi durumunda veritabanındaki PRTSP_CONTROL_ITEM_NET_PRICE_RANGE prosedürü kontrol edilir. Uyarlama ile bu prosedür içerisinde yapılacak tanımlama ile stoklara belli bir net fiyat aralığı belirlenebilir ve plasiyerin bu aralık dışında değer girmesi durumunda işlem engellenerek ekrana da istenilen bir uyarı mesajı bastırılabilir.  


4- KALEM İSKONTOSU ARALIK KONTROLÜ YAPILSIN?

Parametre işaretlenmesi durumunda veritabanındaki PRTSP_CONTROL_ITEM_DISCOUNT_RANGE prosedürü kontrol edilir. Uyarlama ile bu prosedür içerisinde yapılacak tanımlama ile stoklar için kalem iskonto oranları için belli bir aralık belirlenebilir ve plasiyerin bu aralık dışında değer girmesi  durumunda işlem engellenerek ekrana da istenilen bir uyarı mesajı bastırılabilir.


5- GENEL İSKONTO 1 ARALIK KONTROLÜ YAPILSIN?

Parametre işaretlenmesi durumunda veritabanındaki PRTSP_CONTROL_GENERAL_DISCOUNT_RANGE prosedürü kontrol edilir. Uyarlama ile bu prosedür içerisinde yapılacak tanımlama ile genel iskonto 1 oranları için belli bir aralık belirlenebilir ve plasiyerin bu aralık dışında değer girmesi  durumunda işlem engellenerek ekrana da istenilen bir uyarı mesajı bastırılabilir.


6- GENEL İSKONTO 2 ARALIK KONTROLÜ YAPILSIN?

Parametre işaretlenmesi durumunda veritabanındaki PRTSP_CONTROL_GENERAL_DISCOUNT2_RANGE prosedürü kontrol edilir. Uyarlama ile bu prosedür içerisinde yapılacak tanımlama ile genel iskonto 2 oranları için belli bir aralık belirlenebilir ve plasiyerin bu aralık dışında değer girmesi  durumunda işlem engellenerek ekrana da istenilen bir uyarı mesajı bastırılabilir.


7- GENEL İSKONTO 3 ARALIK KONTROLÜ YAPILSIN?

Parametre işaretlenmesi durumunda veritabanındaki PRTSP_CONTROL_GENERAL_DISCOUNT3_RANGE prosedürü kontrol edilir. Uyarlama ile bu prosedür içerisinde yapılacak tanımlama ile genel iskonto 3 oranları için belli bir aralık belirlenebilir ve plasiyerin bu aralık dışında değer girmesi  durumunda işlem engellenerek ekrana da istenilen bir uyarı mesajı bastırılabilir.

ÖZEL SÜREÇ KONTROLÜ PARAMETRELERİ

Ayarlar > Sipariş Ayarları > Parametreler > Özel Süreç Kontrolü bölümü altında bulunan parametrelerdir.

Bahsedilecek parametreler sırası ile: 

  1. Sepete ürün ekleme işlemi kontrol edilsin?
  2. Sepetten ürün silme işlemi kontrol edilsin?
  3. Sepette ürün miktarı güncelleme işlemi kontrol edilsin?
  4. Sipariş kaydetme işlemi kontrol edilsin?
  5. Sepetim ekranı öncesi kontrol edilsin?
  6. Sepetim ekranı sonrası kontrol edilsin?
  7. Sepet hesaplama öncesi kontrol edilsin?


Ayrıca Parametresi olmayan özel prosedür:8- Sipariş kayıt işlemi sonrası kontrol edilsin?


1- SEPETE ÜRÜN EKLEME İŞLEMİ KONTROL EDİLSİN?

  • Parametre işaretlenmesi durumunda veritabanındaki PRTSP_CONTROL_ADD_ITEM_TO_CART prosedürü kontrol edilir.
  • Uyarlama ile bu prosedür içerisinde yapılacak tanımlama sonrası; sepete eklenen her ürün için, ekleme butonuna basıldığında ilgili prosedürün çalışması ve uyarlanan kontrolün yapılması işlevini görür.

Veritabanı uyarlama örneği için bölümünü inceleyebilirsiniz.


 Sepete Ekleme Sırasında Özel Süreç Kontrol Uyarlaması:
Orijinal Prosedür:  
 
CREATE PROCEDURE [dbo].[PRTSP_CONTROL_ADD_ITEM_TO_CART]
 @BASKET_ID INT,
 @STOCK_CODE VARCHAR(35),
 @QUANTITY DECIMAL(28,8)
AS
 
/*
*  @RESULT = 1 ise ürün sepete eklenebilir
*
*  @RESULT = 0 ise ürün sepete eklenemez.
*  @MESSAGE değişkeninde bir değer varsa kullanıcıya gösterilir.
*  @MESSAGE değişkeninde bir değer yoksa standart hata mesajı gösterilir.
*
*  @UPDATED_QUANTITY -> Eğer miktar güncellenmek isteniyorsa bu sahaya yeni miktar değeri atanabilir.
*  Stok sepete bu miktar ile kaydedilir.
*
* */
 
DECLARE @USER_ID INT                                                --SsoUserId
DECLARE @ACCOUNT_CODE VARCHAR(15)                        --Cari Kodu
DECLARE @DELIVERY_ACCOUNT_CODE VARCHAR(15)        --Teslim Cari Kodu
 
SELECT                @USER_ID = B.[USER_ID],
                 @ACCOUNT_CODE = B.ACCOUNT_CODE,
                 @DELIVERY_ACCOUNT_CODE = B.DELIVERY_ACCOUNT_CODE
FROM                PRT_BASKET B
WHERE                B.ID = @BASKET_ID
 
DECLARE @RESULT BIT
DECLARE @MESSAGE NVARCHAR(MAX)
DECLARE @UPDATED_QUANTITY DECIMAL(28,8)
 
SET @RESULT = 1
SET @MESSAGE = ''
SET @UPDATED_QUANTITY = @QUANTITY
 
/*
*
*
* Size özel iş mantığını burada işletebilirsiniz.
*
*
*/
 
 
SELECT        @RESULT AS [Result], @MESSAGE AS [Message], @UPDATED_QUANTITY AS [UpdatedQuantity]
 
 
 
 -------------------------------------------------------------------------
ÖRNEK Uyarlama:
Bu uyarlama örneğinde sepete eklenen ürünün grup kodu kontrol edilerek, eğer sepette  '009' numaralı yağ grubundan ürünler varsa, grup kodu farklı bir ürün sepete eklenemiyor; sepette '009' grup kodundan farklı grup koduna sahip ürünler varken yağ grubu(009)ndan ürün sepete eklenmek istenirse de ekleme yapabilmek için önce diğer ürünlerin sepetten çıkarılması gerektiği uyarısı yaptırılıyor.
 
NOT: Bu prosedür içerisinde tanımlama ile sepet üzerinde güncelleme-silme-ekleme yapılabilir.
 
ALTER PROCEDURE [dbo].[PRTSP_CONTROL_ADD_ITEM_TO_CART]
 @BASKET_ID INT,
 @STOCK_CODE VARCHAR(35),
 @QUANTITY DECIMAL(28,8)
AS
 
/*
*  @RESULT = 1 ise girilien değer geçerli bir değerdir.
*
*  @RESULT = 0 ise girilen değer geçerli değildir.
*  @MESSAGE değişkeninde bir değer varsa kullanıcıya gösterilir.
*  @MESSAGE değişkeninde bir değer yoksa standart hata mesajı gösterilir.
*
* */
 
DECLARE @USER_ID INT                                                --SsoUserId
DECLARE @ACCOUNT_CODE VARCHAR(15)                        --Cari Kodu
DECLARE @DELIVERY_ACCOUNT_CODE VARCHAR(15)        --Teslim Cari Kodu
 
SELECT                @USER_ID = B.[USER_ID],
                 @ACCOUNT_CODE = B.ACCOUNT_CODE,
                 @DELIVERY_ACCOUNT_CODE = B.DELIVERY_ACCOUNT_CODE
FROM                PRT_BASKET B
WHERE                B.ID = @BASKET_ID
 
DECLARE @RESULT BIT
DECLARE @MESSAGE NVARCHAR(MAX)
 
SET @RESULT = 1
SET @MESSAGE = ''
 
DECLARE @StokGrupKodu VARCHAR(8)
DECLARE @KontrolGrupKodu VARCHAR(8)
 
SET @KontrolGrupKodu = '009'
 
SELECT        @StokGrupKodu = s.GRUP_KODU
FROM        TBLSTSABIT s
WHERE        s.STOK_KODU = @STOCK_CODE
 
IF @StokGrupKodu = @KontrolGrupKodu
BEGIN
 IF EXISTS(
         SELECT                1
         FROM                PRT_BASKETITEM b
         LEFT JOIN        TBLSTSABIT s ON s.STOK_KODU = b.STOCK_CODE
         WHERE                b.BASKET_ID = @BASKET_ID
                                 AND ISNULL(s.GRUP_KODU, '') != @KontrolGrupKodu)
 BEGIN
         SET @RESULT = 0
         SET @MESSAGE = 'Sepetinize Yağ türü ürünler ekleyebilmek için ürünlerin hepsi aynı türden olmalıdır. Yağ türünden olmayan ürünleri sepetinizden çıkarınız.'
 END
 ELSE
 BEGIN
         UPDATE        PRT_BASKET
         SET                CONDITOIN_CODE = '',
                         UPDATE_DATE = GETDATE()
         WHERE        ID = @BASKET_ID
 END
END
ELSE
BEGIN
 IF EXISTS(
         SELECT                1
         FROM                PRT_BASKETITEM b
         LEFT JOIN        TBLSTSABIT s ON s.STOK_KODU = b.STOCK_CODE
         WHERE                b.BASKET_ID = @BASKET_ID
                                 AND ISNULL(s.GRUP_KODU, '') = @KontrolGrupKodu)
 BEGIN
         SET @RESULT = 0
         SET @MESSAGE = 'Sepetinizde Yağ türü ürünler varken sadece Yağ türünden yeni ürün ekleyebilirsiniz.'
 END
END
 
SELECT        @RESULT AS [Result], @MESSAGE AS [Message]
 
 
-------------------------------------------------------------------------
ÖRNEK Uyarlama2:
 
Bu uyarlama örneğinde sepete eklenen ürünün miktarı değiştiriliyor. 
 
ALTER PROCEDURE [dbo].[PRTSP_CONTROL_ADD_ITEM_TO_CART]
      @BASKET_ID INT,
      @STOCK_CODE VARCHAR(35),
      @QUANTITY DECIMAL(28,8)
AS
 
/*
*  @RESULT = 1 ise ürün sepete eklenebilir
*
*  @RESULT = 0 ise ürün sepete eklenemez.
*  @MESSAGE değişkeninde bir değer varsa kullanıcıya gösterilir.
*  @MESSAGE değişkeninde bir değer yoksa standart hata mesajı gösterilir.
*
*  @UPDATED_QUANTITY -> Eğer miktar güncellenmek isteniyorsa bu sahaya yeni miktar değeri atanabilir.
*  Stok sepete bu miktar ile kaydedilir.
*
* */
 
DECLARE @USER_ID INT                                 --SsoUserId
DECLARE @ACCOUNT_CODE VARCHAR(15)             --Cari Kodu
DECLARE @DELIVERY_ACCOUNT_CODE VARCHAR(15)     --Teslim Cari Kodu
 
SELECT       @USER_ID = B.[USER_ID],
                  @ACCOUNT_CODE = B.ACCOUNT_CODE,
                  @DELIVERY_ACCOUNT_CODE = B.DELIVERY_ACCOUNT_CODE
FROM         PRT_BASKET B
WHERE       B.ID = @BASKET_ID
 
DECLARE @RESULT BIT
DECLARE @MESSAGE NVARCHAR(MAX)
DECLARE @UPDATED_QUANTITY DECIMAL(28,8)
 
SET @RESULT = 1
SET @MESSAGE = ''
SET @UPDATED_QUANTITY = @QUANTITY
 
/*
*
*
* Size özel iş mantığını burada işletebilirsiniz.
*
*
*/
 
IF EXISTS
(
      SELECT 1
      FROM   PRT_BASKETITEM bi
      WHERE bi.STOCK_CODE = @STOCK_CODE
)
BEGIN
      SET @RESULT = 0
      SET @MESSAGE = 'Aynı stok daha önceden eklenmiş.'
END
ELSE
BEGIN
      SET @UPDATED_QUANTITY = 10
       SET @MESSAGE = 'Sepet güncellendi.'    
END
 
 
SELECT @RESULT AS [Result], @MESSAGE AS [Message], @UPDATED_QUANTITY AS [UpdatedQuantity]

2- SEPETTEN ÜRÜN SİLME İŞLEMİ KONTROL EDİLSİN?


  • Parametre işaretlenmesi durumunda veritabanındaki PRTSP_CONTROL_DELETE_ITEM_FROM_CART prosedürü kontrol edilir.
  • Uyarlama ile bu prosedür içerisinde yapılacak tanımlama sonrası; sepetten silinen her ürün için, silme butonuna basıldığında ilgili prosedürün çalışması ve uyarlanan kontrolün yapılması işlevini görür. 


3- SEPETTE ÜRÜN MİKTARI DEĞİŞTİRME İŞLEMİ KONTROL EDİLSİN?


  • Parametre işaretlenmesi durumunda veritabanındaki PRTSP_CONTROL_UPDATE_ITEM_QUANTITY prosedürü kontrol edilir.
  • Uyarlama ile bu prosedür içerisinde yapılacak tanımlama sonrası; sepet ekranında miktarı değiştirilen ürün için, miktar değişikliği işlemi sonrası (tab tuşu ile girdi alanı geçildiğinde ya da mouse ile başka bir alana tıklandığında) ilgili prosedürün çalışması ve uyarlanan kontrolün yapılması işlevini görür. 


4- SİPARİŞ KAYDETME İŞLEMİ KONTROL EDİLSİN?


  • Parametre işaretlenmesi durumunda veritabanındaki PRTSP_CONTROL_ORDER_SAVE prosedürü kontrol edilir.
  • Uyarlama ile bu prosedür içerisinde yapılacak tanımlama sonrası; sipariş süreci sonunda onay aşamasında "Siparişi Onayla" butonuna basıldığında ilgili prosedürün çalışması ve uyarlanan kontrolün yapılması işlevini görür.


5- SEPETİM EKRANI ÖNCESİ KONTROL EDİLSİN?

  • Parametre işaretlenmesi durumunda veritabanındaki PRTSP_CONTROL_BEFORE_ENTER_SHOPPING_CART prosedürü kontrol edilir.
  • Uyarlama ile bu prosedür içerisinde yapılacak tanımlama sonrası; sepetim tuşuna basılması sonrası sepetim ekranına giderken ilgili prosedürün çalışması ve uyarlanan kontrolün yapılması işlevini görür.
    PRT_BASKET ve PRT_BASKETITEM STATUS Kolonları

    Üst bilgi değişikliğinde hesaplamayı etkiliyor ise;
  • NEEDS_RECALCULATION : true
  • PRICE_EDIT_STATUS  alanı 0 dan farklı olmalı

        None = 0,
        GeneralDiscountRatioChanged = 4,
        GeneralDiscountAmountChanged = 8,
        CostChanged = 16,
        PaymentConditionCodeApplied = 128,
        PaymentDateChanged = 256,
        GeneralDiscount2RatioChanged = 512,
        GeneralDiscount2AmountChanged = 1024,
        GeneralDiscount3RatioChanged = 2048,
        GeneralDiscount3AmountChanged = 4096
Kalem değişikliğinde (hesaplamayı tetiklemek isteniyorsa)

  • STATUS alanının 0 dan farklı değer atanması gerek.

        NotChanged = 0,
        PriceEdited = 1,
        DiscountEdited = 2,
        SpecialPriceApplied = 4,
        FreeChargeEdited = 8,
        NeedsDiscountRecalculationForNetPrice = 16,
        NetPriceEdited = 32

Örnek;


CREATE PROCEDURE [dbo].[PRTSP_CONTROL_BEFORE_ENTER_SHOPPING_CART]
       @BASKET_ID INT
AS
/*
*  @RESULT = 1 ise sipariş kaydedilebilir.

*  @RESULT = 0 ise sipariş kaydedilemez.
*  @MESSAGE değişkeninde bir değer varsa kullanıcıya gösterilir.
*  @MESSAGE değişkeninde bir değer yoksa standart hata mesajı gösterilir.
*
* */
DECLARE @USER_ID INT                                  --SsoUserId
DECLARE @ACCOUNT_CODE VARCHAR(15)              --Cari Kodu
DECLARE @DELIVERY_ACCOUNT_CODE VARCHAR(15)     --Teslim Cari Kodu
DECLARE @GENERAL_TOTAL DECIMAL(28,8)           --Genel Toplam
SELECT       @USER_ID = B.[USER_ID],
                    @ACCOUNT_CODE = B.ACCOUNT_CODE,
                    @DELIVERY_ACCOUNT_CODE = B.DELIVERY_ACCOUNT_CODE,
                    @GENERAL_TOTAL = B.GENERAL_TOTAL
FROM         PRT_BASKET B
WHERE        B.ID = @BASKET_ID
DECLARE @RESULT BIT
DECLARE @MESSAGE NVARCHAR(MAX)
SET @RESULT = 1
SET @MESSAGE = ''

– << stok kartında dövizli satış olarak tanımlı stoğun fiyat bilgisini TL olarak güncelleme
IF EXISTS (SELECT 1 FROM PRT_BASKETITEM WHERE BASKET_ID = @BASKET_ID AND FX_TYPE_CODE > 0)
BEGIN
       UPDATE  BI
       SET BI. FX_TYPE_CODE = 0 , BI. FX_TYPE_NAME = 'TL', BI .[STATUS] = 1, BI .FX_PRICE = ST.SATIS_FIYAT
       FROM PRT_BASKETITEM BI
       LEFT JOIN PRTV_INVENTORY ST ON ( ST.STOK_KODU = BI. STOCK_CODE)
       WHERE BI. BASKET_ID = @BASKET_ID AND BI. FX_TYPE_CODE >0
END
– stok kartında dövizli satış olarak tanımlı stoğun fiyat bilgisini TL olarak güncelleme >>
SELECT @RESULT AS [Result], @MESSAGE AS [Message]

6- SEPETİM EKRANI SONRASI KONTROL EDİLSİN?

  • Parametre işaretlenmesi durumunda veritabanındaki PRTSP_CONTROL_EXIT_SHOPPING_CART prosedürü kontrol edilir.
  • Uyarlama ile bu prosedür içerisinde yapılacak tanımlama sonrası; sepetim ekranından çıkarken ilgili prosedürün çalışması ve uyarlanan kontrolün yapılması işlevini görür. 

7- SEPET HESAPLAMA ÖNCESİ KONTROL EDİLSİN?

  • Parametre işaretlenmesi durumunda veritabanındaki PRTSP_CONTROL_BEFORE_CALCULATE_SHOPPING_CART prosedürü kontrol edilir.

Uyarlama ile bu prosedür içerisinde yapılacak tanımlama sonrası; sepetim ekranına giderken sepet hesaplama yapmadan hemen önce ilgili prosedürün çalışması ve uyarlanan kontrolün yapılması işlevini görür.
Sepet hesaplaması öncesi. Tüm değerler için.



CREATE PROCEDURE [dbo].[PRTSP_CONTROL_BEFORE_CALCULATE_SHOPPING_CART]
       @BASKET_ID INT
AS
/*
*  @RESULT = 1 ise sipariş kaydedilebilir.

*  @RESULT = 0 ise sipariş kaydedilemez.
*  @MESSAGE değişkeninde bir değer varsa kullanıcıya gösterilir.
*  @MESSAGE değişkeninde bir değer yoksa standart hata mesajı gösterilir.
*
* */
DECLARE @USER_ID INT                                  --SsoUserId
DECLARE @ACCOUNT_CODE VARCHAR(15)              --Cari Kodu
DECLARE @DELIVERY_ACCOUNT_CODE VARCHAR(15)     --Teslim Cari Kodu
DECLARE @GENERAL_TOTAL DECIMAL(28,8)           --Genel Toplam
SELECT       @USER_ID = B.[USER_ID],
                    @ACCOUNT_CODE = B.ACCOUNT_CODE,
                    @DELIVERY_ACCOUNT_CODE = B.DELIVERY_ACCOUNT_CODE,
                    @GENERAL_TOTAL = B.GENERAL_TOTAL
FROM         PRT_BASKET B
WHERE        B.ID = @BASKET_ID
DECLARE @RESULT BIT
DECLARE @MESSAGE NVARCHAR(MAX)
SET @RESULT = 1
SET @MESSAGE = ''
– senaryo 1 dövizli stokların fiyatlarını 299 , miktarını 2 yap.
--UPDATE  BI
--       SET  BI .[STATUS] = 16, BI .FX_PRICE = 299, BI.QUANTITY = 2
--       FROM PRT_BASKETITEM BI
--       LEFT JOIN PRTV_INVENTORY ST ON ( ST.STOK_KODU = BI. STOCK_CODE)
--       WHERE BI. BASKET_ID = @BASKET_ID and BI. FX_TYPE_CODE ='1'
– senaryo 2  : fiyat 4000 tl < ise iskonto ver 10 , büyükse 20 ver.
DECLARE @SUM FLOAT
SET @SUM = ( SELECT SUM(GROSS_PRICE*QUANTITY) FROM PRT_BASKETITEM
WHERE BASKET_ID = @BASKET_ID)
declare @aaa float
set @aaa = 4000


IF (@SUM<@aaa)
UPDATE PRT_BASKET SET DISCOUNT1_RATIO = 10, PRICE_EDIT_STATUS = 4, NEEDS_RECALCULATION = 1 WHERE ID = @BASKET_ID
ELSE
UPDATE PRT_BASKET SET DISCOUNT1_RATIO = 20, PRICE_EDIT_STATUS = 4, NEEDS_RECALCULATION = 1 WHERE ID = @BASKET_ID
SELECT @RESULT AS [Result], @MESSAGE AS [Message]

8- SİPARİŞ KAYIT İŞLEMİ SONRASI KONTROL EDİLSİN?

  • Parametresi olmayan fakat veritabanında bulunan prosedürü ile özelleştirilebilen kontrol işlemidir.
  • Uyarlama ile bu prosedür içerisinde yapılacak tanımlama sonrası; sepetim ekranına giderken sepet hesaplama yapmadan hemen önce ilgili prosedürün çalışması ve uyarlanan kontrolün yapılması işlevini görür. 

Sipariş ERP'ye atıldıktan ve herşey bittikten sonra tetiklenir. Siparişi attıktan sonra yapılacak çok özel işlem ve uyarlamalarda kullanılabilir. (ÖR: Sipariş parçalama, siparişte bir değişiklik yapma, siparişi başka bir şubeye kopyalama vb)
Veritabanındaki PRTSP_CONTROL_AFTER_ORDER_SAVE prosedürü içerisinde uyarlama yapılabilir.

ÖZET


Özetle ve sırasıyla parametre ve prosedür karşılıkları ise aşağıdaki gibidir;
Fiyat Kontrolü;


  1. Özel fiyatlandırma kullanılsın? - PRTSP_GET_SPECIAL_PRICE
  2. Fiyat aralık kontrolü yapılsın? - PRTSP_CONTROL_ITEM_PRICE_RANGE
  3. Net fiyat aralık kontrolü yapılsın? - PRTSP_CONTROL_ITEM_NET_PRICE_RANGE
  4. Kalem iskontosu aralık kontrolü yapılsın? - PRTSP_CONTROL_ITEM_DISCOUNT_RANGE
  5. Genel iskonto 1 aralık kontrolü yapılsın? - PRTSP_CONTROL_GENERAL_DISCOUNT_RANGE
  6. Genel iskonto 2 aralık kontrolü yapılsın? - PRTSP_CONTROL_GENERAL_DISCOUNT2_RANGE
  7. Genel iskonto 3 aralık kontrolü yapılsın? - PRTSP_CONTROL_GENERAL_DISCOUNT3_RANGE

Özel Süreç Kontrolü;

  1. Sepete ürün ekleme işlemi kontrol edilsin? - PRTSP_CONTROL_ADD_ITEM_TO_CART
  2. Sepetten ürün silme işlemi kontrol edilsin? - PRTSP_CONTROL_DELETE_ITEM_FROM_CART
  3. Sepette ürün miktarı güncelleme işlemi kontrol edilsin? - PRTSP_CONTROL_UPDATE_ITEM_QUANTITY
  4. Sipariş kaydetme işlemi kontrol edilsin? - PRTSP_CONTROL_ORDER_SAVE
  5. Sepetim ekranı öncesi kontrol edilsin? - PRTSP_CONTROL_BEFORE_ENTER_SHOPPING_CART
  6. Sepetim ekranı sonrası kontrol edilsin? - PRTSP_CONTROL_EXIT_SHOPPING_CART
  7. Sepet hesaplama öncesi kontrol edilsin? - PRTSP_CONTROL_BEFORE_CALCULATE_SHOPPING_CART
  8. Sipariş kayıt işlemi sonrası kontrol edilsin? - PRTSP_AFTER_ORDER_SAVED


    Page viewed 1585 times by 3 users since Feb 06, 2017