docu
This commit is contained in:
parent
e0f68071f6
commit
4e886dacfb
7 changed files with 139 additions and 57 deletions
27
README.md
27
README.md
|
|
@ -30,9 +30,18 @@ Die Zugangsdaten lauten:
|
||||||
|
|
||||||
### Cargosoft Schnittstelle
|
### Cargosoft Schnittstelle
|
||||||
|
|
||||||
|
Für cargosoft verwenden wir einen Subaccoutn der auf das Verzeichns:
|
||||||
|
|
||||||
|
|
||||||
|
/office-alexander-logistics/cargosoft
|
||||||
|
|
||||||
|
zeigt.
|
||||||
|
|
||||||
Benutzername: u248962-sub2
|
Benutzername: u248962-sub2
|
||||||
Passwort: aXa61n9Un3jDNQlL
|
Passwort: aXa61n9Un3jDNQlL
|
||||||
|
|
||||||
|
Schnittstellen Details siehe unten
|
||||||
|
|
||||||
## E-Mail Schnittstelle
|
## E-Mail Schnittstelle
|
||||||
|
|
||||||
Es gibt ein Email Konto das wir für den Import von Rechnungen nutzen
|
Es gibt ein Email Konto das wir für den Import von Rechnungen nutzen
|
||||||
|
|
@ -49,8 +58,24 @@ Es gibt ein Email Konto das wir f
|
||||||
|
|
||||||
$ mvn clean install -Pdocker
|
$ mvn clean install -Pdocker
|
||||||
|
|
||||||
## Push to Ixchel Cloud
|
### Push to Ixchel Cloud
|
||||||
|
|
||||||
$ mvn clean install -Pkubernetes
|
$ mvn clean install -Pkubernetes
|
||||||
|
|
||||||
|
|
||||||
|
# Cargosoft
|
||||||
|
|
||||||
|
Die Cargosoft Schnittstelle besteht aus einem eigenen Export modell "cargosoft-export-1.0.0". In diesem wird der CargoosftExportAdapter getriggert, der
|
||||||
|
die Daten einer Rechnung an den FTP Server übermittelt.
|
||||||
|
|
||||||
|
Die Konfiguration der FTP Schnittstelle erfolgt über den Konfigurationsdialog im Office-Workflow mit den folgenden Werten:
|
||||||
|
|
||||||
|
cargosoft.export.ftp.host=u248962.your-storagebox.de
|
||||||
|
cargosoft.export.ftp.path=/
|
||||||
|
cargosoft.export.ftp.user=u248962-sub2
|
||||||
|
cargosoft.export.ftp.password=aXa61n9Un3jDNQlL
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -71,7 +71,7 @@ public class FTPConnector {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@ConfigProperty(name = ENV_EXPORT_FTP_PORT, defaultValue = "21")
|
@ConfigProperty(name = ENV_EXPORT_FTP_PORT, defaultValue = "21")
|
||||||
int ftpPort;
|
Optional<Integer> ftpPort;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@ConfigProperty(name = ENV_EXPORT_FTP_USER)
|
@ConfigProperty(name = ENV_EXPORT_FTP_USER)
|
||||||
|
|
@ -93,7 +93,7 @@ public class FTPConnector {
|
||||||
throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR,
|
throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR,
|
||||||
"FTP file transfer failed: no ftp host name provided (" + ENV_EXPORT_FTP_HOST + ")!");
|
"FTP file transfer failed: no ftp host name provided (" + ENV_EXPORT_FTP_HOST + ")!");
|
||||||
}
|
}
|
||||||
|
|
||||||
String fileName = fileData.getName();
|
String fileName = fileData.getName();
|
||||||
|
|
||||||
// Compute file path
|
// Compute file path
|
||||||
|
|
@ -110,16 +110,14 @@ public class FTPConnector {
|
||||||
try {
|
try {
|
||||||
logger.finest("......put " + fileName + " to FTP server: " + ftpServer + "...");
|
logger.finest("......put " + fileName + " to FTP server: " + ftpServer + "...");
|
||||||
ftpClient = new FTPSClient("TLS", false);
|
ftpClient = new FTPSClient("TLS", false);
|
||||||
ftpClient.setControlEncoding("UTF-8");
|
ftpClient.setBufferSize(8192);
|
||||||
ftpClient.connect(ftpServer.get(), ftpPort);
|
ftpClient.connect(ftpServer.get(), ftpPort.get().intValue());
|
||||||
if (ftpClient.login(ftpUser.get(), ftpPassword.get()) == false) {
|
if (ftpClient.login(ftpUser.get(), ftpPassword.get()) == false) {
|
||||||
throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR,
|
throw new PluginException(CargosoftExportAdapter.class.getSimpleName(), FTP_ERROR,
|
||||||
"FTP file transfer failed: login failed!");
|
"FTP file transfer failed: login failed!");
|
||||||
}
|
}
|
||||||
|
|
||||||
ftpClient.enterLocalPassiveMode();
|
ftpClient.enterLocalPassiveMode();
|
||||||
// ftpClient.setFileType(FTP.ASCII_FILE_TYPE);
|
ftpClient.setFileType(FTP.ASCII_FILE_TYPE);
|
||||||
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
|
|
||||||
ftpClient.setControlEncoding("UTF-8");
|
ftpClient.setControlEncoding("UTF-8");
|
||||||
|
|
||||||
// verify directories
|
// verify directories
|
||||||
|
|
@ -221,4 +219,5 @@ public class FTPConnector {
|
||||||
"FTP file transfer failed: " + e.getMessage(), e);
|
"FTP file transfer failed: " + e.getMessage(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,9 @@
|
||||||
# Custom resource bundle
|
# Custom resource bundle
|
||||||
|
|
||||||
app.application_title=Alexander Global Logistics
|
app.application_title=Alexander Global Logistics
|
||||||
|
|
||||||
|
alexander_form_basic=
|
||||||
|
alexander_form_basic_read=
|
||||||
|
alexander_sub_positionen=
|
||||||
|
alexander_sub_positionen_read=
|
||||||
|
alexander_sub_responsible=
|
||||||
|
|
@ -1,3 +1,9 @@
|
||||||
# Custom resource bundle
|
# Custom resource bundle
|
||||||
|
|
||||||
app.application_title=Alexander Global Logistics
|
app.application_title=Alexander Global Logistics
|
||||||
|
|
||||||
|
alexander_form_basic=
|
||||||
|
alexander_form_basic_read=
|
||||||
|
alexander_sub_positionen=
|
||||||
|
alexander_sub_positionen_read=
|
||||||
|
alexander_sub_responsible=
|
||||||
|
|
@ -12,14 +12,12 @@
|
||||||
<table class="imixsdatatable imixs-orderitems">
|
<table class="imixsdatatable imixs-orderitems">
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th style="width: 50px;">Pos.</th>
|
<th style="">#</th>
|
||||||
<th>Leistungsbezeichnung</th>
|
<th style="">Positionsnummer<span class="imixs-required"> *</span></th>
|
||||||
<th style="width: 70px;">Einheit</th>
|
<th style="width: 50px;">Buchungsperiode</th>
|
||||||
<th style="width: 70px;">Menge</th>
|
<th style="width: 150px;">Steuer</th>
|
||||||
<th style="width: 140px;">Netto-Preis / ME in €</th>
|
<th style="width: 150px;text-align:right;">Netto</th>
|
||||||
<th style="width: 90px;">Gesamt in €</th>
|
<th style="width: 150px;text-align:right;">Brutto</th>
|
||||||
|
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<ui:repeat var="orderitem" value="#{childItemController.childItems}">
|
<ui:repeat var="orderitem" value="#{childItemController.childItems}">
|
||||||
|
|
@ -33,23 +31,17 @@
|
||||||
<td><h:outputText value="#{orderitem.item['name']}" /></td>
|
<td><h:outputText value="#{orderitem.item['name']}" /></td>
|
||||||
|
|
||||||
|
|
||||||
<td><h:outputText value="#{orderitem.item['unit']}" /></td>
|
<td><h:outputText value="#{orderitem.item['period']}" /></td>
|
||||||
|
|
||||||
<td><h:outputText value="#{orderitem.item['ammount']}"
|
|
||||||
id="orderitem_ammount" onchange="calculateSummary()" /></td>
|
|
||||||
<td style="text-align: right;"><h:outputText value="#{orderitem.item['price']}"
|
|
||||||
id="orderitem_price"
|
|
||||||
onchange="calculateSummary()">
|
|
||||||
<f:convertNumber minFractionDigits="2" locale="de" />
|
|
||||||
</h:outputText></td>
|
|
||||||
|
|
||||||
<td class="orderitem_summary" style="text-align: right;">
|
|
||||||
|
|
||||||
<h:outputText value="#{orderitem.item['_capacity_dsp']}">
|
<td><h:outputText value="#{orderitem.item['tax']}" /></td>
|
||||||
|
|
||||||
|
<td style="text-align: right;"><h:outputText value="#{orderitem.item['amount']}"
|
||||||
|
/></td>
|
||||||
|
|
||||||
</h:outputText>
|
<td style="text-align: right;"><h:outputText value="#{orderitem.item['total']}"
|
||||||
|
/></td>
|
||||||
</td>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
@ -63,9 +55,9 @@
|
||||||
<td />
|
<td />
|
||||||
<td />
|
<td />
|
||||||
<td />
|
<td />
|
||||||
<td />
|
<td style="text-align: right;">Summe:</td>
|
||||||
<td class="orderlist_summary" style="text-align: right;">
|
<td class="orderlist_summary" style="text-align: right;">
|
||||||
<h:outputText value="#{workitem.item['_capacity_dsp']}">
|
<h:outputText value="#{workitem.item['order.total']}">
|
||||||
</h:outputText>
|
</h:outputText>
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
|
|
@ -82,28 +74,9 @@
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
/*<![CDATA[*/
|
/*<![CDATA[*/
|
||||||
|
|
||||||
// display summary
|
|
||||||
$(document).ready(function() {
|
|
||||||
});
|
|
||||||
|
|
||||||
// This method refreshs the layout
|
|
||||||
function updateOrderItems(data) {
|
|
||||||
if (data.status === 'success') {
|
|
||||||
$('[id$=oderlist]').imixsLayout();
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function convertToCurrency(sum) {
|
|
||||||
sum = ("" + sum).replace('.', ',');
|
|
||||||
if (sum.indexOf(',') == -1)
|
|
||||||
sum = sum + ",00";
|
|
||||||
if (sum.indexOf(',') == sum.length - 2)
|
|
||||||
sum = sum + "0";
|
|
||||||
return sum;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*]]>*/
|
/*]]>*/
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,65 @@
|
||||||
|
package com.alexanderlogistics;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import org.imixs.workflow.FileData;
|
||||||
|
import org.imixs.workflow.exceptions.PluginException;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Ignore;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import junit.framework.Assert;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This test generates random test data
|
||||||
|
*
|
||||||
|
* @author rsoika
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class TestFTP {
|
||||||
|
|
||||||
|
|
||||||
|
final static String FILE = "/DTVF_SKBeschrift_21010.csv";
|
||||||
|
|
||||||
|
private final static Logger logger = Logger.getLogger(TestFTP.class.getName());
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() throws Exception {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test Kreditoren import
|
||||||
|
*/
|
||||||
|
@Ignore
|
||||||
|
@Test
|
||||||
|
public void testPutFileToFTP() {
|
||||||
|
|
||||||
|
FTPConnector ftpc=new FTPConnector();
|
||||||
|
|
||||||
|
ftpc.ftpServer=Optional.ofNullable("u248962.your-storagebox.de");
|
||||||
|
ftpc.ftpPort=Optional.ofNullable(21);
|
||||||
|
ftpc.ftpUser=Optional.ofNullable("u248962-sub2");
|
||||||
|
ftpc.ftpPassword=Optional.ofNullable("aXa61n9Un3jDNQlL");
|
||||||
|
ftpc.ftpPath=Optional.ofNullable("/");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
FileData fileData=new FileData("test.txt","some data...".getBytes(),"text",null);
|
||||||
|
try {
|
||||||
|
ftpc.put(fileData);
|
||||||
|
logger.info("test finished...");
|
||||||
|
} catch ( PluginException e) {
|
||||||
|
|
||||||
|
e.printStackTrace();
|
||||||
|
Assert.fail();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -387,7 +387,15 @@ Betrag: <itemvalue>_amount</itemvalue> (Brutto € <itemvalue>_amount_brutto</it
|
||||||
</imixs:item>
|
</imixs:item>
|
||||||
<imixs:item name="txtactivityresult" type="xs:string">
|
<imixs:item name="txtactivityresult" type="xs:string">
|
||||||
<imixs:value><![CDATA[<item name="action">home</item>
|
<imixs:value><![CDATA[<item name="action">home</item>
|
||||||
<item name="space.lastname"><itemvalue>space.name</itemvalue></item>]]></imixs:value>
|
<item name="space.lastname"><itemvalue>space.name</itemvalue></item>
|
||||||
|
|
||||||
|
<item name="subprocess_create">
|
||||||
|
<modelversion>cargosoft-export-1.0</modelversion>
|
||||||
|
<task>1000</task>
|
||||||
|
<event>100</event>
|
||||||
|
<items>(?!txtworkflowhistory)(^[a-zA-Z]|^_)</items>
|
||||||
|
</item>
|
||||||
|
]]></imixs:value>
|
||||||
</imixs:item>
|
</imixs:item>
|
||||||
<imixs:item name="txtname" type="xs:string">
|
<imixs:item name="txtname" type="xs:string">
|
||||||
<imixs:value><![CDATA[Freigabe einholen]]></imixs:value>
|
<imixs:value><![CDATA[Freigabe einholen]]></imixs:value>
|
||||||
|
|
@ -417,7 +425,7 @@ var b= workitem.get("order.total")[0];
|
||||||
<bpmn2:documentation id="Documentation_23"><![CDATA[Rechnung geprüft, weiterleiten an Buchhaltung.]]></bpmn2:documentation>
|
<bpmn2:documentation id="Documentation_23"><![CDATA[Rechnung geprüft, weiterleiten an Buchhaltung.]]></bpmn2:documentation>
|
||||||
<bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
|
<bpmn2:incoming>SequenceFlow_8</bpmn2:incoming>
|
||||||
<bpmn2:outgoing>SequenceFlow_51</bpmn2:outgoing>
|
<bpmn2:outgoing>SequenceFlow_51</bpmn2:outgoing>
|
||||||
<bpmn2:signalEventDefinition id="SignalEventDefinition_4"/>
|
<bpmn2:outputSet id="OutputSet_2" name="Output Set 2"/>
|
||||||
</bpmn2:intermediateCatchEvent>
|
</bpmn2:intermediateCatchEvent>
|
||||||
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_5005-10" imixs:activityid="10" name="Speichern">
|
<bpmn2:intermediateCatchEvent id="IntermediateCatchEvent_5005-10" imixs:activityid="10" name="Speichern">
|
||||||
<bpmn2:extensionElements>
|
<bpmn2:extensionElements>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue