protected override void SetupGrouping(BatchesGrouping grouping) { grouping.AddGrouping((c, n) => false, null); #region Production price grouping.AddValidator((b, c) => { if (b.ProductionWorkPrice == null && b.Price == 0) { c.Warning($"Šarže \"{b.GetTextInfo()}\" nemá uvedenu cenu práce při výrobě"); } }); #endregion #region Foregin currency grouping.AddValidator((b, c) => { if (b.PriceConversion != null) { c.Warning($"Šarže má \"{b.GetTextInfo()}\" cenu zkonvertovanou z cizí měny"); } }); #endregion }
protected override void SetupGrouping(BatchesGrouping grouping) { #region Invoice Number grouping.AddGrouping((reference, candidate) => { if (string.IsNullOrWhiteSpace(reference.InvoiceNr) || string.IsNullOrWhiteSpace(candidate.InvoiceNr)) { return(false); } return(string.Equals(reference.InvoiceNr, candidate.InvoiceNr, StringComparison.InvariantCultureIgnoreCase)); }, null); grouping.AddValidator((b, l) => { if (string.IsNullOrWhiteSpace(b.InvoiceNr)) { l.Warning($"Šarže \"{b.GetTextInfo()}\" nemá číslo faktury"); } }); #endregion #region Invoice variable symbol grouping.AddGrouping((reference, candidate) => string.Equals(reference.InvoiceVarSymbol, candidate.InvoiceVarSymbol, StringComparison.InvariantCultureIgnoreCase), (reference, candidate, log) => { log.Warning($"Šarže \"{reference.GetTextInfo()}\" a \"{candidate.GetTextInfo()}\" mají stejné číslo faktury, ale rozdílný variabilní symbol - nemohou být sloučeny do jedné příjemky"); }); grouping.AddValidator((b, l) => { if (string.IsNullOrWhiteSpace(b.InvoiceVarSymbol)) { l.Warning($"Šarže \"{b.GetTextInfo()}\" nemá v.s."); } }); #endregion #region Supplier grouping.AddGrouping( (reference, candidate) => (reference.SupplierId ?? -1) == (candidate.SupplierId ?? -2), (reference, candidate, log) => { if (candidate.SupplierId == null) { log.Warning($"Šarže \"{candidate.GetTextInfo()}\" nemá dodavatele"); } }); grouping.AddValidator((b, l) => { if (b.SupplierId == null) { l.Warning($"Šarže \"{b.GetTextInfo()}\" nemá dodavatele"); } }); #endregion #region Currency grouping.AddGrouping((reference, candidate) => { var refRateId = reference.PriceConversion?.CurrencyRateId ?? -1; var canRateId = candidate.PriceConversion?.CurrencyRateId ?? -1; return(refRateId == canRateId); }, (reference, candidate, log) => { log.Warning($"Šarže \"{reference.GetTextInfo()}\" a \"{reference.GetTextInfo()}\" mají rozdílné cizí měny, nebo použitý převodní kurz - nebudou na stejné příjemce"); }); #endregion #region Purchase Date grouping.AddGrouping((reference, candidate) => reference.Created.Date == candidate.Created.Date, (reference, candidate, log) => { log.Warning($"Šarže \"{reference.GetTextInfo()}\" a \"{candidate.GetTextInfo()}\" mají stejné číslo faktury a dodavatele, ale rozdílné datum naskladnění - nebudou na stejné příjemce"); }); #endregion #region Price grouping.AddValidator((b, l) => { if (b.Price < 0.00001m) { l.Warning($"Šarže \"{b.GetTextInfo()}\" má cenu {b.Price}"); } }); #endregion #region Inventory grouping.AddGrouping((reference, candidate) => reference.Material.InventoryId == candidate.Material.InventoryId, (reference, candidate, cx) => { cx.Warning($"Šarže \"{reference.GetTextInfo()}\" a \"{candidate.GetTextInfo()}\" nemohou být na jedné příjmece, protože materiály spadají do různých skladů"); }); #endregion }