package com.alexanderlogistics; import java.io.Serializable; import java.util.List; import java.util.logging.Logger; import javax.enterprise.context.ConversationScoped; import javax.inject.Inject; import javax.inject.Named; import org.imixs.workflow.ItemCollection; import org.imixs.workflow.engine.DocumentService; import org.imixs.workflow.faces.data.WorkflowController; /** * Der ZahlungsavisController dient dazu eine bereits zugewiesene Rechnung * wieder aus dem Zahlugnsavis zu entfernen. *

* Zusätzlich bietet er die Summenberechnung an, bei der die Gutschriften * abgezogen werden. * * @author rsoika * */ @Named @ConversationScoped public class ZahlungsavisController implements Serializable { private static final long serialVersionUID = 1L; private static Logger logger = Logger.getLogger(ZahlungsavisController.class.getName()); @Inject protected WorkflowController workflowController; @Inject protected DocumentService documentService; /** * This method computes the sum for a given item in a list of workitems. The * result is rounded to 2 digits. *

* Gutschriften werden abgezogen * * @param refids - list of workitem uniqueIds * @param item - name of the item to summarize * @return sum rounded to 2 digits */ public double calculateSum(List refids, String item) { double result = 0; for (String id : refids) { ItemCollection doc = documentService.load(id); if (doc != null) { if ("credit".equals(doc.getItemValueString("payment.type"))) { result = result + doc.getItemValueDouble(item); } else { result = result - doc.getItemValueDouble(item); } } else { logger.warning("invalid read access to calculate sum"); } } // rond with 2 digits return InvoiceUtil.round(result); } /** * This method removes an uniqueid form the item $workitemref */ @SuppressWarnings("unchecked") public void removeInvoice(String id) { List refList = workflowController.getWorkitem().getItemValue("$workitemref"); refList.remove(id); workflowController.getWorkitem().setItemValue("$workitemref", refList); } }