Merhaba. Dün 3.0.32 versiyonunu yükleyip sambaposu açtıktan sonra diğer terminaller db versiyonu ile ilgili hata vermeye başladı. Onlara da 3.0.32 kurduktan sonra hatalar giderildi. Hemen sonra 3.0.33 versiyonu çıktığını gördüm ve 3.0.33 yükselttim. Sanırım bu sırada açık adisyonlar felan varmış. Akşam gün sonu yapmak isterken hata vermiş ve gün sonu yapılamıyor. Su anda gün sonu yapmağa çalıştığım zaman hata oluştuğunu fakat programın çalışmaya devam edeceğini söylüyor.
Log dosyasındakı hata şu.
Top-level Exception
Type: System.InvalidOperationException
Message: Sequence contains no matching element
Source: System.Core
Stack Trace: at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source, Func`2 predicate)
at Samba.Services.Implementations.CacheService.GetRecipe(String portionName, Int32 menuItemId)
at Samba.Presentation.Services.Implementations.InventoryModule.InventoryService.<CalculateCost>b__30(SalesData sale)
at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Samba.Presentation.Services.Implementations.InventoryModule.InventoryService.CalculateCost(PeriodicConsumption pc, WorkPeriod workPeriod)
at Samba.Presentation.Services.Implementations.InventoryModule.InventoryService.CreateNewPeriodicConsumption(Boolean filter)
at Samba.Presentation.Services.Implementations.InventoryModule.InventoryService.GetCurrentPeriodicConsumption()
at Samba.Presentation.Services.Implementations.InventoryModule.InventoryService.DoWorkPeriodEnd()
at Samba.Presentation.Services.Implementations.InventoryModule.InventoryWorkperiodProcessor.ProcessWorkPeriodEnd(WorkPeriod workPeriod)
at Samba.Presentation.Services.Implementations.WorkPeriodModule.WorkPeriodService.StopWorkPeriod(String description)
Ürünlerle ilgili bir hata olduğunu ve gün sonunu hesaplarken nelerinse yalnış olduğunu anlıyorum bu logdan.
Hatayı nasıl gideririm?
Lütfen acil yardım edin.
10 cevap
Eksik reçeteleriniz olabilir. Reçeteler kısmından eksik reçeteler olup olmadığını kontrol edin. Bir ürünün bir porsiyonu için reçete tanımladığınızda tüm porsiyonları için tanımlamalısınız.
Su anda stoktan ürün de silemiyoruz. Program hata verip kapanıyor. Hatayı raporladım. Gerekirse buraya da kopyalaya bilirim.
Cevap için teşekkürler Emre bey. Eksik recetelerimizin sayı 100 yakındır. Fakat düne kadar böyle kullanıyorduk.
İlgili üründen satılmazsa hata almazsınız. Reçete ile ilgili genellikle iki noktada hata yapılıyor.
1. Her ürüne reçete açmak gerekmez ama mesela pizza.normal porsiyonu için reçeteniz varsa pizza.büyük porsiyonu için de reçete olması şart.
2. Eğer gün ortasında satılmış bir ürüne reçete açarsanız ya da reçeteyi değiştiriseniz yine hata alırsınız. Çünkü ürünlerin yarısı reçeteli yarısı reçetesiz satılmış oluyor. Acil durumlar olabildiği için bir engelleme koymadık ama reçeteler ile ilgili değişikliklerin günlük satış yapılmadan önce yapılması gerek. Canlı sistem üzerinde bir taraftan satış yaparken diğer taraftan reçete değişiklikleri yapılmaması gerek. Bunları güzelce baştan planlayıp sistemi öyle devreye almak lazım.
Ayrıca stok hareketi görmüş bir stoğu da silemezsiniz.
Emre bey 243 eksik recete olduğunu görüyorum. Bunların içinde alkollü içkiler, kutu, şişe icecekler ve ya receteye ihtiyacı olmayan ürünler de var. Hatayı daha hızlı bulmak için başka neler yapa bilirim? SQL Server Express Edition kullanıyorum hatayı db de bulmanın yolu var mı?
Teşekkürler.
Reçete listesinde gerekli reçeteleri göster kısmını kontrol edin. Burada bir eksiklik görünmüyorsa hata veren periodda satılan ürünlerin listesini alıp reçete tanımlananların reçetelerini kontrol edin.
Sanırım aynen dediyiniz gibi bir sorunla karşı karşıyayım. Adisyonda bulunan bir ürünün recetesini değiştirmiş ola bilirler. Dün receteler eklemiş ve bazı recetelerde düzenlemeler yapmışlar.
Şimdiki durum için demiyorum ama ileriki versiyonlar için belki gözönünde bulundurursunuz değe eklemek istiyorum.
Mesela bizim işletme gece saat 02:00 gibi kapanıyor ve sabah saat 8 de yeniden açılıyor. Hatta 24 saat çalışan işletmeler de var. Receteyi iş günü zarfında işlemek zorunda kalıyorlar. Bu gibi durumlar için belki bir değişiklik yapmayı düşünürsünüz değe yazdım.
Teşekkürler sorun çözüldü.
Merhabalar. Sanırım yine değiştirilmiş recete veya satılmış ürünün fiyatında değiştirme gibi bir hata yapılmış.
Gün sonu yapamıyorum. Log dosyasında şu hatayı alıyorum.
Lütfen yardım edin.
Eğer ilgili ürünün fiyatını değiştirmişlerse bunu nasıl anlarım ve nasıl cöerim?
Değişiklik yapan arkadaş yaptığı değişiklikleri hatırlamıyorsa hatayı nasıl çözeriz?
Recete, ürün fiyat değiştirilmeleri, ürün silinmesi ve bu gibi değişiklikler iş günü zarfında yapmak zorunda kalıyoruz.
Değişiklikleri yapmadan önce hata yapmamak için adisyonları açıp incelemek neredeyse imkansız. Bu durumun yaşanmaması için programda nasıl bir engelleme yapa biliriz?
Eksik receteleri tamamladım. Şu anda eksik recete yok fakat hata devam ediyor.
Kullandığım versiyon 30.0.35
[Exception Info 1]
Top-level Exception
Type: System.InvalidOperationException
Message: Sequence contains more than one matching element
Source: System.Core
Stack Trace: at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
at Samba.Domain.Models.Inventory.WarehouseConsumption.UpdateFinalCost(Recipe recipe)
at System.Collections.Generic.List`1.ForEach(Action`1 action)
at Samba.Domain.Models.Inventory.WarehouseConsumption.UpdateFinalCost(IEnumerable`1 recipes)
at Samba.Domain.Models.Inventory.PeriodicConsumption.UpdateFinalCost(IList`1 recipes, Int32 warehouseId)
at Samba.Presentation.Services.Implementations.InventoryModule.InventoryService.CalculateCost(PeriodicConsumption pc, WorkPeriod workPeriod)
at Samba.Presentation.Services.Implementations.InventoryModule.InventoryService.CreateNewPeriodicConsumption(Boolean filter)
at Samba.Presentation.Services.Implementations.InventoryModule.InventoryService.GetCurrentPeriodicConsumption()
at Samba.Presentation.Services.Implementations.InventoryModule.InventoryService.DoWorkPeriodEnd()
at Samba.Presentation.Services.Implementations.InventoryModule.InventoryWorkperiodProcessor.ProcessWorkPeriodEnd(WorkPeriod workPeriod)
at Samba.Presentation.Services.Implementations.WorkPeriodModule.WorkPeriodService.StopWorkPeriod(String description)
Acil yardımlarınızı bekliyorum.
Aynen dediğiniz gibi gün içinde sattığınız ürünün reçetesini günün ortasında değiştirmiş. Veya daha önceden var olan bir reçete ürün satışoı yapıldıktan sonra silinmiş.
Son reçetenizi bulup eski haline getirdiğinizde sorun düzelcek.
Değişiklik yapıldıysa reçete listesinden en alttan yukarı doğru kontrol edin.