| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | using System;using System.Collections.Generic;using System.Linq;using Comal.Classes;using InABox.Core;namespace Comal.Stores{    public class ManufacturingPacketStore : BaseStore<ManufacturingPacket>    {        protected override void AfterSave(ManufacturingPacket entity)        {            base.AfterSave(entity);            UpdateDeliveryItems(entity);                    UpdateTrackingKanban<ManufacturingPacketKanban, ManufacturingPacket, ManufacturingPacketLink>(entity, m =>             {                if (entity.Completed != DateTime.MinValue || entity.Archived != DateTime.MinValue)                    return KanbanCategory.Complete;                if (entity.Issued != DateTime.MinValue)                    return KanbanCategory.InProgress;                return KanbanCategory.Open;            });        }        #region DeliveryItems        private void UpdateDeliveryItems(ManufacturingPacket entity)        {            // if the Barcode printed flag has not changed, we don't need to do anything            if (!entity.HasOriginalValue(x => x.BarcodePrinted))                return;            if (!entity.BarcodePrinted.IsEmpty())            {                var dstore = FindSubStore<DeliveryItem>();                IEnumerable<CoreRow> rows = dstore.Query(                    new Filter<DeliveryItem>(x => x.SetoutLink.ID).IsEqualTo(entity.SetoutLink.ID),                    new Columns<DeliveryItem>(x => x.Sequence, x => x.ManufacturingPacketLink.ID),                    new SortOrder<DeliveryItem>(x => x.Sequence)                ).Rows;                var lastseq = rows.Any() ? rows.Last().Get<DeliveryItem, int>(c => c.Sequence) : 0;                var alreadycreated = rows.Any(r => r.Get<DeliveryItem, Guid>(c => c.ManufacturingPacketLink.ID).Equals(entity.ID));                if (!alreadycreated)                {                    var items = entity.CreateDeliveryItems(lastseq);                    if (items.Any())                        dstore.Save(items, "Manufacturing Packet Barcode has been issued");                }            }            else            {                ClearDeliveryItems(entity, "Manufacturing Packet Barcode has been revoked");            }        }        private void ClearDeliveryItems(ManufacturingPacket entity, string message)        {            // If we haven't printed any barcodes, simply return            if (!entity.HasOriginalValue(x => x.BarcodePrinted) && entity.BarcodePrinted.IsEmpty())                return;            var dstore = FindSubStore<DeliveryItem>();            var ditems = dstore.Query(                new Filter<DeliveryItem>(x => x.ManufacturingPacketLink.ID).IsEqualTo(entity.ID),                new Columns<DeliveryItem>(x => x.ID)            );            dstore.Delete(ditems.Rows.Select(r => r.ToObject<DeliveryItem>()), message);        }        #endregion        #region PurchaseItems        //private void CheckPurchaseItems(ManufacturingPacket entity)        //{        //    Setout setout = FindSubStore<Setout>().Load(new Filter<Setout>(x => x.ID).IsEqualTo(entity.SetoutID)).FirstOrDefault();        //    if (setout != null)        //    {        //        ManufacturingItem mi = setout.Manufacturing.FirstOrDefault(x => x.ID.Equals(entity.ManufacturingItemID));        //        if ((mi != null) && (mi.Purchased))        //        {        //            var pStore = FindSubStore<PurchaseItem>();        //            PurchaseItem purchase = pStore.Load(new Filter<PurchaseItem>(x => x.PacketID).IsEqualTo(entity.ID)).FirstOrDefault();        //            if ((!entity.Issued.IsEmpty()) && (purchase == null))        //            {        //                PurchaseItem pi = new PurchaseItem();        //                pi.JobID = setout.Job.ID;        //                pi.SetoutID = setout.ID;        //                pi.PacketID = entity.ID;        //                pi.Description = "Purchased Item"; // need to put something here        //                pStore.Save(ref pi, "Created based on Setout.Issued");        //            }        //            else if ((entity.Issued.IsEmpty()) && (purchase != null) && (purchase.OrderID == Guid.Empty))        //             {        //                pStore.Delete(purchase, "Removed due to Setout being unissued");        //             }        //        }        //    }        //}        #endregion    }}
 |