Merhaba,
Bu senaryoda ApplyCampaign metodundan yine yararlanacağız. ApplyCampaing metodunun tüm kullanım örneklerinde Post işleminden hemen önce çağrıldığını görürüz. Fakat bu metodun işlevinden yararlanabilmek için Post işlemi şart değildir.
MUSTERI kodlu cari hesap kartı için yapılan satışlarda, A kodlu malzemenin 5 adetten fazla olduğu şartta %30 indirimin uygulanacağı bir kampanyanın ,11.01.2021 tarihinin de geçerli tarih aralığında olduğunu varsayalım.
UnityObjects.Data OrderSlip = Global.UnityApp.NewDataObject(UnityObjects.DataObjectType.doSalesOrderSlip);
OrderSlip.New();
OrderSlip.DataFields.FieldByName("NUMBER").Value = "~";
OrderSlip.DataFields.FieldByName("DATE").Value = "11.01.2021";
OrderSlip.DataFields.FieldByName("ARP_CODE").Value = "MUSTERI";
OrderSlip.DataFields.FieldByName("ORDER_STATUS").Value = 1;
OrderSlip.DataFields.FieldByName("CURRSEL_TOTAL").Value = 1;
UnityObjects.Lines OrderLine = OrderSlip.DataFields.FieldByName("TRANSACTIONS").Lines;
OrderLine.AppendLine();
OrderLine[OrderLine.Count - 1].FieldByName("TYPE").Value = 0;
OrderLine[OrderLine.Count - 1].FieldByName("MASTER_CODE").Value = "A";
OrderLine[OrderLine.Count - 1].FieldByName("QUANTITY").Value = 6;
OrderLine[OrderLine.Count - 1].FieldByName("PRICE").Value = 100;
OrderLine[OrderLine.Count - 1].FieldByName("VAT_RATE").Value = 18;
OrderLine[OrderLine.Count - 1].FieldByName("UNIT_CODE").Value = "ADET";
OrderLine[OrderLine.Count - 1].FieldByName("UNIT_CONV1").Value = 1;
OrderLine[OrderLine.Count - 1].FieldByName("UNIT_CONV2").Value = 1;
OrderLine[OrderLine.Count - 1].FieldByName("CURR_PRICE").Value = 160;
Yukarıdaki kod bloğunu takip eden satırlarda, iki farklı yöntem ile ihtiyaca çözüm üretilebilir.
1- RefreshContent (logo.com.tr)
//Kampanya öncesi, toplam satır sayısı ve malzeme satırının satır toplamı
OrderSlip.ReCalculate();
MessageBox.Show(OrderLine.Count.ToString());
MessageBox.Show(OrderLine[0].FieldByName("TOTAL_NET").Value.ToString());
//Kampanya sonrası, toplam satır sayısı ve malzeme satırının satır toplamı
OrderSlip.ApplyCampaign();
OrderLine.RefreshContent();
MessageBox.Show(OrderLine.Count.ToString());
MessageBox.Show(OrderLine[0].FieldByName("TOTAL_NET").Value.ToString());
//Kampanya öncesi, toplam satır sayısı ve sipariş fişinin net toplamı
OrderSlip.ReCalculate();
MessageBox.Show(OrderLine.Count.ToString());
MessageBox.Show(OrderSlip.DataFields.FieldByName("TOTAL_NET").Value.ToString());
//Kampanya sonrası, toplam satır sayısı ve sipariş fişinin net toplamı
OrderSlip.ApplyCampaign();
OrderSlip.ReCalculate();
MessageBox.Show(OrderLine.Count.ToString());
MessageBox.Show(OrderSlip.DataFields.FieldByName("TOTAL_NET").Value.ToString());
Bu işlemlerle, Post etmeden kampanya öncesi ve sonrası sonuçları elde edebiliriz.
Cevap vermek için giriş yapmanız gerekmektedir.
Soru sormak için lütfen oturum açınız.
Logo Kampanya Tutarı/Oranı Bulma
19/12/20 15:21   Tiger/Logo Objects DiğerMerhabalar,
Bir e-ticaret programımızda ürün listelerini, fiyatlarını logodan çekiyoruz. Takıldığımız konu bu ürünlere ait logo da oluşturulmuş kampanyaların düşülmüş hallerini de ekrana yansıtmak. Yani Örn. Logo da A kodlu ürününün fiyatı 100 TL bunu programda gösteriyoruz ancak bir kampanya mevcut ; 5 Adetten fazla ise %30 indirim uygulanıyor, toplamda bu kaydı logodan işlersem 100 TL ye 30 TL indirim yapıp 70 TL Göstereceği gibi benim de bunu kendi programımda gösterebilmem için nasıl bir yol izlemem gerekir? Aktarımdan bahsetmiyorum, logoya aktarılırken zaten otomatik siparişte kampanya uygulanmış hali kayıt oluyor, benim istediğim sipariş vermeden önce logoda ki kampanya tutarı düşülmüş halini kullanıcıya göstermek, buna göre sipariş almak. Logonun parametre alan örn malz kodu, cari kodu başlangıç bitiş tarihi vs.(kampanya kartında hesaplamada kullanılan bilgiler) ve bu paremetreler üzerinden indirim oranı/tutarı dönen bir methodu var mıdır? Aslında ApplyCampaign() tarzında bir method ile bir ürünün belirli parametreler aldıktan sonra ne kadar tutar indirim yapıldığını buldurmam gerekiyor. Yardımlarınızı bekliyorum.
kampanya indirim