use of org.estatio.module.capex.dom.order.Order in project estatio by estatio.
the class IncomingDocAsOrderViewModel method reasonNotEditableIfAny.
@Override
protected String reasonNotEditableIfAny() {
Order order = getDomainObject();
String reasonDisabledDueToState = order.reasonDisabledDueToState();
if (reasonDisabledDueToState != null) {
return reasonDisabledDueToState;
}
return null;
}
use of org.estatio.module.capex.dom.order.Order in project estatio by estatio.
the class IncomingDocAsOrderViewModel method save.
@Action(semantics = SemanticsOf.IDEMPOTENT)
@MemberOrder(sequence = "1")
public Order save() {
Order order = getDomainObject();
order.setOrderNumber(getOrderNumber());
order.setSellerOrderReference(getSellerOrderReference());
order.setEntryDate(clockService.now());
order.setOrderDate(getOrderDate());
order.setSeller(getSeller());
order.setBuyer(getBuyer());
Optional<OrderItem> firstItemIfAny = getFirstItemIfAny();
if (firstItemIfAny.isPresent()) {
OrderItem orderItem = firstItemIfAny.get();
orderItem.setCharge(getCharge());
orderItem.setDescription(getDescription());
orderItem.setNetAmount(getNetAmount());
orderItem.setVatAmount(getVatAmount());
orderItem.setGrossAmount(getGrossAmount());
orderItem.setTax(getTax());
orderItem.setStartDate(getStartDateFromPeriod());
orderItem.setEndDate(getEndDateFromPeriod());
orderItem.setProperty(getProperty());
orderItem.setProject(getProject());
orderItem.setBudgetItem(getBudgetItem());
} else {
order.addItem(getCharge(), getDescription(), getNetAmount(), getVatAmount(), getGrossAmount(), getTax(), getPeriod(), getProperty(), getProject(), getBudgetItem());
}
return order;
}
use of org.estatio.module.capex.dom.order.Order in project estatio by estatio.
the class IncomingDocAsOrderViewModel method init.
@Programmatic
public void init() {
final Order order = getDomainObject();
setOrderNumber(order.getOrderNumber());
setSellerOrderReference(order.getSellerOrderReference());
setOrderDate(order.getOrderDate());
setSeller(order.getSeller());
setBuyer(order.getBuyer());
setProperty(order.getProperty());
final Optional<OrderItem> firstItemIfAny = getFirstItemIfAny();
if (firstItemIfAny.isPresent()) {
OrderItem orderItem = firstItemIfAny.get();
setCharge(orderItem.getCharge());
setDescription(orderItem.getDescription());
setNetAmount(orderItem.getNetAmount());
setVatAmount(orderItem.getVatAmount());
setGrossAmount(orderItem.getGrossAmount());
setTax(orderItem.getTax());
setPeriod(periodFrom(orderItem.getStartDate(), orderItem.getEndDate()));
setProperty(orderItem.getProperty());
setProject(orderItem.getProject());
setBudgetItem(orderItem.getBudgetItem());
}
}
use of org.estatio.module.capex.dom.order.Order in project estatio by estatio.
the class IncomingDocAsInvoiceViewModel method save.
@Action(semantics = SemanticsOf.IDEMPOTENT)
@MemberOrder(sequence = "1")
public IncomingInvoice save() {
IncomingInvoice incomingInvoice = getDomainObject();
IncomingInvoiceType previousType = incomingInvoice.getType();
incomingInvoice.setType(getIncomingInvoiceType());
incomingInvoice.setInvoiceNumber(getInvoiceNumber());
incomingInvoice.setBuyer(getBuyer());
incomingInvoice.setSeller(getSeller());
incomingInvoice.setInvoiceDate(getInvoiceDate());
incomingInvoice.setDueDate(getDueDate());
incomingInvoice.setPaymentMethod(getPaymentMethod());
incomingInvoice.setCurrency(getCurrency());
incomingInvoice.setDateReceived(getDateReceived());
incomingInvoice.setBankAccount(getBankAccount());
incomingInvoice.setNetAmount(getNetAmount());
incomingInvoice.setGrossAmount(getGrossAmount());
// if changed the type, then we need to re-evaluate the state machine
if (previousType != getIncomingInvoiceType()) {
stateTransitionService.trigger(incomingInvoice, IncomingInvoiceApprovalStateTransition.class, null, null, null);
}
// upsert invoice item
// this will also update the parent header's property with that from the first item
Optional<IncomingInvoiceItem> firstItemIfAny = getFirstItemIfAny();
IncomingInvoiceItem firstItem;
if (firstItemIfAny.isPresent()) {
IncomingInvoiceItem item = firstItemIfAny.get();
item.setIncomingInvoiceType(getIncomingInvoiceType());
item.setCharge(getCharge());
item.setDescription(getDescription());
item.setNetAmount(getNetAmount());
item.setVatAmount(getVatAmount());
item.setGrossAmount(getGrossAmount());
item.setTax(getTax());
item.setStartDate(getStartDateFromPeriod());
item.setEndDate(getEndDateFromPeriod());
item.setFixedAsset(getProperty());
item.setProject(getProject());
item.setBudgetItem(getBudgetItem());
firstItem = item;
} else {
firstItem = incomingInvoiceItemRepository.create(incomingInvoice.nextItemSequence(), incomingInvoice, incomingInvoiceType, getCharge(), getDescription(), getNetAmount(), getVatAmount(), getGrossAmount(), getTax(), getDueDate(), getStartDateFromPeriod(), getEndDateFromPeriod(), getProperty(), getProject(), getBudgetItem());
}
// 'switch view' will not be available subsequently because the Invoice/Item is "too complex")
if (getOrderItem() != null) {
Order order = getOrderItem().getOrdr();
Charge chargeFromWrapper = getOrderItem().getCharge();
OrderItem orderItemToLink = orderItemRepository.findByOrderAndCharge(order, chargeFromWrapper);
orderItemInvoiceItemLinkRepository.findOrCreateLink(orderItemToLink, firstItem, firstItem.getNetAmount());
} else {
// remove all (or the one and only) link.
final Optional<OrderItemInvoiceItemLink> links = orderItemInvoiceItemLinkRepository.findByInvoiceItem(firstItem);
links.ifPresent(link -> {
link.remove();
});
}
return incomingInvoice;
}
use of org.estatio.module.capex.dom.order.Order in project estatio by estatio.
the class OrderApprovalStateSubscriber method on.
@Programmatic
@com.google.common.eventbus.Subscribe
@org.axonframework.eventhandling.annotation.EventHandler
public void on(Order.ObjectPersistedEvent ev) {
// nb: note that the order at this stage has no items attached to it,
// so there is a limit as to what we can safely do.
// however, it *is* ok to just create the state chart for the domain object.
final Order order = ev.getSource();
OrderApprovalState approvalState = order.getApprovalState();
if (approvalState == OrderApprovalStateTransitionType.INSTANTIATE.getToState()) {
// ie was set in the persisting callback
stateTransitionService.trigger(order, OrderApprovalStateTransitionType.INSTANTIATE, null, null);
}
}
Aggregations