initial import

This commit is contained in:
2026-05-11 20:01:23 +07:00
commit d8a1fac678
332 changed files with 9454 additions and 0 deletions

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<services xmlns="http://schemas.haulmont.com/cuba/rest-services-v2.xsd">
<service name="tms_TmsService">
<method name="printSomethingToStdOut">
<param name="something"/>
</method>
<method name="broadcastMessage">
<param name="message"/>
</method>
<method name="getProfileByDevice">
<param name="sn"/>
<param name="imei"/>
</method>
</service>
</services>

View File

@ -0,0 +1,47 @@
###############################################################################
# Configuration #
###############################################################################
cuba.springContextConfig = +/com/cmobile/unifiedtms/ext/web-spring.xml
cuba.dispatcherSpringContextConfig = +/com/cmobile/unifiedtms/ext/web-dispatcher-spring.xml
cuba.persistenceConfig = +/com/cmobile/unifiedtms/ext/persistence.xml
cuba.metadataConfig = +/com/cmobile/unifiedtms/ext/metadata.xml
cuba.viewsConfig = +/com/cmobile/unifiedtms/ext/views.xml
cuba.windowConfig = +/com/cmobile/unifiedtms/ext/web-screens.xml
cuba.menuConfig = +/com/cmobile/unifiedtms/ext/web-menu.xml
cuba.permissionConfig = +/com/cmobile/unifiedtms/ext/web-permissions.xml
cuba.mainMessagePack = +com.cmobile.unifiedtms.ext.web
cuba.anonymousSessionId = 6c3922a3-53bf-e557-aded-dfb4ec1f5d64
cuba.creditsConfig = +
###############################################################################
# Other #
###############################################################################
# Middleware connection
cuba.connectionUrlList = http://localhost:8080/tmsext-core
# Set to false if the middleware works on different JVM
cuba.useLocalServiceInvocation = true
cuba.webContextName = tmsext
# Web session inactivity timeout in seconds
cuba.httpSessionExpirationTimeoutSec = 1800
cuba.web.theme = halo
cuba.web.foldersPaneEnabled=false
cuba.availableLocales = English|en
cuba.localeSelectVisible = false
cuba.webAppUrl = http://localhost:8080/tmsext
cuba.restApiUrl=http://localhost:8080/tmsext-portal/api

View File

@ -0,0 +1,4 @@
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context">
</beans>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<menu-config xmlns="http://schemas.haulmont.com/cuba/menu.xsd">
<menu id="card-management"
description="Card Management"
icon="font-icon:CREDIT_CARD">
<item screen="tms$Card.browse"/>
</menu>
<menu id="terminalExt-management">
<item screen="tms$PublicKeySetting.browse"/>
<item screen="tms$TLESetting.browse"/>
<item screen="tms$TerminalExt.browse"/>
<item screen="tms$Acquirer.browse"/>
<item screen="tms$Issuer.browse"/>
</menu>
<menu id="emv-management">
<item screen="tms$Aid.browse"/>
<item screen="tms$Capk.browse"/>
</menu>
</menu-config>

View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<permission-config xmlns="http://schemas.haulmont.com/cuba/permissions.xsd">
</permission-config>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<screen-config xmlns="http://schemas.haulmont.com/cuba/screens.xsd">
<screen id="tms$Card.edit"
template="/com/cmobile/unifiedtms/ext/web/card/card-edit.xml"/>
<screen id="tms$Card.browse"
template="/com/cmobile/unifiedtms/ext/web/card/card-browse.xml"/>
<screen id="tms$TLESetting.browse"
template="/com/cmobile/unifiedtms/ext/web/tlesetting/tle-setting-browse.xml"/>
<screen id="tms$TLESetting.edit"
template="/com/cmobile/unifiedtms/ext/web/tlesetting/tle-setting-edit.xml"/>
<screen id="tms$PublicKeySetting.edit"
template="/com/cmobile/unifiedtms/ext/web/publickeysetting/public-key-setting-edit.xml"/>
<screen id="tms$PublicKeySetting.browse"
template="/com/cmobile/unifiedtms/ext/web/publickeysetting/public-key-setting-browse.xml"/>
<screen id="tms$TerminalExt.edit"
template="/com/cmobile/unifiedtms/ext/web/terminalext/terminalext-edit.xml"/>
<screen id="tms$Acquirer.browse"
template="/com/cmobile/unifiedtms/ext/web/acquirer/acquirer-browse.xml"/>
<screen id="tms$Acquirer.edit"
template="/com/cmobile/unifiedtms/ext/web/acquirer/acquirer-edit.xml"/>
<screen id="tms$Issuer.browse"
template="/com/cmobile/unifiedtms/ext/web/issuer/issuer-browse.xml"/>
<screen id="tms$Capk.browse"
template="/com/cmobile/unifiedtms/ext/web/capk/capk-browse.xml"/>
<screen id="tms$Capk.edit"
template="/com/cmobile/unifiedtms/ext/web/capk/capk-edit.xml"/>
<screen id="tms$Aid.browse"
template="/com/cmobile/unifiedtms/ext/web/aid/aid-browse.xml"/>
<screen id="tms$Aid.edit"
template="/com/cmobile/unifiedtms/ext/web/aid/aid-edit.xml"/>
<screen id="terminalext-input-dialog"
template="/com/cmobile/unifiedtms/ext/web/terminalext/terminalext-input-dialog.xml"/>
</screen-config>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:gui="http://schemas.haulmont.com/cuba/spring/cuba-gui.xsd">
<!-- Annotation-based beans -->
<context:component-scan base-package="com.cmobile.unifiedtms.ext"/>
<bean class="com.haulmont.cuba.web.sys.remoting.WebRemoteProxyBeanCreator">
<property name="serverSelector"
ref="cuba_ServerSelector"/>
<property name="remoteServices">
<map>
<entry key="tms_CardImporterService"
value="com.cmobile.unifiedtms.ext.service.CardImporterService"/>
<entry key="tms_ExportService" value="com.cmobile.unifiedtms.ext.service.ExportService"/>
</map>
</property>
</bean>
<gui:screens base-packages="com.cmobile.unifiedtms.ext.web"/>
</beans>

View File

@ -0,0 +1,29 @@
package com.cmobile.unifiedtms.ext.web;
import com.cmobile.unifiedtms.ext.entity.ExportReportBean;
import com.cmobile.unifiedtms.ext.service.ExportService;
import com.haulmont.cuba.gui.export.ByteArrayDataProvider;
import com.haulmont.cuba.gui.export.ExportDisplay;
import org.springframework.stereotype.Component;
import javax.inject.Inject;
@Component(BrowseExportHelper.NAME)
public class BrowseExportHelper {
public static final String NAME = "tmsxt_BrowseExportHelper";
@Inject
private ExportService exportService;
@Inject
private ExportDisplay exportDisplay;
public void exportEntity(Class<?> entityClass) {
ExportReportBean exportReportBean = exportService.exportEntities(entityClass);
exportDisplay.show(
new ByteArrayDataProvider(exportReportBean.getFileContent()),
exportReportBean.getFilename()
);
}
}

View File

