DeliveryItemStore.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System.Linq;
  2. using Comal.Classes;
  3. using InABox.Core;
  4. using System;
  5. using System;
  6. using System;
  7. namespace Comal.Stores
  8. {
  9. internal class DeliveryItemStore : BaseStore<DeliveryItem>
  10. {
  11. protected override void BeforeSave(DeliveryItem entity)
  12. {
  13. base.BeforeSave(entity);
  14. if (!string.IsNullOrWhiteSpace(entity.SetoutLink.Number) & (entity.Sequence > 0))
  15. entity.Barcode = string.Format("{0}-{1:D3}", entity.SetoutLink.Number, entity.Sequence);
  16. }
  17. protected override void AfterSave(DeliveryItem entity)
  18. {
  19. base.AfterSave(entity);
  20. if (
  21. entity.ManufacturingPacketLink.IsValid()
  22. && entity.ShipmentLink.IsValid()
  23. && entity.ShipmentLink.HasOriginalValue(x => x.ID)
  24. )
  25. {
  26. var filter = new Filter<ManufacturingPacket>(x => x.ID).IsEqualTo(entity.ManufacturingPacketLink.ID);
  27. filter.Ands.Add(new Filter<ManufacturingPacket>(x => x.Completed).IsEqualTo(DateTime.MinValue).Or(x => x.Archived)
  28. .IsEqualTo(DateTime.MinValue));
  29. var row = Provider.Query(
  30. filter,
  31. Columns.None<ManufacturingPacket>().Add(x => x.ID, x => x.Completed, x => x.Archived)
  32. ).Rows.FirstOrDefault();
  33. if (row != null)
  34. {
  35. var packet = row.ToObject<ManufacturingPacket>();
  36. if (packet.Completed.IsEmpty())
  37. packet.Completed = DateTime.Now;
  38. if (packet.Archived.IsEmpty())
  39. packet.Archived = DateTime.Now;
  40. Provider.Save(packet);
  41. AuditTrail(packet, new[] { "Closing/Archiving Packet due to Shipment Allocation" });
  42. }
  43. }
  44. }
  45. }
  46. }