123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- using System;
- using System.Linq;
- using System.Windows;
- using System.Windows.Media.Imaging;
- using Comal.Classes;
- using InABox.Clients;
- using InABox.Core;
- using InABox.DynamicGrid;
- using InABox.WPF;
- namespace PRSDesktop
- {
- public class DeliveryBuilderGrid : DynamicDataGrid<PurchaseOrderItem>
- {
- private Guid _orderid;
- private readonly BitmapImage tick = PRSDesktop.Resources.tick.AsBitmapImage();
- public DeliveryBuilderGrid()
- {
- DeliveryItems = null;
- Options.AddRange(DynamicGridOption.RecordCount);
- HiddenColumns.Add(x => x.Packet.ID);
- HiddenColumns.Add(x => x.PurchaseOrderLink.PONumber);
- HiddenColumns.Add(x => x.Packet.SetoutLink.ID);
- HiddenColumns.Add(x => x.Packet.SetoutLink.JobLink.ID);
- ActionColumns.Add(new DynamicActionColumn(ConfirmedImage, ConfirmClick));
- RowHeight = 35;
- FontSize = 20;
- }
- public CoreTable DeliveryItems { get; private set; }
- public Guid OrderID
- {
- get => _orderid;
- set
- {
- _orderid = value;
- DeliveryItems = new Client<DeliveryItem>().Query(
- new Filter<DeliveryItem>(x => x.OrderItem.PurchaseOrderLink.ID).IsEqualTo(value),
- new Columns<DeliveryItem>(x => x.ID, x => x.Delivery.ID, x => x.OrderItem.ID, x => x.OrderItem.PurchaseOrderLink.ID,
- x => x.Description)
- );
- Refresh(true, true);
- }
- }
- public Guid DeliveryID { get; set; }
- public bool DeliveryDocketReady()
- {
- if (DeliveryItems == null || !DeliveryItems.Rows.Any())
- return false;
- if (Data == null || !Data.Rows.Any())
- return false;
- foreach (var row in Data.Rows)
- {
- var oid = row.Get<PurchaseOrderItem, Guid>(c => c.ID);
- var del = DeliveryItems.Rows.FirstOrDefault(r => r.Get<DeliveryItem, Guid>(c => c.OrderItem.ID).Equals(oid));
- if (del == null)
- return false;
- }
- return true;
- }
- private bool ConfirmClick(CoreRow row)
- {
- if (row == null)
- {
- foreach (CoreRow dataRow in Data.Rows)
- {
- var oid = dataRow.Get<PurchaseOrderItem, Guid>(c => c.ID);
- var del = DeliveryItems.Rows.FirstOrDefault(r => r.Get<DeliveryItem, Guid>(c => c.OrderItem.ID).Equals(oid));
- if (del == null)
- {
- var item = new DeliveryItem();
- item.OrderItem.ID = oid;
- item.Delivery.ID = DeliveryID;
- item.Description = string.Format("{0} x {1} ",
- dataRow.Get<PurchaseOrderItem, double>(c => c.Qty),
- dataRow.Get<PurchaseOrderItem, string>(c => c.Description)
- );
- item.ManufacturingPacketLink.ID = dataRow.Get<PurchaseOrderItem, Guid>(c => c.Packet.ID);
- item.JobLink.ID = dataRow.Get<PurchaseOrderItem, Guid>(c => c.Packet.SetoutLink.JobLink.ID);
- item.Type = DeliveryItemType.TreatmentItem;
- new Client<DeliveryItem>().Save(item, "Scanned By DeliveryBuilder");
- var newrow = DeliveryItems.NewRow();
- DeliveryItems.LoadRow(newrow, item);
- DeliveryItems.Rows.Add(newrow);
- }
- else
- {
- var item = del.ToObject<DeliveryItem>();
- new Client<DeliveryItem>().Delete(item, "Removed By DeliveryBuilder");
- DeliveryItems.Rows.RemoveAt(del.Index);
- }
- }
- OnChanged?.Invoke(this);
- return true;
- }
- if (DeliveryItems != null)
- {
- var oid = row.Get<PurchaseOrderItem, Guid>(c => c.ID);
- try
- {
- CheckCode(oid);
- OnChanged?.Invoke(this);
- return true;
- }
- catch (Exception e)
- {
- MessageBox.Show(e.Message);
- return false;
- }
- }
- return false;
- }
- public bool CheckCode(Guid oid)
- {
- var ordrow = Data.Rows.Where(r => r.Get<PurchaseOrderItem, Guid>(c => c.ID).Equals(oid)).FirstOrDefault();
- if (ordrow == null)
- throw new Exception("Cannot find Order Item: " + oid);
- var del = DeliveryItems.Rows.FirstOrDefault(r => r.Get<DeliveryItem, Guid>(c => c.OrderItem.ID).Equals(oid));
- if (del == null)
- {
- var item = new DeliveryItem();
- item.OrderItem.ID = oid;
- item.Delivery.ID = DeliveryID;
- item.Description = string.Format("{0} x {1} ",
- ordrow.Get<PurchaseOrderItem, double>(c => c.Qty),
- ordrow.Get<PurchaseOrderItem, string>(c => c.Description)
- );
- item.ManufacturingPacketLink.ID = ordrow.Get<PurchaseOrderItem, Guid>(c => c.Packet.ID);
- item.JobLink.ID = ordrow.Get<PurchaseOrderItem, Guid>(c => c.Packet.SetoutLink.JobLink.ID);
- item.Type = DeliveryItemType.TreatmentItem;
- new Client<DeliveryItem>().Save(item, "Scanned By DeliveryBuilder");
- var newrow = DeliveryItems.NewRow();
- DeliveryItems.LoadRow(newrow, item);
- DeliveryItems.Rows.Add(newrow);
- return true;
- }
- else
- {
- var item = del.ToObject<DeliveryItem>();
- new Client<DeliveryItem>().Delete(item, "Removed By DeliveryBuilder");
- DeliveryItems.Rows.RemoveAt(del.Index);
- return false;
- }
- }
- private BitmapImage ConfirmedImage(CoreRow row)
- {
- if (row == null)
- return tick;
- if (DeliveryItems != null)
- {
- var oid = row.Get<PurchaseOrderItem, Guid>(c => c.ID);
- var del = DeliveryItems.Rows.FirstOrDefault(r => r.Get<DeliveryItem, Guid>(c => c.OrderItem.ID).Equals(oid));
- return del != null ? tick : null;
- }
- return null;
- }
- protected override void Reload(Filters<PurchaseOrderItem> criteria, Columns<PurchaseOrderItem> columns, ref SortOrder<PurchaseOrderItem> sort,
- Action<CoreTable, Exception> action)
- {
- criteria.Add(new Filter<PurchaseOrderItem>(x => x.PurchaseOrderLink.ID).IsEqualTo(_orderid));
- base.Reload(criteria, columns, ref sort, action);
- }
- }
- }
|