public MANKARTHAREKETLER PuanHesapla(List <FATURADETAYLAR> faturaDetaylar, decimal param_ServisId, bool param_PuanKullan, decimal param_KullanilacakPuan) { MethodReturn ret = new MethodReturn(); if (param_PuanKullan && param_KullanilacakPuan == 0) { param_PuanKullan = false; } decimal p_MinManKartPuan = 50; // Mankart Puanýný Kullanmasý Ýçin Kartýnda en az 50 Tl Olmasý Gerekiyor //Orginal Parcalarin Kdv'siz Toplam Tutarlarýnýn Yuzde Kaç'ýný Mankart Puaný Ýle Ödeyebilir decimal p_KullanilabilirYuzde = 50; List <string> malzemeKodlari = null; SERVISSTOKLAR.CONTAINER servisStoklar = null; MALZEMELER.CONTAINER malzemeler = null; MALZEMEOZELKODLAR.CONTAINER malzemeOzelKodlar = null; if (ret.ok()) { malzemeKodlari = faturaDetaylar.select(t => t.KOD).toList(); } if (ret.ok()) { servisStoklar = new SERVISSTOKLAR.CONTAINER(SERVISSTOKLAR.SelectItemsFromCodes(param_ServisId, malzemeKodlari)); malzemeler = new MALZEMELER.CONTAINER(MALZEMELER.SelectItems(servisStoklar.select(t => t.MALZEMEID))); malzemeOzelKodlar = new MALZEMEOZELKODLAR.CONTAINER(MALZEMEOZELKODLAR.SelectAll()); } MANKARTHAREKETLER manKartHareket = new MANKARTHAREKETLER() { MANKARTID = this.ID, FATURAID = 0, TARIH = DateTime.Now }; ret.Result = manKartHareket; if (ret.ok()) { decimal toplamOriginalParcaTutarlari = GetToplamOriginalParcaTutarlari(faturaDetaylar, servisStoklar, malzemeler, malzemeOzelKodlar); decimal manKartBakiye = this.GetBakiye(); decimal kullanmakIstedigiBakiye = param_KullanilacakPuan.CastToRange(0, manKartBakiye); decimal maxKullanilacakPuan = toplamOriginalParcaTutarlari.Percent(p_KullanilabilirYuzde).RoundToDecimals(2); if (manKartBakiye >= p_MinManKartPuan && param_PuanKullan) //Bakiye Uygun ve Puan Kullanacak Ýþaretlenmiþ Ýse { decimal kullanilanPuan = kullanmakIstedigiBakiye.CastToRange(0, maxKullanilacakPuan); decimal kalanParcaTutari = toplamOriginalParcaTutarlari - kullanilanPuan; manKartHareket.HARCANANPUAN = kullanilanPuan; manKartHareket.KAZANILANPUAN = GetKazanilanPuan( kalanParcaTutari.Divide(toplamOriginalParcaTutarlari), kullanilanPuan.Divide(toplamOriginalParcaTutarlari), faturaDetaylar, servisStoklar, malzemeler, malzemeOzelKodlar); } else { manKartHareket.KAZANILANPUAN = GetKazanilanPuan(1, 0, faturaDetaylar, servisStoklar, malzemeler, malzemeOzelKodlar); } } return(manKartHareket); }
public static MethodReturn PuanKullanHesapla(decimal param_FaturaId, bool param_PuanKullan, decimal param_KullanilacakPuan) { MethodReturn ret = new MethodReturn(); if (param_PuanKullan && param_KullanilacakPuan == 0) { param_PuanKullan = false; } decimal param_ServisId = 0; //Mankart Ayarlar Tablosundan Okunacaklar //decimal p_KalanTutarPuanOrani = 0; decimal p_MinManKartPuan = 50; // Mankart Puanýný Kullanmasý Ýçin Kartýnda en az 50 Tl Olmasý Gerekiyor //Orginal Parcalarin Kdv'siz Toplam Tutarlarýnýn Yuzde Kaç'ýný Mankart Puaný Ýle Ödeyebilir decimal p_KullanilabilirYuzde = 50; FATURALAR fatura = null; List <FATURADETAYLAR> faturaDetaylar = null; List <string> malzemeKodlari = null; SERVISSTOKLAR.CONTAINER servisStoklar = null; MALZEMELER.CONTAINER malzemeler = null; MALZEMEOZELKODLAR.CONTAINER malzemeOzelKodlar = null; SERVISISEMIRLER isEmri = null; MANKART mankart = null; fatura = FATURALAR.SelectItem(param_FaturaId); if (fatura.isNotNull()) { param_ServisId = fatura.SERVISID; } else { ret.SetException("Fatura Bilgisine Ulaþýlamadý"); } if (ret.ok()) { isEmri = SERVISISEMIRLER.SelectFromIsEmirNo(fatura.ISEMIRNO); } if (ret.ok() && isEmri.isNotNull()) { mankart = MANKART.SelectFromSaseNo(isEmri.SASENO); } if (mankart.isNull()) { ret.SetException("Mankart Yok"); } if (ret.ok()) { faturaDetaylar = FATURADETAYLAR.SelectItemsFromFaturaId(param_FaturaId); malzemeKodlari = faturaDetaylar.select(t => t.KOD).toList(); } if (ret.ok()) { servisStoklar = new SERVISSTOKLAR.CONTAINER(SERVISSTOKLAR.SelectItemsFromCodes(param_ServisId, malzemeKodlari)); malzemeler = new MALZEMELER.CONTAINER(MALZEMELER.SelectItems(servisStoklar.select(t => t.MALZEMEID))); malzemeOzelKodlar = new MALZEMEOZELKODLAR.CONTAINER(MALZEMEOZELKODLAR.SelectAll()); } if (ret.ok()) { decimal toplamOriginalParcaTutarlari = GetToplamOriginalParcaTutarlari(faturaDetaylar, servisStoklar, malzemeler, malzemeOzelKodlar); MANKARTHAREKETLER manKartHareket = MANKARTHAREKETLER.SelectFromFatura(param_FaturaId).createIsNull(); manKartHareket.MANKARTID = mankart.ID; manKartHareket.FATURAID = param_FaturaId; manKartHareket.TARIH = DateTime.Now; decimal manKartBakiye = mankart.GetBakiye(); decimal kullanmakIstedigiBakiye = param_KullanilacakPuan.CastToRange(0, manKartBakiye); decimal maxKullanilacakPuan = toplamOriginalParcaTutarlari.Percent(p_KullanilabilirYuzde).RoundToDecimals(2); if (manKartBakiye >= p_MinManKartPuan && param_PuanKullan) //Bakiye Uygun ve Puan Kullanacak Ýþaretlenmiþ Ýse { decimal kullanilanPuan = kullanmakIstedigiBakiye.CastToRange(0, maxKullanilacakPuan); decimal kalanParcaTutari = toplamOriginalParcaTutarlari - kullanilanPuan; manKartHareket.HARCANANPUAN = kullanilanPuan; manKartHareket.KAZANILANPUAN = GetKazanilanPuan(kalanParcaTutari / toplamOriginalParcaTutarlari, kullanilanPuan / toplamOriginalParcaTutarlari, faturaDetaylar, servisStoklar, malzemeler, malzemeOzelKodlar); } else { manKartHareket.KAZANILANPUAN = GetKazanilanPuan(1, 0, faturaDetaylar, servisStoklar, malzemeler, malzemeOzelKodlar); } fatura.MANKARTKAZANILAN = manKartHareket.KAZANILANPUAN; fatura.MANKARTHARCANAN = manKartHareket.HARCANANPUAN; ret = new List <ItemRawModel>().add(fatura).addRange(faturaDetaylar).add(manKartHareket).Update(); } return(ret); }