public static void BaseOnDerive(this WorkEffort @this, ObjectOnDerive method) { var derivation = method.Derivation; var internalOrganisations = new Organisations(@this.Strategy.Session).Extent().Where(v => Equals(v.IsInternalOrganisation, true)).ToArray(); if ([email protected] && internalOrganisations.Count() == 1) { @this.TakenBy = internalOrganisations.First(); } if ([email protected] && @this.ExistTakenBy) { @this.DerivedRoles.WorkEffortNumber = @this.TakenBy.NextWorkEffortNumber(); } if ([email protected] && @this.ExistTakenBy) { @this.ExecutedBy = @this.TakenBy; } @this.VerifyWorkEffortPartyAssignments(derivation); @this.DeriveActualHoursAndDates(); @this.DeriveCanInvoice(); if (@this.ExistActualStart && @this.WorkEffortState.IsCreated) { @this.WorkEffortState = new WorkEffortStates(@this.Strategy.Session).InProgress; } }
public static void BaseOnDerive(this WorkEffort @this, ObjectOnDerive method) { var derivation = method.Derivation; if ([email protected]) { @this.DerivationTrigger = Guid.NewGuid(); } var internalOrganisations = new Organisations(@this.Strategy.Session).Extent().Where(v => Equals(v.IsInternalOrganisation, true)).ToArray(); if ([email protected] && internalOrganisations.Count() == 1) { @this.TakenBy = internalOrganisations.First(); } if ([email protected] && @this.ExistTakenBy) { var year = @this.CreationDate.Value.Year; @this.DerivedRoles.WorkEffortNumber = @this.TakenBy.NextWorkEffortNumber(year); var fiscalYearInternalOrganisationSequenceNumbers = @this.TakenBy.FiscalYearsInternalOrganisationSequenceNumbers.FirstOrDefault(v => v.FiscalYear == year); var prefix = @this.TakenBy.WorkEffortSequence.IsEnforcedSequence ? @this.TakenBy.WorkEffortNumberPrefix : fiscalYearInternalOrganisationSequenceNumbers.WorkEffortNumberPrefix; @this.DerivedRoles.SortableWorkEffortNumber = @this.Session().GetSingleton().SortableNumber(prefix, @this.WorkEffortNumber, year.ToString()); } if ([email protected] && @this.ExistTakenBy) { @this.ExecutedBy = @this.TakenBy; } @this.VerifyWorkEffortPartyAssignments(derivation); @this.DeriveActualHoursAndDates(); if (@this.ExistActualStart && @this.WorkEffortState.IsCreated) { @this.WorkEffortState = new WorkEffortStates(@this.Strategy.Session).InProgress; } @this.DeriveCanInvoice(); if (@this.WorkEffortState.IsFinished && @this.CanInvoice) { @this.WorkEffortState = new WorkEffortStates(@this.Strategy.Session).Completed; } foreach (WorkEffortInventoryAssignment inventoryAssignment in @this.WorkEffortInventoryAssignmentsWhereAssignment) { foreach (InventoryTransactionReason createReason in @this.WorkEffortState.InventoryTransactionReasonsToCreate) { inventoryAssignment.SyncInventoryTransactions(derivation, inventoryAssignment.InventoryItem, inventoryAssignment.Quantity, createReason, false); } foreach (InventoryTransactionReason cancelReason in @this.WorkEffortState.InventoryTransactionReasonsToCancel) { inventoryAssignment.SyncInventoryTransactions(derivation, inventoryAssignment.InventoryItem, inventoryAssignment.Quantity, cancelReason, true); } } }
public static void AppsOnDerive(this WorkEffort @this, ObjectOnDerive method) { var derivation = method.Derivation; if ([email protected]) { if (!(@this.Strategy.Session.GetUser() is Person owner)) { owner = @this.Strategy.Session.GetSingleton().Guest as Person; } @this.Owner = owner; } var internalOrganisations = new Organisations(@this.Strategy.Session).Extent().Where(v => Equals(v.IsInternalOrganisation, true)).ToArray(); if ([email protected] && internalOrganisations.Count() == 1) { @this.TakenBy = internalOrganisations.First(); } if ([email protected] && @this.ExistTakenBy) { @this.WorkEffortNumber = @this.TakenBy.NextWorkEffortNumber(); } if ([email protected] && @this.ExistTakenBy) { @this.ExecutedBy = @this.TakenBy; } @this.DeriveOwnerSecurity(); @this.VerifyWorkEffortPartyAssignments(derivation); @this.DeriveActualHoursAndDates(); @this.DeriveCanInvoice(); }