use of org.estatio.module.capex.dom.task.Task in project estatio by estatio.
the class DomainObject_triggerAbstract method nextViaTask.
private DO nextViaTask(final ST transition) {
if (transition == null) {
return null;
}
final Task task = transition.getTask();
if (task == null) {
return null;
}
final Task nextTask = taskRepository.nextTaskAfter(task);
if (nextTask == null) {
return null;
}
final ST nextTransition = findByTask(nextTask);
if (nextTransition == null) {
return null;
}
return nextTransition.getDomainObject();
}
use of org.estatio.module.capex.dom.task.Task in project estatio by estatio.
the class DomainObject_triggerAbstract method previousViaTask.
private DO previousViaTask(final ST transition) {
if (transition == null) {
return null;
}
final Task task = transition.getTask();
if (task == null) {
return null;
}
final Task previousTask = taskRepository.previousTaskBefore(task);
if (previousTask == null) {
return null;
}
final ST previousTransition = findByTask(previousTask);
if (previousTransition == null) {
return null;
}
return previousTransition.getDomainObject();
}
use of org.estatio.module.capex.dom.task.Task in project estatio by estatio.
the class IncomingInvoiceApprovalState_IntegTest method refund_by_supplier_skips_bank_account_verification_and_creates_check_task_for_treasury.
@Test
public void refund_by_supplier_skips_bank_account_verification_and_creates_check_task_for_treasury() {
// given
PartyRoleType typeForTreasurer = partyRoleTypeRepository.findByKey(PartyRoleTypeEnum.TREASURER.getKey());
// workaround: clear MeService#me cache
queryResultsCache.resetForNextTransaction();
sudoService.sudo(Person_enum.JonathanPropertyManagerGb.getRef().toLowerCase(), (Runnable) () -> wrap(incomingInvoice).changePaymentMethod(PaymentMethod.REFUND_BY_SUPPLIER));
sudoService.sudo(Person_enum.JonathanPropertyManagerGb.getRef().toLowerCase(), (Runnable) () -> wrap(mixin(IncomingInvoice_complete.class, incomingInvoice)).act("PROPERTY_MANAGER", null, null));
// workaround: clear MeService#me cache
queryResultsCache.resetForNextTransaction();
sudoService.sudo(Person_enum.PeterPanProjectManagerGb.getRef().toLowerCase(), (Runnable) () -> wrap(mixin(IncomingInvoice_approve.class, incomingInvoice)).act("COUNTRY_DIRECTOR", null, null, false));
List<Task> tasksForTreasury = taskRepository.findIncompleteByRole(typeForTreasurer);
assertThat(tasksForTreasury).isEmpty();
BankAccount bankAccount = incomingInvoice.getBankAccount();
assertThat(bankAccount).isNotNull();
BankAccountVerificationState state = stateTransitionService.currentStateOf(bankAccount, BankAccountVerificationStateTransition.class);
assertThat(state).isEqualTo(BankAccountVerificationState.NOT_VERIFIED);
// when
// workaround: clear MeService#me cache
queryResultsCache.resetForNextTransaction();
sudoService.sudo(Person_enum.OscarCountryDirectorGb.getRef().toLowerCase(), (Runnable) () -> wrap(mixin(IncomingInvoice_approveAsCountryDirector.class, incomingInvoice)).act(null, false));
// then
assertThat(incomingInvoice.getApprovalState()).isEqualTo(IncomingInvoiceApprovalState.PAYABLE);
List<IncomingInvoiceApprovalStateTransition> transitions = incomingInvoiceStateTransitionRepository.findByDomainObject(incomingInvoice);
assertThat(transitions.size()).isEqualTo(7);
assertThat(transitions.get(0).getTransitionType()).isEqualTo(IncomingInvoiceApprovalStateTransitionType.CHECK_PAYMENT);
tasksForTreasury = taskRepository.findIncompleteByRole(typeForTreasurer);
assertThat(tasksForTreasury.size()).isEqualTo(1);
assertThat(tasksForTreasury.get(0).getDescription()).isEqualTo("Check Payment");
// and still
state = stateTransitionService.currentStateOf(bankAccount, BankAccountVerificationStateTransition.class);
assertThat(state).isEqualTo(BankAccountVerificationState.NOT_VERIFIED);
// and when
// workaround: clear MeService#me cache
queryResultsCache.resetForNextTransaction();
sudoService.sudo(Person_enum.EmmaTreasurerGb.getRef().toLowerCase(), (Runnable) () -> wrap(mixin(IncomingInvoice_checkPayment.class, incomingInvoice)).act(null, false));
// then
assertThat(incomingInvoice.getApprovalState()).isEqualTo(IncomingInvoiceApprovalState.PAID);
}
use of org.estatio.module.capex.dom.task.Task in project estatio by estatio.
the class EnforceTaskAssignmentPolicySubscriber_applyPolicy_Test method setUp.
@Before
public void setUp() throws Exception {
subscriber = new EnforceTaskAssignmentPolicySubscriber();
subscriber.stateTransitionService = mockStateTransitionService;
subscriber.personRepository = mockPersonRepository;
subscriber.metaModelService3 = mockMetaModelService3;
domainObject = new BankAccount();
stateTransitionClass = BankAccountVerificationStateTransition.class;
pendingTransition = new BankAccountVerificationStateTransition();
personTaskAssignedTo = new Person();
personTaskAssignedTo.setReference("JBLOGGS");
roleTaskAssignedTo = new PartyRoleType();
roleTaskAssignedTo.setKey("Treasurer");
pendingTask = new Task(roleTaskAssignedTo, personTaskAssignedTo, "some description", LocalDateTime.now(), // objectType of transition class
"bankAccount.BankAccountVerificationStateTransition");
pendingTransition.setTask(pendingTask);
personForMe = new Person();
personForMe.getRoles().add(new PartyRole(personForMe, roleTaskAssignedTo));
assertThat(pendingTransition.getTask()).isNotNull();
assertThat(personForMe.getRoles()).isNotEmpty();
assertThat(Lists.newArrayList(personForMe.getRoles()).stream().map(PartyRole::getRoleType)).contains(roleTaskAssignedTo);
}
use of org.estatio.module.capex.dom.task.Task in project estatio by estatio.
the class StateTransitionAbstract method completed.
@Programmatic
@Override
public void completed(final String comment, final NatureOfTransition natureOfTransition) {
final LocalDateTime completedOn = clockService.nowAsLocalDateTime();
final String completedBy = meService.me().getUsername();
if (natureOfTransition == NatureOfTransition.EXPLICIT) {
setCompletedBy(completedBy);
}
setCompletedOn(completedOn);
setComment(comment);
final Task task = getTask();
if (task != null) {
if (natureOfTransition == NatureOfTransition.EXPLICIT) {
task.setCompletedBy(completedBy);
}
task.setCompletedOn(completedOn);
task.setComment(comment);
}
setCompleted(true);
setToState(getTransitionType().getToState());
}
Aggregations