@ -0,0 +1,6 @@
package com.cmobile.unifiedtms.ext.web.acquirer;
import com.haulmont.cuba.gui.components.AbstractLookup;
public class AcquirerBrowse extends AbstractLookup {
}

View File

@ -0,0 +1,34 @@
package com.cmobile.unifiedtms.ext.web.acquirer;
import com.haulmont.cuba.gui.components.AbstractEditor;
import com.haulmont.cuba.gui.components.FieldGroup;
import com.cmobile.unifiedtms.ext.entity.Acquirer;
import java.util.Map;
import javax.inject.Inject;
public class AcquirerEdit extends AbstractEditor<Acquirer> {
@Inject
private FieldGroup fieldGroup;
@Override
public void init(Map<String, Object> params) {
super.init(params);
}
@Override
protected void initNewItem(Acquirer item) {
super.initNewItem(item);
item.setCheckCardExpDate(Boolean.TRUE);
}
@Override
protected void postInit() {
super.postInit();
//FieldGroup.FieldConfig field = fieldGroup.getField("masterKeyLocation");
//field.setEditable(false);
}
}

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
caption="msg://browseCaption"
class="com.cmobile.unifiedtms.ext.web.acquirer.AcquirerBrowse"
focusComponent="acquirersTable"
lookupComponent="acquirersTable"
messagesPack="com.cmobile.unifiedtms.ext.web.acquirer">
<dsContext>
<groupDatasource id="acquirersDs"
class="com.cmobile.unifiedtms.ext.entity.Acquirer"
view="acquirer-view">
<query>
<![CDATA[select e from tms$Acquirer e]]>
</query>
</groupDatasource>
</dsContext>
<dialogMode height="600"
width="800"/>
<layout expand="acquirersTable"
spacing="true">
<filter id="filter"
applyTo="acquirersTable"
datasource="acquirersDs">
<properties include=".*"/>
</filter>
<groupTable id="acquirersTable"
width="100%" multiselect="true">
<actions>
<action id="create"/>
<action id="edit"/>
<action id="remove"/>
</actions>
<columns>
<column id="name"/>
<column id="acquirerType"/>
<column id="acquirerId"/>
<column id="description"/>
</columns>
<rows datasource="acquirersDs"/>
<rowsCount/>
<buttonsPanel id="buttonsPanel"
alwaysVisible="true">
<button id="createBtn"
action="acquirersTable.create"/>
<button id="editBtn"
action="acquirersTable.edit"/>
<button id="removeBtn"
action="acquirersTable.remove"/>
</buttonsPanel>
</groupTable>
</layout>
</window>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
caption="msg://editorCaption"
class="com.cmobile.unifiedtms.ext.web.acquirer.AcquirerEdit"
datasource="acquirerDs"
focusComponent="fieldGroup"
messagesPack="com.cmobile.unifiedtms.ext.web.acquirer">
<dsContext>
<datasource id="acquirerDs"
class="com.cmobile.unifiedtms.ext.entity.Acquirer"
view="acquirer-view">
<collectionDatasource id="acqIssuersDs"
property="issuers"/>
</datasource>
<collectionDatasource id="tLESettingsDs"
class="com.cmobile.unifiedtms.ext.entity.TLESetting"
view="_minimal">
<query>
<![CDATA[select e from tms$TLESetting e]]>
</query>
</collectionDatasource>
<collectionDatasource id="issuersDs"
class="com.cmobile.unifiedtms.ext.entity.Issuer"
view="_minimal">
<query>
<![CDATA[select e from tms$Issuer e]]>
</query>
</collectionDatasource>
</dsContext>
<dialogMode height="600"
width="800"/>
<layout expand="scrollbox"
spacing="true">
<scrollBox id="scrollbox">
<fieldGroup id="fieldGroup"
datasource="acquirerDs">
<column width="250px">
<field property="name"/>
<field property="hostID"/>
<field property="settlementHostID"/>
<field property="numberOfPrint"/>
<field property="respTimeout"/>
<field property="batchNumber"/>
<field property="merchantID"/>
<field property="terminalID"/>
<field property="debitSettlement"/>
<field property="creditSettlement"/>
<field property="description"/>
</column>
<column>
<field property="acquirerType"/>
<field property="acquirerId"/>
<field property="hostDestinationAddr"/>
<field property="hostDestinationPort"/>
<field property="showPrintExpDate"/>
<field property="checkCardExpDate"/>
<field property="tleAcquirer"/>
<field optionsDatasource="tLESettingsDs" property="tleSetting"/>
<field caption="Key Index [1 - 64]" property="masterKeyLocation"/>
<field property="masterKey" rows="5"/>
<field property="workingKey" rows="5"/>
</column>
</fieldGroup>
</scrollBox>
<frame id="windowActions"
screen="editWindowActions"/>
</layout>
</window>

View File

@ -0,0 +1,2 @@
browseCaption = Acquirer Browser
editorCaption = Acquirer Editor

View File

@ -0,0 +1,19 @@
package com.cmobile.unifiedtms.ext.web.aid;
import com.cmobile.unifiedtms.ext.entity.Aid;
import com.cmobile.unifiedtms.ext.web.BrowseExportHelper;
import com.haulmont.cuba.gui.components.AbstractLookup;
import javax.inject.Inject;
import java.util.UUID;
public class AidBrowse extends AbstractLookup {
@Inject
private BrowseExportHelper browseExportHelper;
public void exportData() {
browseExportHelper.exportEntity(Aid.class);
}
}

View File

