Attached Files | test-humanlog.diff [^] (19,346 bytes) 2018-08-29 09:47 [Show Content] [Hide Content]diff --git a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/AllHumanLogTests.java b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/AllHumanLogTests.java
new file mode 100644
--- /dev/null
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/AllHumanLogTests.java
@@ -0,0 +1,33 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo Public License
+ * Version 1.0 (the "License"), being the Mozilla Public License
+ * Version 1.1 with a permitted attribution clause; you may not use this
+ * file except in compliance with the License. You may obtain a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo S.L.U.
+ * All portions are Copyright (C) 2018 Openbravo S.L.U.
+ * All Rights Reserved.
+ * Contributor(s):
+ ************************************************************************
+ *
+ * @author RAL
+ *
+ */
+
+package org.openbravo.test.mobile.retail.pack.selenium.tests.humanlog;
+
+import org.junit.runner.RunWith;
+import org.openbravo.test.mobile.core.junit.toolbox.SuiteClassesToolbox;
+import org.openbravo.test.mobile.retail.mobilecore.junit.OBWildcardPatternSuite;
+
+@RunWith(OBWildcardPatternSuite.class)
+@SuiteClassesToolbox()
+public class AllHumanLogTests {
+
+}
diff --git a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/CashManagement.java b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/CashManagement.java
new file mode 100644
--- /dev/null
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/CashManagement.java
@@ -0,0 +1,85 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo Public License
+ * Version 1.0 (the "License"), being the Mozilla Public License
+ * Version 1.1 with a permitted attribution clause; you may not use this
+ * file except in compliance with the License. You may obtain a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo S.L.U.
+ * All portions are Copyright (C) 2018 Openbravo S.L.U.
+ * All Rights Reserved.
+ * Contributor(s):
+ ************************************************************************
+ *
+ * @author EBE
+ *
+ */
+
+package org.openbravo.test.mobile.retail.pack.selenium.tests.humanlog;
+
+import java.util.concurrent.TimeUnit;
+
+import org.junit.Test;
+import org.openbravo.test.mobile.retail.mobilecore.annotations.TestClassAnnotations;
+import org.openbravo.test.mobile.retail.mobilecore.javascript.BackboneHelper;
+import org.openbravo.test.mobile.retail.pack.API.WebPOSAPI;
+import org.openbravo.test.mobile.retail.pack.selenium.TestIdPack;
+
+@TestClassAnnotations(isHighVolumeCompatible = true)
+public class CashManagement extends HumanLogHelper {
+
+ @Test
+ public void test() {
+ // starting cash up
+ WebPOSAPI.cleanCashup(this);
+ logoutAndCloseBrowser();
+ logIn();
+
+ String ticketNumber = BackboneHelper.getDocumentNo();
+ // Open CashManagent Window
+ tap(TestIdPack.BUTTON_MENU);
+ tap(TestIdPack.BUTTON_MENU_CASHMANAGEMENT);
+ verify(TestIdPack.LABEL_CASHMANAGEMENT_TITLE, "Cash Management");
+ // Make a deposit
+ WebPOSAPI.tapKeypad(this, 50);
+ tap(TestIdPack.BUTTON_CASHMANAGEMENT_CASHDEPOSIT);
+ verify(TestIdPack.LABEL_SELECTDEPOSIT_BACOFFICEVBS, "Backoffice transfer to VBS");
+ tap(TestIdPack.BUTTON_SELECTDEPOSIT_BACOFFICEVBS);
+ verify(TestIdPack.LABEL_CASHMANAGEMENT_ROW1_DESCRIPTION,
+ "Deposit: Cash - Backoffice transfer to VBS");
+ verify(TestIdPack.LABEL_CASHMANAGEMENT_ROW1_AMOUNT, "50.00");
+
+ // Complete the CashManagement
+ tap(TestIdPack.BUTTON_CASHMANAGEMENT_DONE);
+ verify(TestIdPack.LABEL_POPUP_TITLE, "Done");
+ tap(TestIdPack.BUTTON_POPUP_OK);
+ verify(TestIdPack.LABEL_TOTALTOPAY, "0.00");
+
+ // Wait to log sent to server
+ try {
+ TimeUnit.SECONDS.sleep(40);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ // Validate log
+ String lastTicketNumber = BackboneHelper.getDocumentNo();
+ validateHumanLog(new String[] { //
+ "Login user: vallblanca", //
+ "Create new ticket: " + ticketNumber, //
+ "Menu > Cash Management", //
+ "Button pushed: 5", //
+ "Button pushed: 0", //
+ "Button pushed: Cash Deposit", //
+ "Deposit Cash: 50.00 EUR, Origin: Backoffice transfer to VBS", //
+ "Done Cash Management", //
+ "Create new ticket: " + lastTicketNumber //
+ });
+ }
+
+}
diff --git a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/CashUp.java b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/CashUp.java
new file mode 100644
--- /dev/null
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/CashUp.java
@@ -0,0 +1,131 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo Public License
+ * Version 1.0 (the "License"), being the Mozilla Public License
+ * Version 1.1 with a permitted attribution clause; you may not use this
+ * file except in compliance with the License. You may obtain a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo S.L.U.
+ * All portions are Copyright (C) 2018 Openbravo S.L.U.
+ * All Rights Reserved.
+ * Contributor(s):
+ ************************************************************************
+ *
+ * @author EBE
+ *
+ */
+
+package org.openbravo.test.mobile.retail.pack.selenium.tests.humanlog;
+
+import java.util.concurrent.TimeUnit;
+
+import org.junit.Test;
+import org.openbravo.test.mobile.retail.mobilecore.annotations.TestClassAnnotations;
+import org.openbravo.test.mobile.retail.mobilecore.javascript.BackboneHelper;
+import org.openbravo.test.mobile.retail.pack.API.WebPOSAPI;
+import org.openbravo.test.mobile.retail.pack.selenium.TestIdPack;
+
+@TestClassAnnotations(isHighVolumeCompatible = true)
+public class CashUp extends HumanLogHelper {
+
+ @Test
+ public void test() {
+ // starting cash up
+ WebPOSAPI.cleanCashup(this);
+ logoutAndCloseBrowser();
+ logIn();
+
+ String ticketNumber = BackboneHelper.getDocumentNo();
+ // Buy item
+ buyItem();
+ // Pay receipt
+ payTicket(TestIdPack.BUTTON_PAYMENT_CARD);
+
+ // Open CashUp window
+ tap(TestIdPack.BUTTON_MENU);
+ tap(TestIdPack.BUTTON_MENU_CASHUP);
+ verify(TestIdPack.LABEL_CASHUP_TITLE, "Cash Up");
+
+ // step 1 of 4
+ verify(TestIdPack.LABEL_CASHUP_STEP2_TITLE, "Step 1 of 4: Count Cash");
+ tap(TestIdPack.BUTTON_CASHUP_NEXT);
+
+ // step 2 of 4
+ verify(TestIdPack.LABEL_CASHUP_STEP3_TITLE, "Step 2 of 4: Count Cash");
+ tap(TestIdPack.BUTTON_CASHUP_CARD_OK);
+ tap(TestIdPack.BUTTON_CASHUP_CASHUSA_OK);
+ tap(TestIdPack.BUTTON_CASHUP_VOUCHER_OK);
+ tap(TestIdPack.BUTTON_CASHUP_NEXT);
+
+ // step 3 of 4
+ // cash
+ verify(TestIdPack.LABEL_CASHUP_STEP4_TITLE, "Step 3 of 4: Select Cash to keep");
+ verify(TestIdPack.LABEL_CASHUP_KEEPNOTHING, "Nothing");
+ tap(TestIdPack.BUTTON_CASHUP_KEEPNOTHING);
+ tap(TestIdPack.BUTTON_CASHUP_NEXT);
+ // usa cash
+ verify(TestIdPack.LABEL_CASHUP_STEP4_TITLE, "Step 3 of 4: Select USA Cash to keep");
+ verify(TestIdPack.LABEL_CASHUP_KEEPNOTHING, "Nothing");
+ tap(TestIdPack.BUTTON_CASHUP_KEEPNOTHING);
+ tap(TestIdPack.BUTTON_CASHUP_NEXT);
+ // voucher
+ verify(TestIdPack.LABEL_CASHUP_STEP4_TITLE, "Step 3 of 4: Select Voucher to keep");
+ verify(TestIdPack.LABEL_CASHUP_KEEPNOTHING, "Nothing");
+ tap(TestIdPack.BUTTON_CASHUP_KEEPNOTHING);
+ tap(TestIdPack.BUTTON_CASHUP_NEXT);
+
+ // step 4 of 4
+ verify(TestIdPack.LABEL_CASHUP_STEP5_TITLE, "Step 4 of 4: Post, print and close");
+ verify(TestIdPack.LABEL_CASHUP_POSTPRINTANDCLOSE, "Post, Print & Close");
+ tap(TestIdPack.BUTTON_CASHUP_POSTPRINTANDCLOSE);
+
+ // done
+ verify(TestIdPack.LABEL_POPUP_TITLE, "Good job!");
+ tap(TestIdPack.BUTTON_POPUP_OK);
+ verify(TestIdPack.LABEL_TOTALTOPAY, "0.00");
+
+ // Wait to log sent to server
+ try {
+ TimeUnit.SECONDS.sleep(40);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ // Validate log
+ String lastTicketNumber = BackboneHelper.getDocumentNo();
+ validateHumanLog(new String[] { //
+ "Login user: vallblanca", //
+ "Create new ticket: " + ticketNumber, //
+ "Add product \"Avalanche transceiver\" (Qty: 1) to ticket \"" + ticketNumber + "\"", //
+ "Total Amount (150.50) for ticket: " + ticketNumber, //
+ "Button pushed: Card", //
+ "Payment method selected: Card", //
+ "Exact Payment: Card = 150.50 EUR", //
+ "Clicked to add (partial or total) payment: Card = 150.50 EUR", //
+ "Added Payment: Card = 150.50 EUR", //
+ "Complete ticket payment: " + ticketNumber, //
+ "Open the drawer", //
+ "Create new ticket: " + lastTicketNumber, //
+ "Menu > Cash Up", //
+ "Count Cash: Cash [Counted: -, Expected: 0.00] EUR", //
+ "Open the drawer", //
+ "Count Cash: Cash [Counted: -, Expected: 0.00] EUR", //
+ "Open the drawer", //
+ "Count Cash: Card [Counted: 150.50, Expected: 150.50] EUR", //
+ "Count Cash: USA Cash [Counted: 0.00, Expected: 0.00] USD", //
+ "Count Cash: Voucher [Counted: 0.00, Expected: 0.00] EUR", //
+ "Card to keep: 0.00 EUR", //
+ "Cash to keep: 0.00 EUR", //
+ "USA Cash to keep: 0.00 USD", //
+ "Voucher to keep: 0.00 EUR", //
+ "CashUp Finished Success", //
+ "Create new ticket: " + lastTicketNumber //
+ });
+ }
+
+}
diff --git a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/HumanLogHelper.java b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/HumanLogHelper.java
new file mode 100644
--- /dev/null
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/HumanLogHelper.java
@@ -0,0 +1,77 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo Public License
+ * Version 1.0 (the "License"), being the Mozilla Public License
+ * Version 1.1 with a permitted attribution clause; you may not use this
+ * file except in compliance with the License. You may obtain a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo S.L.U.
+ * All portions are Copyright (C) 2018 Openbravo S.L.U.
+ * All Rights Reserved.
+ * Contributor(s):
+ ************************************************************************
+ *
+ * @author EBE
+ *
+ */
+
+package org.openbravo.test.mobile.retail.pack.selenium.tests.humanlog;
+
+import static org.junit.Assert.assertEquals;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import org.openbravo.test.mobile.core.selenium.SeleniumHelper;
+import org.openbravo.test.mobile.retail.extmodules.selenium.TestIdExtModules;
+import org.openbravo.test.mobile.retail.mobilecore.database.DatabaseHelperSelect;
+import org.openbravo.test.mobile.retail.mobilecore.selenium.TestIdConstructor;
+import org.openbravo.test.mobile.retail.pack.selenium.TestIdPack;
+import org.openbravo.test.mobile.retail.pack.selenium.terminals.WebPOSTerminalHelper;
+
+public class HumanLogHelper extends WebPOSTerminalHelper {
+
+ void validateHumanLog(final String[] values) {
+ String sessionId = (String) SeleniumHelper
+ .executeScriptWithReturn("OB.UTIL.localStorage.getItem('cacheSessionId')");
+ String sql = String.format("select msg from obmobc_logclient_readable "
+ + "where cache_session_id = '%s' order by created asc", sessionId);
+
+ new DatabaseHelperSelect() {
+
+ int index = 0;
+
+ @Override
+ protected void yieldResultSet(final ResultSet rs) throws SQLException {
+ String msg = rs.getString("msg");
+ assertEquals(msg, values[index++]);
+ }
+ }.execute(sql, values.length);
+ }
+
+ void buyItem() {
+ // Buy item
+ tap(TestIdPack.BUTTON_SEARCH);
+ write(TestIdPack.FIELD_SEARCH_TEXT, "Avalanche transceiver");
+ tap(TestIdPack.BUTTON_SEARCH_EXECUTE);
+ tap(TestIdPack.BUTTON_SEARCHPRODUCT_AVALANCHETRANSCEIVER);
+ verify(TestIdPack.LABEL_TOTALTOPAY, "150.50");
+ }
+
+ void payTicket(TestIdConstructor paymentMethod) {
+ // Pay receipt
+ tap(TestIdExtModules.BUTTON_PAY);
+ if (paymentMethod != null) {
+ tap(paymentMethod);
+ }
+ tap(TestIdExtModules.BUTTON_PAY_EXACT);
+ tap(TestIdExtModules.BUTTON_PAY_DONE);
+ verify(TestIdExtModules.LABEL_TOTALTOPAY, "0.00");
+ }
+
+}
diff --git a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/LoginInWebPOS.java b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/LoginInWebPOS.java
new file mode 100644
--- /dev/null
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/LoginInWebPOS.java
@@ -0,0 +1,53 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo Public License
+ * Version 1.0 (the "License"), being the Mozilla Public License
+ * Version 1.1 with a permitted attribution clause; you may not use this
+ * file except in compliance with the License. You may obtain a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo S.L.U.
+ * All portions are Copyright (C) 2018 Openbravo S.L.U.
+ * All Rights Reserved.
+ * Contributor(s):
+ ************************************************************************
+ *
+ * @author EBE
+ *
+ */
+
+package org.openbravo.test.mobile.retail.pack.selenium.tests.humanlog;
+
+import java.util.concurrent.TimeUnit;
+
+import org.junit.Test;
+import org.openbravo.test.mobile.retail.mobilecore.annotations.TestClassAnnotations;
+import org.openbravo.test.mobile.retail.mobilecore.javascript.BackboneHelper;
+
+@TestClassAnnotations(isHighVolumeCompatible = true)
+public class LoginInWebPOS extends HumanLogHelper {
+
+ @Test
+ public void test() {
+ logoutAndCloseBrowser();
+ logIn();
+ // Wait to log sent to server
+ try {
+ TimeUnit.SECONDS.sleep(40);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ // Validate log
+ String ticketNumber = BackboneHelper.getDocumentNo();
+ validateHumanLog(new String[] { //
+ "Login user: vallblanca", //
+ "Create new ticket: " + ticketNumber //
+ });
+ }
+
+}
diff --git a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/PayTicket.java b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/PayTicket.java
new file mode 100644
--- /dev/null
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/PayTicket.java
@@ -0,0 +1,67 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo Public License
+ * Version 1.0 (the "License"), being the Mozilla Public License
+ * Version 1.1 with a permitted attribution clause; you may not use this
+ * file except in compliance with the License. You may obtain a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo S.L.U.
+ * All portions are Copyright (C) 2018 Openbravo S.L.U.
+ * All Rights Reserved.
+ * Contributor(s):
+ ************************************************************************
+ *
+ * @author EBE
+ *
+ */
+
+package org.openbravo.test.mobile.retail.pack.selenium.tests.humanlog;
+
+import java.util.concurrent.TimeUnit;
+
+import org.junit.Test;
+import org.openbravo.test.mobile.retail.mobilecore.annotations.TestClassAnnotations;
+import org.openbravo.test.mobile.retail.mobilecore.javascript.BackboneHelper;
+
+@TestClassAnnotations(isHighVolumeCompatible = true)
+public class PayTicket extends HumanLogHelper {
+
+ @Test
+ public void test() {
+ logoutAndCloseBrowser();
+ logIn();
+ String ticketNumber = BackboneHelper.getDocumentNo();
+ // Buy item
+ buyItem();
+ // Pay receipt
+ payTicket(null);
+
+ // Wait to log sent to server
+ try {
+ TimeUnit.SECONDS.sleep(40);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ // Validate log
+ String lastTicketNumber = BackboneHelper.getDocumentNo();
+ validateHumanLog(new String[] { //
+ "Login user: vallblanca", //
+ "Create new ticket: " + ticketNumber, //
+ "Add product \"Avalanche transceiver\" (Qty: 1) to ticket \"" + ticketNumber + "\"", //
+ "Total Amount (150.50) for ticket: " + ticketNumber, //
+ "Exact Payment: Cash = 150.50 EUR", //
+ "Clicked to add (partial or total) payment: Cash = 150.50 EUR", //
+ "Added Payment: Cash = 150.50 EUR", //
+ "Complete ticket payment: " + ticketNumber, //
+ "Open the drawer", //
+ "Create new ticket: " + lastTicketNumber //
+ });
+ }
+
+}
complementary.diff [^] (2,888 bytes) 2018-08-31 09:37 [Show Content] [Hide Content]diff --git a/web/org.openbravo.retail.complementary/js/hooks/hookPreDeleteLine.js b/web/org.openbravo.retail.complementary/js/hooks/hookPreDeleteLine.js
--- a/web/org.openbravo.retail.complementary/js/hooks/hookPreDeleteLine.js
+++ b/web/org.openbravo.retail.complementary/js/hooks/hookPreDeleteLine.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2015-2017 Openbravo S.L.U.
+ * Copyright (C) 2015-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -66,6 +66,13 @@
function setDeleteComplementaryProducts(deleteComplementaryProducts) {
args.order.set('deleteComplementaryProducts', deleteComplementaryProducts);
+ if (deleteComplementaryProducts) {
+ _.each(args.selectedLines, function (line) {
+ if (line.get('hasComplementary')) {
+ OB.logUserAction('Delete complementaries products of: ' + line.get('product').get('_identifier') + ' (Qty: ' + line.get('qty') + ')');
+ }
+ });
+ }
enyo.$.scrim.show();
OB.UTIL.HookManager.callbackExecutor(args, c);
}
diff --git a/web/org.openbravo.retail.complementary/js/hooks/hookRenderOrderLine.js b/web/org.openbravo.retail.complementary/js/hooks/hookRenderOrderLine.js
--- a/web/org.openbravo.retail.complementary/js/hooks/hookRenderOrderLine.js
+++ b/web/org.openbravo.retail.complementary/js/hooks/hookRenderOrderLine.js
@@ -46,6 +46,7 @@
tap: function () {
var product = this.owner.model.get('product');
if (product) {
+ OB.logUserAction('Show complementary products for: ' + product.get('_identifier'));
OB.UI.SearchProductCharacteristic.prototype.filtersCustomClear();
OB.UI.SearchProductCharacteristic.prototype.filtersCustomAdd(new OBRECP_SearchProductCharacteristicFilter({
text: product.get('_identifier'),
@@ -130,6 +131,14 @@
OB.Dal.findUsingCache('checkComplementaryProductCache', OB.Model.ComplementaryProduct, criteria, function (data, params) {
orderline.set('hasComplementary', data && data.length > 0);
orderline.set('complementaryViewed', false);
+ if (orderline.get('parentLineId')) {
+ var parentLine = _.find(args.receipt.get('lines').models, function (line) {
+ return line.get('id') === orderline.get('parentLineId');
+ });
+ if (parentLine) {
+ OB.logUserAction('Add complementary "' + product.get('_identifier') + '" for product: ' + parentLine.get('product').get('_identifier') + ' (Qty: ' + parentLine.get('qty') + ')');
+ }
+ }
callback();
}, function (error) {
// In case of error, show an error message to the user
contactinfoforproduct.diff [^] (3,784 bytes) 2018-08-31 10:57 [Show Content] [Hide Content]diff --git a/web/org.openbravo.retail.contactinfoforproduct/js/hookPreAddProductToOrder.js b/web/org.openbravo.retail.contactinfoforproduct/js/hookPreAddProductToOrder.js
--- a/web/org.openbravo.retail.contactinfoforproduct/js/hookPreAddProductToOrder.js
+++ b/web/org.openbravo.retail.contactinfoforproduct/js/hookPreAddProductToOrder.js
@@ -66,8 +66,7 @@
args.receipt.get('packsContactInfo').push(contactInfo);
}
}
- // The next line must be add to the code again once the human log development is ready
- // OB.OBRCIFP.Utils.logProductUserAction(args.productToAdd, args.qtyToAdd, model);
+ OB.OBRCIFP.Utils.logProductUserAction(args.productToAdd, args.qtyToAdd, model);
} else if (action === 'continue') {
laterAction();
}
diff --git a/web/org.openbravo.retail.contactinfoforproduct/js/hookPreCreateOrderFromQuotation.js b/web/org.openbravo.retail.contactinfoforproduct/js/hookPreCreateOrderFromQuotation.js
--- a/web/org.openbravo.retail.contactinfoforproduct/js/hookPreCreateOrderFromQuotation.js
+++ b/web/org.openbravo.retail.contactinfoforproduct/js/hookPreCreateOrderFromQuotation.js
@@ -40,8 +40,7 @@
});
});
_.each(itemDeclarationLines, function (l) {
- // The next line must be add to the code again once the human log development is ready
- // OB.OBRCIFP.Utils.logUserAction(l, model);
+ OB.OBRCIFP.Utils.logUserAction(l, model);
});
} else if (action === 'continue') {
_.each(itemDeclarationLines, function (l) {
diff --git a/web/org.openbravo.retail.contactinfoforproduct/js/modalMissingInfo.js b/web/org.openbravo.retail.contactinfoforproduct/js/modalMissingInfo.js
--- a/web/org.openbravo.retail.contactinfoforproduct/js/modalMissingInfo.js
+++ b/web/org.openbravo.retail.contactinfoforproduct/js/modalMissingInfo.js
@@ -212,7 +212,7 @@
applyChanges: function (inSender, inEvent) {
var valid = this.validateInfo();
if (valid) {
- // OB.logUserAction('Complete "' + this.args.bPartner.get('_identifier') + '" information -> Birth Place: ' + this.args.bPartner.get('birthPlace') + ', Birth Date: ' + OB.I18N.formatDate(this.args.bPartner.get('birthDay')));
+ OB.logUserAction('Complete "' + this.args.bPartner.get('_identifier') + '" information -> Birth Place: ' + this.args.bPartner.get('birthPlace') + ', Birth Date: ' + OB.I18N.formatDate(this.args.bPartner.get('birthDay')));
this.args.callback(this.args.context, true, this.modelBP, this.modelBPLoc);
}
this.applyAction = true;
diff --git a/web/org.openbravo.retail.contactinfoforproduct/js/receiptLineEdit.js b/web/org.openbravo.retail.contactinfoforproduct/js/receiptLineEdit.js
--- a/web/org.openbravo.retail.contactinfoforproduct/js/receiptLineEdit.js
+++ b/web/org.openbravo.retail.contactinfoforproduct/js/receiptLineEdit.js
@@ -55,8 +55,7 @@
openedFrom: 'line',
callback: function (action, model) {
if (action === 'addInfo') {
- // The next line must be add to the code again once the human log development is ready
- // OB.OBRCIFP.Utils.logUserAction(me.line, model);
+ OB.OBRCIFP.Utils.logUserAction(me.line, model);
me.line.set('obrcifpDescription', model.get('obrcifpDescription'));
me.line.set('obrcifpPurposeUse', model.get('obrcifpPurposeUse'));
me.line.set('obrcifpCBpartner', model.get('obrcifpCBpartner'));
digitalcoupons.diff [^] (2,474 bytes) 2018-08-31 11:09 [Show Content] [Hide Content]diff --git a/web/org.openbravo.retail.digitalcoupons/js/modalDigitalCoupons.js b/web/org.openbravo.retail.digitalcoupons/js/modalDigitalCoupons.js
--- a/web/org.openbravo.retail.digitalcoupons/js/modalDigitalCoupons.js
+++ b/web/org.openbravo.retail.digitalcoupons/js/modalDigitalCoupons.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2017 Openbravo S.L.U.
+ * Copyright (C) 2017-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -293,6 +293,7 @@
couponArray = payment.get('coupons') || [];
payment.set('coupons', couponArray.concat([coupon]));
payment.set('account', issuingCompany.get('account'));
+ me.logAddCoupon(coupon);
me.receiptPayments = _.filter(me.receipt.get('payments').models, function (p) {
return p.get('kind') === me.payment.payment.searchKey && !p.get('isPrePayment') && !p.get('reversedPaymentId');
@@ -329,6 +330,15 @@
});
},
+ logAddCoupon: function (coupon) {
+ var clonedCoupon = _.clone(coupon);
+ clonedCoupon.get('obdicoIssuingCompany').unset('img');
+ OB.logUserAction('Added coupon to payment => Check Number: ' + clonedCoupon.get('checkno') //
+ + ' - Issuing Company: ' + clonedCoupon.get('obdicoIssuingCompany').get('name') //
+ + ' - Amount: ' + clonedCoupon.get('checkamt'));
+ OB.info('Added coupon to payment: ' + JSON.stringify(clonedCoupon));
+ },
+
isValidDate: function (date) {
var now = new Date();
return new Date(now.getYear(), now.getMonth(), now.getDate()) <= new Date(date.getYear(), date.getMonth(), date.getDate());
@@ -399,6 +409,11 @@
pmnt.get('coupons').splice(_.indexOf(pmnt.get('coupons'), cpn), 1);
cpnPopup.couponList.remove(cpn);
+ OB.logUserAction('Removed coupon from payment => Check Number: ' + cpn.get('checkno') //
+ + ' - Issuing Company: ' + cpn.get('obdicoIssuingCompany').get('name') //
+ + ' - Amount: ' + cpn.get('checkamt'));
+ OB.info('Removed coupon from payment: ' + JSON.stringify(cpn));
+
//Update receipt payments
if (pmnt.get('coupons').length > 0) {
pmnt.set('amount', OB.DEC.sub(pmnt.get('amount'), (cpn.checkamt || cpn.get('checkamt'))));
giftcards.diff [^] (5,676 bytes) 2018-08-31 11:40 [Show Content] [Hide Content]diff --git a/web/org.openbravo.retail.giftcards/js/components/GiftCardCertificate.js b/web/org.openbravo.retail.giftcards/js/components/GiftCardCertificate.js
--- a/web/org.openbravo.retail.giftcards/js/components/GiftCardCertificate.js
+++ b/web/org.openbravo.retail.giftcards/js/components/GiftCardCertificate.js
@@ -51,6 +51,7 @@
cashupId: OB.MobileApp.model.get('terminal').cashUpId
}, function (data) {
if (data && data.exception) {
+ OB.logUserAction('Can not create Gift Certificate: ' + data.exception.message);
OB.UTIL.showConfirmation.display(OB.I18N.getLabel('OBMOBC_Error'), OB.I18N.getLabel(data.exception.message), [{
label: OB.I18N.getLabel('OBMOBC_LblOk'),
action: function () {
@@ -66,6 +67,9 @@
}]);
me.putDisabled(false);
} else if (data && !data.exception) {
+ OB.logUserAction('Create Gift Certificate: ' + data.data.cardNumber + ' with ' + OB.I18N.formatCurrency(model.get('giftcardAmount')) + //
+ ' expire ' + model.get('giftcardExpirationDate') + //
+ (model.get('giftcardCBpartner') ? ' for customer ' + model.get('giftcardCBpartnerName') : ''));
// Update CashUp
var paymentsList = OB.MobileApp.model.get('payments');
var isCountPaymentInCashup;
@@ -91,8 +95,13 @@
me.putDisabled(false);
}
}
+ }, function () {
+ OB.logUserAction('Can not create Gift Certificate: ' + OB.I18N.getLabel('GCNV_ErrorWhenSynchronizing'));
+ OB.UTIL.showError(OB.I18N.getLabel('GCNV_ErrorWhenSynchronizing'));
+ me.putDisabled(false);
});
}, function () {
+ OB.logUserAction('Can not create Gift Certificate: ' + OB.I18N.getLabel('GCNV_ErrorWhenSynchronizing'));
OB.UTIL.showError(OB.I18N.getLabel('GCNV_ErrorWhenSynchronizing'));
me.putDisabled(false);
});
diff --git a/web/org.openbravo.retail.giftcards/js/components/GiftCardDetails.js b/web/org.openbravo.retail.giftcards/js/components/GiftCardDetails.js
--- a/web/org.openbravo.retail.giftcards/js/components/GiftCardDetails.js
+++ b/web/org.openbravo.retail.giftcards/js/components/GiftCardDetails.js
@@ -32,6 +32,7 @@
if (this.disabled) {
return;
}
+ OB.logUserAction('Return Gift Card: ' + this.owner.owner.args.giftcard.searchKey);
this.doReturnButton();
},
initComponents: function () {
@@ -71,6 +72,7 @@
OB.UTIL.showConfirmation.display(OB.I18N.getLabel('OBMOBC_Error'), OB.I18N.getLabel('GCNV_ForbidUseCreditNoteWithDifferentCustomer'));
return;
}
+ OB.logUserAction('Apply Gift Card: ' + this.owner.owner.args.giftcard.searchKey);
this.doAcceptButton();
},
initComponents: function () {
@@ -105,6 +107,7 @@
if (this.disabled) {
return;
}
+ OB.logUserAction('Print Gift Card: ' + this.owner.owner.args.giftcard.searchKey);
this.doPrintButton();
},
initComponents: function () {
diff --git a/web/org.openbravo.retail.giftcards/js/components/GiftCardMenu.js b/web/org.openbravo.retail.giftcards/js/components/GiftCardMenu.js
--- a/web/org.openbravo.retail.giftcards/js/components/GiftCardMenu.js
+++ b/web/org.openbravo.retail.giftcards/js/components/GiftCardMenu.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2012-2017 Openbravo S.L.U.
+ * Copyright (C) 2012-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -24,6 +24,7 @@
return true;
}
this.inherited(arguments); // Manual dropdown menu closure
+ OB.logUserAction('Menu > Gift Certificate / Gift Cards / Vouchers / Credit Notes');
this.doShowPopup({
popup: 'GCNV_UI_SearchDialog'
});
@@ -82,6 +83,7 @@
OB.UTIL.showConfirmation.display(OB.I18N.getLabel('OBMOBC_Error'), OB.I18N.getLabel('GCNV_GiftCardPaymentNotConfigured'));
return;
}
+ OB.logUserAction('Menu > Create Gift Certificate');
this.doShowPopup({
popup: 'GCNV_UI_Certificate'
});
diff --git a/web/org.openbravo.retail.giftcards/js/components/GiftCardSearchDialog.js b/web/org.openbravo.retail.giftcards/js/components/GiftCardSearchDialog.js
--- a/web/org.openbravo.retail.giftcards/js/components/GiftCardSearchDialog.js
+++ b/web/org.openbravo.retail.giftcards/js/components/GiftCardSearchDialog.js
@@ -225,6 +225,7 @@
return;
}
+ OB.logUserAction('Select Gift Card: ' + args.giftcard.searchKey);
me.doHideThisPopup();
me.doShowPopup({
popup: 'GCNV_UI_Details',
diff --git a/web/org.openbravo.retail.giftcards/js/model/GiftCardUtils.js b/web/org.openbravo.retail.giftcards/js/model/GiftCardUtils.js
--- a/web/org.openbravo.retail.giftcards/js/model/GiftCardUtils.js
+++ b/web/org.openbravo.retail.giftcards/js/model/GiftCardUtils.js
@@ -216,6 +216,8 @@
} else {
modelToApply = keyboard.model.get('multiOrders');
}
+ OB.logUserAction('Add payment: ' + OB.I18N.getLabel('GCNV_LblGiftCardsCertificate') + ' ' + card.searchKey + ' = ' + //
+ OB.I18N.formatCurrency(OB.DEC.abs(result.realamnt)) + ' ' + p.isocode);
modelToApply.addPayment(new OB.Model.PaymentLine({
kind: p.payment.searchKey,
paymentData: {
productonthefly.diff [^] (2,281 bytes) 2018-08-31 12:25 [Show Content] [Hide Content]diff --git a/web/org.openbravo.retail.productonthefly/js/menu.js b/web/org.openbravo.retail.productonthefly/js/menu.js
--- a/web/org.openbravo.retail.productonthefly/js/menu.js
+++ b/web/org.openbravo.retail.productonthefly/js/menu.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2017 Openbravo S.L.U.
+ * Copyright (C) 2017-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -27,6 +27,7 @@
showPopup = this.model.get('order').get('orderType') === 2 || this.model.get('order').get('isQuotation');
}
if (showPopup) {
+ OB.logUserAction('Menu > Create OTF');
this.bubble('onShowPopup', {
popup: 'OBROTF_ModalProductDuplicate',
args: {
@@ -61,6 +62,7 @@
showPopup = OB.MobileApp.model.receipt.get('orderType') === 2 || OB.MobileApp.model.receipt.get('isQuotation');
}
if (showPopup) {
+ OB.logUserAction('Create OTF from "' + product.get('_identifier') + '"');
this.bubble('onShowPopup', {
popup: 'OBROTF_ModalProductDuplicate',
args: {
diff --git a/web/org.openbravo.retail.productonthefly/js/modalproduct.js b/web/org.openbravo.retail.productonthefly/js/modalproduct.js
--- a/web/org.openbravo.retail.productonthefly/js/modalproduct.js
+++ b/web/org.openbravo.retail.productonthefly/js/modalproduct.js
@@ -380,6 +380,13 @@
if (me.isNew) {
OB.MobileApp.model.receipt.trigger('scan');
}
+
+ OB.Dal.get(OB.Model.ProductCategory, me.model.get('productCategory'), function (category) {
+ OB.logUserAction('Create OTF -> Name: ' + me.model.get('_identifier') + ', Category: ' + category.get('name') + ', Price: ' + OB.I18N.formatCurrency(me.model.get('standardPrice')));
+ }, function () {
+ OB.logUserAction('Create OTF -> Name: ' + me.model.get('_identifier') + ', Price: ' + OB.I18N.formatCurrency(me.model.get('standardPrice')));
+ });
+
me.doAddProduct({
product: me.model
});
posterminal.diff [^] (55,797 bytes) 2018-09-04 13:17 [Show Content] [Hide Content]diff --git a/src-db/database/sourcedata/AD_MESSAGE.xml b/src-db/database/sourcedata/AD_MESSAGE.xml
--- a/src-db/database/sourcedata/AD_MESSAGE.xml
+++ b/src-db/database/sourcedata/AD_MESSAGE.xml
@@ -2126,6 +2126,18 @@
<!--355362DDE35646C4A75A902981A96B03--> <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
<!--355362DDE35646C4A75A902981A96B03--></AD_MESSAGE>
+<!--35DB2B32740C4DA48FAB34D3F0F35D68--><AD_MESSAGE>
+<!--35DB2B32740C4DA48FAB34D3F0F35D68--> <AD_MESSAGE_ID><![CDATA[35DB2B32740C4DA48FAB34D3F0F35D68]]></AD_MESSAGE_ID>
+<!--35DB2B32740C4DA48FAB34D3F0F35D68--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--35DB2B32740C4DA48FAB34D3F0F35D68--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--35DB2B32740C4DA48FAB34D3F0F35D68--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--35DB2B32740C4DA48FAB34D3F0F35D68--> <VALUE><![CDATA[OBPOS_LblOpenbravoSessionLog]]></VALUE>
+<!--35DB2B32740C4DA48FAB34D3F0F35D68--> <MSGTEXT><![CDATA[Back Office - Session Log]]></MSGTEXT>
+<!--35DB2B32740C4DA48FAB34D3F0F35D68--> <MSGTYPE><![CDATA[I]]></MSGTYPE>
+<!--35DB2B32740C4DA48FAB34D3F0F35D68--> <AD_MODULE_ID><![CDATA[FF808181326CC34901326D53DBCF0018]]></AD_MODULE_ID>
+<!--35DB2B32740C4DA48FAB34D3F0F35D68--> <ISINCLUDEINI18N><![CDATA[N]]></ISINCLUDEINI18N>
+<!--35DB2B32740C4DA48FAB34D3F0F35D68--></AD_MESSAGE>
+
<!--35E1D8D0895641FD9F527BEAC7D0513B--><AD_MESSAGE>
<!--35E1D8D0895641FD9F527BEAC7D0513B--> <AD_MESSAGE_ID><![CDATA[35E1D8D0895641FD9F527BEAC7D0513B]]></AD_MESSAGE_ID>
<!--35E1D8D0895641FD9F527BEAC7D0513B--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/src-db/database/sourcedata/AD_TREENODE.xml b/src-db/database/sourcedata/AD_TREENODE.xml
--- a/src-db/database/sourcedata/AD_TREENODE.xml
+++ b/src-db/database/sourcedata/AD_TREENODE.xml
@@ -63,7 +63,7 @@
<!--5B959C75E4DD42D995503AAF244ABC72--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
<!--5B959C75E4DD42D995503AAF244ABC72--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
<!--5B959C75E4DD42D995503AAF244ABC72--> <PARENT_ID><![CDATA[896AC285FD8F4C25A869689D4A98DD8E]]></PARENT_ID>
-<!--5B959C75E4DD42D995503AAF244ABC72--> <SEQNO><![CDATA[70]]></SEQNO>
+<!--5B959C75E4DD42D995503AAF244ABC72--> <SEQNO><![CDATA[80]]></SEQNO>
<!--5B959C75E4DD42D995503AAF244ABC72--></AD_TREENODE>
<!--9A34D67A680744E4B00E07A5585020F1--><AD_TREENODE>
@@ -74,7 +74,7 @@
<!--9A34D67A680744E4B00E07A5585020F1--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
<!--9A34D67A680744E4B00E07A5585020F1--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
<!--9A34D67A680744E4B00E07A5585020F1--> <PARENT_ID><![CDATA[896AC285FD8F4C25A869689D4A98DD8E]]></PARENT_ID>
-<!--9A34D67A680744E4B00E07A5585020F1--> <SEQNO><![CDATA[70]]></SEQNO>
+<!--9A34D67A680744E4B00E07A5585020F1--> <SEQNO><![CDATA[80]]></SEQNO>
<!--9A34D67A680744E4B00E07A5585020F1--></AD_TREENODE>
<!--D9163EBFF1184AFE9A275A1A78AA80B3--><AD_TREENODE>
@@ -96,7 +96,7 @@
<!--DE04AE9BAC99463C83FD35867CFAB114--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
<!--DE04AE9BAC99463C83FD35867CFAB114--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
<!--DE04AE9BAC99463C83FD35867CFAB114--> <PARENT_ID><![CDATA[896AC285FD8F4C25A869689D4A98DD8E]]></PARENT_ID>
-<!--DE04AE9BAC99463C83FD35867CFAB114--> <SEQNO><![CDATA[70]]></SEQNO>
+<!--DE04AE9BAC99463C83FD35867CFAB114--> <SEQNO><![CDATA[80]]></SEQNO>
<!--DE04AE9BAC99463C83FD35867CFAB114--></AD_TREENODE>
<!--E832C351041C4AC4B7B1B871AC085A84--><AD_TREENODE>
diff --git a/src/org/openbravo/retail/posterminal/OBPOSComponentProvider.java b/src/org/openbravo/retail/posterminal/OBPOSComponentProvider.java
--- a/src/org/openbravo/retail/posterminal/OBPOSComponentProvider.java
+++ b/src/org/openbravo/retail/posterminal/OBPOSComponentProvider.java
@@ -273,7 +273,7 @@
"model/discounts",
// Hook
- "components/menuhook",
+ "components/menuhook", "hooks/hookPrePaymentSelected",
// Websockets
"utils/rfidWebsocket",
diff --git a/web/org.openbravo.retail.posterminal/js/cashmgmt/model/cashmgmt-model.js b/web/org.openbravo.retail.posterminal/js/cashmgmt/model/cashmgmt-model.js
--- a/web/org.openbravo.retail.posterminal/js/cashmgmt/model/cashmgmt-model.js
+++ b/web/org.openbravo.retail.posterminal/js/cashmgmt/model/cashmgmt-model.js
@@ -94,6 +94,7 @@
} else {
selectedPayment.set('listdepositsdrops', [addedCashMgmt]);
}
+ OB.logUserAction((p.type === 'deposit' ? 'Deposit ' : 'Drop ') + p.identifier + ': ' + OB.I18N.formatCurrency(p.amount) + ' ' + p.isocode + ', ' + (p.type === 'deposit' ? 'Origin: ' : 'Destination: ') + model.get('name'));
resolve();
}, reject, this);
});
diff --git a/web/org.openbravo.retail.posterminal/js/cashmgmt/view/cashmgmt.js b/web/org.openbravo.retail.posterminal/js/cashmgmt/view/cashmgmt.js
--- a/web/org.openbravo.retail.posterminal/js/cashmgmt/view/cashmgmt.js
+++ b/web/org.openbravo.retail.posterminal/js/cashmgmt/view/cashmgmt.js
@@ -21,6 +21,7 @@
stepCount: 0,
span: 6,
tap: function () {
+ OB.logUserAction('Cancel Cash Management');
OB.POS.hwserver.checkDrawer(function () {
OB.POS.navigate('retail.pointofsale');
});
@@ -43,6 +44,7 @@
this.model = model;
},
tap: function () {
+ OB.logUserAction('Done Cash Management');
OB.POS.hwserver.checkDrawer(function () {
this.model.depsdropstosave.trigger('makeDeposits');
}, this);
@@ -249,6 +251,7 @@
if (_.filter(OB.MobileApp.model.paymentnames, function (payment) {
return payment.paymentMethod.iscash === true;
}).length > 0) {
+ OB.logUserAction('Menu > Cash Management');
successCallback(args.route);
} else {
OB.UTIL.showConfirmation.display(OB.I18N.getLabel('OBPOS_CashMgmtError'), OB.I18N.getLabel('OBPOS_NoCashPaymentMethod'), [{
diff --git a/web/org.openbravo.retail.posterminal/js/closecash/model/cashup-model.js b/web/org.openbravo.retail.posterminal/js/closecash/model/cashup-model.js
--- a/web/org.openbravo.retail.posterminal/js/closecash/model/cashup-model.js
+++ b/web/org.openbravo.retail.posterminal/js/closecash/model/cashup-model.js
@@ -506,6 +506,15 @@
}
}
},
+ getCashupStep: function (cashupStep) {
+ var i;
+ for (i = 0; i < this.cashupsteps.length; i++) {
+ if (i === cashupStep) {
+ return this.cashupsteps[i];
+ }
+ }
+ return null;
+ },
getStepToolbar: function () {
var currentstep = this.get('step') - 1;
return this.cashupsteps[currentstep].getToolbarName();
@@ -724,6 +733,7 @@
OB.Dal.save(cashUp.at(0), function () {
var callbackFinishedSuccess = function () {
+ OB.logUserAction('CashUp Finished Success');
OB.UTIL.showLoading(true);
me.set('finished', true);
if (OB.MobileApp.model.hasPermission('OBPOS_print.cashup')) {
@@ -731,6 +741,7 @@
}
};
var callbackFinishedWrongly = function () {
+ OB.logUserAction('CashUp Finished Wrongly');
// reset to N
cashUp.at(0).set('isprocessed', 'N');
OB.Dal.save(cashUp.at(0));
diff --git a/web/org.openbravo.retail.posterminal/js/closecash/model/cashup-steps.js b/web/org.openbravo.retail.posterminal/js/closecash/model/cashup-steps.js
--- a/web/org.openbravo.retail.posterminal/js/closecash/model/cashup-steps.js
+++ b/web/org.openbravo.retail.posterminal/js/closecash/model/cashup-steps.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2013-2016 Openbravo S.L.U.
+ * Copyright (C) 2013-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -61,6 +61,15 @@
getStepComponent: function (leftpanel$) {
return leftpanel$.cashPayments;
},
+ logUserAction: function (substep) {
+ var payment = _.find(this.model.get('paymentList').models, function (pay) {
+ return pay.get('_id') === 'OBPOS_payment.cash';
+ });
+ if (payment) {
+ var foreignCounted = payment.get('foreignCounted');
+ OB.logUserAction('Count Cash: ' + payment.get('name') + ' [Counted: ' + (foreignCounted ? OB.I18N.formatCurrency(foreignCounted) : "-") + ', Expected: ' + OB.I18N.formatCurrency(payment.get('foreignExpected')) + '] ' + payment.get('isocode'));
+ }
+ },
getToolbarName: function () {
return 'toolbarcashpayments';
},
@@ -112,6 +121,10 @@
getStepComponent: function (leftpanel$) {
return leftpanel$.cashToKeep;
},
+ logUserAction: function (substep) {
+ var payment = this.model.get('paymentList').at(substep);
+ OB.logUserAction(payment.get('name') + ' to keep: ' + OB.I18N.formatCurrency(payment.get('qtyToKeep')) + ' ' + payment.get('isocode'));
+ },
getToolbarName: function () {
if (this.model.get('paymentList').at(this.model.get('substep')).get('paymentMethod').allowvariableamount) {
return 'toolbarother';
diff --git a/web/org.openbravo.retail.posterminal/js/closecash/view/closecash.js b/web/org.openbravo.retail.posterminal/js/closecash/view/closecash.js
--- a/web/org.openbravo.retail.posterminal/js/closecash/view/closecash.js
+++ b/web/org.openbravo.retail.posterminal/js/closecash/view/closecash.js
@@ -44,6 +44,7 @@
},
tap: function () {
OB.POS.hwserver.checkDrawer(function () {
+ OB.logUserAction('Cancel Cash Up');
this.doCancelCashup();
}, this);
}
@@ -539,6 +540,17 @@
this.moveStep(1);
} else if (this.model.isSubstepAvailable(nextstep, nextsubstep)) {
// go to step
+ if (direction > 0) {
+ var cashupStep = nextstep - 1,
+ cashupSubstep = this.model.get('substep');
+ if (cashupSubstep === -1) {
+ cashupStep--;
+ }
+ var tempStep = this.model.getCashupStep(cashupStep);
+ if (tempStep && tempStep.logUserAction) {
+ tempStep.logUserAction(cashupSubstep === -1 ? tempStep.getSubstepsLength(this.model) - 1 : cashupSubstep);
+ }
+ }
this.model.set('step', nextstep);
this.model.set('substep', nextsubstep);
this.refresh();
@@ -597,6 +609,7 @@
rfidState: false,
navigateTo: function (args, successCallback, errorCallback) {
var me = this;
+ OB.logUserAction('Menu > Cash Up');
// Cannot navigate to the cashup window in case of being a seller terminal
if (!OB.MobileApp.model.get('hasPaymentsForCashup')) {
OB.UTIL.showConfirmation.display(OB.I18N.getLabel('OBPOS_NavigationNotAllowedHeader'), OB.I18N.getLabel('OBPOS_CannotNavigateToCashUp'), [{
@@ -635,6 +648,7 @@
finishCloseDialogLabel: 'OBPOS_FinishPartialDialog',
cashupSentHook: 'OBPOS_AfterCashUpPartialSent',
finalAction: function () {
+ OB.logUserAction('Menu > Cash Up Partial');
OB.POS.navigate('retail.pointofsale');
}
});
@@ -649,6 +663,7 @@
approvalType: 'OBPOS_approval.cashuppartial',
rfidState: false,
navigateTo: function (args, successCallback, errorCallback) {
+ OB.logUserAction('Menu > Cash Partial');
if (!OB.MobileApp.model.get('hasPaymentsForCashup')) {
// Cannot navigate to the cashup partial window in case of being a seller terminal
OB.UTIL.showConfirmation.display(OB.I18N.getLabel('OBPOS_NavigationNotAllowedHeader'), OB.I18N.getLabel('OBPOS_CannotNavigateToPartialCashUp'), [{
diff --git a/web/org.openbravo.retail.posterminal/js/closecash/view/closekeyboard.js b/web/org.openbravo.retail.posterminal/js/closecash/view/closekeyboard.js
--- a/web/org.openbravo.retail.posterminal/js/closecash/view/closekeyboard.js
+++ b/web/org.openbravo.retail.posterminal/js/closecash/view/closekeyboard.js
@@ -151,6 +151,7 @@
}
payment.set('foreignCounted', OB.DEC.add(0, convAmt));
payment.set('counted', OB.DEC.mul(convAmt, payment.get('rate')));
+ OB.logUserAction('Edit Count Cash: ' + payment.get('name') + ' [Counted: ' + OB.I18N.formatCurrency(convAmt) + ', Expected: ' + OB.I18N.formatCurrency(payment.get('foreignExpected')) + '] ' + payment.get('isocode'));
}
},
label: payment.get('name')
diff --git a/web/org.openbravo.retail.posterminal/js/closecash/view/tabcashmaster.js b/web/org.openbravo.retail.posterminal/js/closecash/view/tabcashmaster.js
--- a/web/org.openbravo.retail.posterminal/js/closecash/view/tabcashmaster.js
+++ b/web/org.openbravo.retail.posterminal/js/closecash/view/tabcashmaster.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2015 Openbravo S.L.U.
+ * Copyright (C) 2015-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -112,6 +112,7 @@
}, function (data) {
if (data && data.exception) {
// Error handler
+ OB.logUserAction('Cash Up Master: Process error -> ' + data.exception.message);
OB.log('error', data.exception.message);
OB.UTIL.showConfirmation.display(
OB.I18N.getLabel('OBPOS_CashMgmtError'), OB.I18N.getLabel('OBPOS_ErrorServerGeneric') + data.exception.message, [{
@@ -140,7 +141,16 @@
col.add(data.terminals);
me.$.slaveList.setCollection(col);
if (data.finishAll) {
+ OB.logUserAction('Cash Up Master: Slaves closed');
me.updateCashUpModel(model, data.payments);
+ } else {
+ var slaveTerm = [];
+ _.each(data.terminals, function (term) {
+ if (term.finish === false && term.noOfTransactions > 0) {
+ slaveTerm.push(term.name);
+ }
+ });
+ OB.logUserAction('Cash Up Master: Slaves not closed [' + slaveTerm.join(', ') + ']');
}
model.set('slavesCashupCompleted', data.finishAll);
});
diff --git a/web/org.openbravo.retail.posterminal/js/closecash/view/tabcountcash.js b/web/org.openbravo.retail.posterminal/js/closecash/view/tabcountcash.js
--- a/web/org.openbravo.retail.posterminal/js/closecash/view/tabcountcash.js
+++ b/web/org.openbravo.retail.posterminal/js/closecash/view/tabcountcash.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2012-2017 Openbravo S.L.U.
+ * Copyright (C) 2012-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -96,6 +96,7 @@
lineOK: function (inSender, inEvent) {
this.model.set('counted', this.model.get('expected'));
this.model.set('foreignCounted', this.model.get('foreignExpected'));
+ OB.logUserAction('Count Cash: ' + this.model.get('name') + ' [Counted: ' + OB.I18N.formatCurrency(this.model.get('foreignCounted')) + ', Expected: ' + OB.I18N.formatCurrency(this.model.get('foreignExpected')) + '] ' + this.model.get('isocode'));
}
});
diff --git a/web/org.openbravo.retail.posterminal/js/components/bplocation.js b/web/org.openbravo.retail.posterminal/js/components/bplocation.js
--- a/web/org.openbravo.retail.posterminal/js/components/bplocation.js
+++ b/web/org.openbravo.retail.posterminal/js/components/bplocation.js
@@ -839,6 +839,11 @@
}
});
} else {
+ var logLocation = dataBps.get('locName');
+ if (logLocation !== dataBps.get('shipLocName')) {
+ logLocation = 'Invoice (' + logLocation + '), Shipping (' + dataBps.get('shipLocName') + ')';
+ }
+ OB.logUserAction('Change Customer Location to: ' + logLocation);
me.doChangeBusinessPartner({
businessPartner: dataBps,
target: me.owner.owner.args.target
diff --git a/web/org.openbravo.retail.posterminal/js/components/bplocationship.js b/web/org.openbravo.retail.posterminal/js/components/bplocationship.js
--- a/web/org.openbravo.retail.posterminal/js/components/bplocationship.js
+++ b/web/org.openbravo.retail.posterminal/js/components/bplocationship.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2012-2017 Openbravo S.L.U.
+ * Copyright (C) 2012-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -148,6 +148,7 @@
}
});
} else {
+ OB.logUserAction('Change Customer Shipping Location to: ' + dataBps.get('shipLocName'));
me.doChangeBusinessPartner({
businessPartner: dataBps,
target: me.owner.owner.args.target
diff --git a/web/org.openbravo.retail.posterminal/js/components/businesspartner_selector.js b/web/org.openbravo.retail.posterminal/js/components/businesspartner_selector.js
--- a/web/org.openbravo.retail.posterminal/js/components/businesspartner_selector.js
+++ b/web/org.openbravo.retail.posterminal/js/components/businesspartner_selector.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2016-2017 Openbravo S.L.U.
+ * Copyright (C) 2016-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -747,6 +747,7 @@
}
});
} else {
+ OB.logUserAction('Change Customer for "' + me.target + '" to: ' + bp.get('name'));
me.doChangeBusinessPartner({
businessPartner: bp,
target: me.target
diff --git a/web/org.openbravo.retail.posterminal/js/components/menu.js b/web/org.openbravo.retail.posterminal/js/components/menu.js
--- a/web/org.openbravo.retail.posterminal/js/components/menu.js
+++ b/web/org.openbravo.retail.posterminal/js/components/menu.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2012-2017 Openbravo S.L.U.
+ * Copyright (C) 2012-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -24,6 +24,7 @@
}
this.inherited(arguments); // Manual dropdown menu closure
this.model.get('order').setDocumentNo(true, false);
+ OB.logUserAction('Menu > Return This Receipt: ' + this.model.get('order').get('documentNo'));
this.doShowDivText({
permission: this.permission,
orderType: 1
@@ -92,6 +93,7 @@
}
this.inherited(arguments); // Manual dropdown menu closure
this.model.get('order').checkNotProcessedPayments(function () {
+ OB.logUserAction('Menu > Void this Layaway: ' + me.model.get('order').get('documentNo'));
me.model.get('order').set('voidLayaway', true);
me.doShowDivText({
permission: me.permission,
@@ -175,6 +177,7 @@
}, this);
if (errorsConvertingLayawayToReceipt.length === 0) {
+ OB.logUserAction('Menu > Receipt this Layaway: ' + this.model.get('order').get('documentNo'));
this.doShowDivText({
permission: this.permission,
orderType: 0
@@ -247,6 +250,7 @@
return;
}
+ OB.logUserAction('Menu > Cancel this Layaway: ' + this.model.get('order').get('documentNo'));
this.model.get('order').cancelLayaway(this);
},
displayLogic: function () {
@@ -359,6 +363,7 @@
if (args && args.cancelOperation && args.cancelOperation === true) {
return;
}
+ OB.logUserAction('Menu > Layaway this receipt: ' + args.context.model.get('order').get('documentNo'));
me.doShowDivText({
permission: me.permission,
orderType: 2
@@ -438,6 +443,7 @@
return true;
}
this.inherited(arguments); // Manual dropdown menu closure
+ OB.logUserAction('Menu > Receipt Properties: ' + this.model.get('order').get('documentNo'));
this.doShowReceiptProperties();
},
init: function (model) {
@@ -482,6 +488,7 @@
return true;
}
this.inherited(arguments); // Manual dropdown menu closure
+ OB.logUserAction('Menu > Invoice This Receipt: ' + this.model.get('order').get('documentNo'));
this.taxIdValidation(this.model.get('order'));
},
taxIdValidation: function (model) {
@@ -594,6 +601,7 @@
return true;
}
this.inherited(arguments); // Manual dropdown menu closure
+ OB.logUserAction('Menu > Customer');
this.doShowPopup({
popup: 'modalcustomer',
args: {
@@ -628,8 +636,12 @@
}
this.inherited(arguments); // Manual dropdown menu closure
if (OB.MobileApp.model.hasPermission(this.permission)) {
+ OB.logUserAction('Menu > Print this Receipt: ' + this.model.get('order').get('documentNo'));
this.doPrintReceipt();
}
+ },
+ init: function (model) {
+ this.model = model;
}
});
@@ -938,6 +950,7 @@
return;
}
if (OB.MobileApp.model.hasPermission(this.permission)) {
+ OB.logUserAction('Menu > Pay Open Tickets');
this.doMultiOrders();
}
},
@@ -984,6 +997,39 @@
});
enyo.kind({
+ name: 'OB.UI.MenuBackOfficeSessionLog',
+ kind: 'OB.UI.MenuAction',
+ permission: 'OBPOS_retail.backoffice',
+ url: '../..',
+ events: {
+ onBackOffice: ''
+ },
+ i18nLabel: 'OBPOS_LblOpenbravoSessionLog',
+ tap: function () {
+ var useURL = this.url;
+ if (this.disabled) {
+ return true;
+ }
+
+ // use the central server url
+ _.each(OB.RR.RequestRouter.servers.models, function (server) {
+ if (server.get('mainServer') && server.get('address')) {
+ useURL = server.get('address');
+ }
+ });
+
+ this.inherited(arguments); // Manual dropdown menu closure
+ if (OB.MobileApp.model.hasPermission(this.permission)) {
+ var params = encodeURI('?tabId=6805A073CC3B469AAD3F81DE192A6D27&criteria={"operator":"and","_constructor":"AdvancedCriteria","criteria":[{"fieldName":"cacheSessionId","operator":"iContains","value":"' + OB.UTIL.localStorage.getItem('cacheSessionId') + '","_constructor":"AdvancedCriteria"}]}&emptyFilterClause=true');
+ this.doBackOffice({
+ url: useURL + params
+ });
+ }
+ }
+});
+
+
+enyo.kind({
name: 'OB.UI.MenuDisableEnableRFIDReader',
kind: 'OB.UI.MenuAction',
permission: 'OBPOS_retail.disableEnableRFIDReader',
@@ -1151,6 +1197,7 @@
return true;
}
this.inherited(arguments); // Manual dropdown menu closure
+ OB.logUserAction('Menu > Cancel and Replace: ' + this.model.get('order').get('documentNo'));
this.model.get('order').verifyCancelAndReplace(this);
},
updateVisibility: function () {
diff --git a/web/org.openbravo.retail.posterminal/js/components/modalmorepaymentmethods.js b/web/org.openbravo.retail.posterminal/js/components/modalmorepaymentmethods.js
--- a/web/org.openbravo.retail.posterminal/js/components/modalmorepaymentmethods.js
+++ b/web/org.openbravo.retail.posterminal/js/components/modalmorepaymentmethods.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2017 Openbravo S.L.U.
+ * Copyright (C) 2017-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -40,6 +40,7 @@
enyo.forEach(this.sideButtons, function (sidebutton) {
if (sidebutton.active) {
sidebutton.btn.definition.includedInPopUp = true;
+ sidebutton.btn.definition.dialog = this;
this.$.body.$.buttonslist.createComponent(sidebutton);
}
}, this);
diff --git a/web/org.openbravo.retail.posterminal/js/components/modalmultiorders.js b/web/org.openbravo.retail.posterminal/js/components/modalmultiorders.js
--- a/web/org.openbravo.retail.posterminal/js/components/modalmultiorders.js
+++ b/web/org.openbravo.retail.posterminal/js/components/modalmultiorders.js
@@ -397,6 +397,12 @@
return true;
}
+ var ordersNum = [];
+ _.each(checkedMultiOrders, function (iter) {
+ ordersNum.push(iter.get('documentNo'));
+ });
+ OB.logUserAction('Pay Open Tickets: ' + ordersNum.join(', '));
+
function newReversalOrder() {
var i;
for (i = 0; i < selectedMultiOrders.length; i++) {
diff --git a/web/org.openbravo.retail.posterminal/js/components/modalmultiorderslayaway.js b/web/org.openbravo.retail.posterminal/js/components/modalmultiorderslayaway.js
--- a/web/org.openbravo.retail.posterminal/js/components/modalmultiorderslayaway.js
+++ b/web/org.openbravo.retail.posterminal/js/components/modalmultiorderslayaway.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2013-2017 Openbravo S.L.U.
+ * Copyright (C) 2013-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -96,6 +96,7 @@
this.doHideThisPopup();
return;
}
+ OB.logUserAction('Change Layaway Amount to: ' + OB.I18N.formatCurrency(amount) + ' in order: ' + currentOrder.get('documentNo'));
currentOrder.set('amountToLayaway', amount);
currentOrder.setOrderType(null, 2);
currentOrder.trigger('amountToLayaway');
diff --git a/web/org.openbravo.retail.posterminal/js/components/modalreceiptlineproperties.js b/web/org.openbravo.retail.posterminal/js/components/modalreceiptlineproperties.js
--- a/web/org.openbravo.retail.posterminal/js/components/modalreceiptlineproperties.js
+++ b/web/org.openbravo.retail.posterminal/js/components/modalreceiptlineproperties.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2012-2017 Openbravo S.L.U.
+ * Copyright (C) 2012-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -84,10 +84,12 @@
},
applyChanges: function (inSender, inEvent) {
var diff, att, result = true;
+ OB.logUserAction('Change line properties: "' + this.currentLine.get('product').get('_identifier') + '" (Qty: ' + this.currentLine.get('qty') + ')');
diff = this.propertycomponents;
for (att in diff) {
if (diff.hasOwnProperty(att)) {
if (diff[att].owner.owner.getShowing()) {
+ OB.logUserAction('Change line property: ' + att + ' = ' + (typeof diff[att].getValue === 'function' ? diff[att].getValue() : '<not defined>'));
result = result && diff[att].applyValue(this.currentLine);
}
}
diff --git a/web/org.openbravo.retail.posterminal/js/components/modalsplitlines.js b/web/org.openbravo.retail.posterminal/js/components/modalsplitlines.js
--- a/web/org.openbravo.retail.posterminal/js/components/modalsplitlines.js
+++ b/web/org.openbravo.retail.posterminal/js/components/modalsplitlines.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2016 Openbravo S.L.U.
+ * Copyright (C) 2016-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -466,6 +466,7 @@
splitLines: function () {
this.indexToAdd = 1;
this.qtysToAdd = this.$.bodyContent.$.qtyLines.getValues();
+ OB.logUserAction('Split line "' + this.orderline.get('product').get('_identifier') + '" into: [' + this.qtysToAdd.join(', ') + ']');
this.orderline.set('splitline', true);
this.receipt.set('skipCalculateReceipt', true);
this.doAddProduct({
diff --git a/web/org.openbravo.retail.posterminal/js/datasource.js b/web/org.openbravo.retail.posterminal/js/datasource.js
--- a/web/org.openbravo.retail.posterminal/js/datasource.js
+++ b/web/org.openbravo.retail.posterminal/js/datasource.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2012-2016 Openbravo S.L.U.
+ * Copyright (C) 2012-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -162,6 +162,9 @@
this.print(template, null, function (args) {
if (args && args.exception && args.exception.message) {
OB.info('Error opening the drawer');
+ OB.logUserAction('Error opening the drawer');
+ } else {
+ OB.logUserAction('Open the drawer');
}
}, OB.DS.HWServer.DRAWER);
if (OB.MobileApp.model.get('permissions').OBPOS_closeDrawerBeforeContinue) {
diff --git a/web/org.openbravo.retail.posterminal/js/hooks/hookPrePaymentSelected.js b/web/org.openbravo.retail.posterminal/js/hooks/hookPrePaymentSelected.js
new file mode 100644
--- /dev/null
+++ b/web/org.openbravo.retail.posterminal/js/hooks/hookPrePaymentSelected.js
@@ -0,0 +1,19 @@
+/*
+ ************************************************************************************
+ * Copyright (C) 2018 Openbravo S.L.U.
+ * Licensed under the Openbravo Commercial License version 1.0
+ * You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
+ * or in the legal folder of this module distribution.
+ ************************************************************************************
+ */
+
+(function () {
+
+ OB.UTIL.HookManager.registerHook('OBPOS_PrePaymentSelected', function (args, callbacks) {
+ if (args.paymentSelected) {
+ OB.logUserAction('Payment method selected: ' + args.paymentSelected.payment._identifier);
+ }
+ OB.UTIL.HookManager.callbackExecutor(args, callbacks);
+ });
+
+}());
\ No newline at end of file
diff --git a/web/org.openbravo.retail.posterminal/js/login/model/login-model.js b/web/org.openbravo.retail.posterminal/js/login/model/login-model.js
--- a/web/org.openbravo.retail.posterminal/js/login/model/login-model.js
+++ b/web/org.openbravo.retail.posterminal/js/login/model/login-model.js
@@ -783,6 +783,10 @@
postLoginActions: function () {
OB.debug("next process: renderTerminalMain");
+ var context = OB.MobileApp.model.get('context'),
+ msg = 'Login user: ' + (context && context.user ? context.user.username : '-') + //
+ ', Role: ' + (context && context.role ? context.role.name : '-') + (context && context.client ? ' - ' + context.client.name : '');
+ OB.logUserAction(msg);
//MASTER DATA REFRESH
var minIncRefresh = this.get('terminal').terminalType.minutestorefreshdatainc,
minTotalRefresh = this.get('terminal').terminalType.minutestorefreshdatatotal * 60 * 1000,
@@ -940,6 +944,9 @@
}
}
+ var context = OB.MobileApp.model.get('context');
+ OB.logUserAction('Logout user: ' + (context && context.user ? OB.MobileApp.model.get('context').user.username : '-'));
+
OB.UTIL.Approval.requestApproval(
this, 'OBPOS_approval.removereceipts', function (approved, supervisor, approvalType) {
if (approved) {
diff --git a/web/org.openbravo.retail.posterminal/js/model/order.js b/web/org.openbravo.retail.posterminal/js/model/order.js
--- a/web/org.openbravo.retail.posterminal/js/model/order.js
+++ b/web/org.openbravo.retail.posterminal/js/model/order.js
@@ -1148,6 +1148,7 @@
if (!OB.DEC.isNumber(qty)) {
qty = OB.DEC.One;
}
+ OB.logUserAction('Add units (Qty: ' + qty + ') to product "' + line.get('product').get('_identifier') + '"');
this.setUnit(line, OB.DEC.add(line.get('qty'), qty, OB.I18N.qtyScale()), OB.I18N.getLabel('OBPOS_AddUnits', [OB.DEC.toNumber(new BigDecimal((String)(qty.toString()))), line.get('product').get('_identifier')]));
},
@@ -1252,6 +1253,8 @@
return;
}
+ OB.logUserAction('Change price (' + OB.I18N.formatCurrency(price) + ') to product "' + line.get('product').get('_identifier') + '"');
+
options = args.options || {};
options.setUndo = (_.isUndefined(options.setUndo) || _.isNull(options.setUndo) || options.setUndo !== false) ? true : options.setUndo;
@@ -1492,6 +1495,9 @@
}
function preDeleteLine() {
+ _.each(selectedModels, function (line) {
+ OB.logUserAction('Delete line: "' + line.get('product').get('_identifier') + '" (Qty: ' + line.get('qty') + ') from ticket "' + me.get('documentNo') + '"');
+ });
OB.UTIL.HookManager.executeHooks('OBPOS_PreDeleteLine', {
order: me,
selectedLines: selectedModels
@@ -1991,6 +1997,7 @@
}, this);
}
+ OB.logUserAction('Delete line "' + line.get('product').get('_identifier') + '" (Qty: ' + line.get('qty') + ')');
// trigger
line.trigger('removed', line);
@@ -3267,6 +3274,8 @@
createLine: function (p, units, options, attrs) {
var newline, me = this;
+ OB.logUserAction('Add ' + (p.get('productType') === 'I' ? 'product' : 'service') + ' "' + p.get('_identifier') + '" (Qty: ' + units + ') to ticket "' + this.get('documentNo') + '"');
+
function createLineAux(p, units, options, attrs, me) {
if (me.validateAllowSalesWithReturn(units, ((options && options.allowLayawayWithReturn) || false))) {
return;
@@ -3347,6 +3356,7 @@
},
returnLine: function (line, options, skipValidaton) {
+ OB.logUserAction('Return line "' + line.get('product').get('_identifier') + '" (Qty: ' + line.get('qty') + ')');
var me = this;
if (line.get('qty') > 0) {
line.get('product').set('ignorePromotions', true);
@@ -4247,6 +4257,7 @@
}
}, args.order);
+ var quotationNo = args.order.get('documentNo');
args.order.set('oldId', args.order.get('id'));
args.order.set('id', null);
args.order.set('isQuotation', false);
@@ -4278,6 +4289,8 @@
args.order.unset('deletedLines');
args.order.save();
+ OB.logUserAction('Create order ' + nextDocumentno.documentNo + ' from quotation ' + quotationNo);
+
args.order.get('lines').each(function (line) {
var productAttributes = line.get('product').get('hasAttributes');
if (OB.UTIL.isNullOrUndefined(productAttributes) === false && productAttributes) {
@@ -4384,13 +4397,15 @@
}
this.set('id', null);
this.save();
+ OB.logUserAction('Reactivate Quotation: ' + this.get('documentNo'));
this.calculateReceipt();
},
rejectQuotation: function (rejectReasonId, scope, callback) {
if (!this.get('id')) {
OB.error("The Id of the order is not defined (current value: " + this.get('id') + "'");
}
- var process = new OB.DS.Process('org.openbravo.retail.posterminal.QuotationsReject');
+ var process = new OB.DS.Process('org.openbravo.retail.posterminal.QuotationsReject'),
+ quotationNo = this.get('documentNo');
OB.UTIL.showLoading(true);
process.exec({
messageId: OB.UTIL.get_UUID(),
@@ -4402,6 +4417,7 @@
}, function (data) {
OB.UTIL.showLoading(false);
OB.UTIL.showSuccess(OB.I18N.getLabel('OBPOS_SuccessRejectQuotation'));
+ OB.logUserAction('Reject Quotation: ' + quotationNo);
if (callback) {
callback.call(scope, data !== null);
}
@@ -4612,6 +4628,7 @@
order.save();
order.trigger('saveCurrent');
}
+ OB.logUserAction('Added Payment: ' + payment.get('name') + ' = ' + OB.I18N.formatCurrency(payment.get('amount')) + ' ' + payment.get('isocode'));
OB.UTIL.HookManager.executeHooks('OBPOS_postAddPayment', {
paymentAdded: payment,
payments: payments,
@@ -5829,9 +5846,11 @@
}
return;
}
+ OB.logUserAction('Delete Ticket: ' + args.receipt.get('documentNo'));
removeOrder(args.receipt, callback);
});
} else {
+ OB.logUserAction('Close Ticket: ' + this.get('documentNo'));
removeOrder(this, callback);
}
@@ -6428,6 +6447,14 @@
this.unshift(this.current);
this.loadCurrent(true);
+ var documentType = 'Receipt';
+ if (model.get('isQuotation')) {
+ documentType = 'Quotation';
+ } else if (model.get('isLayaway')) {
+ documentType = 'Layaway';
+ }
+ OB.logUserAction('Open ' + documentType + ': ' + model.get('documentNo'));
+
if (!model.get('isQuotation')) {
// OB.Dal.save is done here because we want to force to save with the original id, only this time.
OB.Dal.save(model, function () {
@@ -6499,6 +6526,7 @@
this.current.set('quotationnoPrefix', OB.MobileApp.model.get('terminal').quotationDocNoPrefix);
this.current.set('quotationnoSuffix', nextQuotationno.quotationnoSuffix);
this.current.set('documentNo', nextQuotationno.documentNo);
+ OB.logUserAction('Create New Quotation: ' + nextQuotationno.documentNo);
this.unshift(this.current);
this.loadCurrent();
@@ -6845,6 +6873,7 @@
OB.UTIL.HookManager.executeHooks('OBPOS_NewReceipt', {
newOrder: order
});
+ OB.logUserAction('Create new ticket: ' + nextDocumentno.documentNo);
return order;
}
});
@@ -7029,6 +7058,7 @@
callback: callback
}, function (args) {
var executeFinalCallback = function () {
+ OB.logUserAction('Added Multi-Order Payment: ' + payment.get('name') + ' = ' + OB.I18N.formatCurrency(payment.get('amount')) + ' ' + payment.get('isocode'));
OB.UTIL.HookManager.executeHooks('OBPOS_postAddPayment', {
paymentAdded: payment,
payments: payments,
diff --git a/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-model.js b/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-model.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-model.js
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/model/pointofsale-model.js
@@ -210,6 +210,7 @@
addPayment: function (payment, callback) {
var modelToIncludePayment;
+ OB.logUserAction('Clicked to add (partial or total) payment: ' + payment.get('name') + ' = ' + OB.I18N.formatCurrency(payment.get('amount')) + ' ' + payment.get('isocode'));
if (this.get('leftColumnViewManager').isOrder()) {
modelToIncludePayment = this.get('order');
} else {
diff --git a/web/org.openbravo.retail.posterminal/js/pointofsale/view/keyboard-toolbars.js b/web/org.openbravo.retail.posterminal/js/pointofsale/view/keyboard-toolbars.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/keyboard-toolbars.js
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/keyboard-toolbars.js
@@ -250,7 +250,8 @@
holdActive: true,
permission: sidebutton.permission,
stateless: sidebutton.stateless,
- action: sidebutton.action
+ action: sidebutton.action,
+ scope: this
}
}
};
@@ -261,7 +262,7 @@
OB.UTIL.HookManager.executeHooks('OBPOS_PrePaymentSelected', {
paymentSelected: payment,
receipt: btncomponent.btn.definition.scope.receipt,
- btnDefintion: btncomponent.btn.definition
+ btnDefinition: btncomponent.btn.definition
}, function (args) {
if (args && args.cancellation && args.cancellation === true) {
callback(false);
@@ -385,6 +386,7 @@
holdActive: true,
permission: payment.payment.searchKey,
stateless: false,
+ scope: me,
action: function (keyboard, txt) {
me.payWithProviderGroup(keyboard, txt, providerGroups[payment.providerGroup.id]);
}
@@ -426,6 +428,7 @@
popup: 'modalPaymentsSelect',
args: {
idCategory: payment.paymentMethod.paymentMethodCategory,
+ receipt: me.receipt,
amount: amount,
options: options
}
@@ -544,6 +547,7 @@
}
if (amount > 0 && exactpayment && OB.MobileApp.model.hasPermission(exactpayment.payment.searchKey)) {
+ OB.logUserAction('Exact Payment: ' + exactpayment.payment._identifier + ' = ' + OB.I18N.formatCurrency(amount) + ' ' + exactpayment.isocode);
me.pay(amount, exactpayment.payment.searchKey, exactpayment.payment._identifier, exactpayment.paymentMethod, exactpayment.rate, exactpayment.mulrate, exactpayment.isocode);
}
}
@@ -711,6 +715,7 @@
},
tap: function () {
if (!this.$.btn.hasClass(this.classButtonDisabled)) {
+ OB.logUserAction('More Payments button clicked');
this.doShowAllButtons();
}
},
diff --git a/web/org.openbravo.retail.posterminal/js/pointofsale/view/modals/modalpayments.js b/web/org.openbravo.retail.posterminal/js/pointofsale/view/modals/modalpayments.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/modals/modalpayments.js
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/modals/modalpayments.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2015-2017 Openbravo S.L.U.
+ * Copyright (C) 2015-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -84,16 +84,24 @@
if (!item.disabled) {
var dialog = this.owner.owner.owner;
dialog.doHideThisPopup();
- dialog.bubble('onStatusChanged', {
- payment: this.payment,
- status: this.payment.payment.searchKey,
- amount: dialog.args.amount,
- options: dialog.args.options
- });
- dialog.bubble('onPaymentChanged', {
- payment: this.payment,
- status: this.payment.payment.searchKey,
- amount: dialog.args.amount
+ OB.UTIL.HookManager.executeHooks('OBPOS_PrePaymentSelected', {
+ paymentSelected: this.payment,
+ receipt: dialog.args.receipt
+ }, function (args) {
+ if (args && args.cancellation && args.cancellation === true) {
+ return;
+ }
+ dialog.bubble('onStatusChanged', {
+ payment: args.paymentSelected,
+ status: args.paymentSelected.payment.searchKey,
+ amount: dialog.args.amount,
+ options: dialog.args.options
+ });
+ dialog.bubble('onPaymentChanged', {
+ payment: args.paymentSelected,
+ status: args.paymentSelected.payment.searchKey,
+ amount: dialog.args.amount
+ });
});
}
},
diff --git a/web/org.openbravo.retail.posterminal/js/pointofsale/view/payment.js b/web/org.openbravo.retail.posterminal/js/pointofsale/view/payment.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/payment.js
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/payment.js
@@ -46,7 +46,8 @@
this.doShowPopup({
popup: 'modalPaymentsSelect',
args: {
- idCategory: inEvent.value.status.substring(inEvent.value.status.lastIndexOf('.') + 1)
+ idCategory: inEvent.value.status.substring(inEvent.value.status.lastIndexOf('.') + 1),
+ receipt: this.receipt
}
});
} else {
@@ -1299,11 +1300,14 @@
if (this.drawerOpened) {
if (this.owner.receipt.get('orderType') === 3 && !this.owner.receipt.get('cancelLayaway')) {
//Void Layaway
+ OB.logUserAction('Void Layaway: ' + me.owner.receipt.get('documentNo'));
this.owner.receipt.trigger('voidLayaway');
} else if (this.owner.receipt.get('orderType') === 3) {
//Cancel Layaway
+ OB.logUserAction('Cancel Layaway: ' + me.owner.receipt.get('documentNo'));
this.owner.receipt.trigger('cancelLayaway');
} else {
+ OB.logUserAction('Complete ticket payment: ' + me.owner.receipt.get('documentNo'));
this.setDisabled(true);
me.owner.model.get('order').trigger('paymentDone', false);
OB.UTIL.setScanningFocus(false);
@@ -1322,11 +1326,14 @@
} else {
if (this.owner.receipt.get('orderType') === 3 && !this.owner.receipt.get('cancelLayaway')) {
//Void Layaway
+ OB.logUserAction('Void Layaway: ' + me.owner.receipt.get('documentNo'));
this.owner.receipt.trigger('voidLayaway');
} else if (this.owner.receipt.get('orderType') === 3) {
//Cancel Layaway
+ OB.logUserAction('Cancel Layaway: ' + me.owner.receipt.get('documentNo'));
this.owner.receipt.trigger('cancelLayaway');
} else {
+ OB.logUserAction('Complete ticket payment: ' + me.owner.receipt.get('documentNo'));
this.setDisabled(true);
me.owner.receipt.trigger('paymentDone', this.allowOpenDrawer);
OB.UTIL.setScanningFocus(false);
@@ -1335,6 +1342,7 @@
} else {
if (this.drawerpreference && this.allowOpenDrawer) {
if (this.drawerOpened) {
+ OB.logUserAction('Complete Multi Orders payment');
this.owner.model.get('multiOrders').trigger('paymentDone', false);
OB.UTIL.setScanningFocus(false);
this.owner.model.get('multiOrders').set('openDrawer', false);
@@ -1350,6 +1358,7 @@
enyo.$.scrim.hide();
}
} else {
+ OB.logUserAction('Complete Multi Orders payment');
this.owner.model.get('multiOrders').trigger('paymentDone', this.allowOpenDrawer);
OB.UTIL.setScanningFocus(false);
this.owner.model.get('multiOrders').set('openDrawer', false);
@@ -1759,6 +1768,7 @@
}
this.setDisabled(true);
enyo.$.scrim.show();
+ OB.logUserAction('Layaway ticket: ' + receipt.get('documentNo'));
receipt.trigger('paymentDone', me.allowOpenDrawer);
}
});
\ No newline at end of file
diff --git a/web/org.openbravo.retail.posterminal/js/pointofsale/view/pointofsale.js b/web/org.openbravo.retail.posterminal/js/pointofsale/view/pointofsale.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/pointofsale.js
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/pointofsale.js
@@ -1001,6 +1001,7 @@
this.$.multiColumn.$.rightPanel.$.keyboard.execStatelessCommand('cashexact');
},
changeCurrentOrder: function (inSender, inEvent) {
+ OB.logUserAction('Switch to Ticket: ' + inEvent.newCurrentOrder.get('documentNo'));
this.model.get('orderList').load(inEvent.newCurrentOrder);
return true;
},
@@ -1014,6 +1015,7 @@
// } else {
// me.model.get('multiOrders').removePayment(inEvent.payment);
// }
+ OB.logUserAction('Remove Payment: ' + inEvent.payment.get('name') + ' = ' + OB.I18N.formatCurrency(inEvent.payment.get('amount')) + ' ' + inEvent.payment.get('isocode'));
if (me.model.get('leftColumnViewManager').isOrder()) {
me.model.get('order').removePayment(inEvent.payment, inEvent.removeCallback);
me.model.get('order').trigger('displayTotal');
@@ -1323,6 +1325,11 @@
me.cancelRemoveMultiOrders(inSender, originator);
return true;
}
+ if (inEvent.order) {
+ OB.logUserAction('Remove Order: ' + inEvent.order.get('documentNo'));
+ } else {
+ OB.logUserAction('Close Multi Orders List');
+ }
// If there are more than 1 order, do as usual
if (me.model.get('multiOrders').get('multiOrdersList').length > 1 && inEvent.order) {
me.model.get('multiOrders').get('multiOrdersList').remove(inEvent.order);
diff --git a/web/org.openbravo.retail.posterminal/js/pointofsale/view/scan.js b/web/org.openbravo.retail.posterminal/js/pointofsale/view/scan.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/scan.js
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/scan.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2012-2017 Openbravo S.L.U.
+ * Copyright (C) 2012-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -127,6 +127,7 @@
selectedLines: OB.MobileApp.model.receipt.get('undo').lines
}, function (args) {
if (!args.cancellation && me.undoclick) {
+ OB.logUserAction('Click on "Undo" button');
me.undoclick();
} else {
me.setDisabled(false);
diff --git a/web/org.openbravo.retail.posterminal/js/pointofsale/view/subwindows/customeraddress/components/sharedcomponents.js b/web/org.openbravo.retail.posterminal/js/pointofsale/view/subwindows/customeraddress/components/sharedcomponents.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/subwindows/customeraddress/components/sharedcomponents.js
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/subwindows/customeraddress/components/sharedcomponents.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2012-2017 Openbravo S.L.U.
+ * Copyright (C) 2012-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -217,6 +217,7 @@
customerAddr: OB.UTIL.clone(me.model.get('customerAddr'))
});
};
+ OB.logUserAction('Create Customer Address: ' + args.customerAddr.get('customerName') + ' - ' + args.customerAddr.get('name'));
me.model.get('customerAddr').saveCustomerAddr(callback, enableButtonsCallback);
});
} else {
@@ -324,6 +325,7 @@
receipt.deleteLinesFromOrder(orderlines, function () {
args.customerAddr.saveCustomerAddr(callback, enableButtonsCallback);
});
+ OB.logUserAction('Update Customer Address: ' + args.customerAddr.get('customerName') + ' - ' + args.customerAddr.get('name'));
});
}
}, {
@@ -343,6 +345,7 @@
enableButtonsCallback();
return true;
}
+ OB.logUserAction('Update Customer Address: ' + args.customerAddr.get('customerName') + ' - ' + args.customerAddr.get('name'));
args.customerAddr.saveCustomerAddr(callback, enableButtonsCallback);
});
}
diff --git a/web/org.openbravo.retail.posterminal/js/pointofsale/view/subwindows/customers/components/sharedcomponents.js b/web/org.openbravo.retail.posterminal/js/pointofsale/view/subwindows/customers/components/sharedcomponents.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/subwindows/customers/components/sharedcomponents.js
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/subwindows/customers/components/sharedcomponents.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2012-2017 Openbravo S.L.U.
+ * Copyright (C) 2012-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -489,6 +489,7 @@
return true;
}
customerEdited = args.customer;
+ OB.logUserAction((args.isNew ? 'Create ' : 'Edit ') + 'Customer: ' + customerEdited.get('name'));
args.customer.saveCustomer(function (result) {
me.waterfall('onDisableButton', {
disabled: false
diff --git a/web/org.openbravo.retail.posterminal/js/pointofsale/view/ticketdiscount.js b/web/org.openbravo.retail.posterminal/js/pointofsale/view/ticketdiscount.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/ticketdiscount.js
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/ticketdiscount.js
@@ -351,6 +351,7 @@
}
_.each(me.checkedLines, function (line) {
+ OB.logUserAction('Apply promotion "' + promotionToAplly.rule.get('name') + '" to product "' + line.get('product').get('_identifier') + '" (' + line.get('qty') + ')');
orderLinesCollection.add(line);
});
diff --git a/web/org.openbravo.retail.posterminal/js/pointofsale/view/toolbar-left.js b/web/org.openbravo.retail.posterminal/js/pointofsale/view/toolbar-left.js
--- a/web/org.openbravo.retail.posterminal/js/pointofsale/view/toolbar-left.js
+++ b/web/org.openbravo.retail.posterminal/js/pointofsale/view/toolbar-left.js
@@ -388,6 +388,7 @@
receipt.prepareToSend(function () {
receipt.trigger('closed', {
callback: function () {
+ OB.logUserAction('Close Quotation: ' + receipt.get('documentNo') + ', Amount: ' + me.getLabel());
//In case the processed document is a quotation, we remove its id so it can be reactivated
if (receipt.get('isQuotation')) {
if (!(receipt.get('oldId') && receipt.get('oldId').length > 0)) {
@@ -419,6 +420,7 @@
}
return;
}
+ OB.logUserAction('Total Amount (' + me.getLabel() + ') for ticket: ' + receipt.get('documentNo'));
if (this.model.get('order').get('isEditable') === false && !this.model.get('order').get('isLayaway') && !this.model.get('order').get('isPaid')) {
return true;
}
@@ -682,6 +684,10 @@
});
this.menuEntries.push({
+ kind: 'OB.UI.MenuBackOfficeSessionLog'
+ });
+
+ this.menuEntries.push({
kind: 'OB.UI.MenuSelectPrinter'
});
sessions.diff [^] (3,896 bytes) 2018-09-05 12:54 [Show Content] [Hide Content]diff --git a/web/org.openbravo.retail.sessions/js/components/BusinessDateWindowView.js b/web/org.openbravo.retail.sessions/js/components/BusinessDateWindowView.js
--- a/web/org.openbravo.retail.sessions/js/components/BusinessDateWindowView.js
+++ b/web/org.openbravo.retail.sessions/js/components/BusinessDateWindowView.js
@@ -22,6 +22,7 @@
stepCount: 0,
span: 6,
tap: function () {
+ OB.logUserAction('Cancel setting the business date manually');
this.bubble('onCancelButton');
}
}, {
@@ -88,6 +89,9 @@
model.on('change:businessdate', function () {
var newbd = model.get('businessdate');
this.setDisabled(!newbd);
+ if (newbd) {
+ OB.logUserAction('Set business date: ' + OB.I18N.formatDate(newbd));
+ }
}, this);
}
}]
@@ -164,6 +168,7 @@
isActive: false
}));
}
+ OB.logUserAction('Set the business date manually');
},
cancelButton: function () {}
});
diff --git a/web/org.openbravo.retail.sessions/js/countcash/countcash-model.js b/web/org.openbravo.retail.sessions/js/countcash/countcash-model.js
--- a/web/org.openbravo.retail.sessions/js/countcash/countcash-model.js
+++ b/web/org.openbravo.retail.sessions/js/countcash/countcash-model.js
@@ -48,6 +48,7 @@
}));
//ready to send to the server
+ OB.logUserAction(OB.I18N.getLabel('POSS_CashCountSessionOpen'));
server.exec({
messageId: OB.UTIL.get_UUID(),
data: [objToSend]
@@ -442,6 +443,9 @@
return; // Do not execute the process again if finished.
}
+ var info = me.get(initialCountPayment);
+ OB.logUserAction('Initial Count Cash: ' + paymentMethod.paymentMethod.name + ' [Counted: ' + OB.I18N.formatCurrency(info.get('totalCounted')) + ', Expected: ' + OB.I18N.formatCurrency(info.get('totalExpected')) + '] ' + paymentMethod.isocode);
+
if (me.get(initialCountPayment).get('totalDifference') !== 0) {
me.hasCashMgmtTrans = true;
cashManagmentTransactionModel.set('amount', OB.DEC.abs(me.get(initialCountPayment).get('totalDifference')));
diff --git a/web/org.openbravo.retail.sessions/js/countcash/countcash.js b/web/org.openbravo.retail.sessions/js/countcash/countcash.js
--- a/web/org.openbravo.retail.sessions/js/countcash/countcash.js
+++ b/web/org.openbravo.retail.sessions/js/countcash/countcash.js
@@ -278,6 +278,7 @@
});
};
+ OB.logUserAction(OB.I18N.getLabel('POSS_CashCountSessionOpen'));
OB.UTIL.showConfirmation.display(OB.I18N.getLabel('OBPOS_LblGoodjob'), OB.I18N.getLabel('POSS_CashCountSessionOpen'), [{
label: OB.I18N.getLabel('OBMOBC_LblOk'),
action: function () {
@@ -299,6 +300,7 @@
if (this.model.get('errorMessage')) {
errorMsg = this.model.get('errorMessage');
}
+ OB.logUserAction('Initial Count Cash finished Wrongly: ' + errorMsg);
OB.UTIL.showConfirmation.display(OB.I18N.getLabel('OBPOS_CashUpWronglyHeader'), errorMsg, [{
label: OB.I18N.getLabel('OBMOBC_LblOk'),
action: function () {
@@ -313,6 +315,7 @@
});
}, this);
+ OB.logUserAction('Start Initial Count Cash');
this.refresh();
},
refresh: function () {
@@ -377,6 +380,7 @@
serverMsg = messageValue + "\r\n" + msg;
}
if (inEvent.originator.stepCount === 0) {
+ OB.logUserAction('Cancel Open Till');
me.cancelAction();
return true;
}
@@ -456,6 +460,7 @@
}
}
} else {
+ OB.logUserAction('Store is closed, force logout');
OB.UTIL.showConfirmation.display(OB.I18N.getLabel('POSS_StoreIsClosed'), OB.I18N.getLabel('POSS_ForceLogout'), [{
label: OB.I18N.getLabel('OBMOBC_LblOk'),
action: function () {
test-suite-humanlog.diff [^] (10,558 bytes) 2018-09-10 10:33 [Show Content] [Hide Content]diff --git a/src-test/org/openbravo/test/mobile/retail/pack/selenium/suites/concurrent/job014/HumanLogSuite.java b/src-test/org/openbravo/test/mobile/retail/pack/selenium/suites/concurrent/job014/HumanLogSuite.java
new file mode 100644
--- /dev/null
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/suites/concurrent/job014/HumanLogSuite.java
@@ -0,0 +1,45 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo Public License
+ * Version 1.0 (the "License"), being the Mozilla Public License
+ * Version 1.1 with a permitted attribution clause; you may not use this
+ * file except in compliance with the License. You may obtain a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo S.L.U.
+ * All portions are Copyright (C) 2018 Openbravo S.L.U.
+ * All Rights Reserved.
+ * Contributor(s):
+ ************************************************************************
+ *
+ * @author EBE
+ *
+ */
+
+package org.openbravo.test.mobile.retail.pack.selenium.suites.concurrent.job014;
+
+import org.junit.AfterClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.openbravo.test.mobile.core.utils.SuiteHelper;
+import org.openbravo.test.mobile.retail.pack.selenium.tests.humanlog.AllHumanLogTests;
+import org.openbravo.test.mobile.retail.pack.selenium.tests.loginout.LogoutAndCloseBrowser;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ //
+ AllHumanLogTests.class, //
+
+ LogoutAndCloseBrowser.class, // this have to be the last test in the suite
+})
+public class HumanLogSuite extends SuiteHelper {
+ @AfterClass
+ public static void afterclass() {
+ nameChild(HumanLogSuite.class.getSimpleName());
+ SuiteHelper.afterclass();
+ }
+}
diff --git a/src-test/org/openbravo/test/mobile/retail/pack/selenium/suites/concurrent/job014/HumanLogSuiteHV.java b/src-test/org/openbravo/test/mobile/retail/pack/selenium/suites/concurrent/job014/HumanLogSuiteHV.java
new file mode 100644
--- /dev/null
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/suites/concurrent/job014/HumanLogSuiteHV.java
@@ -0,0 +1,45 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo Public License
+ * Version 1.0 (the "License"), being the Mozilla Public License
+ * Version 1.1 with a permitted attribution clause; you may not use this
+ * file except in compliance with the License. You may obtain a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo S.L.U.
+ * All portions are Copyright (C) 2018 Openbravo S.L.U.
+ * All Rights Reserved.
+ * Contributor(s):
+ ************************************************************************
+ *
+ * @author EBE
+ *
+ */
+
+package org.openbravo.test.mobile.retail.pack.selenium.suites.concurrent.job014;
+
+import org.junit.AfterClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.openbravo.test.mobile.core.utils.SuiteHelper;
+import org.openbravo.test.mobile.retail.pack.selenium.tests.humanlog.AllHumanLogTestsHV;
+import org.openbravo.test.mobile.retail.pack.selenium.tests.loginout.LogoutAndCloseBrowser;
+
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ //
+ AllHumanLogTestsHV.class, //
+
+ LogoutAndCloseBrowser.class, // this have to be the last test in the suite
+})
+public class HumanLogSuiteHV extends SuiteHelper {
+ @AfterClass
+ public static void afterclass() {
+ nameChild(HumanLogSuiteHV.class.getSimpleName());
+ SuiteHelper.afterclass();
+ }
+}
diff --git a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/AllHumanLogTests.java b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/AllHumanLogTests.java
--- a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/AllHumanLogTests.java
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/AllHumanLogTests.java
@@ -11,12 +11,12 @@
* under the License.
* The Original Code is Openbravo ERP.
* The Initial Developer of the Original Code is Openbravo S.L.U.
- * All portions are Copyright (C) 2008-2015 Openbravo S.L.U.
+ * All portions are Copyright (C) 2018 Openbravo S.L.U.
* All Rights Reserved.
* Contributor(s):
************************************************************************
*
- * @author RAL
+ * @author EBE
*
*/
diff --git a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/AllHumanLogTestsHV.java b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/AllHumanLogTestsHV.java
new file mode 100644
--- /dev/null
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/AllHumanLogTestsHV.java
@@ -0,0 +1,35 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo Public License
+ * Version 1.0 (the "License"), being the Mozilla Public License
+ * Version 1.1 with a permitted attribution clause; you may not use this
+ * file except in compliance with the License. You may obtain a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo S.L.U.
+ * All portions are Copyright (C) 2018 Openbravo S.L.U.
+ * All Rights Reserved.
+ * Contributor(s):
+ ************************************************************************
+ *
+ * @author EBE
+ *
+ */
+
+package org.openbravo.test.mobile.retail.pack.selenium.tests.humanlog;
+
+import org.junit.runner.RunWith;
+import org.openbravo.test.mobile.core.junit.toolbox.SuiteClassesToolbox;
+import org.openbravo.test.mobile.retail.mobilecore.annotations.SuiteAnnotations;
+import org.openbravo.test.mobile.retail.mobilecore.junit.OBWildcardPatternSuite;
+
+@RunWith(OBWildcardPatternSuite.class)
+@SuiteClassesToolbox()
+@SuiteAnnotations(activateHighVolumeMode = true)
+public class AllHumanLogTestsHV {
+
+}
diff --git a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/CashManagement.java b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/CashManagement.java
--- a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/CashManagement.java
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/CashManagement.java
@@ -70,7 +70,7 @@
// Validate log
String lastTicketNumber = BackboneHelper.getDocumentNo();
validateHumanLog(new String[] { //
- "Login user: vallblanca", //
+ "Login user: vallblanca, Role: VallBlancaUser - The White Valley Group", //
"Create new ticket: " + ticketNumber, //
"Menu > Cash Management", //
"Button pushed: 5", //
diff --git a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/CashUp.java b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/CashUp.java
--- a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/CashUp.java
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/CashUp.java
@@ -99,8 +99,11 @@
// Validate log
String lastTicketNumber = BackboneHelper.getDocumentNo();
validateHumanLog(new String[] { //
- "Login user: vallblanca", //
+ "Login user: vallblanca, Role: VallBlancaUser - The White Valley Group", //
"Create new ticket: " + ticketNumber, //
+ "Search products: \"\"", //
+ "Search products: \"\"", //
+ "Search products: \"Avalanche transceiver\"", //
"Add product \"Avalanche transceiver\" (Qty: 1) to ticket \"" + ticketNumber + "\"", //
"Total Amount (150.50) for ticket: " + ticketNumber, //
"Button pushed: Card", //
diff --git a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/LoginInWebPOS.java b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/LoginInWebPOS.java
--- a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/LoginInWebPOS.java
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/LoginInWebPOS.java
@@ -45,7 +45,7 @@
// Validate log
String ticketNumber = BackboneHelper.getDocumentNo();
validateHumanLog(new String[] { //
- "Login user: vallblanca", //
+ "Login user: vallblanca, Role: VallBlancaUser - The White Valley Group", //
"Create new ticket: " + ticketNumber //
});
}
diff --git a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/PayTicket.java b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/PayTicket.java
--- a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/PayTicket.java
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/humanlog/PayTicket.java
@@ -51,8 +51,11 @@
// Validate log
String lastTicketNumber = BackboneHelper.getDocumentNo();
validateHumanLog(new String[] { //
- "Login user: vallblanca", //
+ "Login user: vallblanca, Role: VallBlancaUser - The White Valley Group", //
"Create new ticket: " + ticketNumber, //
+ "Search products: \"\"", //
+ "Search products: \"\"", //
+ "Search products: \"Avalanche transceiver\"", //
"Add product \"Avalanche transceiver\" (Qty: 1) to ticket \"" + ticketNumber + "\"", //
"Total Amount (150.50) for ticket: " + ticketNumber, //
"Exact Payment: Cash = 150.50 EUR", //
mobile-core.diff [^] (110,412 bytes) 2018-09-10 10:52 [Show Content] [Hide Content]diff --git a/src-db/database/model/tables/OBMOBC_LOGCLIENT_READABLE.xml b/src-db/database/model/tables/OBMOBC_LOGCLIENT_READABLE.xml
new file mode 100644
--- /dev/null
+++ b/src-db/database/model/tables/OBMOBC_LOGCLIENT_READABLE.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+ <database name="TABLE OBMOBC_LOGCLIENT_READABLE">
+ <table name="OBMOBC_LOGCLIENT_READABLE" primaryKey="OBMOBC_LOGCLI_READABLE_PK">
+ <column name="OBMOBC_LOGCLIENT_READABLE_ID" primaryKey="true" required="true" type="VARCHAR" size="32" autoIncrement="false">
+ <default/>
+ <onCreateDefault/>
+ </column>
+ <column name="AD_CLIENT_ID" primaryKey="false" required="true" type="VARCHAR" size="32" autoIncrement="false">
+ <default/>
+ <onCreateDefault/>
+ </column>
+ <column name="AD_ORG_ID" primaryKey="false" required="true" type="VARCHAR" size="32" autoIncrement="false">
+ <default/>
+ <onCreateDefault/>
+ </column>
+ <column name="ISACTIVE" primaryKey="false" required="true" type="CHAR" size="1" autoIncrement="false">
+ <default><![CDATA[Y]]></default>
+ <onCreateDefault/>
+ </column>
+ <column name="CREATED" primaryKey="false" required="true" type="TIMESTAMP" size="7" autoIncrement="false">
+ <default><![CDATA[SYSDATE]]></default>
+ <onCreateDefault/>
+ </column>
+ <column name="CREATEDBY" primaryKey="false" required="true" type="VARCHAR" size="32" autoIncrement="false">
+ <default/>
+ <onCreateDefault/>
+ </column>
+ <column name="UPDATED" primaryKey="false" required="true" type="TIMESTAMP" size="7" autoIncrement="false">
+ <default><![CDATA[SYSDATE]]></default>
+ <onCreateDefault/>
+ </column>
+ <column name="UPDATEDBY" primaryKey="false" required="true" type="VARCHAR" size="32" autoIncrement="false">
+ <default/>
+ <onCreateDefault/>
+ </column>
+ <column name="DEVICEID" primaryKey="false" required="false" type="VARCHAR" size="255" autoIncrement="false">
+ <default/>
+ <onCreateDefault/>
+ </column>
+ <column name="MSG" primaryKey="false" required="false" type="VARCHAR" size="2000" autoIncrement="false">
+ <default/>
+ <onCreateDefault/>
+ </column>
+ <column name="CACHE_SESSION_ID" primaryKey="false" required="false" type="VARCHAR" size="32" autoIncrement="false">
+ <default/>
+ <onCreateDefault/>
+ </column>
+ <column name="ISONLINE" primaryKey="false" required="true" type="CHAR" size="1" autoIncrement="false">
+ <default><![CDATA[Y]]></default>
+ <onCreateDefault/>
+ </column>
+ <foreign-key foreignTable="AD_CLIENT" name="OBMOBC_LOGCLI_READ_AD_CLIENT">
+ <reference local="AD_CLIENT_ID" foreign="AD_CLIENT_ID"/>
+ </foreign-key>
+ <foreign-key foreignTable="AD_ORG" name="OBMOBC_LOGCLI_READ_AD_ORG">
+ <reference local="AD_ORG_ID" foreign="AD_ORG_ID"/>
+ </foreign-key>
+ <check name="OBMOBC_LOGCLI_READ_ISACT_CHK"><![CDATA[ISACTIVE IN ('Y', 'N')]]></check>
+ <check name="OBMOBC_LOGCLI_READ_ISON_CHK"><![CDATA[ISONLINE IN ('Y', 'N')]]></check>
+ </table>
+ </database>
diff --git a/src-db/database/sourcedata/AD_COLUMN.xml b/src-db/database/sourcedata/AD_COLUMN.xml
--- a/src-db/database/sourcedata/AD_COLUMN.xml
+++ b/src-db/database/sourcedata/AD_COLUMN.xml
@@ -39,6 +39,120 @@
<!--01D1BF5838B9461897202218DBAB41A9--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
<!--01D1BF5838B9461897202218DBAB41A9--></AD_COLUMN>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--><AD_COLUMN>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <AD_COLUMN_ID><![CDATA[02F9D71B5A9D41A285B2346EED5EE9F1]]></AD_COLUMN_ID>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <NAME><![CDATA[Organization]]></NAME>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <DESCRIPTION><![CDATA[Organizational entity within client]]></DESCRIPTION>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <HELP><![CDATA[An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.]]></HELP>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <COLUMNNAME><![CDATA[AD_Org_ID]]></COLUMNNAME>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <AD_TABLE_ID><![CDATA[5DD50444BA0A4572A638798E3513503C]]></AD_TABLE_ID>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <AD_REFERENCE_ID><![CDATA[19]]></AD_REFERENCE_ID>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <FIELDLENGTH><![CDATA[32]]></FIELDLENGTH>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <DEFAULTVALUE><![CDATA[@AD_ORG_ID@]]></DEFAULTVALUE>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ISKEY><![CDATA[N]]></ISKEY>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ISPARENT><![CDATA[N]]></ISPARENT>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ISMANDATORY><![CDATA[Y]]></ISMANDATORY>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ISUPDATEABLE><![CDATA[N]]></ISUPDATEABLE>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ISIDENTIFIER><![CDATA[N]]></ISIDENTIFIER>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <SEQNO><![CDATA[30]]></SEQNO>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ISTRANSLATED><![CDATA[N]]></ISTRANSLATED>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ISSELECTIONCOLUMN><![CDATA[N]]></ISSELECTIONCOLUMN>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <AD_ELEMENT_ID><![CDATA[113]]></AD_ELEMENT_ID>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ISSESSIONATTR><![CDATA[Y]]></ISSESSIONATTR>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <POSITION><![CDATA[3]]></POSITION>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <IMAGESIZEVALUESACTION><![CDATA[N]]></IMAGESIZEVALUESACTION>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ALLOWSORTING><![CDATA[Y]]></ALLOWSORTING>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ALLOWFILTERING><![CDATA[Y]]></ALLOWFILTERING>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
+<!--02F9D71B5A9D41A285B2346EED5EE9F1--></AD_COLUMN>
+
+<!--06521F129AD94EB5B40DF95DC0414BCF--><AD_COLUMN>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <AD_COLUMN_ID><![CDATA[06521F129AD94EB5B40DF95DC0414BCF]]></AD_COLUMN_ID>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <NAME><![CDATA[deviceId]]></NAME>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <COLUMNNAME><![CDATA[Deviceid]]></COLUMNNAME>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <AD_TABLE_ID><![CDATA[5DD50444BA0A4572A638798E3513503C]]></AD_TABLE_ID>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <AD_REFERENCE_ID><![CDATA[10]]></AD_REFERENCE_ID>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <FIELDLENGTH><![CDATA[255]]></FIELDLENGTH>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ISKEY><![CDATA[N]]></ISKEY>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ISPARENT><![CDATA[N]]></ISPARENT>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ISMANDATORY><![CDATA[N]]></ISMANDATORY>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ISUPDATEABLE><![CDATA[Y]]></ISUPDATEABLE>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ISIDENTIFIER><![CDATA[N]]></ISIDENTIFIER>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <SEQNO><![CDATA[90]]></SEQNO>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ISTRANSLATED><![CDATA[N]]></ISTRANSLATED>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ISSELECTIONCOLUMN><![CDATA[N]]></ISSELECTIONCOLUMN>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <AD_ELEMENT_ID><![CDATA[F74A66B21FBF49EF91A8C6F25F67AA39]]></AD_ELEMENT_ID>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ISSESSIONATTR><![CDATA[N]]></ISSESSIONATTR>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <POSITION><![CDATA[9]]></POSITION>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <IMAGESIZEVALUESACTION><![CDATA[N]]></IMAGESIZEVALUESACTION>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ALLOWSORTING><![CDATA[Y]]></ALLOWSORTING>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ALLOWFILTERING><![CDATA[Y]]></ALLOWFILTERING>
+<!--06521F129AD94EB5B40DF95DC0414BCF--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
+<!--06521F129AD94EB5B40DF95DC0414BCF--></AD_COLUMN>
+
+<!--098756C2DB1A4A57AF6C8D4595849E30--><AD_COLUMN>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <AD_COLUMN_ID><![CDATA[098756C2DB1A4A57AF6C8D4595849E30]]></AD_COLUMN_ID>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <NAME><![CDATA[Client]]></NAME>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <DESCRIPTION><![CDATA[Client for this installation.]]></DESCRIPTION>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <HELP><![CDATA[A Client is a company or a legal entity. You cannot share data between Clients.]]></HELP>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <COLUMNNAME><![CDATA[AD_Client_ID]]></COLUMNNAME>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <AD_TABLE_ID><![CDATA[5DD50444BA0A4572A638798E3513503C]]></AD_TABLE_ID>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <AD_REFERENCE_ID><![CDATA[19]]></AD_REFERENCE_ID>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <FIELDLENGTH><![CDATA[32]]></FIELDLENGTH>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <DEFAULTVALUE><![CDATA[@AD_CLIENT_ID@]]></DEFAULTVALUE>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ISKEY><![CDATA[N]]></ISKEY>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ISPARENT><![CDATA[N]]></ISPARENT>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ISMANDATORY><![CDATA[Y]]></ISMANDATORY>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ISUPDATEABLE><![CDATA[N]]></ISUPDATEABLE>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ISIDENTIFIER><![CDATA[N]]></ISIDENTIFIER>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <SEQNO><![CDATA[20]]></SEQNO>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ISTRANSLATED><![CDATA[N]]></ISTRANSLATED>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ISSELECTIONCOLUMN><![CDATA[N]]></ISSELECTIONCOLUMN>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <AD_ELEMENT_ID><![CDATA[102]]></AD_ELEMENT_ID>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ISSESSIONATTR><![CDATA[Y]]></ISSESSIONATTR>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <POSITION><![CDATA[2]]></POSITION>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <IMAGESIZEVALUESACTION><![CDATA[N]]></IMAGESIZEVALUESACTION>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ALLOWSORTING><![CDATA[Y]]></ALLOWSORTING>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ALLOWFILTERING><![CDATA[Y]]></ALLOWFILTERING>
+<!--098756C2DB1A4A57AF6C8D4595849E30--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
+<!--098756C2DB1A4A57AF6C8D4595849E30--></AD_COLUMN>
+
<!--0B9D815A89954CA6BC002D374D6C397C--><AD_COLUMN>
<!--0B9D815A89954CA6BC002D374D6C397C--> <AD_COLUMN_ID><![CDATA[0B9D815A89954CA6BC002D374D6C397C]]></AD_COLUMN_ID>
<!--0B9D815A89954CA6BC002D374D6C397C--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -150,6 +264,44 @@
<!--109FF518A6584B7FA15D4F7EE8DCAD13--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
<!--109FF518A6584B7FA15D4F7EE8DCAD13--></AD_COLUMN>
+<!--10C850D83A734D5D9A6EE62E61CDA122--><AD_COLUMN>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <AD_COLUMN_ID><![CDATA[10C850D83A734D5D9A6EE62E61CDA122]]></AD_COLUMN_ID>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <NAME><![CDATA[Updated By]]></NAME>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <DESCRIPTION><![CDATA[User who updated this records]]></DESCRIPTION>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <HELP><![CDATA[The Updated By field indicates the user who updated this record.]]></HELP>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <COLUMNNAME><![CDATA[Updatedby]]></COLUMNNAME>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <AD_TABLE_ID><![CDATA[5DD50444BA0A4572A638798E3513503C]]></AD_TABLE_ID>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <AD_REFERENCE_ID><![CDATA[30]]></AD_REFERENCE_ID>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <FIELDLENGTH><![CDATA[32]]></FIELDLENGTH>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ISKEY><![CDATA[N]]></ISKEY>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ISPARENT><![CDATA[N]]></ISPARENT>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ISMANDATORY><![CDATA[Y]]></ISMANDATORY>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ISUPDATEABLE><![CDATA[N]]></ISUPDATEABLE>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ISIDENTIFIER><![CDATA[N]]></ISIDENTIFIER>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <SEQNO><![CDATA[80]]></SEQNO>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ISTRANSLATED><![CDATA[N]]></ISTRANSLATED>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ISSELECTIONCOLUMN><![CDATA[N]]></ISSELECTIONCOLUMN>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <AD_ELEMENT_ID><![CDATA[608]]></AD_ELEMENT_ID>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ISSESSIONATTR><![CDATA[N]]></ISSESSIONATTR>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <POSITION><![CDATA[8]]></POSITION>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <IMAGESIZEVALUESACTION><![CDATA[N]]></IMAGESIZEVALUESACTION>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ALLOWSORTING><![CDATA[Y]]></ALLOWSORTING>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ALLOWFILTERING><![CDATA[Y]]></ALLOWFILTERING>
+<!--10C850D83A734D5D9A6EE62E61CDA122--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
+<!--10C850D83A734D5D9A6EE62E61CDA122--></AD_COLUMN>
+
<!--113F2A6F145140B9B3B8BDCBE13D49F1--><AD_COLUMN>
<!--113F2A6F145140B9B3B8BDCBE13D49F1--> <AD_COLUMN_ID><![CDATA[113F2A6F145140B9B3B8BDCBE13D49F1]]></AD_COLUMN_ID>
<!--113F2A6F145140B9B3B8BDCBE13D49F1--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -297,6 +449,45 @@
<!--1546D863A0B64C8E9F287972FB47CF77--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
<!--1546D863A0B64C8E9F287972FB47CF77--></AD_COLUMN>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--><AD_COLUMN>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <AD_COLUMN_ID><![CDATA[16FAA8B462AD4A069191D6D70DE15FD2]]></AD_COLUMN_ID>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <NAME><![CDATA[Creation Date]]></NAME>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <DESCRIPTION><![CDATA[The date that this record is completed.]]></DESCRIPTION>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <HELP><![CDATA[The Created field indicates the date that this record was created.]]></HELP>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <COLUMNNAME><![CDATA[Created]]></COLUMNNAME>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <AD_TABLE_ID><![CDATA[5DD50444BA0A4572A638798E3513503C]]></AD_TABLE_ID>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <AD_REFERENCE_ID><![CDATA[16]]></AD_REFERENCE_ID>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <FIELDLENGTH><![CDATA[19]]></FIELDLENGTH>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <DEFAULTVALUE><![CDATA[@#Date@]]></DEFAULTVALUE>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ISKEY><![CDATA[N]]></ISKEY>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ISPARENT><![CDATA[N]]></ISPARENT>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ISMANDATORY><![CDATA[Y]]></ISMANDATORY>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ISUPDATEABLE><![CDATA[N]]></ISUPDATEABLE>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ISIDENTIFIER><![CDATA[N]]></ISIDENTIFIER>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <SEQNO><![CDATA[50]]></SEQNO>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ISTRANSLATED><![CDATA[N]]></ISTRANSLATED>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ISSELECTIONCOLUMN><![CDATA[N]]></ISSELECTIONCOLUMN>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <AD_ELEMENT_ID><![CDATA[245]]></AD_ELEMENT_ID>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ISSESSIONATTR><![CDATA[N]]></ISSESSIONATTR>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <POSITION><![CDATA[5]]></POSITION>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <IMAGESIZEVALUESACTION><![CDATA[N]]></IMAGESIZEVALUESACTION>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ALLOWSORTING><![CDATA[Y]]></ALLOWSORTING>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ALLOWFILTERING><![CDATA[Y]]></ALLOWFILTERING>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
+<!--16FAA8B462AD4A069191D6D70DE15FD2--></AD_COLUMN>
+
<!--1796EBC9F71E4CC38FFF2FC1124AD391--><AD_COLUMN>
<!--1796EBC9F71E4CC38FFF2FC1124AD391--> <AD_COLUMN_ID><![CDATA[1796EBC9F71E4CC38FFF2FC1124AD391]]></AD_COLUMN_ID>
<!--1796EBC9F71E4CC38FFF2FC1124AD391--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -642,6 +833,42 @@
<!--2BF44288916F41ED8CEC8203A279350C--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
<!--2BF44288916F41ED8CEC8203A279350C--></AD_COLUMN>
+<!--2E085D7854F14AF280BB9FC72609E9E8--><AD_COLUMN>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <AD_COLUMN_ID><![CDATA[2E085D7854F14AF280BB9FC72609E9E8]]></AD_COLUMN_ID>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <NAME><![CDATA[Obmobc_Logclient_Readable_ID]]></NAME>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <COLUMNNAME><![CDATA[Obmobc_Logclient_Readable_ID]]></COLUMNNAME>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <AD_TABLE_ID><![CDATA[5DD50444BA0A4572A638798E3513503C]]></AD_TABLE_ID>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <AD_REFERENCE_ID><![CDATA[13]]></AD_REFERENCE_ID>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <FIELDLENGTH><![CDATA[32]]></FIELDLENGTH>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ISKEY><![CDATA[Y]]></ISKEY>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ISPARENT><![CDATA[N]]></ISPARENT>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ISMANDATORY><![CDATA[Y]]></ISMANDATORY>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ISUPDATEABLE><![CDATA[N]]></ISUPDATEABLE>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ISIDENTIFIER><![CDATA[Y]]></ISIDENTIFIER>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <SEQNO><![CDATA[10]]></SEQNO>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ISTRANSLATED><![CDATA[N]]></ISTRANSLATED>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ISSELECTIONCOLUMN><![CDATA[N]]></ISSELECTIONCOLUMN>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <AD_ELEMENT_ID><![CDATA[A74F058C6F86459887D5DB6F3B69F929]]></AD_ELEMENT_ID>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ISSESSIONATTR><![CDATA[N]]></ISSESSIONATTR>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <POSITION><![CDATA[1]]></POSITION>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <IMAGESIZEVALUESACTION><![CDATA[N]]></IMAGESIZEVALUESACTION>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ALLOWSORTING><![CDATA[Y]]></ALLOWSORTING>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ALLOWFILTERING><![CDATA[Y]]></ALLOWFILTERING>
+<!--2E085D7854F14AF280BB9FC72609E9E8--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
+<!--2E085D7854F14AF280BB9FC72609E9E8--></AD_COLUMN>
+
<!--2F05A4A47E29468A8162DC1B7D0683EF--><AD_COLUMN>
<!--2F05A4A47E29468A8162DC1B7D0683EF--> <AD_COLUMN_ID><![CDATA[2F05A4A47E29468A8162DC1B7D0683EF]]></AD_COLUMN_ID>
<!--2F05A4A47E29468A8162DC1B7D0683EF--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -756,6 +983,42 @@
<!--3757014FB37040A585F59C9FE7E8B4E6--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
<!--3757014FB37040A585F59C9FE7E8B4E6--></AD_COLUMN>
+<!--3DA27E03446C42EE91714FD55C8C8C46--><AD_COLUMN>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <AD_COLUMN_ID><![CDATA[3DA27E03446C42EE91714FD55C8C8C46]]></AD_COLUMN_ID>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <NAME><![CDATA[msg]]></NAME>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <COLUMNNAME><![CDATA[Msg]]></COLUMNNAME>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <AD_TABLE_ID><![CDATA[5DD50444BA0A4572A638798E3513503C]]></AD_TABLE_ID>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <AD_REFERENCE_ID><![CDATA[10]]></AD_REFERENCE_ID>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <FIELDLENGTH><![CDATA[2000]]></FIELDLENGTH>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ISKEY><![CDATA[N]]></ISKEY>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ISPARENT><![CDATA[N]]></ISPARENT>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ISMANDATORY><![CDATA[N]]></ISMANDATORY>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ISUPDATEABLE><![CDATA[Y]]></ISUPDATEABLE>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ISIDENTIFIER><![CDATA[N]]></ISIDENTIFIER>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <SEQNO><![CDATA[100]]></SEQNO>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ISTRANSLATED><![CDATA[N]]></ISTRANSLATED>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ISSELECTIONCOLUMN><![CDATA[N]]></ISSELECTIONCOLUMN>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <AD_ELEMENT_ID><![CDATA[496EBFE512C849FE8E2BD0C1B1D22F75]]></AD_ELEMENT_ID>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ISSESSIONATTR><![CDATA[N]]></ISSESSIONATTR>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <POSITION><![CDATA[10]]></POSITION>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <IMAGESIZEVALUESACTION><![CDATA[N]]></IMAGESIZEVALUESACTION>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ALLOWSORTING><![CDATA[Y]]></ALLOWSORTING>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ALLOWFILTERING><![CDATA[Y]]></ALLOWFILTERING>
+<!--3DA27E03446C42EE91714FD55C8C8C46--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
+<!--3DA27E03446C42EE91714FD55C8C8C46--></AD_COLUMN>
+
<!--420CEA8A8FED40DFBCE2DBD2D4FED256--><AD_COLUMN>
<!--420CEA8A8FED40DFBCE2DBD2D4FED256--> <AD_COLUMN_ID><![CDATA[420CEA8A8FED40DFBCE2DBD2D4FED256]]></AD_COLUMN_ID>
<!--420CEA8A8FED40DFBCE2DBD2D4FED256--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -1333,6 +1596,47 @@
<!--5DD40286DCBD40C7823CC0AD3C016882--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
<!--5DD40286DCBD40C7823CC0AD3C016882--></AD_COLUMN>
+<!--62D06968B4C042DC9BA304AD9200AF83--><AD_COLUMN>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <AD_COLUMN_ID><![CDATA[62D06968B4C042DC9BA304AD9200AF83]]></AD_COLUMN_ID>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <NAME><![CDATA[Active]]></NAME>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <DESCRIPTION><![CDATA[A flag indicating whether this record is available for use or de-activated.]]></DESCRIPTION>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <HELP><![CDATA[There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reporting. There are two reasons for de-activating and not deleting records:
+(1) The system requires the record for auditing purposes.
+(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are existing invoices for it. By de-activating the Business Partner you prevent it from being used in future transactions.]]></HELP>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <COLUMNNAME><![CDATA[Isactive]]></COLUMNNAME>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <AD_TABLE_ID><![CDATA[5DD50444BA0A4572A638798E3513503C]]></AD_TABLE_ID>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <AD_REFERENCE_ID><![CDATA[20]]></AD_REFERENCE_ID>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <FIELDLENGTH><![CDATA[1]]></FIELDLENGTH>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <DEFAULTVALUE><![CDATA[Y]]></DEFAULTVALUE>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ISKEY><![CDATA[N]]></ISKEY>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ISPARENT><![CDATA[N]]></ISPARENT>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ISMANDATORY><![CDATA[Y]]></ISMANDATORY>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ISUPDATEABLE><![CDATA[Y]]></ISUPDATEABLE>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ISIDENTIFIER><![CDATA[N]]></ISIDENTIFIER>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <SEQNO><![CDATA[40]]></SEQNO>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ISTRANSLATED><![CDATA[N]]></ISTRANSLATED>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ISSELECTIONCOLUMN><![CDATA[N]]></ISSELECTIONCOLUMN>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <AD_ELEMENT_ID><![CDATA[348]]></AD_ELEMENT_ID>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ISSESSIONATTR><![CDATA[N]]></ISSESSIONATTR>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <POSITION><![CDATA[4]]></POSITION>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <IMAGESIZEVALUESACTION><![CDATA[N]]></IMAGESIZEVALUESACTION>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ALLOWSORTING><![CDATA[Y]]></ALLOWSORTING>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ALLOWFILTERING><![CDATA[Y]]></ALLOWFILTERING>
+<!--62D06968B4C042DC9BA304AD9200AF83--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
+<!--62D06968B4C042DC9BA304AD9200AF83--></AD_COLUMN>
+
<!--6EEBA8A387AF4B6FA22AF4A6EFB78137--><AD_COLUMN>
<!--6EEBA8A387AF4B6FA22AF4A6EFB78137--> <AD_COLUMN_ID><![CDATA[6EEBA8A387AF4B6FA22AF4A6EFB78137]]></AD_COLUMN_ID>
<!--6EEBA8A387AF4B6FA22AF4A6EFB78137--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -1788,6 +2092,44 @@
<!--9114835A86C4480299EC334A6D6FC229--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
<!--9114835A86C4480299EC334A6D6FC229--></AD_COLUMN>
+<!--921745AD121C408EA8D7A31C45DC6961--><AD_COLUMN>
+<!--921745AD121C408EA8D7A31C45DC6961--> <AD_COLUMN_ID><![CDATA[921745AD121C408EA8D7A31C45DC6961]]></AD_COLUMN_ID>
+<!--921745AD121C408EA8D7A31C45DC6961--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--921745AD121C408EA8D7A31C45DC6961--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--921745AD121C408EA8D7A31C45DC6961--> <NAME><![CDATA[Created By]]></NAME>
+<!--921745AD121C408EA8D7A31C45DC6961--> <DESCRIPTION><![CDATA[User who created this records]]></DESCRIPTION>
+<!--921745AD121C408EA8D7A31C45DC6961--> <HELP><![CDATA[The Created By field indicates the user who created this record.]]></HELP>
+<!--921745AD121C408EA8D7A31C45DC6961--> <COLUMNNAME><![CDATA[Createdby]]></COLUMNNAME>
+<!--921745AD121C408EA8D7A31C45DC6961--> <AD_TABLE_ID><![CDATA[5DD50444BA0A4572A638798E3513503C]]></AD_TABLE_ID>
+<!--921745AD121C408EA8D7A31C45DC6961--> <AD_REFERENCE_ID><![CDATA[30]]></AD_REFERENCE_ID>
+<!--921745AD121C408EA8D7A31C45DC6961--> <FIELDLENGTH><![CDATA[32]]></FIELDLENGTH>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ISKEY><![CDATA[N]]></ISKEY>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ISPARENT><![CDATA[N]]></ISPARENT>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ISMANDATORY><![CDATA[Y]]></ISMANDATORY>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ISUPDATEABLE><![CDATA[N]]></ISUPDATEABLE>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ISIDENTIFIER><![CDATA[N]]></ISIDENTIFIER>
+<!--921745AD121C408EA8D7A31C45DC6961--> <SEQNO><![CDATA[60]]></SEQNO>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ISTRANSLATED><![CDATA[N]]></ISTRANSLATED>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ISSELECTIONCOLUMN><![CDATA[N]]></ISSELECTIONCOLUMN>
+<!--921745AD121C408EA8D7A31C45DC6961--> <AD_ELEMENT_ID><![CDATA[246]]></AD_ELEMENT_ID>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ISSESSIONATTR><![CDATA[N]]></ISSESSIONATTR>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
+<!--921745AD121C408EA8D7A31C45DC6961--> <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
+<!--921745AD121C408EA8D7A31C45DC6961--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--921745AD121C408EA8D7A31C45DC6961--> <POSITION><![CDATA[6]]></POSITION>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
+<!--921745AD121C408EA8D7A31C45DC6961--> <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
+<!--921745AD121C408EA8D7A31C45DC6961--> <IMAGESIZEVALUESACTION><![CDATA[N]]></IMAGESIZEVALUESACTION>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ALLOWSORTING><![CDATA[Y]]></ALLOWSORTING>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ALLOWFILTERING><![CDATA[Y]]></ALLOWFILTERING>
+<!--921745AD121C408EA8D7A31C45DC6961--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
+<!--921745AD121C408EA8D7A31C45DC6961--></AD_COLUMN>
+
<!--94D72DA8F86A45AAB2A3B3506FA57DA3--><AD_COLUMN>
<!--94D72DA8F86A45AAB2A3B3506FA57DA3--> <AD_COLUMN_ID><![CDATA[94D72DA8F86A45AAB2A3B3506FA57DA3]]></AD_COLUMN_ID>
<!--94D72DA8F86A45AAB2A3B3506FA57DA3--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -2854,6 +3196,45 @@
<!--DC7AD0F2652B4D948042EACABA6A034A--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
<!--DC7AD0F2652B4D948042EACABA6A034A--></AD_COLUMN>
+<!--DCE7AB7A233148FDB472025386FBE367--><AD_COLUMN>
+<!--DCE7AB7A233148FDB472025386FBE367--> <AD_COLUMN_ID><![CDATA[DCE7AB7A233148FDB472025386FBE367]]></AD_COLUMN_ID>
+<!--DCE7AB7A233148FDB472025386FBE367--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--DCE7AB7A233148FDB472025386FBE367--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--DCE7AB7A233148FDB472025386FBE367--> <NAME><![CDATA[Updated]]></NAME>
+<!--DCE7AB7A233148FDB472025386FBE367--> <DESCRIPTION><![CDATA[The date that this record was last updated]]></DESCRIPTION>
+<!--DCE7AB7A233148FDB472025386FBE367--> <HELP><![CDATA[The Updated field indicates the date that this record was updated.]]></HELP>
+<!--DCE7AB7A233148FDB472025386FBE367--> <COLUMNNAME><![CDATA[Updated]]></COLUMNNAME>
+<!--DCE7AB7A233148FDB472025386FBE367--> <AD_TABLE_ID><![CDATA[5DD50444BA0A4572A638798E3513503C]]></AD_TABLE_ID>
+<!--DCE7AB7A233148FDB472025386FBE367--> <AD_REFERENCE_ID><![CDATA[16]]></AD_REFERENCE_ID>
+<!--DCE7AB7A233148FDB472025386FBE367--> <FIELDLENGTH><![CDATA[19]]></FIELDLENGTH>
+<!--DCE7AB7A233148FDB472025386FBE367--> <DEFAULTVALUE><![CDATA[@#Date@]]></DEFAULTVALUE>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ISKEY><![CDATA[N]]></ISKEY>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ISPARENT><![CDATA[N]]></ISPARENT>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ISMANDATORY><![CDATA[Y]]></ISMANDATORY>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ISUPDATEABLE><![CDATA[N]]></ISUPDATEABLE>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ISIDENTIFIER><![CDATA[N]]></ISIDENTIFIER>
+<!--DCE7AB7A233148FDB472025386FBE367--> <SEQNO><![CDATA[70]]></SEQNO>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ISTRANSLATED><![CDATA[N]]></ISTRANSLATED>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ISSELECTIONCOLUMN><![CDATA[N]]></ISSELECTIONCOLUMN>
+<!--DCE7AB7A233148FDB472025386FBE367--> <AD_ELEMENT_ID><![CDATA[607]]></AD_ELEMENT_ID>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ISSESSIONATTR><![CDATA[N]]></ISSESSIONATTR>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
+<!--DCE7AB7A233148FDB472025386FBE367--> <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
+<!--DCE7AB7A233148FDB472025386FBE367--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--DCE7AB7A233148FDB472025386FBE367--> <POSITION><![CDATA[7]]></POSITION>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
+<!--DCE7AB7A233148FDB472025386FBE367--> <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
+<!--DCE7AB7A233148FDB472025386FBE367--> <IMAGESIZEVALUESACTION><![CDATA[N]]></IMAGESIZEVALUESACTION>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ALLOWSORTING><![CDATA[Y]]></ALLOWSORTING>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ALLOWFILTERING><![CDATA[Y]]></ALLOWFILTERING>
+<!--DCE7AB7A233148FDB472025386FBE367--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
+<!--DCE7AB7A233148FDB472025386FBE367--></AD_COLUMN>
+
<!--DF4AE4BC35C049CC8E7BB1EFFB9DC9B8--><AD_COLUMN>
<!--DF4AE4BC35C049CC8E7BB1EFFB9DC9B8--> <AD_COLUMN_ID><![CDATA[DF4AE4BC35C049CC8E7BB1EFFB9DC9B8]]></AD_COLUMN_ID>
<!--DF4AE4BC35C049CC8E7BB1EFFB9DC9B8--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -2895,6 +3276,43 @@
<!--DF4AE4BC35C049CC8E7BB1EFFB9DC9B8--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
<!--DF4AE4BC35C049CC8E7BB1EFFB9DC9B8--></AD_COLUMN>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--><AD_COLUMN>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <AD_COLUMN_ID><![CDATA[DFCA8FA853CB497FBC29DABC89E6C404]]></AD_COLUMN_ID>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <NAME><![CDATA[Is Online]]></NAME>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <COLUMNNAME><![CDATA[Isonline]]></COLUMNNAME>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <AD_TABLE_ID><![CDATA[5DD50444BA0A4572A638798E3513503C]]></AD_TABLE_ID>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <AD_REFERENCE_ID><![CDATA[20]]></AD_REFERENCE_ID>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <FIELDLENGTH><![CDATA[1]]></FIELDLENGTH>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <DEFAULTVALUE><![CDATA[Y]]></DEFAULTVALUE>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ISKEY><![CDATA[N]]></ISKEY>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ISPARENT><![CDATA[N]]></ISPARENT>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ISMANDATORY><![CDATA[Y]]></ISMANDATORY>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ISUPDATEABLE><![CDATA[Y]]></ISUPDATEABLE>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ISIDENTIFIER><![CDATA[N]]></ISIDENTIFIER>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <SEQNO><![CDATA[120]]></SEQNO>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ISTRANSLATED><![CDATA[N]]></ISTRANSLATED>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ISSELECTIONCOLUMN><![CDATA[N]]></ISSELECTIONCOLUMN>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <AD_ELEMENT_ID><![CDATA[5DFC15E4F8284723893EEDC347465D59]]></AD_ELEMENT_ID>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ISSESSIONATTR><![CDATA[N]]></ISSESSIONATTR>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <POSITION><![CDATA[12]]></POSITION>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <IMAGESIZEVALUESACTION><![CDATA[N]]></IMAGESIZEVALUESACTION>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ALLOWSORTING><![CDATA[Y]]></ALLOWSORTING>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ALLOWFILTERING><![CDATA[Y]]></ALLOWFILTERING>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
+<!--DFCA8FA853CB497FBC29DABC89E6C404--></AD_COLUMN>
+
<!--E17A111BDE724A388D960232D6C05FF0--><AD_COLUMN>
<!--E17A111BDE724A388D960232D6C05FF0--> <AD_COLUMN_ID><![CDATA[E17A111BDE724A388D960232D6C05FF0]]></AD_COLUMN_ID>
<!--E17A111BDE724A388D960232D6C05FF0--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -3127,6 +3545,42 @@
<!--F0A5AC4EC9784BFBA610AAB3BD3E9627--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
<!--F0A5AC4EC9784BFBA610AAB3BD3E9627--></AD_COLUMN>
+<!--F29790E6AF1E45568A994C52B0FDF934--><AD_COLUMN>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <AD_COLUMN_ID><![CDATA[F29790E6AF1E45568A994C52B0FDF934]]></AD_COLUMN_ID>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <NAME><![CDATA[Cache session id]]></NAME>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <COLUMNNAME><![CDATA[Cache_Session_ID]]></COLUMNNAME>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <AD_TABLE_ID><![CDATA[5DD50444BA0A4572A638798E3513503C]]></AD_TABLE_ID>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <AD_REFERENCE_ID><![CDATA[14]]></AD_REFERENCE_ID>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <FIELDLENGTH><![CDATA[32]]></FIELDLENGTH>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ISKEY><![CDATA[N]]></ISKEY>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ISPARENT><![CDATA[N]]></ISPARENT>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ISMANDATORY><![CDATA[N]]></ISMANDATORY>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ISUPDATEABLE><![CDATA[Y]]></ISUPDATEABLE>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ISIDENTIFIER><![CDATA[N]]></ISIDENTIFIER>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <SEQNO><![CDATA[110]]></SEQNO>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ISTRANSLATED><![CDATA[N]]></ISTRANSLATED>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ISSELECTIONCOLUMN><![CDATA[N]]></ISSELECTIONCOLUMN>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <AD_ELEMENT_ID><![CDATA[182FD651C020405DB1BD65E863D61D24]]></AD_ELEMENT_ID>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ISSESSIONATTR><![CDATA[N]]></ISSESSIONATTR>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ISSECONDARYKEY><![CDATA[N]]></ISSECONDARYKEY>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ISDESENCRYPTABLE><![CDATA[N]]></ISDESENCRYPTABLE>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <POSITION><![CDATA[11]]></POSITION>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ISTRANSIENT><![CDATA[N]]></ISTRANSIENT>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ISAUTOSAVE><![CDATA[Y]]></ISAUTOSAVE>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <VALIDATEONNEW><![CDATA[Y]]></VALIDATEONNEW>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <IMAGESIZEVALUESACTION><![CDATA[N]]></IMAGESIZEVALUESACTION>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ISUSEDSEQUENCE><![CDATA[N]]></ISUSEDSEQUENCE>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ALLOWSORTING><![CDATA[Y]]></ALLOWSORTING>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ALLOWFILTERING><![CDATA[Y]]></ALLOWFILTERING>
+<!--F29790E6AF1E45568A994C52B0FDF934--> <ALLOWED_CROSS_ORG_LINK><![CDATA[N]]></ALLOWED_CROSS_ORG_LINK>
+<!--F29790E6AF1E45568A994C52B0FDF934--></AD_COLUMN>
+
<!--F43B91E4C3404CE7B93D41EBEEC68AC7--><AD_COLUMN>
<!--F43B91E4C3404CE7B93D41EBEEC68AC7--> <AD_COLUMN_ID><![CDATA[F43B91E4C3404CE7B93D41EBEEC68AC7]]></AD_COLUMN_ID>
<!--F43B91E4C3404CE7B93D41EBEEC68AC7--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/src-db/database/sourcedata/AD_ELEMENT.xml b/src-db/database/sourcedata/AD_ELEMENT.xml
--- a/src-db/database/sourcedata/AD_ELEMENT.xml
+++ b/src-db/database/sourcedata/AD_ELEMENT.xml
@@ -264,6 +264,18 @@
<!--9B02885ACED748A0B84154BD7EE951ED--> <ISGLOSSARY><![CDATA[N]]></ISGLOSSARY>
<!--9B02885ACED748A0B84154BD7EE951ED--></AD_ELEMENT>
+<!--A74F058C6F86459887D5DB6F3B69F929--><AD_ELEMENT>
+<!--A74F058C6F86459887D5DB6F3B69F929--> <AD_ELEMENT_ID><![CDATA[A74F058C6F86459887D5DB6F3B69F929]]></AD_ELEMENT_ID>
+<!--A74F058C6F86459887D5DB6F3B69F929--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--A74F058C6F86459887D5DB6F3B69F929--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--A74F058C6F86459887D5DB6F3B69F929--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--A74F058C6F86459887D5DB6F3B69F929--> <COLUMNNAME><![CDATA[Obmobc_Logclient_Readable_ID]]></COLUMNNAME>
+<!--A74F058C6F86459887D5DB6F3B69F929--> <NAME><![CDATA[Obmobc_Logclient_Readable_ID]]></NAME>
+<!--A74F058C6F86459887D5DB6F3B69F929--> <PRINTNAME><![CDATA[Obmobc_Logclient_Readable_ID]]></PRINTNAME>
+<!--A74F058C6F86459887D5DB6F3B69F929--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--A74F058C6F86459887D5DB6F3B69F929--> <ISGLOSSARY><![CDATA[N]]></ISGLOSSARY>
+<!--A74F058C6F86459887D5DB6F3B69F929--></AD_ELEMENT>
+
<!--AC753E2CBC8743B0BE36B5F0E30EF7B6--><AD_ELEMENT>
<!--AC753E2CBC8743B0BE36B5F0E30EF7B6--> <AD_ELEMENT_ID><![CDATA[AC753E2CBC8743B0BE36B5F0E30EF7B6]]></AD_ELEMENT_ID>
<!--AC753E2CBC8743B0BE36B5F0E30EF7B6--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/src-db/database/sourcedata/AD_FIELD.xml b/src-db/database/sourcedata/AD_FIELD.xml
--- a/src-db/database/sourcedata/AD_FIELD.xml
+++ b/src-db/database/sourcedata/AD_FIELD.xml
@@ -1,5 +1,35 @@
<?xml version='1.0' encoding='UTF-8'?>
<data>
+<!--0348573849FB4F5DA54C0F571B06E60D--><AD_FIELD>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <AD_FIELD_ID><![CDATA[0348573849FB4F5DA54C0F571B06E60D]]></AD_FIELD_ID>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <NAME><![CDATA[Creation Date]]></NAME>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <DESCRIPTION><![CDATA[The date that this record is completed.]]></DESCRIPTION>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <HELP><![CDATA[The Created field indicates the date that this record was created.]]></HELP>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <ISCENTRALLYMAINTAINED><![CDATA[Y]]></ISCENTRALLYMAINTAINED>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <AD_TAB_ID><![CDATA[6805A073CC3B469AAD3F81DE192A6D27]]></AD_TAB_ID>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <AD_COLUMN_ID><![CDATA[16FAA8B462AD4A069191D6D70DE15FD2]]></AD_COLUMN_ID>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <PROPERTY><![CDATA[creationDate]]></PROPERTY>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <DISPLAYLENGTH><![CDATA[0]]></DISPLAYLENGTH>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <ISREADONLY><![CDATA[N]]></ISREADONLY>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <SEQNO><![CDATA[70]]></SEQNO>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <ISSAMELINE><![CDATA[N]]></ISSAMELINE>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <ISFIELDONLY><![CDATA[N]]></ISFIELDONLY>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <SHOWINRELATION><![CDATA[Y]]></SHOWINRELATION>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <ISFIRSTFOCUSEDFIELD><![CDATA[N]]></ISFIRSTFOCUSEDFIELD>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <GRID_SEQNO><![CDATA[10]]></GRID_SEQNO>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <STARTINODDCOLUMN><![CDATA[N]]></STARTINODDCOLUMN>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <STARTNEWLINE><![CDATA[N]]></STARTNEWLINE>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <ISSHOWNINSTATUSBAR><![CDATA[N]]></ISSHOWNINSTATUSBAR>
+<!--0348573849FB4F5DA54C0F571B06E60D--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
+<!--0348573849FB4F5DA54C0F571B06E60D--></AD_FIELD>
+
<!--05AA59ACE1F1496CB89EFBF25734EC13--><AD_FIELD>
<!--05AA59ACE1F1496CB89EFBF25734EC13--> <AD_FIELD_ID><![CDATA[05AA59ACE1F1496CB89EFBF25734EC13]]></AD_FIELD_ID>
<!--05AA59ACE1F1496CB89EFBF25734EC13--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -747,6 +777,33 @@
<!--67182A781216444783A9652CB5E0B7C2--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
<!--67182A781216444783A9652CB5E0B7C2--></AD_FIELD>
+<!--689F931CA94C4377ACD1E41732BEB5DA--><AD_FIELD>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <AD_FIELD_ID><![CDATA[689F931CA94C4377ACD1E41732BEB5DA]]></AD_FIELD_ID>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <NAME><![CDATA[Message]]></NAME>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <ISCENTRALLYMAINTAINED><![CDATA[Y]]></ISCENTRALLYMAINTAINED>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <AD_TAB_ID><![CDATA[6805A073CC3B469AAD3F81DE192A6D27]]></AD_TAB_ID>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <AD_COLUMN_ID><![CDATA[3DA27E03446C42EE91714FD55C8C8C46]]></AD_COLUMN_ID>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <DISPLAYLENGTH><![CDATA[2000]]></DISPLAYLENGTH>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <ISREADONLY><![CDATA[N]]></ISREADONLY>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <SEQNO><![CDATA[40]]></SEQNO>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <ISSAMELINE><![CDATA[N]]></ISSAMELINE>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <ISFIELDONLY><![CDATA[N]]></ISFIELDONLY>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <SHOWINRELATION><![CDATA[Y]]></SHOWINRELATION>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <ISFIRSTFOCUSEDFIELD><![CDATA[N]]></ISFIRSTFOCUSEDFIELD>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <GRID_SEQNO><![CDATA[40]]></GRID_SEQNO>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <STARTINODDCOLUMN><![CDATA[N]]></STARTINODDCOLUMN>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <STARTNEWLINE><![CDATA[N]]></STARTNEWLINE>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <ISSHOWNINSTATUSBAR><![CDATA[N]]></ISSHOWNINSTATUSBAR>
+<!--689F931CA94C4377ACD1E41732BEB5DA--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
+<!--689F931CA94C4377ACD1E41732BEB5DA--></AD_FIELD>
+
<!--69328821E9C74C519BDD20E5F6B0DC44--><AD_FIELD>
<!--69328821E9C74C519BDD20E5F6B0DC44--> <AD_FIELD_ID><![CDATA[69328821E9C74C519BDD20E5F6B0DC44]]></AD_FIELD_ID>
<!--69328821E9C74C519BDD20E5F6B0DC44--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -801,6 +858,33 @@
<!--6D7FDB3A5F384B97B8D5E128042D1D74--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
<!--6D7FDB3A5F384B97B8D5E128042D1D74--></AD_FIELD>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--><AD_FIELD>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <AD_FIELD_ID><![CDATA[6F2E70E933284F1F8ACCF1618A162FCD]]></AD_FIELD_ID>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <NAME><![CDATA[Client]]></NAME>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <DESCRIPTION><![CDATA[Client for this installation.]]></DESCRIPTION>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <HELP><![CDATA[A Client is a company or a legal entity. You cannot share data between Clients.]]></HELP>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <ISCENTRALLYMAINTAINED><![CDATA[Y]]></ISCENTRALLYMAINTAINED>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <AD_TAB_ID><![CDATA[6805A073CC3B469AAD3F81DE192A6D27]]></AD_TAB_ID>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <AD_COLUMN_ID><![CDATA[098756C2DB1A4A57AF6C8D4595849E30]]></AD_COLUMN_ID>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <ISDISPLAYED><![CDATA[N]]></ISDISPLAYED>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <DISPLAYLENGTH><![CDATA[32]]></DISPLAYLENGTH>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <ISREADONLY><![CDATA[N]]></ISREADONLY>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <ISSAMELINE><![CDATA[N]]></ISSAMELINE>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <ISFIELDONLY><![CDATA[N]]></ISFIELDONLY>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <SHOWINRELATION><![CDATA[N]]></SHOWINRELATION>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <ISFIRSTFOCUSEDFIELD><![CDATA[N]]></ISFIRSTFOCUSEDFIELD>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <STARTINODDCOLUMN><![CDATA[N]]></STARTINODDCOLUMN>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <STARTNEWLINE><![CDATA[N]]></STARTNEWLINE>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <ISSHOWNINSTATUSBAR><![CDATA[N]]></ISSHOWNINSTATUSBAR>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
+<!--6F2E70E933284F1F8ACCF1618A162FCD--></AD_FIELD>
+
<!--76D547ED7B1342E9A11CA95522C67009--><AD_FIELD>
<!--76D547ED7B1342E9A11CA95522C67009--> <AD_FIELD_ID><![CDATA[76D547ED7B1342E9A11CA95522C67009]]></AD_FIELD_ID>
<!--76D547ED7B1342E9A11CA95522C67009--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -1020,6 +1104,32 @@
<!--9BE3230EFAF74B2EB87A6FCC685C5B96--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
<!--9BE3230EFAF74B2EB87A6FCC685C5B96--></AD_FIELD>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--><AD_FIELD>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <AD_FIELD_ID><![CDATA[9DC0DA6E69C94473B2F4B4E90E569B2D]]></AD_FIELD_ID>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <NAME><![CDATA[Unique cache session identifier]]></NAME>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <ISCENTRALLYMAINTAINED><![CDATA[Y]]></ISCENTRALLYMAINTAINED>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <AD_TAB_ID><![CDATA[6805A073CC3B469AAD3F81DE192A6D27]]></AD_TAB_ID>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <AD_COLUMN_ID><![CDATA[F29790E6AF1E45568A994C52B0FDF934]]></AD_COLUMN_ID>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <DISPLAYLENGTH><![CDATA[32]]></DISPLAYLENGTH>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <ISREADONLY><![CDATA[N]]></ISREADONLY>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <SEQNO><![CDATA[50]]></SEQNO>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <ISSAMELINE><![CDATA[N]]></ISSAMELINE>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <ISFIELDONLY><![CDATA[N]]></ISFIELDONLY>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <SHOWINRELATION><![CDATA[Y]]></SHOWINRELATION>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <ISFIRSTFOCUSEDFIELD><![CDATA[N]]></ISFIRSTFOCUSEDFIELD>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <STARTINODDCOLUMN><![CDATA[N]]></STARTINODDCOLUMN>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <STARTNEWLINE><![CDATA[N]]></STARTNEWLINE>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <ISSHOWNINSTATUSBAR><![CDATA[N]]></ISSHOWNINSTATUSBAR>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
+<!--9DC0DA6E69C94473B2F4B4E90E569B2D--></AD_FIELD>
+
<!--9DC560B9CF824B17B4C6F10B9B1B7389--><AD_FIELD>
<!--9DC560B9CF824B17B4C6F10B9B1B7389--> <AD_FIELD_ID><![CDATA[9DC560B9CF824B17B4C6F10B9B1B7389]]></AD_FIELD_ID>
<!--9DC560B9CF824B17B4C6F10B9B1B7389--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -1074,6 +1184,34 @@
<!--9F937F37ABA64DCB9CF0FE31AF9484A3--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
<!--9F937F37ABA64DCB9CF0FE31AF9484A3--></AD_FIELD>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--><AD_FIELD>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <AD_FIELD_ID><![CDATA[A5A017ABC8EC4170964B3B6DACD32CCA]]></AD_FIELD_ID>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <NAME><![CDATA[Organization]]></NAME>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <DESCRIPTION><![CDATA[Organizational entity within client]]></DESCRIPTION>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <HELP><![CDATA[An organization is a unit of your client or legal entity - examples are store, department. You can share data between organizations.]]></HELP>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <ISCENTRALLYMAINTAINED><![CDATA[Y]]></ISCENTRALLYMAINTAINED>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <AD_TAB_ID><![CDATA[6805A073CC3B469AAD3F81DE192A6D27]]></AD_TAB_ID>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <AD_COLUMN_ID><![CDATA[02F9D71B5A9D41A285B2346EED5EE9F1]]></AD_COLUMN_ID>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <DISPLAYLENGTH><![CDATA[32]]></DISPLAYLENGTH>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <ISREADONLY><![CDATA[N]]></ISREADONLY>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <SEQNO><![CDATA[10]]></SEQNO>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <ISSAMELINE><![CDATA[N]]></ISSAMELINE>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <ISFIELDONLY><![CDATA[N]]></ISFIELDONLY>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <SHOWINRELATION><![CDATA[N]]></SHOWINRELATION>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <ISFIRSTFOCUSEDFIELD><![CDATA[N]]></ISFIRSTFOCUSEDFIELD>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <STARTINODDCOLUMN><![CDATA[N]]></STARTINODDCOLUMN>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <STARTNEWLINE><![CDATA[N]]></STARTNEWLINE>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <ISSHOWNINSTATUSBAR><![CDATA[N]]></ISSHOWNINSTATUSBAR>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
+<!--A5A017ABC8EC4170964B3B6DACD32CCA--></AD_FIELD>
+
<!--A6F92DF687F74F1790F615893EC93F4D--><AD_FIELD>
<!--A6F92DF687F74F1790F615893EC93F4D--> <AD_FIELD_ID><![CDATA[A6F92DF687F74F1790F615893EC93F4D]]></AD_FIELD_ID>
<!--A6F92DF687F74F1790F615893EC93F4D--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -1242,6 +1380,31 @@
<!--B6FDC08817DF495FAE81C59328CE4BFC--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
<!--B6FDC08817DF495FAE81C59328CE4BFC--></AD_FIELD>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--><AD_FIELD>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <AD_FIELD_ID><![CDATA[B9EBAFF8E47442E3AB98214CD32CBDF8]]></AD_FIELD_ID>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <NAME><![CDATA[Obmobc_Logclient_Readable_ID]]></NAME>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <ISCENTRALLYMAINTAINED><![CDATA[Y]]></ISCENTRALLYMAINTAINED>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <AD_TAB_ID><![CDATA[6805A073CC3B469AAD3F81DE192A6D27]]></AD_TAB_ID>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <AD_COLUMN_ID><![CDATA[2E085D7854F14AF280BB9FC72609E9E8]]></AD_COLUMN_ID>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <ISDISPLAYED><![CDATA[N]]></ISDISPLAYED>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <DISPLAYLENGTH><![CDATA[32]]></DISPLAYLENGTH>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <ISREADONLY><![CDATA[N]]></ISREADONLY>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <ISSAMELINE><![CDATA[N]]></ISSAMELINE>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <ISFIELDONLY><![CDATA[N]]></ISFIELDONLY>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <SHOWINRELATION><![CDATA[N]]></SHOWINRELATION>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <ISFIRSTFOCUSEDFIELD><![CDATA[N]]></ISFIRSTFOCUSEDFIELD>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <STARTINODDCOLUMN><![CDATA[N]]></STARTINODDCOLUMN>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <STARTNEWLINE><![CDATA[N]]></STARTNEWLINE>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <ISSHOWNINSTATUSBAR><![CDATA[N]]></ISSHOWNINSTATUSBAR>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
+<!--B9EBAFF8E47442E3AB98214CD32CBDF8--></AD_FIELD>
+
<!--BD4068894627477A8D92A921DDA4F251--><AD_FIELD>
<!--BD4068894627477A8D92A921DDA4F251--> <AD_FIELD_ID><![CDATA[BD4068894627477A8D92A921DDA4F251]]></AD_FIELD_ID>
<!--BD4068894627477A8D92A921DDA4F251--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -1296,6 +1459,35 @@
<!--BE49CB946EB04B17BE8367E03586DCA4--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
<!--BE49CB946EB04B17BE8367E03586DCA4--></AD_FIELD>
+<!--C191911B17C54AF49922C4E44FAEFBF4--><AD_FIELD>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <AD_FIELD_ID><![CDATA[C191911B17C54AF49922C4E44FAEFBF4]]></AD_FIELD_ID>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <NAME><![CDATA[Created By]]></NAME>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <DESCRIPTION><![CDATA[User who created this records]]></DESCRIPTION>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <HELP><![CDATA[The Created By field indicates the user who created this record.]]></HELP>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <ISCENTRALLYMAINTAINED><![CDATA[Y]]></ISCENTRALLYMAINTAINED>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <AD_TAB_ID><![CDATA[6805A073CC3B469AAD3F81DE192A6D27]]></AD_TAB_ID>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <AD_COLUMN_ID><![CDATA[921745AD121C408EA8D7A31C45DC6961]]></AD_COLUMN_ID>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <DISPLAYLENGTH><![CDATA[0]]></DISPLAYLENGTH>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <ISREADONLY><![CDATA[N]]></ISREADONLY>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <SEQNO><![CDATA[80]]></SEQNO>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <ISSAMELINE><![CDATA[N]]></ISSAMELINE>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <ISFIELDONLY><![CDATA[N]]></ISFIELDONLY>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <SHOWINRELATION><![CDATA[Y]]></SHOWINRELATION>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <ISFIRSTFOCUSEDFIELD><![CDATA[N]]></ISFIRSTFOCUSEDFIELD>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <GRID_SEQNO><![CDATA[20]]></GRID_SEQNO>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <STARTINODDCOLUMN><![CDATA[N]]></STARTINODDCOLUMN>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <STARTNEWLINE><![CDATA[N]]></STARTNEWLINE>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <ISSHOWNINSTATUSBAR><![CDATA[N]]></ISSHOWNINSTATUSBAR>
+<!--C191911B17C54AF49922C4E44FAEFBF4--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
+<!--C191911B17C54AF49922C4E44FAEFBF4--></AD_FIELD>
+
<!--C2DBA4B2BC1A4635846539B492C13018--><AD_FIELD>
<!--C2DBA4B2BC1A4635846539B492C13018--> <AD_FIELD_ID><![CDATA[C2DBA4B2BC1A4635846539B492C13018]]></AD_FIELD_ID>
<!--C2DBA4B2BC1A4635846539B492C13018--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -1352,6 +1544,33 @@
<!--C79AF88EE12F4776B52098AE8A4BF429--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
<!--C79AF88EE12F4776B52098AE8A4BF429--></AD_FIELD>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--><AD_FIELD>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <AD_FIELD_ID><![CDATA[C8894A77297B45AAA7DF4D32E2702CBF]]></AD_FIELD_ID>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <NAME><![CDATA[Device Identifier]]></NAME>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <ISCENTRALLYMAINTAINED><![CDATA[Y]]></ISCENTRALLYMAINTAINED>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <AD_TAB_ID><![CDATA[6805A073CC3B469AAD3F81DE192A6D27]]></AD_TAB_ID>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <AD_COLUMN_ID><![CDATA[06521F129AD94EB5B40DF95DC0414BCF]]></AD_COLUMN_ID>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <DISPLAYLENGTH><![CDATA[255]]></DISPLAYLENGTH>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <ISREADONLY><![CDATA[N]]></ISREADONLY>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <SEQNO><![CDATA[30]]></SEQNO>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <ISSAMELINE><![CDATA[N]]></ISSAMELINE>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <ISFIELDONLY><![CDATA[N]]></ISFIELDONLY>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <SHOWINRELATION><![CDATA[Y]]></SHOWINRELATION>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <ISFIRSTFOCUSEDFIELD><![CDATA[N]]></ISFIRSTFOCUSEDFIELD>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <GRID_SEQNO><![CDATA[30]]></GRID_SEQNO>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <STARTINODDCOLUMN><![CDATA[N]]></STARTINODDCOLUMN>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <STARTNEWLINE><![CDATA[N]]></STARTNEWLINE>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <ISSHOWNINSTATUSBAR><![CDATA[N]]></ISSHOWNINSTATUSBAR>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
+<!--C8894A77297B45AAA7DF4D32E2702CBF--></AD_FIELD>
+
<!--D7C95D909D684C0EBFEE578AE76164AC--><AD_FIELD>
<!--D7C95D909D684C0EBFEE578AE76164AC--> <AD_FIELD_ID><![CDATA[D7C95D909D684C0EBFEE578AE76164AC]]></AD_FIELD_ID>
<!--D7C95D909D684C0EBFEE578AE76164AC--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -1382,6 +1601,36 @@
<!--D7C95D909D684C0EBFEE578AE76164AC--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
<!--D7C95D909D684C0EBFEE578AE76164AC--></AD_FIELD>
+<!--D98F51C575844AD4B64B3F696407F5B9--><AD_FIELD>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <AD_FIELD_ID><![CDATA[D98F51C575844AD4B64B3F696407F5B9]]></AD_FIELD_ID>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <NAME><![CDATA[Active]]></NAME>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <DESCRIPTION><![CDATA[A flag indicating whether this record is available for use or de-activated.]]></DESCRIPTION>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <HELP><![CDATA[There are two methods of making records unavailable in the system: One is to delete the record, the other is to de-activate the record. A de-activated record is not available for selection, but available for reporting. There are two reasons for de-activating and not deleting records:
+(1) The system requires the record for auditing purposes.
+(2) The record is referenced by other records. E.g., you cannot delete a Business Partner, if there are existing invoices for it. By de-activating the Business Partner you prevent it from being used in future transactions.]]></HELP>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <ISCENTRALLYMAINTAINED><![CDATA[Y]]></ISCENTRALLYMAINTAINED>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <AD_TAB_ID><![CDATA[6805A073CC3B469AAD3F81DE192A6D27]]></AD_TAB_ID>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <AD_COLUMN_ID><![CDATA[62D06968B4C042DC9BA304AD9200AF83]]></AD_COLUMN_ID>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <DISPLAYLENGTH><![CDATA[1]]></DISPLAYLENGTH>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <ISREADONLY><![CDATA[N]]></ISREADONLY>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <SEQNO><![CDATA[20]]></SEQNO>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <ISSAMELINE><![CDATA[N]]></ISSAMELINE>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <ISFIELDONLY><![CDATA[N]]></ISFIELDONLY>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <SHOWINRELATION><![CDATA[N]]></SHOWINRELATION>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <ISFIRSTFOCUSEDFIELD><![CDATA[N]]></ISFIRSTFOCUSEDFIELD>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <STARTINODDCOLUMN><![CDATA[N]]></STARTINODDCOLUMN>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <STARTNEWLINE><![CDATA[N]]></STARTNEWLINE>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <ISSHOWNINSTATUSBAR><![CDATA[N]]></ISSHOWNINSTATUSBAR>
+<!--D98F51C575844AD4B64B3F696407F5B9--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
+<!--D98F51C575844AD4B64B3F696407F5B9--></AD_FIELD>
+
<!--DAF3972855064C10A3BBFDFC88A05671--><AD_FIELD>
<!--DAF3972855064C10A3BBFDFC88A05671--> <AD_FIELD_ID><![CDATA[DAF3972855064C10A3BBFDFC88A05671]]></AD_FIELD_ID>
<!--DAF3972855064C10A3BBFDFC88A05671--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
@@ -1635,6 +1884,32 @@
<!--ED5E3581518846B19D40050B4D1814BF--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
<!--ED5E3581518846B19D40050B4D1814BF--></AD_FIELD>
+<!--F7F3E7C505504C008CF4C5570C140342--><AD_FIELD>
+<!--F7F3E7C505504C008CF4C5570C140342--> <AD_FIELD_ID><![CDATA[F7F3E7C505504C008CF4C5570C140342]]></AD_FIELD_ID>
+<!--F7F3E7C505504C008CF4C5570C140342--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--F7F3E7C505504C008CF4C5570C140342--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--F7F3E7C505504C008CF4C5570C140342--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--F7F3E7C505504C008CF4C5570C140342--> <NAME><![CDATA[Is Online]]></NAME>
+<!--F7F3E7C505504C008CF4C5570C140342--> <ISCENTRALLYMAINTAINED><![CDATA[Y]]></ISCENTRALLYMAINTAINED>
+<!--F7F3E7C505504C008CF4C5570C140342--> <AD_TAB_ID><![CDATA[6805A073CC3B469AAD3F81DE192A6D27]]></AD_TAB_ID>
+<!--F7F3E7C505504C008CF4C5570C140342--> <AD_COLUMN_ID><![CDATA[DFCA8FA853CB497FBC29DABC89E6C404]]></AD_COLUMN_ID>
+<!--F7F3E7C505504C008CF4C5570C140342--> <IGNOREINWAD><![CDATA[N]]></IGNOREINWAD>
+<!--F7F3E7C505504C008CF4C5570C140342--> <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
+<!--F7F3E7C505504C008CF4C5570C140342--> <DISPLAYLENGTH><![CDATA[1]]></DISPLAYLENGTH>
+<!--F7F3E7C505504C008CF4C5570C140342--> <ISREADONLY><![CDATA[N]]></ISREADONLY>
+<!--F7F3E7C505504C008CF4C5570C140342--> <SEQNO><![CDATA[60]]></SEQNO>
+<!--F7F3E7C505504C008CF4C5570C140342--> <ISSAMELINE><![CDATA[N]]></ISSAMELINE>
+<!--F7F3E7C505504C008CF4C5570C140342--> <ISFIELDONLY><![CDATA[N]]></ISFIELDONLY>
+<!--F7F3E7C505504C008CF4C5570C140342--> <ISENCRYPTED><![CDATA[N]]></ISENCRYPTED>
+<!--F7F3E7C505504C008CF4C5570C140342--> <SHOWINRELATION><![CDATA[N]]></SHOWINRELATION>
+<!--F7F3E7C505504C008CF4C5570C140342--> <ISFIRSTFOCUSEDFIELD><![CDATA[N]]></ISFIRSTFOCUSEDFIELD>
+<!--F7F3E7C505504C008CF4C5570C140342--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--F7F3E7C505504C008CF4C5570C140342--> <STARTINODDCOLUMN><![CDATA[N]]></STARTINODDCOLUMN>
+<!--F7F3E7C505504C008CF4C5570C140342--> <STARTNEWLINE><![CDATA[N]]></STARTNEWLINE>
+<!--F7F3E7C505504C008CF4C5570C140342--> <ISSHOWNINSTATUSBAR><![CDATA[N]]></ISSHOWNINSTATUSBAR>
+<!--F7F3E7C505504C008CF4C5570C140342--> <EM_OBUIAPP_SHOWSUMMARY><![CDATA[N]]></EM_OBUIAPP_SHOWSUMMARY>
+<!--F7F3E7C505504C008CF4C5570C140342--></AD_FIELD>
+
<!--F855CB904FDA42A4B178F83E21EACD8A--><AD_FIELD>
<!--F855CB904FDA42A4B178F83E21EACD8A--> <AD_FIELD_ID><![CDATA[F855CB904FDA42A4B178F83E21EACD8A]]></AD_FIELD_ID>
<!--F855CB904FDA42A4B178F83E21EACD8A--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/src-db/database/sourcedata/AD_MENU.xml b/src-db/database/sourcedata/AD_MENU.xml
--- a/src-db/database/sourcedata/AD_MENU.xml
+++ b/src-db/database/sourcedata/AD_MENU.xml
@@ -14,6 +14,19 @@
<!--6AE8F3571E2D41B19442BCE024D38247--> <OPENLINKINBROWSER><![CDATA[N]]></OPENLINKINBROWSER>
<!--6AE8F3571E2D41B19442BCE024D38247--></AD_MENU>
+<!--C07EAA881C87428FA6CEB3357E4E85DF--><AD_MENU>
+<!--C07EAA881C87428FA6CEB3357E4E85DF--> <AD_MENU_ID><![CDATA[C07EAA881C87428FA6CEB3357E4E85DF]]></AD_MENU_ID>
+<!--C07EAA881C87428FA6CEB3357E4E85DF--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--C07EAA881C87428FA6CEB3357E4E85DF--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--C07EAA881C87428FA6CEB3357E4E85DF--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--C07EAA881C87428FA6CEB3357E4E85DF--> <NAME><![CDATA[Human Readable Client Log]]></NAME>
+<!--C07EAA881C87428FA6CEB3357E4E85DF--> <ISSUMMARY><![CDATA[N]]></ISSUMMARY>
+<!--C07EAA881C87428FA6CEB3357E4E85DF--> <ACTION><![CDATA[W]]></ACTION>
+<!--C07EAA881C87428FA6CEB3357E4E85DF--> <AD_WINDOW_ID><![CDATA[2BEABA28D242420780C5EFA209B6A286]]></AD_WINDOW_ID>
+<!--C07EAA881C87428FA6CEB3357E4E85DF--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--C07EAA881C87428FA6CEB3357E4E85DF--> <OPENLINKINBROWSER><![CDATA[N]]></OPENLINKINBROWSER>
+<!--C07EAA881C87428FA6CEB3357E4E85DF--></AD_MENU>
+
<!--DC29352C27464C76A80A208FE110583C--><AD_MENU>
<!--DC29352C27464C76A80A208FE110583C--> <AD_MENU_ID><![CDATA[DC29352C27464C76A80A208FE110583C]]></AD_MENU_ID>
<!--DC29352C27464C76A80A208FE110583C--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/src-db/database/sourcedata/AD_PREFERENCE.xml b/src-db/database/sourcedata/AD_PREFERENCE.xml
--- a/src-db/database/sourcedata/AD_PREFERENCE.xml
+++ b/src-db/database/sourcedata/AD_PREFERENCE.xml
@@ -77,6 +77,17 @@
<!--7102378FD46F49A3A38B22D08A4A81D1--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
<!--7102378FD46F49A3A38B22D08A4A81D1--></AD_PREFERENCE>
+<!--7C18BC39920C417F92D14FFD0778FB4F--><AD_PREFERENCE>
+<!--7C18BC39920C417F92D14FFD0778FB4F--> <AD_PREFERENCE_ID><![CDATA[7C18BC39920C417F92D14FFD0778FB4F]]></AD_PREFERENCE_ID>
+<!--7C18BC39920C417F92D14FFD0778FB4F--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--7C18BC39920C417F92D14FFD0778FB4F--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--7C18BC39920C417F92D14FFD0778FB4F--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--7C18BC39920C417F92D14FFD0778FB4F--> <VALUE><![CDATA[Y]]></VALUE>
+<!--7C18BC39920C417F92D14FFD0778FB4F--> <PROPERTY><![CDATA[OBMOBC_logClient.humanReadable]]></PROPERTY>
+<!--7C18BC39920C417F92D14FFD0778FB4F--> <ISPROPERTYLIST><![CDATA[Y]]></ISPROPERTYLIST>
+<!--7C18BC39920C417F92D14FFD0778FB4F--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--7C18BC39920C417F92D14FFD0778FB4F--></AD_PREFERENCE>
+
<!--82A505E31F92488882F552E82DF5C373--><AD_PREFERENCE>
<!--82A505E31F92488882F552E82DF5C373--> <AD_PREFERENCE_ID><![CDATA[82A505E31F92488882F552E82DF5C373]]></AD_PREFERENCE_ID>
<!--82A505E31F92488882F552E82DF5C373--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/src-db/database/sourcedata/AD_REF_LIST.xml b/src-db/database/sourcedata/AD_REF_LIST.xml
--- a/src-db/database/sourcedata/AD_REF_LIST.xml
+++ b/src-db/database/sourcedata/AD_REF_LIST.xml
@@ -553,6 +553,17 @@
<!--D7110BA3D93D4EC693E27F867B196A24--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
<!--D7110BA3D93D4EC693E27F867B196A24--></AD_REF_LIST>
+<!--D958936D0C5E475399A67F66D1796793--><AD_REF_LIST>
+<!--D958936D0C5E475399A67F66D1796793--> <AD_REF_LIST_ID><![CDATA[D958936D0C5E475399A67F66D1796793]]></AD_REF_LIST_ID>
+<!--D958936D0C5E475399A67F66D1796793--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--D958936D0C5E475399A67F66D1796793--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--D958936D0C5E475399A67F66D1796793--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--D958936D0C5E475399A67F66D1796793--> <VALUE><![CDATA[OBMOBC_logClient.humanReadable]]></VALUE>
+<!--D958936D0C5E475399A67F66D1796793--> <NAME><![CDATA[Mobile Log Client Human Readable Activate Log]]></NAME>
+<!--D958936D0C5E475399A67F66D1796793--> <AD_REFERENCE_ID><![CDATA[A26BA480E2014707B47257024C3CBFF7]]></AD_REFERENCE_ID>
+<!--D958936D0C5E475399A67F66D1796793--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--D958936D0C5E475399A67F66D1796793--></AD_REF_LIST>
+
<!--D9D9185CC8A44C718FF3B6B9EF44D5B5--><AD_REF_LIST>
<!--D9D9185CC8A44C718FF3B6B9EF44D5B5--> <AD_REF_LIST_ID><![CDATA[D9D9185CC8A44C718FF3B6B9EF44D5B5]]></AD_REF_LIST_ID>
<!--D9D9185CC8A44C718FF3B6B9EF44D5B5--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/src-db/database/sourcedata/AD_TAB.xml b/src-db/database/sourcedata/AD_TAB.xml
--- a/src-db/database/sourcedata/AD_TAB.xml
+++ b/src-db/database/sourcedata/AD_TAB.xml
@@ -89,6 +89,35 @@
<!--320CB42FD9A1458EB1037FFEF2D21976--> <EM_OBUIAPP_SHOW_SELECT><![CDATA[Y]]></EM_OBUIAPP_SHOW_SELECT>
<!--320CB42FD9A1458EB1037FFEF2D21976--></AD_TAB>
+<!--6805A073CC3B469AAD3F81DE192A6D27--><AD_TAB>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <AD_TAB_ID><![CDATA[6805A073CC3B469AAD3F81DE192A6D27]]></AD_TAB_ID>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <NAME><![CDATA[Human Readable Client Log]]></NAME>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <AD_TABLE_ID><![CDATA[5DD50444BA0A4572A638798E3513503C]]></AD_TABLE_ID>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <AD_WINDOW_ID><![CDATA[2BEABA28D242420780C5EFA209B6A286]]></AD_WINDOW_ID>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <SEQNO><![CDATA[10]]></SEQNO>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <TABLEVEL><![CDATA[0]]></TABLEVEL>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <ISSINGLEROW><![CDATA[N]]></ISSINGLEROW>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <ISINFOTAB><![CDATA[N]]></ISINFOTAB>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <ISTRANSLATIONTAB><![CDATA[N]]></ISTRANSLATIONTAB>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <ISREADONLY><![CDATA[N]]></ISREADONLY>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <HASTREE><![CDATA[N]]></HASTREE>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <PROCESSING><![CDATA[N]]></PROCESSING>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <IMPORTFIELDS><![CDATA[N]]></IMPORTFIELDS>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <ISSORTTAB><![CDATA[N]]></ISSORTTAB>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <UIPATTERN><![CDATA[RO]]></UIPATTERN>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <SHOWPARENTBUTTONS><![CDATA[Y]]></SHOWPARENTBUTTONS>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <DISABLE_PARENT_KEY_PROPERTY><![CDATA[N]]></DISABLE_PARENT_KEY_PROPERTY>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <ISREADONLYTREE><![CDATA[N]]></ISREADONLYTREE>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <ISSHOWTREENODEICONS><![CDATA[Y]]></ISSHOWTREENODEICONS>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <EM_OBUIAPP_CAN_ADD><![CDATA[N]]></EM_OBUIAPP_CAN_ADD>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <EM_OBUIAPP_CAN_DELETE><![CDATA[N]]></EM_OBUIAPP_CAN_DELETE>
+<!--6805A073CC3B469AAD3F81DE192A6D27--> <EM_OBUIAPP_SHOW_SELECT><![CDATA[Y]]></EM_OBUIAPP_SHOW_SELECT>
+<!--6805A073CC3B469AAD3F81DE192A6D27--></AD_TAB>
+
<!--A2D9C34536974601B900C5A290EDC5AD--><AD_TAB>
<!--A2D9C34536974601B900C5A290EDC5AD--> <AD_TAB_ID><![CDATA[A2D9C34536974601B900C5A290EDC5AD]]></AD_TAB_ID>
<!--A2D9C34536974601B900C5A290EDC5AD--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/src-db/database/sourcedata/AD_TABLE.xml b/src-db/database/sourcedata/AD_TABLE.xml
--- a/src-db/database/sourcedata/AD_TABLE.xml
+++ b/src-db/database/sourcedata/AD_TABLE.xml
@@ -48,6 +48,28 @@
<!--18EF5CE89A164E7D993DFEC7E0204103--> <ISTREE><![CDATA[N]]></ISTREE>
<!--18EF5CE89A164E7D993DFEC7E0204103--></AD_TABLE>
+<!--5DD50444BA0A4572A638798E3513503C--><AD_TABLE>
+<!--5DD50444BA0A4572A638798E3513503C--> <AD_TABLE_ID><![CDATA[5DD50444BA0A4572A638798E3513503C]]></AD_TABLE_ID>
+<!--5DD50444BA0A4572A638798E3513503C--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--5DD50444BA0A4572A638798E3513503C--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--5DD50444BA0A4572A638798E3513503C--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--5DD50444BA0A4572A638798E3513503C--> <NAME><![CDATA[obmobc_logclient_readable]]></NAME>
+<!--5DD50444BA0A4572A638798E3513503C--> <TABLENAME><![CDATA[obmobc_logclient_readable]]></TABLENAME>
+<!--5DD50444BA0A4572A638798E3513503C--> <CLASSNAME><![CDATA[obmobcLogClientReadable]]></CLASSNAME>
+<!--5DD50444BA0A4572A638798E3513503C--> <ISVIEW><![CDATA[N]]></ISVIEW>
+<!--5DD50444BA0A4572A638798E3513503C--> <ACCESSLEVEL><![CDATA[3]]></ACCESSLEVEL>
+<!--5DD50444BA0A4572A638798E3513503C--> <ISSECURITYENABLED><![CDATA[N]]></ISSECURITYENABLED>
+<!--5DD50444BA0A4572A638798E3513503C--> <ISDELETEABLE><![CDATA[Y]]></ISDELETEABLE>
+<!--5DD50444BA0A4572A638798E3513503C--> <ISHIGHVOLUME><![CDATA[N]]></ISHIGHVOLUME>
+<!--5DD50444BA0A4572A638798E3513503C--> <IMPORTTABLE><![CDATA[N]]></IMPORTTABLE>
+<!--5DD50444BA0A4572A638798E3513503C--> <ISCHANGELOG><![CDATA[N]]></ISCHANGELOG>
+<!--5DD50444BA0A4572A638798E3513503C--> <ISDEFAULTACCT><![CDATA[N]]></ISDEFAULTACCT>
+<!--5DD50444BA0A4572A638798E3513503C--> <DEVELOPMENTSTATUS><![CDATA[RE]]></DEVELOPMENTSTATUS>
+<!--5DD50444BA0A4572A638798E3513503C--> <AD_PACKAGE_ID><![CDATA[6F1C0593F8794C699AE6281CEDE4C214]]></AD_PACKAGE_ID>
+<!--5DD50444BA0A4572A638798E3513503C--> <DATAORIGINTYPE><![CDATA[Table]]></DATAORIGINTYPE>
+<!--5DD50444BA0A4572A638798E3513503C--> <ISTREE><![CDATA[N]]></ISTREE>
+<!--5DD50444BA0A4572A638798E3513503C--></AD_TABLE>
+
<!--9A030632C0FC4C4AA8A58EC59BE2D116--><AD_TABLE>
<!--9A030632C0FC4C4AA8A58EC59BE2D116--> <AD_TABLE_ID><![CDATA[9A030632C0FC4C4AA8A58EC59BE2D116]]></AD_TABLE_ID>
<!--9A030632C0FC4C4AA8A58EC59BE2D116--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/src-db/database/sourcedata/AD_TREENODE.xml b/src-db/database/sourcedata/AD_TREENODE.xml
--- a/src-db/database/sourcedata/AD_TREENODE.xml
+++ b/src-db/database/sourcedata/AD_TREENODE.xml
@@ -8,7 +8,7 @@
<!--5A60F87FFAD541ABA9112FBC01F939A5--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
<!--5A60F87FFAD541ABA9112FBC01F939A5--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
<!--5A60F87FFAD541ABA9112FBC01F939A5--> <PARENT_ID><![CDATA[896AC285FD8F4C25A869689D4A98DD8E]]></PARENT_ID>
-<!--5A60F87FFAD541ABA9112FBC01F939A5--> <SEQNO><![CDATA[70]]></SEQNO>
+<!--5A60F87FFAD541ABA9112FBC01F939A5--> <SEQNO><![CDATA[80]]></SEQNO>
<!--5A60F87FFAD541ABA9112FBC01F939A5--></AD_TREENODE>
<!--6AC077DBE4D14A76B6D015A7CC2DA656--><AD_TREENODE>
@@ -44,4 +44,15 @@
<!--BDA7F96D404C467A902A880ECBD29A96--> <SEQNO><![CDATA[70]]></SEQNO>
<!--BDA7F96D404C467A902A880ECBD29A96--></AD_TREENODE>
+<!--C2028B649AEF44729EE09278D6606192--><AD_TREENODE>
+<!--C2028B649AEF44729EE09278D6606192--> <AD_TREENODE_ID><![CDATA[C2028B649AEF44729EE09278D6606192]]></AD_TREENODE_ID>
+<!--C2028B649AEF44729EE09278D6606192--> <AD_TREE_ID><![CDATA[10]]></AD_TREE_ID>
+<!--C2028B649AEF44729EE09278D6606192--> <NODE_ID><![CDATA[C07EAA881C87428FA6CEB3357E4E85DF]]></NODE_ID>
+<!--C2028B649AEF44729EE09278D6606192--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--C2028B649AEF44729EE09278D6606192--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--C2028B649AEF44729EE09278D6606192--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--C2028B649AEF44729EE09278D6606192--> <PARENT_ID><![CDATA[896AC285FD8F4C25A869689D4A98DD8E]]></PARENT_ID>
+<!--C2028B649AEF44729EE09278D6606192--> <SEQNO><![CDATA[70]]></SEQNO>
+<!--C2028B649AEF44729EE09278D6606192--></AD_TREENODE>
+
</data>
diff --git a/src-db/database/sourcedata/AD_WINDOW.xml b/src-db/database/sourcedata/AD_WINDOW.xml
--- a/src-db/database/sourcedata/AD_WINDOW.xml
+++ b/src-db/database/sourcedata/AD_WINDOW.xml
@@ -17,6 +17,21 @@
<!--1B59429FB63747C6AB267F307502F5A2--> <ISADVANCEDFEATURE><![CDATA[N]]></ISADVANCEDFEATURE>
<!--1B59429FB63747C6AB267F307502F5A2--></AD_WINDOW>
+<!--2BEABA28D242420780C5EFA209B6A286--><AD_WINDOW>
+<!--2BEABA28D242420780C5EFA209B6A286--> <AD_WINDOW_ID><![CDATA[2BEABA28D242420780C5EFA209B6A286]]></AD_WINDOW_ID>
+<!--2BEABA28D242420780C5EFA209B6A286--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--2BEABA28D242420780C5EFA209B6A286--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--2BEABA28D242420780C5EFA209B6A286--> <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--2BEABA28D242420780C5EFA209B6A286--> <NAME><![CDATA[Human Readable Client Log]]></NAME>
+<!--2BEABA28D242420780C5EFA209B6A286--> <WINDOWTYPE><![CDATA[M]]></WINDOWTYPE>
+<!--2BEABA28D242420780C5EFA209B6A286--> <ISSOTRX><![CDATA[Y]]></ISSOTRX>
+<!--2BEABA28D242420780C5EFA209B6A286--> <PROCESSING><![CDATA[N]]></PROCESSING>
+<!--2BEABA28D242420780C5EFA209B6A286--> <ISDEFAULT><![CDATA[N]]></ISDEFAULT>
+<!--2BEABA28D242420780C5EFA209B6A286--> <AD_MODULE_ID><![CDATA[08943B85ADF64E708797A753E5B6AAEE]]></AD_MODULE_ID>
+<!--2BEABA28D242420780C5EFA209B6A286--> <ISTHREADSAFE><![CDATA[N]]></ISTHREADSAFE>
+<!--2BEABA28D242420780C5EFA209B6A286--> <ISADVANCEDFEATURE><![CDATA[N]]></ISADVANCEDFEATURE>
+<!--2BEABA28D242420780C5EFA209B6A286--></AD_WINDOW>
+
<!--B573F236AC404C43B9899EF714E0C349--><AD_WINDOW>
<!--B573F236AC404C43B9899EF714E0C349--> <AD_WINDOW_ID><![CDATA[B573F236AC404C43B9899EF714E0C349]]></AD_WINDOW_ID>
<!--B573F236AC404C43B9899EF714E0C349--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff --git a/src/org/openbravo/mobile/core/utils/LogClientLoader.java b/src/org/openbravo/mobile/core/utils/LogClientLoader.java
--- a/src/org/openbravo/mobile/core/utils/LogClientLoader.java
+++ b/src/org/openbravo/mobile/core/utils/LogClientLoader.java
@@ -20,13 +20,18 @@
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
+import org.openbravo.base.model.ModelProvider;
+import org.openbravo.base.provider.OBProvider;
import org.openbravo.dal.core.OBContext;
import org.openbravo.dal.service.OBDal;
import org.openbravo.dal.service.OBQuery;
import org.openbravo.data.UtilSql;
import org.openbravo.database.SessionInfo;
import org.openbravo.mobile.core.obmobcLogClient;
+import org.openbravo.mobile.core.obmobcLogClientReadable;
import org.openbravo.mobile.core.process.JSONProcessSimple;
+import org.openbravo.mobile.core.process.JSONPropertyToEntity;
+import org.openbravo.model.ad.access.User;
import org.openbravo.service.db.QueryTimeOutUtil;
import org.openbravo.service.json.JsonConstants;
@@ -51,7 +56,10 @@
try {
for (int i = 0; i < jsonarray.length(); i++) {
JSONObject jsonlogclient = jsonarray.getJSONObject(i);
- errorReturned = saveLogClient(jsonlogclient);
+ JSONObject objJson = new JSONObject(jsonlogclient.getString("json"));
+ boolean humanReadable = objJson.getBoolean("humanReadable");
+ errorReturned = humanReadable ? saveLogClientHumanReadable(jsonlogclient, objJson)
+ : saveLogClient(jsonlogclient);
if (errorReturned.length() != 0) {
error += errorReturned + "\n";
}
@@ -184,6 +192,44 @@
return error;
}
+ private String saveLogClientHumanReadable(JSONObject jsonlogclient, JSONObject objJson)
+ throws Exception {
+
+ long t0 = System.currentTimeMillis();
+ obmobcLogClientReadable logClient = null;
+ if (OBDal.getInstance().get(obmobcLogClientReadable.class, jsonlogclient.getString("id")) != null) {
+ // Duplicated message
+ return "";
+ }
+
+ logClient = OBProvider.getInstance().get(obmobcLogClientReadable.class);
+ logClient.setId(jsonlogclient.getString("id"));
+ logClient.setNewOBObject(true);
+
+ JSONPropertyToEntity.fillBobFromJSON(
+ ModelProvider.getInstance().getEntity(obmobcLogClientReadable.class), logClient, objJson);
+
+ updateAuditInfo(logClient, objJson);
+ OBDal.getInstance().save(logClient);
+
+ log.debug("Creation of Log Client records: " + (System.currentTimeMillis() - t0));
+ return "";
+ }
+
+ private void updateAuditInfo(obmobcLogClientReadable lc, JSONObject jsonorder)
+ throws JSONException {
+ Long value = jsonorder.getLong("created");
+ lc.setCreationDate(new Date(value));
+ lc.setUpdated(new Date(value));
+ String strUserId = "0";
+ if (jsonorder.optString("createdby", null) != null) {
+ strUserId = jsonorder.getString("createdby");
+ }
+ User createdby = OBDal.getInstance().getProxy(User.class, strUserId);
+ lc.setCreatedBy(createdby);
+ lc.setUpdatedBy(createdby);
+ }
+
@Override
protected boolean bypassPreferenceCheck() {
return true;
diff --git a/web/org.openbravo.mobile.core/source/component/dialog/ob-profile.js b/web/org.openbravo.mobile.core/source/component/dialog/ob-profile.js
--- a/web/org.openbravo.mobile.core/source/component/dialog/ob-profile.js
+++ b/web/org.openbravo.mobile.core/source/component/dialog/ob-profile.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2012-2017 Openbravo S.L.U.
+ * Copyright (C) 2012-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -289,6 +289,15 @@
OB.UTIL.HookManager.executeHooks('OBMOBC_ProfileDialogApply', {
profileDialogProp: this
}, function (args) {
+ var role = _.find(widgetForm.roleList.collection.models, function (r) {
+ return r.get('id') === newRoleId;
+ });
+ var language = _.find(widgetForm.langList.collection.models, function (l) {
+ return l.get('id') === newLanguageId;
+ });
+ if (role && language) {
+ OB.logUserAction('Change to role: ' + role.get('_identifier') + ', Language: ' + language.get('_identifier'));
+ }
OB.DS.allowRequests(false);
OB.UTIL.localStorage.setItem('POSlanguageId', newLanguageId);
OB.UTIL.localStorage.setItem('POSlanguageSk', newLanguageSk);
diff --git a/web/org.openbravo.mobile.core/source/component/dialog/ob-properties.js b/web/org.openbravo.mobile.core/source/component/dialog/ob-properties.js
--- a/web/org.openbravo.mobile.core/source/component/dialog/ob-properties.js
+++ b/web/org.openbravo.mobile.core/source/component/dialog/ob-properties.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2013-2017 Openbravo S.L.U.
+ * Copyright (C) 2013-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -39,6 +39,7 @@
});
},
applyChanges: function (inSender, inEvent) {
+ OB.logUserAction('Change ticket properties: ' + this.model.get('documentNo'));
this.waterfall('onApplyChange', {});
return true;
},
diff --git a/web/org.openbravo.mobile.core/source/component/ob-keyboard.js b/web/org.openbravo.mobile.core/source/component/ob-keyboard.js
--- a/web/org.openbravo.mobile.core/source/component/ob-keyboard.js
+++ b/web/org.openbravo.mobile.core/source/component/ob-keyboard.js
@@ -798,24 +798,30 @@
if (button.command) {
button.$.button.tap = function () {
- OB.UTIL.HookManager.executeHooks('OBMOBC_PrePaymentSelected', {
- paymentSelected: button,
- receipt: me.receipt
- }, function (args) {
- if (args && args.cancellation && args.cancellation === true) {
- return;
- }
- if (button.$.button.disabled) {
- return true;
- }
- if (button && button.definition && button.definition.includedInPopUp) {
- me.virtualKeypressHandler(button.command, {
- fromPopup: button.definition.includedInPopUp
- });
- } else {
- me.virtualKeypressHandler(button.command);
- }
- });
+ OB.logUserAction('Button pushed: ' + (this.content ? this.content : button.command));
+
+ var tapButton = function () {
+ if (button.$.button.disabled) {
+ return true;
+ }
+ if (button && button.definition && button.definition.includedInPopUp) {
+ me.virtualKeypressHandler(button.command, {
+ fromPopup: button.definition.includedInPopUp
+ });
+ } else {
+ me.virtualKeypressHandler(button.command);
+ }
+ };
+
+ if (button.definition && button.definition.canTap) {
+ button.definition.canTap(function (success) {
+ if (success) {
+ return tapButton();
+ }
+ });
+ } else {
+ return tapButton();
+ }
};
this.addButton(button.command, button.$.button);
diff --git a/web/org.openbravo.mobile.core/source/component/obpos-approval.js b/web/org.openbravo.mobile.core/source/component/obpos-approval.js
--- a/web/org.openbravo.mobile.core/source/component/obpos-approval.js
+++ b/web/org.openbravo.mobile.core/source/component/obpos-approval.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2014-2017 Openbravo S.L.U.
+ * Copyright (C) 2014-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -163,33 +163,50 @@
},
initComponents: function () {
- var i, j;
+ var i, j, logMsg = '',
+ hasLineBreak = false;
this.inherited(arguments);
+
+ function addLogMsg(msg) {
+ if (logMsg.length > 0) {
+ logMsg += '\r\n';
+ hasLineBreak = true;
+ }
+ logMsg += msg;
+ }
+
this.$.bodyContent.$.username.attributes.placeholder = OB.I18N.getLabel('OBMOBC_LoginUserInput');
this.$.bodyContent.$.password.attributes.placeholder = OB.I18N.getLabel('OBMOBC_LoginPasswordInput');
if (!Array.isArray(this.approvalType)) {
this.approvalType = [this.approvalType];
}
for (i = 0; i < this.approvalType.length; i++) {
+ var msg;
if (this.approvalType[i] instanceof Object) {
if (this.approvalType[i].message instanceof Object) {
// Complex format approvalType[i] = { message: [ { message, padding, fonstSize, fontWeight, color } ]}
for (j = 0; j < this.approvalType[i].message.length; j++) {
this.addTextComponent(this.approvalType[i].message[j]);
+ addLogMsg(this.approvalType[i].message[j].message);
}
} else {
// Approval with approvalType[i] = { message, params }
+ msg = OB.I18N.getLabel(this.approvalType[i].message, this.approvalType[i].params) || OB.I18N.getLabel('OBMOBC_ApprovalTextHeader');
this.addTextComponent({
- message: OB.I18N.getLabel(this.approvalType[i].message, this.approvalType[i].params) || OB.I18N.getLabel('OBMOBC_ApprovalTextHeader')
+ message: msg
});
+ addLogMsg(msg);
}
} else {
// Simple approval
+ msg = OB.I18N.labels[this.approvalType[i]] || OB.I18N.getLabel('OBMOBC_ApprovalTextHeader');
this.addTextComponent({
- message: OB.I18N.labels[this.approvalType[i]] || OB.I18N.getLabel('OBMOBC_ApprovalTextHeader')
+ message: msg
});
+ addLogMsg(msg);
}
}
+ OB.logUserAction('Raised approval for: ' + (hasLineBreak ? '\r\n' : ' ') + logMsg);
this.postRenderActions();
},
@@ -324,9 +341,11 @@
OB.UTIL.checkApproval(this.approvalType, u, p, function (approved, supervisor, approvalType, continueCallback, warningMsg) {
if (!OB.UTIL.isNullOrUndefined(warningMsg)) {
me.$.bodyContent.$.approvalWarning.setContent(warningMsg);
+ OB.logUserAction('Approval warning: ' + warningMsg);
return;
}
if (continueCallback) {
+ OB.logUserAction('Approved by User: ' + u);
if (me.model && me.model.approvedRequest) {
me.model.approvedRequest(approved, supervisor, approvalType, me.callback);
} else {
diff --git a/web/org.openbravo.mobile.core/source/model/logclient.js b/web/org.openbravo.mobile.core/source/model/logclient.js
--- a/web/org.openbravo.mobile.core/source/model/logclient.js
+++ b/web/org.openbravo.mobile.core/source/model/logclient.js
@@ -1,6 +1,6 @@
/*
************************************************************************************
- * Copyright (C) 2012-2016 Openbravo S.L.U.
+ * Copyright (C) 2012-2018 Openbravo S.L.U.
* Licensed under the Openbravo Commercial License version 1.0
* You may obtain a copy of the License at http://www.openbravo.com/legal/obcl.html
* or in the legal folder of this module distribution.
@@ -17,9 +17,9 @@
entityName: 'LogClient',
source: 'org.openbravo.mobile.core.master.LogClient',
local: true,
- createStatement: 'CREATE TABLE IF NOT EXISTS obmobc_logclient (obmobc_logclient_id TEXT PRIMARY KEY, deviceId TEXT, cacheSessionId TEXT, msg TEXT, json CLOB, loglevel TEXT, created TEXT, createdby TEXT)',
+ createStatement: 'CREATE TABLE IF NOT EXISTS obmobc_logclient (obmobc_logclient_id TEXT PRIMARY KEY, deviceId TEXT, cacheSessionId TEXT, msg TEXT, json CLOB, loglevel TEXT, humanReadable TEXT, created TEXT, createdby TEXT)',
dropStatement: 'DROP TABLE IF EXISTS obmobc_logclient',
- insertStatement: 'INSERT INTO obmobc_logclient (obmobc_logclient_id, deviceId, cacheSessionId, msg, json, loglevel, created, createdby) VALUES (?,?,?,?,?,?,?,?)',
+ insertStatement: 'INSERT INTO obmobc_logclient (obmobc_logclient_id, deviceId, cacheSessionId, msg, json, loglevel, humanReadable, created, createdby) VALUES (?,?,?,?,?,?,?,?,?)',
serializeToJSON: function () {
return JSON.parse(JSON.stringify(this.toJSON()));
}
@@ -51,6 +51,10 @@
column: 'loglevel',
type: 'TEXT'
}, {
+ name: 'humanReadable',
+ column: 'humanReadable',
+ type: 'TEXT'
+ }, {
name: 'created',
column: 'created',
type: 'TEXT'
diff --git a/web/org.openbravo.mobile.core/source/model/ob-terminal-model.js b/web/org.openbravo.mobile.core/source/model/ob-terminal-model.js
--- a/web/org.openbravo.mobile.core/source/model/ob-terminal-model.js
+++ b/web/org.openbravo.mobile.core/source/model/ob-terminal-model.js
@@ -2040,6 +2040,8 @@
postLoginActions: function () {
OB.debug("next process: none");
+ var context = OB.MobileApp.model.get('context');
+ OB.logUserAction('Login user: ' + (context && context.user ? OB.MobileApp.model.get('context').user.username : '-'));
},
loginUsingCache: function () {
@@ -2301,6 +2303,8 @@
* Override this method if your app needs to do something special
*/
preLogoutActions: function (callback) {
+ var context = OB.MobileApp.model.get('context');
+ OB.logUserAction('Logout user: ' + (context && context.user ? OB.MobileApp.model.get('context').user.username : '-'));
callback();
},
diff --git a/web/org.openbravo.mobile.core/source/retail/component/ob-retail-searchproductcharacteristic.js b/web/org.openbravo.mobile.core/source/retail/component/ob-retail-searchproductcharacteristic.js
--- a/web/org.openbravo.mobile.core/source/retail/component/ob-retail-searchproductcharacteristic.js
+++ b/web/org.openbravo.mobile.core/source/retail/component/ob-retail-searchproductcharacteristic.js
@@ -1271,6 +1271,7 @@
brandString = '',
i, j, forceRemote, doLocalIfRemoteFails = true;
+ OB.logUserAction('Search products: "' + inEvent.productName + '"');
// Disable the filters button
me.disableFilters(true);
diff --git a/web/org.openbravo.mobile.core/source/utils/ob-utilities.js b/web/org.openbravo.mobile.core/source/utils/ob-utilities.js
--- a/web/org.openbravo.mobile.core/source/utils/ob-utilities.js
+++ b/web/org.openbravo.mobile.core/source/utils/ob-utilities.js
@@ -352,7 +352,7 @@
OB.UTIL.localStorage.setItem('logclientErrors', 0);
};
- function processConsoleLevel(logLevel, args) {
+ function processConsoleLevel(logLevel, args, humanReadable) {
try {
var saveInServer = OB.UTIL.checkPermissionLog(logLevel, "save");
@@ -361,16 +361,14 @@
if (saveInServer) {
var isSaveOnlyTraceOfCaller = true;
+ var serverMessage = OB.UTIL.argumentsToStringifyed(args) + (humanReadable ? '' : "; stackTrace: " + OB.UTIL.getStackTrace('OB.' + logLevel.toLowerCase(), isSaveOnlyTraceOfCaller));
if (logLevel === 'Error' || logLevel === "Critical") {
isSaveOnlyTraceOfCaller = false;
- }
- var serverMessage = OB.UTIL.argumentsToStringifyed(args) + "; stackTrace: " + OB.UTIL.getStackTrace('OB.' + logLevel.toLowerCase(), isSaveOnlyTraceOfCaller);
- if (logLevel === 'Error' || logLevel === "Critical") {
serverMessage = serverMessage + humanLog + processesLog;
}
// cut the message
serverMessage = (serverMessage.length < 100000000) ? serverMessage : serverMessage.substring(0, 100000000);
- OB.UTIL.saveLogClient(serverMessage, logLevel);
+ OB.UTIL.saveLogClient(serverMessage, logLevel, humanReadable);
}
if (logLevel === 'Error' || logLevel === "Critical") {
@@ -378,7 +376,7 @@
}
var showInConsole = OB.UTIL.checkPermissionLog(logLevel, "console");
- if (OB.UTIL.Debug.isDebug() || showInConsole) {
+ if ((OB.UTIL.Debug.isDebug() || showInConsole) && !humanReadable) {
saveInServer = saveInServer && (OB && OB.MobileApp && OB.MobileApp.model && OB.MobileApp.model.get('logClientStatus') === 'OK');
var tags = (showInConsole || saveInServer) ? ("(" + (showInConsole ? "*" : "") + ((showInConsole && saveInServer) ? "," : "") + (saveInServer ? "+" : "") + ")") : "";
var consoleMessage = OB.UTIL.argumentsToStringifyed(args) + "; line: " + OB.UTIL.getStackTrace('OB.' + logLevel.toLowerCase(), true) + " " + tags;
@@ -404,28 +402,32 @@
}
OB.trace = function () {
- processConsoleLevel('Trace', arguments);
+ processConsoleLevel('Trace', arguments, false);
};
OB.debug = function () {
- processConsoleLevel('Debug', arguments);
+ processConsoleLevel('Debug', arguments, false);
};
OB.info = function () {
- processConsoleLevel('Info', arguments);
+ processConsoleLevel('Info', arguments, false);
};
OB.warn = function () {
- processConsoleLevel('Warn', arguments);
+ processConsoleLevel('Warn', arguments, false);
};
OB.error = function () {
- processConsoleLevel('Error', arguments);
+ processConsoleLevel('Error', arguments, false);
+ };
+
+ OB.logUserAction = function () {
+ processConsoleLevel(null, arguments, true);
};
// deprecated
OB.critical = function () {
- processConsoleLevel('Critical', arguments);
+ processConsoleLevel('Critical', arguments, false);
};
// this function receive as arguments first the level of log, the rest of the arguments are the message
@@ -442,7 +444,7 @@
msg = OB.UTIL.composeMessage(argsWithoutFirst);
if (OB.UTIL.checkPermissionLog(level, "save")) {
- OB.UTIL.saveLogClient(msg, level);
+ OB.UTIL.saveLogClient(msg, level, false);
}
if (OB.UTIL.checkPermissionLog(level, "console")) {
if (level === "Info") {
@@ -460,7 +462,7 @@
}
};
- OB.UTIL.saveLogClient = function (msg, level) {
+ OB.UTIL.saveLogClient = function (msg, level, humanReadable) {
try {
if (OB.MobileApp && OB.MobileApp.model && OB.MobileApp.model.supportLogClient()) {
if (!OB.Data.localDB) {
@@ -482,6 +484,7 @@
logClientModel.set('created', date.getTime());
logClientModel.set('createdby', OB.MobileApp.model.get('orgUserId'));
logClientModel.set('loglevel', level);
+ logClientModel.set('humanReadable', humanReadable === true);
logClientModel.set('msg', msg);
logClientModel.set('deviceId', OB.MobileApp.model.get('logConfiguration').deviceIdentifier);
logClientModel.set('cacheSessionId', null);
@@ -529,6 +532,9 @@
}
return false;
}
+ if (level === null) {
+ return OB.MobileApp.model.get('permissions')['OBMOBC_logClient.humanReadable'];
+ }
if (type === "save") {
if (OB.MobileApp.model.get('permissions')['OBMOBC_logClient.saveLog'] === false) {
|