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.faces.context.FacesContext; 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(); logger.info("....getInvoices for " + dbtrNumber); if (dbtrNumber == null || dbtrNumber.isEmpty()) { return result; } // 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 is called by cargosft-debitor-serach.xhtml after the user has selected * a new debitor. * The meothod updates the dbtr.number of the current workitem. * The form will rerender the opList seciton */ public void loadOPList() { FacesContext fc = FacesContext.getCurrentInstance(); String dbtrNumber = fc.getExternalContext().getRequestParameterMap().get("dbtrNumber"); logger.info(".........dbtrNumber = "+dbtrNumber); workflowController.getWorkitem().setItemValue("dbtr.number", dbtrNumber); } /** * 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() { double result = 0; List refids=workflowController.getWorkitem().getItemValueList("$workitemref",String.class); for (String id : refids) { ItemCollection doc = documentService.load(id); if (doc!=null) { result = result + doc.getItemValueDouble("invoice.total"); } } // rond with 2 digits return Math.round(result * 100.0) / 100.0; } /** * Berechnet den gesammten OP Saldo * @return */ public double calculateSaldo(List invoices ) { double result = 0; for (ItemCollection invoice : invoices) { result = result + invoice.getItemValueDouble("invoice.total"); } // 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); } }