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
- }
- }
|