@ -0,0 +1,7 @@
package com.cmobile.unifiedtms.ext.web.aid;
import com.haulmont.cuba.gui.components.AbstractEditor;
import com.cmobile.unifiedtms.ext.entity.Aid;
public class AidEdit extends AbstractEditor<Aid> {
}

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
caption="msg://browseCaption"
class="com.cmobile.unifiedtms.ext.web.aid.AidBrowse"
focusComponent="aidsTable"
lookupComponent="aidsTable"
messagesPack="com.cmobile.unifiedtms.ext.web.aid">
<dsContext>
<groupDatasource id="aidsDs"
class="com.cmobile.unifiedtms.ext.entity.Aid"
view="_local">
<query>
<![CDATA[select e from tms$Aid e]]>
</query>
</groupDatasource>
</dsContext>
<dialogMode height="600"
width="800"/>
<layout expand="aidsTable"
spacing="true">
<filter id="filter"
applyTo="aidsTable"
datasource="aidsDs">
<properties include=".*"/>
</filter>
<groupTable id="aidsTable"
width="100%">
<actions>
<action id="create"/>
<action id="edit"/>
<action id="remove"/>
<action id="excel" icon="font-icon:FILE_EXCEL_O" caption="msg://export.caption" invoke="exportData"/>
</actions>
<columns>
<column id="name"/>
<column id="txnType"/>
<column id="aid"
caption="AID"/>
<column id="aidVersion"
caption="AID Version"/>
<column id="remark"/>
</columns>
<rows datasource="aidsDs"/>
<rowsCount/>
<buttonsPanel id="buttonsPanel"
alwaysVisible="true">
<button id="createBtn"
action="aidsTable.create"/>
<button id="editBtn"
action="aidsTable.edit"/>
<button id="removeBtn"
action="aidsTable.remove"/>
<button id="excelBtn"
action="aidsTable.excel"/>
</buttonsPanel>
</groupTable>
</layout>
</window>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
caption="msg://editorCaption"
class="com.cmobile.unifiedtms.ext.web.aid.AidEdit"
datasource="aidDs"
focusComponent="fieldGroup"
messagesPack="com.cmobile.unifiedtms.ext.web.aid">
<dsContext>
<datasource id="aidDs"
class="com.cmobile.unifiedtms.ext.entity.Aid"
view="_local"/>
</dsContext>
<dialogMode height="600"
width="800"/>
<layout expand="scrollBox"
spacing="true">
<scrollBox id="scrollBox"
spacing="true">
<fieldGroup id="fieldGroup"
datasource="aidDs">
<column width="250px">
<field property="name"/>
<field property="txnType"/>
<field caption="AID"
property="aid"/>
<field caption="AID Version"
property="aidVersion"/>
<field caption="TAC Default"
property="tacDefault"/>
<field caption="TAC Denial"
property="tacDenial"/>
<field caption="TAC Online"
property="tacOnline"/>
<field property="threshold"/>
<field property="targetPercentage"/>
<field property="maxTargetPercentage"/>
<field caption="DDOL"
property="ddol"
rows="5"/>
<field caption="TDOL"
property="tdol"
rows="5"/>
<field property="floorLimit"/>
<field property="appSelect"/>
<field property="aidPriority"/>
<field caption="Trx Type 9C"
property="trxType9C"/>
<field property="categoryCode"/>
<field caption="CL Kernel to Use"
property="clKernelToUse"/>
<field caption="CL Options"
property="clOptions"/>
<field property="remark"/>
</column>
<column>
<field caption="CL Trx Limit"
property="clTrxLimit"/>
<field caption="CL CVM Limit"
property="clCvmLimit"/>
<field caption="CL Floor Limit"
property="clFloorLimit"/>
<field caption="EMV Config Terminal Capability"
property="emvConfTermCapability"/>
<field caption="Additional Terminal Capability"
property="additionalTermCapability"/>
<field caption="Data TTQ"
property="dataTtq"/>
</column>
</fieldGroup>
</scrollBox>
<frame id="windowActions"
screen="editWindowActions"/>
</layout>
</window>

View File

@ -0,0 +1,4 @@
browseCaption = AID Browser
editorCaption = AID Editor
export.caption = Export

View File

@ -0,0 +1,18 @@
package com.cmobile.unifiedtms.ext.web.capk;
import com.cmobile.unifiedtms.ext.entity.Capk;
import com.cmobile.unifiedtms.ext.web.BrowseExportHelper;
import com.haulmont.cuba.gui.components.AbstractLookup;
import javax.inject.Inject;
public class CapkBrowse extends AbstractLookup {
@Inject
private BrowseExportHelper browseExportHelper;
public void exportData() {
browseExportHelper.exportEntity(Capk.class);
}
}

View File

@ -0,0 +1,7 @@
package com.cmobile.unifiedtms.ext.web.capk;
import com.haulmont.cuba.gui.components.AbstractEditor;
import com.cmobile.unifiedtms.ext.entity.Capk;
public class CapkEdit extends AbstractEditor<Capk> {
}

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
caption="msg://browseCaption"
class="com.cmobile.unifiedtms.ext.web.capk.CapkBrowse"
focusComponent="capksTable"
lookupComponent="capksTable"
messagesPack="com.cmobile.unifiedtms.ext.web.capk">
<dsContext>
<groupDatasource id="capksDs"
class="com.cmobile.unifiedtms.ext.entity.Capk"
view="_local">
<query>
<![CDATA[select e from tms$Capk e]]>
</query>
</groupDatasource>
</dsContext>
<dialogMode height="600"
width="800"/>
<layout expand="capksTable"
spacing="true">
<filter id="filter"
applyTo="capksTable"
datasource="capksDs">
<properties include=".*"/>
</filter>
<groupTable id="capksTable"
width="100%">
<actions>
<action id="create"/>
<action id="edit"/>
<action id="remove"/>
<action id="excel" icon="font-icon:FILE_EXCEL_O" caption="msg://export.caption" invoke="exportData"/>
</actions>
<columns>
<column id="name"/>
<column id="idx"
caption="Capk Idx"/>
<column id="rid"
caption="RID"/>
<column id="hash"/>
<column id="expiryDate"/>
<column id="remark"/>
</columns>
<rows datasource="capksDs"/>
<rowsCount/>
<buttonsPanel id="buttonsPanel"
alwaysVisible="true">
<button id="createBtn"
action="capksTable.create"/>
<button id="editBtn"
action="capksTable.edit"/>
<button id="removeBtn"
action="capksTable.remove"/>
<button id="excelBtn"
action="capksTable.excel"/>
</buttonsPanel>
</groupTable>
</layout>
</window>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
caption="msg://editorCaption"
class="com.cmobile.unifiedtms.ext.web.capk.CapkEdit"
datasource="capkDs"
focusComponent="fieldGroup"
messagesPack="com.cmobile.unifiedtms.ext.web.capk">
<dsContext>
<datasource id="capkDs"
class="com.cmobile.unifiedtms.ext.entity.Capk"
view="capk-view"/>
</dsContext>
<dialogMode height="600"
width="800"/>
<layout expand="windowActions"
spacing="true">
<fieldGroup id="fieldGroup"
datasource="capkDs">
<column width="250px">
<field property="name"/>
<field caption="Capk Idx"
property="idx"/>
<field caption="RID"
property="rid"/>
<field property="modulus"
rows="5"/>
<field property="exponent"/>
<field property="algo"/>
<field property="hash"
rows="5"/>
<field property="expiryDate"/>
<field property="remark"/>
</column>
</fieldGroup>
<frame id="windowActions"
screen="editWindowActions"/>
</layout>
</window>

View File

@ -0,0 +1,4 @@
browseCaption = CAPK Browser
editorCaption = CAPK Editor
export.caption = Export

View File

