12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- using System.Linq;
- using Comal.Classes;
- using InABox.Core;
- using System;
- namespace Comal.Stores
- {
- internal class BillLineStore : BaseStore<BillLine>
- {
- protected override void AfterSave(BillLine entity)
- {
- base.BeforeSave(entity);
-
- if (entity.OrderItem.HasOriginalValue(x => x.ID))
- {
- Filter<PurchaseOrderItem> filter = (entity.OrderItem.ID != Guid.Empty)
- ? new Filter<PurchaseOrderItem>(x => x.ID).IsEqualTo(entity.OrderItem.ID)
- : new Filter<PurchaseOrderItem>(x => x.ID).IsEqualTo(entity.OrderItem.GetOriginalValue(x => x.ID));
-
- var items = Provider.Query(
- filter,
- Columns.Required<PurchaseOrderItem>().Add(x => x.ID).Add(x=>x.BillLine.ID)
- ).Rows.Select(x=>x.ToObject<PurchaseOrderItem>()).ToArray();
- foreach (var item in items)
- item.BillLine.ID = entity.OrderItem.ID != Guid.Empty ? entity.ID : Guid.Empty;
- Provider.Save(items);
- }
-
- // Actually, we don't want to do this, because we will lose the ability to do a delta between
- // Order values and Bill values (to identify price creep)
-
- // A more useful idea would be to update linked product/stock costings when receiving a bill,
- // although we need to be careful about how we manage side effects for average costs etc..
-
- // var pitems = Provider.Query(
- // new Filter<PurchaseOrderItem>(x => x.ID).IsEqualTo(entity.OrderItem.ID),
- // new Columns<PurchaseOrderItem>(
- // x => x.ID,
- // x => x.ExTax,
- // x => x.TaxCode.ID,
- // x => x.TaxRate,
- // x => x.IncTax,
- // x => x.Balance,
- // x => x.ReceivedDate
- // )
- // ).Rows.Select(x => x.ToObject<PurchaseOrderItem>()).ToArray();
- // foreach (var pitem in pitems)
- // {
- // pitem.ExTax = entity.ExTax;
- // pitem.TaxCode.ID = entity.TaxCode.ID;
- // pitem.TaxRate = entity.TaxRate;
- // pitem.IncTax = entity.IncTax;
- // pitem.Balance = pitem.ReceivedDate.IsEmpty() ? pitem.IncTax : 0.00F;
- // }
- //
- // FindSubStore<PurchaseOrderItem>().Save(pitems.Where(x => x.IsChanged()), "Updated by Bill Modification");
- }
- }
- }
|