protected override void AppsSecure(Security config) { base.AppsSecure(config); var full = new[] { Operations.Read, Operations.Write, Operations.Execute }; config.GrantAdministrator(this.ObjectType, full); var created = new SalesOrderItemObjectStates(Session).Created; var partiallyShipped = new SalesOrderItemObjectStates(Session).PartiallyShipped; var shipped = new SalesOrderItemObjectStates(Session).Shipped; var inProcess = new SalesOrderItemObjectStates(Session).InProcess; var cancelled = new SalesOrderItemObjectStates(Session).Cancelled; var rejected = new SalesOrderItemObjectStates(Session).Rejected; var completed = new SalesOrderItemObjectStates(Session).Completed; var finished = new SalesOrderItemObjectStates(Session).Finished; var product = Meta.Product; config.Deny(this.ObjectType, shipped, product); config.Deny(this.ObjectType, partiallyShipped, product); var cancel = Meta.Cancel; var reject = Meta.Reject; var delete = Meta.Delete; config.Deny(this.ObjectType, created, cancel, reject); config.Deny(this.ObjectType, partiallyShipped, delete, cancel, reject); config.Deny(this.ObjectType, shipped, delete, cancel, reject); config.Deny(this.ObjectType, inProcess, delete); config.Deny(this.ObjectType, cancelled, Operation.Execute, Operations.Write); config.Deny(this.ObjectType, rejected, Operation.Execute, Operations.Write); config.Deny(this.ObjectType, completed, Operation.Execute, Operations.Write); config.Deny(this.ObjectType, finished, Operation.Execute, Operations.Write); }
public void AppsOnDeriveCurrentPaymentStatus(IDerivation derivation) { SalesOrderItemObjectState state = null; foreach (OrderShipment orderShipment in this.OrderShipmentsWhereSalesOrderItem) { foreach (SalesInvoiceItem invoiceItem in orderShipment.ShipmentItem.InvoiceItems) { state = null; if (invoiceItem.SalesInvoiceWhereSalesInvoiceItem.CurrentObjectState.Equals(new SalesInvoiceObjectStates(this.Strategy.Session).Paid)) { state = new SalesOrderItemObjectStates(this.Strategy.Session).Paid; } if (invoiceItem.SalesInvoiceWhereSalesInvoiceItem.CurrentObjectState.Equals(new SalesInvoiceObjectStates(this.Strategy.Session).PartiallyPaid)) { state = new SalesOrderItemObjectStates(this.Strategy.Session).PartiallyPaid; } } } if (state != null) { if (!this.ExistCurrentPaymentStatus || !this.CurrentPaymentStatus.SalesOrderItemObjectState.Equals(state)) { this.CurrentPaymentStatus = new SalesOrderItemStatusBuilder(this.Strategy.Session).WithSalesOrderItemObjectState(state).Build(); this.AddPaymentStatus(this.CurrentPaymentStatus); } } this.AppsOnDeriveCurrentOrderStatus(derivation); }