@ -0,0 +1,72 @@
package com.cmobile.unifiedtms.ext.web.card;
import com.haulmont.cuba.gui.components.AbstractLookup;
import com.haulmont.cuba.gui.components.Component;
import com.haulmont.cuba.core.entity.FileDescriptor;
import com.haulmont.cuba.core.global.AppBeans;
import com.haulmont.cuba.core.global.DataManager;
import com.haulmont.cuba.core.global.FileStorageException;
import com.haulmont.cuba.gui.upload.FileUploadingAPI;
import com.haulmont.cuba.web.App;
import com.haulmont.cuba.gui.WindowManager;
import com.haulmont.cuba.gui.app.core.file.FileUploadDialog;
import com.haulmont.cuba.gui.config.WindowConfig;
import com.cmobile.unifiedtms.ext.service.CardImporterService;
import com.cmobile.unifiedtms.ext.entity.Card;
import com.haulmont.cuba.core.app.FileStorageService;
import com.haulmont.cuba.gui.data.GroupDatasource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import javax.inject.Inject;
import java.util.List;
public class CardBrowse extends AbstractLookup {
@Inject
private CardImporterService cardImportService;
@Inject
private DataManager dataManager;
@Inject
private FileStorageService fileStorageService;
@Inject
private GroupDatasource cardsDs;
public void onImportBtnClicked(Component source) {
WindowConfig windowConfig = AppBeans.get(WindowConfig.NAME);
final FileUploadDialog dialog = (FileUploadDialog) App.getInstance().getWindowManager().
openWindow(windowConfig.getWindowInfo("fileUploadDialog"), WindowManager.OpenType.DIALOG);
dialog.addCloseListener(actionId -> {
Log log = LogFactory.getLog(this.getClass());
if (COMMIT_ACTION_ID.equals(actionId)) {
FileUploadingAPI fileUploading = AppBeans.get(FileUploadingAPI.NAME);
FileDescriptor descriptor = fileUploading.getFileDescriptor(dialog.getFileId(), dialog.getFileName());
try {
System.out.println("Filename: " + dialog.getFileName());
try {
// save file to FileStorage
fileUploading.putFileIntoStorage(dialog.getFileId(), descriptor);
} catch (FileStorageException e) {
throw new RuntimeException("Error saving file to FileStorage", e);
}
descriptor = dataManager.commit(descriptor);
byte[] bytes = fileStorageService.loadFile(descriptor);
System.out.println("Fd: " + descriptor + ", create date: " + descriptor.getCreateDate());
List<Card> cards = cardImportService.parseCardsFromFile(descriptor);
for(Card card : cards) {
dataManager.commit(card);
}
cardsDs.refresh();
} catch (Exception e) {
log.error("File upload has failed", e);
//showNotification("File upload has failed", NotificationType.ERROR);
}
}
});
}
}

View File

@ -0,0 +1,9 @@
package com.cmobile.unifiedtms.ext.web.card;
import com.haulmont.cuba.gui.components.AbstractEditor;
import com.cmobile.unifiedtms.ext.entity.Card;
public class CardEdit extends AbstractEditor<Card> {
}

View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
caption="msg://browseCaption"
class="com.cmobile.unifiedtms.ext.web.card.CardBrowse"
focusComponent="cardsTable"
lookupComponent="cardsTable"
messagesPack="com.cmobile.unifiedtms.ext.web.card">
<dsContext>
<groupDatasource id="cardsDs"
class="com.cmobile.unifiedtms.ext.entity.Card"
view="card-full-view">
<query>
<![CDATA[select e from tms$Card e
order by e.binRangeStart,e.binRangeEnd]]>
</query>
</groupDatasource>
</dsContext>
<dialogMode height="600"
width="800"/>
<layout expand="cardsTable"
spacing="true">
<filter id="filter"
applyTo="cardsTable"
datasource="cardsDs">
<properties include=".*"/>
</filter>
<groupTable id="cardsTable"
multiselect="true"
width="100%">
<actions>
<action id="create"/>
<action id="edit"/>
<action id="remove"/>
<action id="excel"/>
<action id="refresh"/>
<action id="import"
invoke="onImportBtnClicked"/>
</actions>
<columns>
<column id="name"/>
<column id="binRangeStart"/>
<column id="binRangeEnd"/>
<column id="cardNumLength"/>
<column id="pinLength"/>
<column id="pinPrompt"/>
<column id="panDigitUnmasking"/>
<column id="printCardholderCopy"/>
<column id="printMerchantCopy"/>
<column id="printBankCopy"/>
</columns>
<rows datasource="cardsDs"/>
<rowsCount/>
<buttonsPanel id="buttonsPanel"
alwaysVisible="true">
<button id="createBtn"
action="cardsTable.create"/>
<button id="editBtn"
action="cardsTable.edit"/>
<button id="removeBtn"
action="cardsTable.remove"/>
<button id="importBtn"
action="cardsTable.import"
caption="Import"
description="Import data from Excel File"
icon="font-icon:UPLOAD"/>
<button id="exportBtn"
action="cardsTable.excel"
caption="Export"
icon="font-icon:FILE_EXCEL_O"/>
<button id="refresh"
action="cardsTable.refresh"/>
</buttonsPanel>
</groupTable>
</layout>
</window>

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
caption="msg://editorCaption"
class="com.cmobile.unifiedtms.ext.web.card.CardEdit"
datasource="cardDs"
focusComponent="fieldGroup"
messagesPack="com.cmobile.unifiedtms.ext.web.card">
<dsContext>
<datasource id="cardDs"
class="com.cmobile.unifiedtms.ext.entity.Card"
view="card-view"/>
</dsContext>
<dialogMode height="600"
width="800"/>
<layout expand="windowActions"
spacing="true">
<fieldGroup id="fieldGroup"
datasource="cardDs">
<column width="250px">
<field property="name"/>
<field property="binRangeStart"/>
<field property="binRangeEnd"/>
<field property="cardNumLength"/>
<field property="pinLength"/>
<field property="pinPrompt"/>
<field property="panDigitUnmasking"/>
<field property="printCardholderCopy"/>
<field property="printMerchantCopy"/>
<field property="printBankCopy"/>
</column>
</fieldGroup>
<frame id="windowActions"
screen="editWindowActions"/>
</layout>
</window>

View File

@ -0,0 +1,2 @@
browseCaption = Card Browser
editorCaption = Card Editor

View File

@ -0,0 +1,48 @@
package com.cmobile.unifiedtms.ext.web.issuer;
import com.haulmont.cuba.core.global.DataManager;
import com.haulmont.cuba.gui.components.AbstractLookup;
import com.haulmont.cuba.gui.components.Component;
import com.haulmont.cuba.gui.components.GroupTable;
import com.haulmont.cuba.gui.data.Datasource;
import com.cmobile.unifiedtms.ext.entity.Card;
import com.cmobile.unifiedtms.ext.entity.Issuer;
import java.util.Iterator;
import java.util.Set;
import javax.inject.Inject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class IssuerBrowse extends AbstractLookup {
private final Logger log = LoggerFactory.getLogger(IssuerBrowse.class);
@Inject
protected GroupTable<Issuer> issuersTable;
@Inject
protected DataManager dataManager;
@Inject
protected Datasource<Issuer> issuersDs;
public void onRemove(Component source) {
Set<Issuer> issuers = issuersTable.getSelected();
log.debug("Selected issuers: {}", issuers);
for(Iterator<Issuer> itr = issuers.iterator(); itr.hasNext(); ) {
Issuer iss = itr.next();
// unlink all cards on issuer deletion
for(Card card : iss.getCards()) {
card.getIssuers().remove(iss);
dataManager.commit(card);
}
iss.getCards().clear();
dataManager.commit(iss);
Issuer _iss = dataManager.reload(iss, "issuer-view");
dataManager.remove(_iss);
issuersDs.refresh();
}
}
}

View File

