package com.alexanderlogistics; import java.io.Serializable; import java.util.ArrayList; 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.exceptions.QueryException; import org.imixs.workflow.faces.data.WorkflowController; /** * Der OPListeController dient dazu eine liste aller offenen Ausgangsrechnungen * zu bilden *

* Zusätzlich bietet er die funktionen zum auszifferne..(??) * * @author rsoika * */ @Named("opListController") @ConversationScoped public class OPListController implements Serializable { private static final long serialVersionUID = 1L; private static Logger logger = Logger.getLogger(OPListController.class.getName()); @Inject protected WorkflowController workflowController; @Inject protected DocumentService documentService; public List getInvoices(String dbtrNumber) { List result=new ArrayList(); // Aus der dbtrNummer muss das führendde D entfernt werden // wir speichern dieses zwar im Zahlungseingangs Workflow, aber eine Ausganksrechnung kennt das nicht // Das ganze ist ein übles Relikt aus Cargosoft und kann nicht vermieden werden if (dbtrNumber.startsWith("D")) { dbtrNumber=dbtrNumber.substring(1); } String query = "(type:workitem OR type:workitemarchive) AND ($modelversion:rechnungsausgang-*) AND (dbtr.number:" + dbtrNumber+")"; try { result= documentService.find(query, 999, 0, "$created", false); } catch (QueryException e) { logger.severe("Failed to get op liste:" + e.getMessage()); } return result; } /** * 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 Math.round(result * 100.0) / 100.0; } /** * 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); } }