update opliste
This commit is contained in:
parent
88b962b459
commit
e27dd87509
6 changed files with 95 additions and 47 deletions
|
|
@ -32,35 +32,60 @@ public class OPListController implements Serializable {
|
|||
|
||||
private static Logger logger = Logger.getLogger(OPListController.class.getName());
|
||||
|
||||
private String lastDbtrNumber=null;
|
||||
|
||||
private List<ItemCollection> invoiceCache=null;
|
||||
|
||||
@Inject
|
||||
protected WorkflowController workflowController;
|
||||
|
||||
@Inject
|
||||
protected DocumentService documentService;
|
||||
|
||||
public List<ItemCollection> getInvoices(String dbtrNumber) {
|
||||
List<ItemCollection> result = new ArrayList<ItemCollection>();
|
||||
logger.info("....getInvoices for " + dbtrNumber);
|
||||
if (dbtrNumber == null || dbtrNumber.isEmpty()) {
|
||||
return result;
|
||||
|
||||
/**
|
||||
* Diese Methode liefert die Rechnungen zur gegebenen dbtrNumber.
|
||||
* Die Methode nutzt einen lokalen cache um die Zugriffe zu beschleunigen.
|
||||
*
|
||||
* @param _dbtrNumber
|
||||
* @return
|
||||
*/
|
||||
public List<ItemCollection> getInvoices(String _dbtrNumber) {
|
||||
|
||||
|
||||
// return empty cache if data is not
|
||||
if ( _dbtrNumber==null || _dbtrNumber.isEmpty()) {
|
||||
invoiceCache= new ArrayList<ItemCollection>();
|
||||
return invoiceCache;
|
||||
}
|
||||
|
||||
// if last dbtr number is equal then return the current cache....
|
||||
if (invoiceCache!=null && lastDbtrNumber!=null && lastDbtrNumber.equals(_dbtrNumber)) {
|
||||
return invoiceCache;
|
||||
}
|
||||
|
||||
// refresh cache....
|
||||
lastDbtrNumber=_dbtrNumber;
|
||||
invoiceCache= new ArrayList<ItemCollection>();
|
||||
logger.info("....caching Invoices for " + _dbtrNumber);
|
||||
|
||||
// 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);
|
||||
if (_dbtrNumber.startsWith("D")) {
|
||||
_dbtrNumber = _dbtrNumber.substring(1);
|
||||
}
|
||||
String query = "(type:workitem OR type:workitemarchive) AND ($modelversion:rechnungsausgang-*) AND (dbtr.number:"
|
||||
+ dbtrNumber + ")";
|
||||
+ _dbtrNumber + ")";
|
||||
|
||||
try {
|
||||
result = documentService.find(query, 999, 0, "$created", false);
|
||||
invoiceCache = documentService.find(query, 999, 0, "$created", false);
|
||||
} catch (QueryException e) {
|
||||
logger.severe("Failed to get op liste:" + e.getMessage());
|
||||
}
|
||||
|
||||
return result;
|
||||
return invoiceCache;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -95,7 +120,10 @@ public class OPListController implements Serializable {
|
|||
List<String> refids=workflowController.getWorkitem().getItemValueList("$workitemref",String.class);
|
||||
|
||||
for (String id : refids) {
|
||||
ItemCollection doc = documentService.load(id);
|
||||
if (id.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
ItemCollection doc = getInvoiceFromCache(id);
|
||||
if (doc!=null) {
|
||||
result = result + doc.getItemValueDouble("invoice.total");
|
||||
}
|
||||
|
|
@ -105,6 +133,23 @@ public class OPListController implements Serializable {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Hilfsmethode holt eine Rechnung aus dem Cache.
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
private ItemCollection getInvoiceFromCache(String id) {
|
||||
if (invoiceCache==null) {
|
||||
return null;
|
||||
}
|
||||
for (ItemCollection invoice: invoiceCache) {
|
||||
if (invoice.getUniqueID().equals(id)) {
|
||||
return invoice;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Berechnet den gesammten OP Saldo
|
||||
* @return
|
||||
|
|
|
|||
|
|
@ -247,7 +247,7 @@ public class DatevCargosoftImportAdapter implements SignalAdapter {
|
|||
// berechne Total:
|
||||
double total=0;
|
||||
for (ItemCollection zeile: splitBuchungen) {
|
||||
if ("S".equals(zeile.getItemValueString("datev.shzeichen")) ) {
|
||||
if ("H".equals(zeile.getItemValueString("datev.shzeichen")) ) {
|
||||
total=total+zeile.getItemValueDouble("datev.umsatz");
|
||||
} else {
|
||||
total=total-zeile.getItemValueDouble("datev.umsatz");
|
||||
|
|
|
|||
|
|
@ -9,6 +9,9 @@
|
|||
|
||||
<!-- Shows the op liste fo rthe current dbtr.number -->
|
||||
|
||||
|
||||
<h:commandScript name="calculateOpSummary" execute="invoiceRefHolder_ID" render="opcalculater_id" />
|
||||
|
||||
<h:panelGroup layout="block" styleClass="imixs-form-section" id="oplist-table" binding="#{opListContainer}">
|
||||
|
||||
<table style="width:100%;margin:5px;">
|
||||
|
|
@ -46,6 +49,7 @@
|
|||
<td style="text-align: right;"><h:outputText
|
||||
value="#{invoice.item['invoice.total']}">
|
||||
<f:convertNumber minFractionDigits="2" locale="de" />
|
||||
|
||||
</h:outputText></td>
|
||||
<td />
|
||||
|
||||
|
|
@ -68,7 +72,8 @@
|
|||
<td><strong>#{invoice.item['invoice.currency']}</strong></td>
|
||||
|
||||
|
||||
<td style="text-align: right;"><strong><h:outputText
|
||||
<td style="text-align: right;"><strong>
|
||||
<h:outputText id="opcalculater_id"
|
||||
value="#{opListController.calculateSum()}">
|
||||
<f:convertNumber minFractionDigits="2" locale="de" />
|
||||
</h:outputText></strong></td>
|
||||
|
|
@ -80,7 +85,7 @@
|
|||
</table>
|
||||
|
||||
<!-- dieses feld speichert die selection der rechnungen -->
|
||||
<h:inputTextarea converter="org.imixs.VectorConverter" class="invoice_selection_list"
|
||||
<h:inputTextarea id="invoiceRefHolder_ID" converter="org.imixs.VectorConverter" class="invoice_selection_list"
|
||||
style="display:none;" value="#{workitem.itemList['$workitemref']}"/>
|
||||
|
||||
|
||||
|
|
@ -127,6 +132,9 @@
|
|||
//console.log("new selection=" + selectionArr.join(','));
|
||||
selection = $('.invoice_selection_list').val(
|
||||
selectionArr.join('\n'));
|
||||
|
||||
// refresh the opcalculator...
|
||||
calculateOpSummary();
|
||||
});
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,24 +11,17 @@
|
|||
<f:ajax render="oderlist" onevent="updateOrderItems">
|
||||
<table class="imixsdatatable imixs-orderitems">
|
||||
|
||||
<!--
|
||||
dataItemCol.setItemValue("datev.umsatz", parseBetrag(DatevImportAdapter.csvVal(header1List[0])));
|
||||
dataItemCol.setItemValue("datev.shzeichen", DatevImportAdapter.csvVal(header1List[1]));
|
||||
dataItemCol.setItemValue("datev.wkz", DatevImportAdapter.csvVal(header1List[2]));
|
||||
dataItemCol.setItemValue("datev.kurs", parseBetrag(DatevImportAdapter.csvVal(header1List[3])));
|
||||
dataItemCol.setItemValue("datev.basisumsatz", parseBetrag(DatevImportAdapter.csvVal(header1List[4])));
|
||||
dataItemCol.setItemValue("datev.konto", DatevImportAdapter.csvVal(header1List[6]));
|
||||
-->
|
||||
|
||||
<tr>
|
||||
<th style="">#</th>
|
||||
<th style="width: 20px;">#</th>
|
||||
<th style="">Position<span class="imixs-required">
|
||||
*</span></th>
|
||||
<th style="width: 100px;">Umsatz</th>
|
||||
<th style="width: 40px;">S/H</th>
|
||||
<th style="width: 40px;">Währung</th>
|
||||
<th style="width: 150px; text-align: right;">Kurs</th>
|
||||
<th style="width: 150px; text-align: right;">Basisumsatz</th>
|
||||
<th style="width: 150px; text-align: right;">Gegenkonto</th>
|
||||
<th style="width: 70px; text-align: right;">Kurs</th>
|
||||
<th style="width: 100px; text-align: right;">Basisumsatz</th>
|
||||
<th style="width: 50px; text-align: right;">Gegenkonto</th>
|
||||
</tr>
|
||||
|
||||
<ui:repeat var="orderitem" value="#{childItemController.childItems}">
|
||||
|
|
@ -36,21 +29,27 @@
|
|||
|
||||
<tr>
|
||||
<!-- pos -->
|
||||
<td><h:outputText value="#{orderitem.item['numpos']}" /></td>
|
||||
<td style="text-align:center;"><h:outputText value="#{orderitem.item['numpos']}" /></td>
|
||||
|
||||
<td><h:outputText value="#{orderitem.item['datev.text']}" /></td>
|
||||
|
||||
<!-- Name -->
|
||||
<td><h:outputText value="#{orderitem.item['datev.umsatz']}" /></td>
|
||||
<td style="text-align:right;">
|
||||
<h:outputText value="#{orderitem.item['datev.umsatz']}" >
|
||||
<f:convertNumber minFractionDigits="2" locale="de" />
|
||||
</h:outputText>
|
||||
</td>
|
||||
|
||||
<td><h:outputText value="#{orderitem.item['datev.shzeichen']}" /></td>
|
||||
<td style="text-align:center;"><h:outputText value="#{orderitem.item['datev.shzeichen']}" /></td>
|
||||
|
||||
<td><h:outputText value="#{orderitem.item['datev.wkz']}" /></td>
|
||||
|
||||
<td><h:outputText value="#{orderitem.item['datev.kurs']}" /></td>
|
||||
<td style="text-align:right;"><h:outputText value="#{orderitem.item['datev.kurs']}" /></td>
|
||||
|
||||
<td style="text-align: right;"><h:outputText
|
||||
value="#{orderitem.item['datev.basisumsatz']}" /></td>
|
||||
value="#{orderitem.item['datev.basisumsatz']}" >
|
||||
<f:convertNumber minFractionDigits="2" locale="de" />
|
||||
</h:outputText></td>
|
||||
|
||||
<td style="text-align: right;"><h:outputText
|
||||
value="#{orderitem.item['datev.konto']}" /></td>
|
||||
|
|
@ -65,8 +64,10 @@
|
|||
|
||||
<td style="text-align: right;">Summe:</td>
|
||||
|
||||
<td class="orderlist_summary" style="text-align: right;"><h:outputText
|
||||
<td class="orderlist_summary" style="text-align: right;">
|
||||
<h:outputText
|
||||
value="#{workitem.item['invoice.total']}">
|
||||
<f:convertNumber minFractionDigits="2" locale="de" />
|
||||
</h:outputText></td>
|
||||
<td />
|
||||
<td /><td /><td /><td />
|
||||
|
|
|
|||
|
|
@ -497,7 +497,7 @@ if (workitem['$file.count'][0]!=1) {
|
|||
<imixs:value><![CDATA[]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="keypublicresult" type="xs:string">
|
||||
<imixs:value><![CDATA[1]]></imixs:value>
|
||||
<imixs:value><![CDATA[0]]></imixs:value>
|
||||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:documentation id="Documentation_25"><![CDATA[Daten Import starten]]></bpmn2:documentation>
|
||||
|
|
@ -533,7 +533,7 @@ if (workitem['$file.count'][0]!=1) {
|
|||
<imixs:value><![CDATA[]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="keypublicresult" type="xs:string">
|
||||
<imixs:value><![CDATA[1]]></imixs:value>
|
||||
<imixs:value><![CDATA[0]]></imixs:value>
|
||||
</imixs:item>
|
||||
</bpmn2:extensionElements>
|
||||
<bpmn2:documentation id="Documentation_27"><![CDATA[Daten Import starten]]></bpmn2:documentation>
|
||||
|
|
|
|||
|
|
@ -15,11 +15,10 @@
|
|||
<imixs:value><![CDATA[Bereichs-Verantwortliche | space.manager]]></imixs:value>
|
||||
<imixs:value><![CDATA[Bereichs-Team | space.team]]></imixs:value>
|
||||
<imixs:value><![CDATA[Bereichs-Assistenz | space.assist]]></imixs:value>
|
||||
<imixs:value><![CDATA[Verantwortlich | sb.team]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txttimefieldmapping" type="xs:string">
|
||||
<imixs:value><![CDATA[Fälligkeitsdatum | invoice.duedate]]></imixs:value>
|
||||
<imixs:value><![CDATA[Bezahldatum | invoice.postingdate]]></imixs:value>
|
||||
<imixs:value><![CDATA[Wiedervorlage | invoice.reminder]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtplugins" type="xs:string">
|
||||
<imixs:value><![CDATA[org.imixs.workflow.engine.plugins.ResultPlugin]]></imixs:value>
|
||||
|
|
@ -190,14 +189,11 @@ Bei Fragen wenden Sie sich bitte an info@imixs.com
|
|||
<imixs:item name="keyupdateacl" type="xs:boolean">
|
||||
<imixs:value>true</imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="keyownershipfields" type="xs:string">
|
||||
<imixs:value><![CDATA[sb.team]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="keyownershipfields" type="xs:string"/>
|
||||
<imixs:item name="keyaddwritefields" type="xs:string">
|
||||
<imixs:value><![CDATA[process.team]]></imixs:value>
|
||||
<imixs:value><![CDATA[process.manager]]></imixs:value>
|
||||
<imixs:value><![CDATA[space.manager]]></imixs:value>
|
||||
<imixs:value><![CDATA[sb.team]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="namaddreadaccess" type="xs:string">
|
||||
<imixs:value><![CDATA[{process:?:member}]]></imixs:value>
|
||||
|
|
@ -295,7 +291,7 @@ Bei Fragen wenden Sie sich bitte an info@imixs.com
|
|||
<imixs:value><![CDATA[typcn-upload-outline]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="txtworkflowsummary" type="xs:string">
|
||||
<imixs:value><![CDATA[<itemvalue>invoice.number</itemvalue> <itemvalue>dbtr.number</itemvalue> <itemvalue>dbtr.name</itemvalue> (<itemvalue>invoice.currency</itemvalue> <itemvalue>invoice.total</itemvalue>) ]]></imixs:value>
|
||||
<imixs:value><![CDATA[<itemvalue>invoice.number</itemvalue> <itemvalue>dbtr.number</itemvalue> <itemvalue>dbtr.name</itemvalue> (<itemvalue>invoice.currency</itemvalue> <itemvalue format="#,###,##0.00" locale="de_DE">invoice.total</itemvalue>) ]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="keyupdateacl" type="xs:boolean">
|
||||
<imixs:value>true</imixs:value>
|
||||
|
|
@ -334,7 +330,9 @@ Bei Fragen wenden Sie sich bitte an info@imixs.com
|
|||
<item name="invoice.number" type="text" label="Rechnungsnummer:" readonly="true" />
|
||||
<item name="invoice.date" type="date" label="Rechnungsdatum:" readonly="true" />
|
||||
<item name="invoice.duedate" type="date" label="Fälligkeit:" readonly="true"/>
|
||||
<item name="invoice.duedate2" type="custom" path="alexander/datumseingabe_tage" required="true" label="Wiedervorlage:" />
|
||||
</imixs-form-section>
|
||||
<imixs-form-section columns="3">
|
||||
<item name="invoice.reminder" type="date" required="true" label="Wiedervorlage:" />
|
||||
</imixs-form-section>
|
||||
|
||||
|
||||
|
|
@ -1072,14 +1070,11 @@ result.isValid=true;
|
|||
<imixs:item name="keyupdateacl" type="xs:boolean">
|
||||
<imixs:value>true</imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="keyownershipfields" type="xs:string">
|
||||
<imixs:value><![CDATA[sb.team]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="keyownershipfields" type="xs:string"/>
|
||||
<imixs:item name="keyaddwritefields" type="xs:string">
|
||||
<imixs:value><![CDATA[process.team]]></imixs:value>
|
||||
<imixs:value><![CDATA[process.manager]]></imixs:value>
|
||||
<imixs:value><![CDATA[space.manager]]></imixs:value>
|
||||
<imixs:value><![CDATA[sb.team]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="namaddreadaccess" type="xs:string">
|
||||
<imixs:value><![CDATA[{process:?:member}]]></imixs:value>
|
||||
|
|
@ -1276,7 +1271,6 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
|
|||
<imixs:value><![CDATA[process.manager]]></imixs:value>
|
||||
<imixs:value><![CDATA[process.team]]></imixs:value>
|
||||
<imixs:value><![CDATA[space.manager]]></imixs:value>
|
||||
<imixs:value><![CDATA[sb.team]]></imixs:value>
|
||||
</imixs:item>
|
||||
<imixs:item name="numnextactivityid" type="xs:int">
|
||||
<imixs:value><![CDATA[0]]></imixs:value>
|
||||
|
|
|
|||
Loading…
Reference in a new issue