@ -0,0 +1,11 @@
package com.cmobile.unifiedtms.ext.web.issuer;
import com.haulmont.cuba.gui.screen.*;
import com.cmobile.unifiedtms.ext.entity.Issuer;
@UiController("tms$Issuer.edit")
@UiDescriptor("issuer-edit.xml")
@EditedEntityContainer("issuerDc")
@LoadDataBeforeShow
public class IssuerEdit extends StandardEditor<Issuer> {
}

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
caption="msg://browseCaption"
class="com.cmobile.unifiedtms.ext.web.issuer.IssuerBrowse"
focusComponent="issuersTable"
lookupComponent="issuersTable"
messagesPack="com.cmobile.unifiedtms.ext.web.issuer">
<dsContext>
<groupDatasource id="issuersDs"
class="com.cmobile.unifiedtms.ext.entity.Issuer"
view="issuer-view">
<query>
<![CDATA[select e from tms$Issuer e]]>
</query>
</groupDatasource>
</dsContext>
<dialogMode height="600"
width="800"/>
<layout expand="issuersTable"
spacing="true">
<filter id="filter"
applyTo="issuersTable"
datasource="issuersDs">
<properties include=".*"/>
</filter>
<groupTable id="issuersTable"
width="100%">
<actions>
<action id="create"/>
<action id="edit"/>
<action id="remove"
invoke="onRemove"/>
</actions>
<columns>
<column id="acquirer.acquirerId" caption="Acquirer Id"/>
<column id="acquirer.name"
caption="Acquirer Name"/>
<column id="name"/>
<column id="issuerID"/>
<column id="onUs"/>
</columns>
<rows datasource="issuersDs"/>
<rowsCount/>
<buttonsPanel id="buttonsPanel"
alwaysVisible="true">
<button id="createBtn"
action="issuersTable.create"/>
<button id="editBtn"
action="issuersTable.edit"/>
<button id="removeBtn"
action="issuersTable.remove"
caption="Remove"/>
</buttonsPanel>
</groupTable>
</layout>
</window>

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/screen/window.xsd"
caption="msg://editorCaption"
focusComponent="form"
messagesPack="com.cmobile.unifiedtms.ext.web.screens.issuer">
<data>
<instance id="issuerDc"
class="com.cmobile.unifiedtms.ext.entity.Issuer"
view="issuer-full-view">
<loader/>
<collection id="cardsDc" property="cards"/>
</instance>
<collection id="acquirersDc" class="com.cmobile.unifiedtms.ext.entity.Acquirer" view="_minimal">
<loader id="acquirersLc">
<query>
<![CDATA[select e from tms$Acquirer e]]>
</query>
</loader>
</collection>
</data>
<dialogMode height="600"
width="800"/>
<layout expand="cardsBox" spacing="true">
<form id="form" dataContainer="issuerDc">
<column width="250px">
<lookupPickerField id="acquirerField" optionsContainer="acquirersDc" property="acquirer"/>
<textField id="nameField" property="name"/>
<textField id="issuerIDField" property="issuerID"/>
<checkBox id="onUsField" property="onUs"/>
</column>
</form>
<groupBox id="cardsBox" caption="msg://com.cmobile.unifiedtms.ext.entity/Issuer.cards">
<table id="cardsTable" dataContainer="cardsDc" width="100%" height="100%">
<actions>
<action id="add" type="add"/>
<action id="exclude" type="exclude"/>
</actions>
<columns>
<column id="name"/>
<column id="binRangeStart"/>
<column id="binRangeEnd"/>
<column id="cardNumLength"/>
<column id="panDigitUnmasking"/>
</columns>
<buttonsPanel>
<button action="cardsTable.add"/>
<button action="cardsTable.exclude"/>
</buttonsPanel>
</table>
</groupBox>
<hbox id="editActions" spacing="true">
<button action="windowCommitAndClose"/>
<button action="windowClose"/>
</hbox>
</layout>
</window>

View File

@ -0,0 +1,2 @@
browseCaption = Issuer Browser

View File

@ -0,0 +1,24 @@
application.caption = TMS
application.logoImage = branding/tms-logo.png
loginWindow.caption = TMS Login
loginWindow.welcomeLabel = Welcome to TMS!
loginWindow.logoImage = branding/tms-logo-only.png
menu-config.terminalExt-management = Terminal Management
menu-config.sec$User.browse = Users
menu-config.sec$Group.browse = User Groups
menu-config.sec$Role.browse = Roles
menu-config.serverLog = Server Log
menu-config.tms$Card.browse = BIN Range
menu-config.card-management = Card Management
menu-config.tms$TLESetting.browse = TLE Settings
menu-config.tms$PublicKeySetting.browse = Public Key Settings
menu-config.entityLog = Audit Trail / Entity Log
menu-config.sec$UserSessionEntity.browse = User Session Entities
menu-config.emv-management=Emv Management
menu-config.tms$Aid.browse=AID
menu-config.tms$Capk.browse=CAPK
menu-config.tms_Profile.browse=Profiles
menu-config.tms$TerminalExt.browse=Terminal Exts
menu-config.tms$Acquirer.browse=Acquirer
menu-config.tms$Issuer.browse=Issuer

View File

@ -0,0 +1,18 @@
package com.cmobile.unifiedtms.ext.web.publickeysetting;
import com.cmobile.unifiedtms.ext.entity.PublicKeySetting;
import com.cmobile.unifiedtms.ext.web.BrowseExportHelper;
import com.haulmont.cuba.gui.components.AbstractLookup;
import javax.inject.Inject;
public class PublicKeySettingBrowse extends AbstractLookup {
@Inject
private BrowseExportHelper browseExportHelper;
public void exportData() {
browseExportHelper.exportEntity(PublicKeySetting.class);
}
}

View File

@ -0,0 +1,10 @@
package com.cmobile.unifiedtms.ext.web.publickeysetting;
import com.haulmont.cuba.gui.components.AbstractEditor;
import com.cmobile.unifiedtms.ext.entity.PublicKeySetting;
public class PublicKeySettingEdit extends AbstractEditor<PublicKeySetting> {
}

View File

@ -0,0 +1,4 @@
editorCaption = Public Key Setting Editor
browseCaption = Public Key Setting Browser
export.caption = Export

