using MercatorPenguin; using MercatorPenguin.EditCustomizers; using MercatorExtensions; namespace TestPenguinCustomizerPicking { public class CustomizerPicking : BaseEditPickingCustomizer { public CustomizerPicking(ConstructorParams constructorParams) : base(constructorParams) { } public override async Task OnBeforeDeleteLineAsync(BeforeDeleteLineEventArgs e) { if (!await Dialogs.AnswerYesNo(Page, $"Wilt u deze lijn {e.Ligne["id_article"]} op deze picking echt verwijderen?")) { e.CancelDeleteLine = true; } } public override async void OnAfterDeleteLine(AfterDeleteLineEventArgs e) { await Dialogs.Stop(Page, $"De lijn werd succesvol verwijderd!"); } public override async Task OnBeforeChangeLineAsync(BeforeChangeLineEventArgs e) { if (!await Dialogs.AnswerYesNo(Page, $"Wilt u de kolom {e.ColumnToChange} van deze lijn {e.Line["id_article"]} echt wijzigen met deze nieuwe waarde {e.NewValue}?")) { e.CancelChangeLine = true; } } public override async Task OnAfterChangeLineAsync(AfterChangeLineEventArgs e) { await Dialogs.Stop(Page, $"Deze lijn {e.Line["id_article"]} heeft zojuist deze kolom {e.ColumnToChange} gewijzigd van deze waarde {e.OldValue} naar {e.Line[e.ColumnToChange]}?"); } public override async Task OnAfterInsertItemAsync(AfterInsertItemEventArgs e) { var editEntryBehavior = Controls.OfType<IEditPickingBehavior>().FirstOrDefault(); if (editEntryBehavior == null) return; var editEntry = Controls.OfType<IEditEntry>().FirstOrDefault(c => c.Source?.Equals(editEntryBehavior.OutOfDocReasonSource, StringComparison.InvariantCultureIgnoreCase) ?? false); if (editEntry.Text == "Vervangingsartikel") { List<ItemString> items = new List<ItemString>(); foreach (var d in Lignes.DataTable.RowsEnumerable(r => r.Value<double>("Q_ORI").CompareTo(0, 2) != 0)) items.Add(new ItemString() { Id = d["id_article"].ToString(), Lib = d["designatio"].ToString() }); var ret = await Dialogs.AskList(Page, "Vervangt welk artikel?", items); if (ret != null) { editEntry.Text = editEntry.Text + $" voor het artikel : {ret.Lib}({ret.Id})"; } } } public override async Task OnBeforeSaveAsync(BeforeSaveEventArgs e) { if (!await Dialogs.AnswerYesNo(Page, "Wilt u de wijzigingen op deze picking echt opslaan?")) { e.CancelSave = true; } } public override async Task OnAfterSaveAsync(AfterSaveEventArgs e) { await Dialogs.Stop(Page, "De picking werd succesvol opgeslagen!"); } } public class ItemString { public string Id { get; set; } public string Lib { get; set; } public override string ToString() { return Lib; } } }