protected override void HandleExecute() { // You can do this, // //var salesOrderRef = Get(e => e.ins_salesorderid); //if (salesOrderRef == null) return; //var lineTotalPriceSum = GetLineTotalPriceSum(salesOrderRef.Id); //var salesOrder = new ins_salesorder //{ // Id = salesOrderRef.Id //}; //salesOrder.Set(e => e.ins_totalprice, lineTotalPriceSum); //Service.Update(salesOrder); // // or: var src = Wrapper.Entity; if (src.ins_salesorderid == null) { return; } var lineTotalPriceSum = GetLineTotalPriceSum(src.ins_salesorderid.Id); var salesOrder = new ins_salesorder { Id = src.ins_salesorderid.Id, ins_totalprice = new Money(lineTotalPriceSum) }; Service.Update(salesOrder); }
public void Can_update_sales_order_on_delete() { var salesOrder = new ins_salesorder { Id = Guid.NewGuid() }; var line = new ins_salesorderline { Id = Guid.NewGuid() }; line.Set(e => e.ins_salesorderid, salesOrder.ToEntityReference()); line.Set(e => e.ins_totalprice, 1000m); var unrelatedLine = new ins_salesorderline { Id = Guid.NewGuid() }; unrelatedLine.Set(e => e.ins_salesorderid, new EntityReference(ins_salesorder.EntityLogicalName, Guid.NewGuid())); unrelatedLine.Set(e => e.ins_totalprice, 7000m); var id = Guid.NewGuid(); var initial = new ins_salesorderline { Id = id }; initial.Set(e => e.ins_salesorderid, salesOrder.ToEntityReference()); initial.Set(e => e.ins_totalprice, 500m); var target = new ins_salesorderline { Id = id }; var testEvent = new TestEvent <ins_salesorderline> { Plugin = { Configure = PreSalesOrderLine.ConfigurePlugin }, Db = { initial, line, unrelatedLine, salesOrder } }; testEvent.ForDelete(target.ToEntityReference()); var context = testEvent.CreatePluginContext(); new UpdateSalesOrder(context).Execute(); var updateSalesOrder = testEvent.FakedContext .CreateQuery <ins_salesorder>() .First(); Assert.Equal(1000m, updateSalesOrder.Get(e => e.ins_totalprice).Value); }
public void Can_update_sales_order_on_post() { var salesOrder = new ins_salesorder { Id = Guid.NewGuid() }; var line = new ins_salesorderline { Id = Guid.NewGuid(), ins_salesorderid = salesOrder.ToEntityReference(), ins_totalprice = new Money(1000m) }; var unrelatedLine = new ins_salesorderline { Id = Guid.NewGuid(), ins_salesorderid = new EntityReference(ins_salesorder.EntityLogicalName, Guid.NewGuid()), ins_totalprice = new Money(7000m) }; var id = Guid.NewGuid(); var initial = new ins_salesorderline { Id = id, ins_salesorderid = salesOrder.ToEntityReference(), ins_totalprice = new Money(500m) }; var target = new ins_salesorderline { Id = id, ins_totalprice = new Money(500m) }; var testEvent = new TestEvent <ins_salesorderline> { Plugin = { Configure = PostSalesOrderLine.ConfigurePlugin }, Db = { initial, line, unrelatedLine, salesOrder } }; testEvent.ForUpdate(target, 40); var context = testEvent.CreatePluginContext(); new UpdateSalesOrder(context).Execute(); var updateSalesOrder = testEvent.FakedContext .CreateQuery <ins_salesorder>() .First(); Assert.Equal(1500m, updateSalesOrder.ins_totalprice.Value); }
protected override void HandleExecute() { var salesOrderRef = Get(e => e.ins_salesorderid); if (salesOrderRef == null) { return; } var lineTotalPriceSum = GetLineTotalPriceSum(salesOrderRef.Id); var salesOrder = new ins_salesorder { Id = salesOrderRef.Id }; salesOrder.Set(e => e.ins_totalprice, lineTotalPriceSum); Service.Update(salesOrder); }