View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
caption="msg://browseCaption"
class="com.cmobile.unifiedtms.ext.web.publickeysetting.PublicKeySettingBrowse"
focusComponent="publicKeySettingsTable"
lookupComponent="publicKeySettingsTable"
messagesPack="com.cmobile.unifiedtms.ext.web.publickeysetting">
<dsContext>
<groupDatasource id="publicKeySettingsDs"
class="com.cmobile.unifiedtms.ext.entity.PublicKeySetting"
view="_local">
<query>
<![CDATA[select e from tms$PublicKeySetting e]]>
</query>
</groupDatasource>
</dsContext>
<dialogMode height="600"
width="800"/>
<layout expand="publicKeySettingsTable"
spacing="true">
<filter id="filter"
applyTo="publicKeySettingsTable"
datasource="publicKeySettingsDs">
<properties include=".*"/>
</filter>
<groupTable id="publicKeySettingsTable"
width="100%">
<actions>
<action id="create"/>
<action id="edit"/>
<action id="remove"/>
<action id="excel" icon="font-icon:FILE_EXCEL_O" caption="msg://export.caption" invoke="exportData"/>
</actions>
<columns>
<column id="idx"/>
<column id="rid"/>
</columns>
<rows datasource="publicKeySettingsDs"/>
<rowsCount/>
<buttonsPanel id="buttonsPanel"
alwaysVisible="true">
<button id="createBtn"
action="publicKeySettingsTable.create"/>
<button id="editBtn"
action="publicKeySettingsTable.edit"/>
<button id="removeBtn"
action="publicKeySettingsTable.remove"/>
<button id="excelBtn"
action="publicKeySettingsTable.excel"/>
</buttonsPanel>
</groupTable>
</layout>
</window>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
caption="msg://editorCaption"
class="com.cmobile.unifiedtms.ext.web.publickeysetting.PublicKeySettingEdit"
datasource="publicKeySettingDs"
focusComponent="fieldGroup"
messagesPack="com.cmobile.unifiedtms.ext.web.publickeysetting">
<dsContext>
<datasource id="publicKeySettingDs"
class="com.cmobile.unifiedtms.ext.entity.PublicKeySetting"
view="_local"/>
</dsContext>
<dialogMode height="600"
width="800"/>
<layout expand="windowActions"
spacing="true">
<fieldGroup id="fieldGroup"
datasource="publicKeySettingDs">
<column width="250px">
<field property="idx"/>
<field property="rid"/>
<field property="modulus"
rows="5"/>
<field property="exponent"/>
<field property="hash"
rows="5"/>
<field property="algo"/>
</column>
</fieldGroup>
<frame id="windowActions"
screen="editWindowActions"/>
</layout>
</window>

View File

@ -0,0 +1 @@
editorCaption=Issuer editor

View File

@ -0,0 +1,47 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.cmobile.unifiedtms.ext.web.terminalext;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
/**
*
* @author Jaka
*/
public class Generator {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("d:\\columns.txt")));
String line = null;
int idx = 0;
while((line = reader.readLine()) != null) {
//public static final String TERMINAL_ID = "terminalId";
line = line.replaceAll("\\_", "");
// System.out.println("public static final String " + splitCamelCaseString(line, '_').toUpperCase() + " = \"" + splitCamelCaseString(line, ' ') + "\";");
//columns.put(TERMINAL_ID, 0);
System.out.println("columns.put("+splitCamelCaseString(line, '_').toUpperCase()+", "+idx+");");
idx++;
}
reader.close();
} catch(Exception ex) {
ex.printStackTrace();
}
}
private static String splitCamelCaseString(String s, char sep) {
String[] ss = s != null && !"".equals(s) ? s.split("(?<!(^|[A-Z]))(?=[A-Z])|(?<!^)(?=[A-Z][a-z])") : null;
StringBuilder sb = new StringBuilder();
for (String _s : ss) {
sb.append(_s).append(sep);
}
//return sb.toString();
return sb.toString().trim().replaceAll("\\s", "").replaceAll("\\_$", "");
}
}

View File

@ -0,0 +1,75 @@
package com.cmobile.unifiedtms.ext.web.terminalext;
import com.cmobile.unifiedtms.ext.config.TerminalExtConfig;
import com.haulmont.cuba.gui.components.AbstractEditor;
import com.cmobile.unifiedtms.ext.entity.TerminalExt;
import javax.inject.Inject;
public class TerminalEdit extends AbstractEditor<TerminalExt> {
@Inject
protected TerminalExtConfig terminalExtConfig;
@Override
protected void initNewItem(TerminalExt item) {
super.initNewItem(item);
item.setQrisCountDown(30);
item.setReprintOnlineRetry(1);
item.setFeatureSale(Boolean.TRUE);
item.setFeatureSaleTip(Boolean.TRUE);
item.setFeatureSaleCompletion(Boolean.TRUE);
item.setFeatureSaleFareNonFare(Boolean.TRUE);
item.setFeatureSaleRedemption(Boolean.TRUE);
item.setFeatureCardVerification(Boolean.TRUE);
item.setFeatureInstallment(Boolean.TRUE);
item.setFeatureManualKeyIn(Boolean.TRUE);
item.setFeatureQRIS(Boolean.TRUE);
item.setFeatureContactless(Boolean.TRUE);
item.setFeatureSaleWithBripoin(Boolean.TRUE);
item.setInquiryBripoinTimeout(7);
item.setFeatureReleaseCardVer(Boolean.FALSE);
item.setInstallment1Options("3, 6, 12, 18, 24");
item.setInstallment2Options("3, 6, 12, 18, 24");
item.setInstallment3Options("3, 6, 12, 18, 24");
item.setRandomPinKeypad(Boolean.TRUE);
item.setBeepPinKeypad(Boolean.TRUE);
item.setAutoLogon(Boolean.TRUE);
item.setRandomPinKeypad(Boolean.FALSE);
item.setNextLogon(1);
item.setPushLogon(1);
item.setInquiryBripoinNII(terminalExtConfig.getDefaultInquiryBRIPoinNII());
item.setFeatureVoid(Boolean.TRUE);
item.setFeatureSettlement(Boolean.TRUE);
item.setFeatureReprint(Boolean.TRUE);
item.setFeatureReport(Boolean.TRUE);
item.setFeatureQrisGenerate(Boolean.TRUE);
item.setFeatureQrisPay(Boolean.TRUE);
item.setFeatureQrisRefund(Boolean.TRUE);
item.setFeatureQrisReport(Boolean.TRUE);
item.setFeatureBrizziInfo(Boolean.TRUE);
item.setFeatureBrizziInfoDeposit(Boolean.TRUE);
item.setFeatureBrizziUpdateDeposit(Boolean.TRUE);
item.setFeatureBrizziTopup(Boolean.TRUE);
item.setFeatureBrizziTopupDeposit(Boolean.TRUE);
item.setFeatureBrizziSale(Boolean.TRUE);
item.setFeatureBrizziSettlement(Boolean.TRUE);
item.setFeatureBrizziVoid(Boolean.TRUE);
item.setFeatureBrizziInit(Boolean.TRUE);
item.setFeatureBrizziCardInfo(Boolean.TRUE);
item.setFeatureBrizziLog(Boolean.TRUE);
item.setFeatureBrizziReprint(Boolean.TRUE);
item.setFeatureBrizziReport(Boolean.TRUE);
item.setFeatureReEngQris(Boolean.TRUE);
item.setFeatureContactlessQristap(Boolean.TRUE);
item.setPasswordBlockTime(3);
item.setAutoDeleteQrisTrx(3);
item.setSettleMaxTrxCountBrizzi(60);
item.setSettleWarningTrxCountBrizzi(30);
item.setQrisCekInterval(120);
}
}

View File

@ -0,0 +1,11 @@
package com.cmobile.unifiedtms.ext.web.terminalext;
import com.haulmont.cuba.gui.screen.*;
import com.cmobile.unifiedtms.ext.entity.TerminalExt;
@UiController("tms$TerminalExt.browse")
@UiDescriptor("terminal-ext-browse.xml")
@LookupComponent("terminalExtsTable")
@LoadDataBeforeShow
public class TerminalExtBrowse extends StandardLookup<TerminalExt> {
}

View File

@ -0,0 +1,15 @@
package com.cmobile.unifiedtms.ext.web.terminalext;
import com.haulmont.cuba.gui.components.AbstractEditor;
import com.haulmont.cuba.gui.components.Component;
public class TerminalInputDialog extends AbstractEditor {
public void onCancel(Component source) {
close("cancel");
}
public void onOk(Component source) {
close("ok");
}
}

View File

@ -0,0 +1,3 @@
ProfileCode
ProfileName
ProfileNote

View File

@ -0,0 +1,3 @@
editorCaption = Terminal Editor
caption = Screen
browseCaption=TerminalExt browser

View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/screen/window.xsd"
xmlns:c="http://schemas.haulmont.com/cuba/screen/jpql_condition.xsd"
caption="msg://browseCaption"
focusComponent="terminalExtsTable"
messagesPack="com.cmobile.unifiedtms.ext.web.terminalext">
<data readOnly="true">
<collection id="terminalExtsDc"
class="com.cmobile.unifiedtms.ext.entity.TerminalExt"
view="terminalExt-view">
<loader id="terminalExtsDl">
<query>
<![CDATA[select e from tms$TerminalExt e]]>
</query>
</loader>
</collection>
</data>
<dialogMode height="600"
width="800"/>
<layout expand="terminalExtsTable"
spacing="true">
<filter id="filter"
applyTo="terminalExtsTable"
dataLoader="terminalExtsDl">
<properties include=".*"/>
</filter>
<groupTable id="terminalExtsTable"
width="100%"
dataContainer="terminalExtsDc">
<actions>
<action id="create" type="create"/>
<action id="edit" type="edit"/>
<action id="remove" type="remove"/>
<action id="excel" type="excel"/>
</actions>
<columns>
<column id="terminalId"/>
<column id="merchantId"/>
<column id="merchantName1"/>
<column id="merchantName2"/>
<column id="merchantName3"/>
<column id="merchantName4"/>
<column id="merchantName5"/>
<column id="merchantPassword"/>
<column id="adminPassword"/>
<column id="settlementPassword"/>
<column id="voidPassword"/>
<column id="settleMaxTrxCount"/>
<column id="settleWarningTrxCount"/>
<column id="callCenter1"/>
<column id="callCenter2"/>
<column id="merchantType"/>
<column id="vendorName"/>
<column id="brizziDiscountPercentage"/>
<column id="brizziDiscountAmount"/>
<column id="fallbackEnabled"/>
<column id="qrisCountDown"/>
<column id="reprintOnlineRetry"/>
<column id="featureSale"/>
<column id="featureSaleTip"/>
<column id="featureSaleRedemption"/>
<column id="featureCardVerification"/>
<column id="featureSaleCompletion"/>
<column id="featureInstallment"/>
<column id="featureSaleFareNonFare"/>
<column id="featureManualKeyIn"/>
<column id="featureQRIS"/>
<column id="installment1Options"/>
<column id="installment2Options"/>
<column id="installment3Options"/>
<column id="featureContactless"/>
<column id="randomPinKeypad"/>
<column id="beepPinKeypad"/>
<column id="autoLogon"/>
<column id="nextLogon"/>
</columns>
<rowsCount/>
<buttonsPanel id="buttonsPanel"
alwaysVisible="true">
<button id="createBtn" action="terminalExtsTable.create"/>
<button id="editBtn" action="terminalExtsTable.edit"/>
<button id="removeBtn" action="terminalExtsTable.remove"/>
<button id="excelBtn" action="terminalExtsTable.excel"/>
</buttonsPanel>
</groupTable>
<hbox id="lookupActions" spacing="true" visible="false">
<button action="lookupSelectAction"/>
<button action="lookupCancelAction"/>
</hbox>
</layout>
</window>

View File

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
caption="msg://editorCaption"
class="com.cmobile.unifiedtms.ext.web.terminalext.TerminalEdit"
datasource="terminalDs"
focusComponent="fieldGroup"
messagesPack="com.cmobile.unifiedtms.ext.web.terminalext">
<dsContext>
<datasource id="terminalDs"
class="com.cmobile.unifiedtms.ext.entity.TerminalExt"
view="terminalExt-view">
</datasource>
</dsContext>
<dialogMode height="600"
width="800"/>
<layout expand="scrollBox"
spacing="true">
<scrollBox id="scrollBox"
spacing="true">
<fieldGroup id="fieldGroup"
datasource="terminalDs">
<column width="250px">
<field property="terminalId"/>
<field property="merchantId"/>
<field property="merchantName1"/>
<field property="merchantName2"/>
<field property="merchantName3"/>
<field property="merchantName4"/>
<field property="merchantName5"/>
<field property="callCenter1"/>
<field property="callCenter2"/>
<field property="merchantType"/>
<field property="vendorName"/>
<field property="settleWarningTrxCount"/>
<field property="settleMaxTrxCount"/>
</column>
<column>
<field property="merchantPassword"/>
<field property="adminPassword"/>
<field property="settlementPassword"/>
<field property="voidPassword"/>
<field property="brizziDiscountPercentage"/>
<field property="brizziDiscountAmount"/>
<field property="installment1Options"/>
<field property="installment2Options"/>
<field property="installment3Options"/>
<field property="fallbackEnabled"/>
</column>
<column>
<field property="qrisCountDown"/>
<field property="autoDeleteQrisTrx"/>
<field property="reprintOnlineRetry"/>
<field property="featureSale"/>
<field property="featureSaleTip"/>
<field property="featureSaleRedemption"/>
<field property="featureCardVerification"/>
<field property="featureSaleCompletion"/>
<field property="featureInstallment"/>
<field property="featureSaleFareNonFare"/>
</column>
<column>
<field property="featureManualKeyIn"/>
<field property="featureSaleNfc"/>
<field property="featureRefundNfc"/>
<field property="featureQRIS"/>
<field property="featureContactless"/>
<field property="featureContactlessQristap"/>
<field property="randomPinKeypad"/>
<field property="beepPinKeypad"/>
<field property="autoLogon"/>
<field property="nextLogon"/>
<field property="pushLogon"/>
</column>
<column>
<field property="hostReport"/>
<field property="hostLogging"/>
<field property="skipPassword"/>
<field property="featureSaleWithBripoin"/>
<field property="inquiryBripoinTimeout"/>
<field property="inquiryBripoinNII"/>
<field property="featureReleaseCardVer"/>
<field property="featureVoid"/>
<field property="featureSettlement"/>
<field property="featureReprint"/>
</column>
<column>
<field property="featureReport"/>
<field property="featureQrisGenerate"/>
<field property="featureQrisPay"/>
<field property="featureQrisRefund"/>
<field property="featureQrisReport"/>
<field property="featureBrizziInfo"/>
<field property="featureBrizziInfoDeposit"/>
<field property="featureBrizziUpdateDeposit"/>
<field property="featureBrizziTopup"/>
<field property="featureBrizziTopupDeposit"/>
</column>
<column>
<field property="featureBrizziSale"/>
<field property="featureBrizziSettlement"/>
<field property="featureBrizziVoid"/>
<field property="featureBrizziInit"/>
<field property="featureBrizziCardInfo"/>
<field property="featureBrizziLog"/>
<field property="featureBrizziReprint"/>
<field property="featureBrizziReport"/>
<field property="featureReEngQris"/>
<field property="passwordBlockTime"/>
</column>
<column>
<field property="settleMaxTrxCountBrizzi"/>
<field property="settleWarningTrxCountBrizzi"/>
<field property="qrisCekInterval"/>
<field property="customPanMasking"/>
</column>
</fieldGroup>
</scrollBox>
<frame id="windowActions"
screen="editWindowActions"/>
<buttonsPanel/>
</layout>
</window>

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
caption="msg://caption"
class="com.cmobile.unifiedtms.ext.web.terminalext.TerminalInputDialog"
datasource="terminalDs"
messagesPack="com.cmobile.unifiedtms.ext.web.terminalExt">
<dsContext>
<datasource id="terminalDs"
allowCommit="false"
class="com.cmobile.unifiedtms.ext.entity.TerminalExt"
view="_minimal"/>
</dsContext>
<actions>
<action id="cancelAction"
invoke="onCancel"/>
<action id="okAction"
invoke="onOk"/>
</actions>
<dialogMode height="150"
modal="true"
width="225"/>
<layout expand="buttonsPanel"
spacing="true">
<textField id="terminalIdField"
caption="Terminal ID"
datasource="terminalDs"
datatype="string"
maxLength="8"
property="terminalId"
required="true"
requiredMessage="Please input Terminal ID"
width="100%"/>
<buttonsPanel id="buttonsPanel">
<button id="okButton"
action="okAction"
caption="OK"
icon="icons/ok.png"/>
<button id="cancelButton"
action="cancelAction"
caption="Cancel"
icon="icons/cancel.png"/>
</buttonsPanel>
</layout>
</window>

View File

@ -0,0 +1,18 @@
package com.cmobile.unifiedtms.ext.web.tlesetting;
import com.cmobile.unifiedtms.ext.entity.TLESetting;
import com.cmobile.unifiedtms.ext.web.BrowseExportHelper;
import com.haulmont.cuba.gui.components.AbstractLookup;
import javax.inject.Inject;
public class TLESettingBrowse extends AbstractLookup {
@Inject
private BrowseExportHelper browseExportHelper;
public void exportData() {
browseExportHelper.exportEntity(TLESetting.class);
}
}

View File

@ -0,0 +1,7 @@
package com.cmobile.unifiedtms.ext.web.tlesetting;
import com.haulmont.cuba.gui.components.AbstractEditor;
import com.cmobile.unifiedtms.ext.entity.TLESetting;
public class TLESettingEdit extends AbstractEditor<TLESetting> {
}

View File

@ -0,0 +1,4 @@
browseCaption = TLE Setting Browser
editorCaption = TLE Setting Editor
export.caption = Export

View File

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
caption="msg://browseCaption"
class="com.cmobile.unifiedtms.ext.web.tlesetting.TLESettingBrowse"
focusComponent="tLESettingsTable"
lookupComponent="tLESettingsTable"
messagesPack="com.cmobile.unifiedtms.ext.web.tlesetting">
<dsContext>
<groupDatasource id="tLESettingsDs"
class="com.cmobile.unifiedtms.ext.entity.TLESetting"
view="_local">
<query>
<![CDATA[select e from tms$TLESetting e]]>
</query>
</groupDatasource>
</dsContext>
<dialogMode height="600"
width="800"/>
<layout expand="tLESettingsTable"
spacing="true">
<filter id="filter"
applyTo="tLESettingsTable"
datasource="tLESettingsDs">
<properties include=".*"/>
</filter>
<groupTable id="tLESettingsTable"
width="100%">
<actions>
<action id="create"/>
<action id="edit"/>
<action id="remove"/>
<action id="excel" icon="font-icon:FILE_EXCEL_O" caption="msg://export.caption" invoke="exportData"/>
</actions>
<columns>
<column id="tleEftSec"/>
<column id="tleID"/>
</columns>
<rows datasource="tLESettingsDs"/>
<rowsCount/>
<buttonsPanel id="buttonsPanel"
alwaysVisible="true">
<button id="createBtn"
action="tLESettingsTable.create"/>
<button id="editBtn"
action="tLESettingsTable.edit"/>
<button id="removeBtn"
action="tLESettingsTable.remove"/>
<button id="excelBtn"
action="tLESettingsTable.excel"/>
</buttonsPanel>
</groupTable>
</layout>
</window>

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
caption="msg://editorCaption"
class="com.cmobile.unifiedtms.ext.web.tlesetting.TLESettingEdit"
datasource="tLESettingDs"
focusComponent="fieldGroup"
messagesPack="com.cmobile.unifiedtms.ext.web.tlesetting">
<dsContext>
<datasource id="tLESettingDs"
class="com.cmobile.unifiedtms.ext.entity.TLESetting"
view="_local"/>
</dsContext>
<dialogMode height="600"
width="800"/>
<layout expand="scrollBox"
spacing="true">
<scrollBox id="scrollBox"
spacing="true">
<fieldGroup id="fieldGroup"
datasource="tLESettingDs">
<column width="250px">
<field property="tleEftSec"/>
<field property="tleID"/>
<field property="acquirerId"/>
<field property="ltmkAid"/>
<field property="vendorId"/>
<field property="tleVer"/>
<field property="kmsSecureNII"/>
<field property="edcSecureNII"/>
<field property="capkExponent"/>
<field property="capkLength"/>
<field property="capkValue"
rows="5"/>
</column>
<column>
<field property="aidLength"/>
<field property="aidValue"
rows="5"/>
<field property="fieldEncrypted1"/>
<field property="fieldEncrypted2"/>
<field property="fieldEncrypted3"/>
<field property="fieldEncrypted4"/>
<field property="fieldEncrypted5"/>
<field property="fieldEncrypted6"/>
<field property="fieldEncrypted7"/>
<field property="fieldEncrypted8"/>
<field property="fieldEncrypted9"/>
<field property="fieldEncrypted10"/>
</column>
</fieldGroup>
</scrollBox>
<frame id="windowActions"
screen="editWindowActions"/>
</layout>
</window>

View File

@ -0,0 +1,15 @@
package com.cmobile.unifiedtms.ext.web.toolkit.ui.fileuploadcomponent;
import com.vaadin.ui.AbstractJavaScriptComponent;
import com.vaadin.annotations.JavaScript;
@JavaScript({"fileuploadcomponent-connector.js"})
public class FileUploadComponent extends AbstractJavaScriptComponent {
public FileUploadComponent() {
}
@Override
protected FileUploadComponentState getState() {
return (FileUploadComponentState) super.getState();
}
}

View File

@ -0,0 +1,6 @@
package com.cmobile.unifiedtms.ext.web.toolkit.ui.fileuploadcomponent;
import com.vaadin.shared.ui.JavaScriptComponentState;
public class FileUploadComponentState extends JavaScriptComponentState {
}

View File

@ -0,0 +1,2 @@
id_co_metrocom_bni_tms_web_toolkit_ui_fileuploadcomponent_FileUploadComponent = function() {
}