Compare commits

...

10 Commits

Author SHA1 Message Date
7269a51188 2024-12-17 22:34:43 +00:00
8b9712ce1c Prepare for next release 2024-06-03 23:44:55 +00:00
23251760b3 case 4533 2024-06-03 23:06:32 +00:00
4bd77b982b case 4590 2024-06-03 23:04:51 +00:00
a7e7e41a90 changes to support subscription server install script going forward for new ay 8.2.0 and ubuntu 24.04 setups 2024-05-20 23:53:23 +00:00
2f4cabcc48 case 4576 addition of up to 25 level v7 2024-03-21 15:06:45 +00:00
fc10596037 2023-04-25 15:40:35 +00:00
5f76206f3d 2023-04-21 22:07:38 +00:00
ef585bddbd 2023-04-21 17:40:11 +00:00
9a6ebc84fa 2023-04-20 00:31:49 +00:00
11 changed files with 170 additions and 89 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "sockeye",
"version": "8.0.13",
"version": "8.0.16",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",

View File

@@ -17,7 +17,6 @@ export default {
GlobalOps: { Change: 16384, ReadFullRecord: 8192, Select: 0 },
User: { Change: 2, ReadFullRecord: 1, Select: 131071 },
UserOptions: { Change: 2, ReadFullRecord: 1, Select: 0 },
Vendor: { Change: 106, ReadFullRecord: 98565, Select: 131071 },
ServerState: { Change: 16384, ReadFullRecord: 131071, Select: 0 },
LogFile: { Change: 0, ReadFullRecord: 24576, Select: 0 },
Backup: { Change: 16384, ReadFullRecord: 8195, Select: 0 },
@@ -38,12 +37,14 @@ export default {
Reminder: { Change: 124927, ReadFullRecord: 124927, Select: 124927 },
Review: { Change: 124927, ReadFullRecord: 124927, Select: 124927 },
Integration: { Change: 49514, ReadFullRecord: 49514, Select: 49514 },
Vendor: { Change: 32842, ReadFullRecord: 65797, Select: 131071 },
License: { Change: 32842, ReadFullRecord: 65797, Select: 131071 },
TrialLicenseRequest: { Change: 32842, ReadFullRecord: 65797, Select: 131071 },
SubscriptionServer: { Change: 32842, ReadFullRecord: 65797, Select: 131071 },
Purchase: { Change: 32842, ReadFullRecord: 65797, Select: 131071 },
VendorNotification: { Change: 32842, ReadFullRecord: 65797, Select: 131071 },
Product: { Change: 32842, ReadFullRecord: 65797, Select: 131071 },
GZCase: { Change: 32842, ReadFullRecord: 65797, Select: 131071 },
VendorNotification: { Change: 32842, ReadFullRecord: 65797, Select: 131071 },
Subscription: { Change: 32842, ReadFullRecord: 65797, Select: 131071 }
Subscription: { Change: 32842, ReadFullRecord: 65797, Select: 131071 },
SubscriptionItem: { Change: 32842, ReadFullRecord: 65797, Select: 131071 }
};

View File

@@ -283,6 +283,36 @@ export default {
params: { recordid: tid.id }
});
break;
case socktype.SubscriptionItem:
(async () => {
try {
const res = await window.$gz.api.get(
`search/ancestor/${tid.type}/${tid.id}`
);
if (res.error) {
throw new Error(
window.$gz.errorHandler.errorToString(res, vm)
);
}
if (res.data.id && res.data.id != 0) {
vm.$router.push({
name: "subscription-edit",
params: { recordid: res.data.id }
});
// this.handleOpenObjectClick(vm, {
// type: socktype.Subscription,
// id: res.data.id,
// });
// return;
}
} catch (e) {
//throw new Error(e);
throw new Error(window.$gz.errorHandler.errorToString(e, vm));
}
})();
break;
default:
window.$gz.eventBus.$emit(

View File

@@ -1,4 +1,4 @@
export default {
version: "8.0.13",
copyright: "© 1999-2022, Ground Zero Tech-Works Inc."
version: "8.0.17",
copyright: "© 1999-2024, Ground Zero Tech-Works Inc."
};

View File

@@ -264,7 +264,8 @@ export default {
"PurchaseList",
"GZCaseList",
"VendorNotificationList",
"SubscriptionList"
"SubscriptionList",
"SubscriptionItemList"
],
////////////////////////////////////////////////////////

View File

@@ -51,7 +51,7 @@ Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\ssh\shell\open]
[HKEY_CLASSES_ROOT\ssh\shell\open\command]
@="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -Command \"$val='%l'; $val = $val.TrimEnd('/');if ($val.StartsWith('ssh://')) { $val = $val.SubString(6) }; & 'C:\\Program Files\\PuTTY\\putty.exe' \"$val\"\""
@="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -Command \"$val='%l'; $val = $val.TrimEnd('/');if ($val.StartsWith('ssh://')) { $val = $val.SubString(6) };if ($val.StartsWith('ssh:')) { $val = $val.SubString(4) }; & 'C:\\Program Files\\PuTTY\\putty.exe' \"$val\"\""
----------------
@@ -60,5 +60,6 @@ Also in putty need to set default to use pagent agent and then open the keys in
https://documentation.help/PuTTY/config-saving.html#S4.1.2
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command "$val='%l'; $val = $val.TrimEnd('/');if ($val.StartsWith('ssh://')) { $val = $val.SubString(6) };if ($val.StartsWith('ssh:')) { $val = $val.SubString(4) }; & 'C:\Program Files\PuTTY\putty.exe' "$val""
*/
</script>

View File

@@ -95,6 +95,38 @@
></v-text-field>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<gz-currency
ref="initialPrice"
v-model="obj.initialPrice"
:readonly="formState.readOnly"
:label="$sock.t('InitialPrice')"
data-cy="initialPrice"
:rules="[
form().decimalValid(this, 'initialPrice'),
form().required(this, 'initialPrice')
]"
:error-messages="form().serverErrors(this, 'initialPrice')"
@input="fieldValueChanged('initialPrice')"
></gz-currency>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<gz-currency
ref="renewPrice"
v-model="obj.renewPrice"
:readonly="formState.readOnly"
:label="$sock.t('RenewPrice')"
data-cy="renewPrice"
:rules="[
form().decimalValid(this, 'renewPrice'),
form().required(this, 'renewPrice')
]"
:error-messages="form().serverErrors(this, 'renewPrice')"
@input="fieldValueChanged('renewPrice')"
></gz-currency>
</v-col>
<v-col
v-if="form().showMe(this, 'ProductLicenseInterval')"
cols="12"
@@ -203,6 +235,8 @@ export default {
maintInterval: "365.0:00:00",
vendorCode: null,
ourCode: null,
renewPrice: 0,
initialPrice: 0,
wiki: null,
tags: []
},
@@ -666,7 +700,9 @@ async function fetchTranslatedText() {
"ProductMaintInterval",
"ProductVendorCode",
"ProductOurCode",
"ProductGroup"
"ProductGroup",
"InitialPrice",
"RenewPrice"
]);
}

View File

@@ -106,7 +106,7 @@ async function clickHandler(menuItem) {
{
const res = await m.vm.$refs.reportSelector.open(
m.vm.$refs.gzdatatable.getDataListSelection(
window.$gz.type.Subscription
window.$gz.type.SubscriptionItem
),
m.id
);
@@ -132,7 +132,7 @@ function generateMenu(vm) {
const menuOptions = {
isMain: true,
icon: "$sockiFileContract",
title: "SubscriptionList",
title: "SubscriptionItemList",
menuItems: [],
formData: {
sockType: window.$gz.type.Subscription

View File

@@ -1346,7 +1346,7 @@ async function clickHandler(menuItem) {
# 3) Add droplet into raven-server-standard-firewall
# 4) check DNS available using https://letsdebug.net/
# 5) Open putty, select X.onayanova.com, change ip to new droplet domain name and open it
# 6) apt-get update && apt-get upgrade reboot, if necessary use apt --with-new-pkgs upgrade
# 6) apt-get update && apt-get dist-upgrade reboot
# 7) TRIAL: make calendar entry 8 days hence to decommision and blueberry color reminder 0 days 11am
# 8) nano ayinit.sh paste in this
# 9) CHANGE the values at the top of the script to the desired time zone (see rfdocs for list) and subdomain, Save and exit nano
@@ -1363,6 +1363,7 @@ echo STARTING...
timedatectl set-timezone $TIMEZONE
apt-get update
apt-get dist-upgrade -y
dpkg-reconfigure unattended-upgrades
echo SET SWAP FILE
fallocate -l 1G /swapfile
chmod 600 /swapfile
@@ -1372,7 +1373,7 @@ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.conf
echo INSTALL .NET CORE
apt-get install -y aspnetcore-runtime-6.0
apt-get install -y aspnetcore-runtime-8.0
echo INSTALL POSTGRESQL
sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
@@ -1380,22 +1381,26 @@ sudo apt-get update
sudo apt-get -y install postgresql
sudo -u postgres psql -U postgres -d postgres -c "alter user postgres with password 'YOUR_PASSWORD_HERE';"
echo INSTALL REPORTING LIBS
sudo apt-get install -yq gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 \
libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 \
libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 \
libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 libgbm1 \
ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
# Ubuntu 24.04
sudo apt-get update
sudo apt-get install -y libatk1.0-0t64 libc6 libcairo2 libdbus-1-3 libexpat1 libfontconfig1 libgcc-s1 libgdk-pixbuf2.0-0 libglib2.0-0t64 libgtk-3-0t64 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libnss3 lsb-release libgbm-dev xdg-utils
sudo apt-get update
sudo apt-get install -y libatk-bridge2.0-0t64 libcups2t64 libxcomposite1 libxdamage1 libpangocairo-1.0-0 libxfixes3 libxrandr2 libgbm1 libcairo2 libpango-1.0-0 libasound2t64 wget
# NOTE: for future releases of ubuntu when need to update packages this was helpful https://itsfoss.com/unable-to-locate-package-error-ubuntu/
echo INSTALL AYANOVA
apt install zip unzip -y
mkdir /var/ayanova
mkdir /var/ayanova/data
mkdir /var/ayanova/.local-chromium
mkdir /var/ayanova/Chrome
mkdir /var/ayanova/ChromeHeadlessShell
cd /var/ayanova
curl -O https://www.ayanova.com/download/ayanova-subscription-linux-x64-server.zip && \
unzip -o ayanova-subscription-linux-x64-server.zip
curl -O https://www.ayanova.com/download/ayanova-subscription-linux-x64-server.zip && unzip -o ayanova-subscription-linux-x64-server.zip
chown -vR :www-data /var/ayanova
chmod -R g+rw /var/ayanova/data
chmod -R g+rwx /var/ayanova/.local-chromium
chmod -R g+rwx /var/ayanova/Chrome
chmod -R g+rwx /var/ayanova/ChromeHeadlessShell
chmod g+rw /var/ayanova/
echo '[Unit]' >> /etc/systemd/system/ayanova.service
echo 'Description=AyaNova server' >> /etc/systemd/system/ayanova.service
echo '' >> /etc/systemd/system/ayanova.service
@@ -1458,26 +1463,6 @@ echo ...COMPLETED
);
break;
// case "QuoteList":
// m.vm.$router.push({
// name: "svc-quotes",
// params: {
// aType: m.vm.sockType,
// objectId: m.vm.obj.id,
// name: m.vm.obj.name
// }
// });
// break;
// case "PMList":
// m.vm.$router.push({
// name: "svc-pms",
// params: {
// aType: m.vm.sockType,
// objectId: m.vm.obj.id,
// name: m.vm.obj.name
// }
// });
// break;
default:
window.$gz.eventBus.$emit(
"notify-warning",

View File

@@ -131,11 +131,18 @@
</v-list>
</v-menu>
<span v-else class="text-h6">
{{ $sock.t("SubscriptoinItemList") }}</span
{{ $sock.t("SubscriptionItemList") }}</span
>
</v-col>
</template>
<template v-slot:[`item.renewal`]="{ item }">
<v-simple-checkbox
v-model="item.renewal"
disabled
></v-simple-checkbox>
</template>
<template v-slot:[`item.active`]="{ item }">
<v-simple-checkbox
v-model="item.active"
@@ -274,25 +281,17 @@
</v-btn>
</template>
<v-list>
<!-- <v-list-item @click="subExpireAddOneWeek">
<v-list-item-icon>
<v-icon>$sockiPlus</v-icon>
</v-list-item-icon>
<v-list-item-title>One week</v-list-item-title>
</v-list-item> -->
<v-list-item @click="subExpireAddOneMonth">
<v-list-item-icon>
<v-icon>$sockiPlus</v-icon>
</v-list-item-icon>
<v-list-item-title
>One month + 7d</v-list-item-title
>
<v-list-item-title>Now + 1M + 7d</v-list-item-title>
</v-list-item>
<v-list-item @click="subExpireAddOneYear">
<v-list-item-icon>
<v-icon>$sockiPlus</v-icon>
</v-list-item-icon>
<v-list-item-title>One year + 7d</v-list-item-title>
<v-list-item-title>Now + 1Y + 7d</v-list-item-title>
</v-list-item>
</v-list>
</v-menu>
@@ -319,7 +318,24 @@
</v-col>
</v-row>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-checkbox
ref="renewal"
v-model="obj.items[editItemIndex].renewal"
dense
:readonly="formState.readOnly"
:label="$sock.t('Renewal')"
:error-messages="
form().serverErrors(
this,
`Items[${editItemIndex}].renewal`
)
"
@change="
fieldValueChanged(`Items[${editItemIndex}].renewal`)
"
></v-checkbox>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<gz-date-time-picker
ref="Items.originalOrderDate"
@@ -531,6 +547,11 @@ export default {
align: "right",
value: "quantity"
});
headers.push({
text: this.$sock.t("Renewal"),
align: "center",
value: "renewal"
});
headers.push({
text: this.$sock.t("PurchaseExpireDate"),
@@ -565,6 +586,7 @@ export default {
this.hour12
),
active: x.active,
renewal: x.renewal,
productViz: x.productViz
};
});
@@ -671,10 +693,11 @@ export default {
subscriptionId: 0,
productId: null,
quantity: 1,
expireDate: window.$gz.locale.nowUTC8601String(),
expireDate: null, //deliberate to ensure a date gets set properly as some items are monthly and some yearly can't just assume a date here
originalOrderDate: window.$gz.locale.nowUTC8601String(),
originalOrderNumber: null,
active: true
active: true,
renewal: false
});
this.editItemIndex = this.obj.items.length - 1;
this.editItemDialog = true;
@@ -689,7 +712,8 @@ export default {
expireDate: src.expireDate,
originalOrderDate: src.originalOrderDate,
originalOrderNumber: src.originalOrderNumber,
active: true
active: true,
renewal: false
});
this.editItemIndex = this.obj.items.length - 1;
this.editItemDialog = true;
@@ -707,31 +731,28 @@ export default {
return "font-weight-black font-italic error--text";
}
},
subExpireAddOneWeek: function() {
this.obj.items[this.editItemIndex].expireDate = addToDate(
this.obj.items[this.editItemIndex].expireDate,
{
days: 7
}
);
},
subExpireAddOneMonth: function() {
this.obj.items[this.editItemIndex].expireDate = addToDate(
this.obj.items[this.editItemIndex].expireDate,
{
//8.0.16 changed to how I actually use it which is now plus additional time
//before this change I had to keep selecting now and today first
this.obj.items[this.editItemIndex].expireDate = addToDate(null, {
months: 1,
days: 7
}
);
});
// this.obj.items[this.editItemIndex].expireDate = addToDate(
// this.obj.items[this.editItemIndex].expireDate,
// {
// months: 1,
// days: 7
// }
// );
},
subExpireAddOneYear: function() {
this.obj.items[this.editItemIndex].expireDate = addToDate(
this.obj.items[this.editItemIndex].expireDate,
{
//8.0.16 changed to how I actually use it which is now plus additional time
//before this change I had to keep selecting now and today first
this.obj.items[this.editItemIndex].expireDate = addToDate(null, {
years: 1,
days: 7
}
);
});
// const now = window.$gz.locale.nowUTC8601String(this.timeZoneName);
// this.obj.items[
// this.editItemIndex
@@ -1046,6 +1067,7 @@ async function clickHandler(menuItem) {
// { id: 7, name: "Single ", active: true },
// { id: 9, name: "Up to 10 ", active: true },
// { id: 17, name: "Up to 15 ", active: true },
// id 25 = up to 25
// { id: 12, name: "Up to 20 ", active: true },
// { id: 2, name: "Up to 5 ", active: true },
// { id: 20, name: "Up to 999 ", active: true },
@@ -1073,7 +1095,7 @@ async function clickHandler(menuItem) {
wiki: null,
tags: [],
trialMode: false,
renewal: false,
renewal: true,
//dto only props
customerUsers: 250,
maxDataGB: 20,
@@ -1192,6 +1214,10 @@ async function clickHandler(menuItem) {
l.users = 1;
l.maintenanceExpire = z.expireDate;
break;
case 25: //Up to 25 //case 4576
l.users = 25;
l.maintenanceExpire = z.expireDate;
break;
case 20: //Up to 999
l.users = 999;
l.maintenanceExpire = z.expireDate;
@@ -1411,7 +1437,8 @@ async function fetchTranslatedText() {
"OriginalOrderDate",
"LicenseRegTo",
"LicenseFetchEmail",
"DatabaseID"
"DatabaseID",
"Renewal"
]);
}

View File

@@ -101,7 +101,7 @@
<v-col cols="12" sm="6" lg="4" xl="3">
<v-select
ref="sockType"
v-model="obj.aType"
v-model="obj.sockType"
dense
:items="selectLists.coreSockTypes"
item-text="name"
@@ -109,9 +109,9 @@
:readonly="formState.readOnly"
:label="$sock.t('SockType')"
data-cy="sockType"
:rules="[form().integerValid(this, 'aType')]"
:error-messages="form().serverErrors(this, 'aType')"
@input="fieldValueChanged('aType')"
:rules="[form().integerValid(this, 'sockType')]"
:error-messages="form().serverErrors(this, 'sockType')"
@input="fieldValueChanged('sockType')"
></v-select>
</v-col>
@@ -371,7 +371,7 @@ export default {
active: true,
notes: "",
roles: 124927, //all except customers
aType: 0,
sockType: 0,
template: `<html>
<body>
@@ -438,7 +438,7 @@ export default {
},
computed: {
showIncludeDescendants: function() {
switch (this.obj.aType) {
switch (this.obj.sockType) {
case window.$gz.type.WorkOrderItem:
case window.$gz.type.WorkOrderItemExpense:
case window.$gz.type.WorkOrderItemLabor:
@@ -558,7 +558,7 @@ export default {
vm.$router.go(-1);
return;
}
vm.obj.aType = vm.$route.params.reportDataOptions.SockType;
vm.obj.sockType = vm.$route.params.reportDataOptions.SockType;
//trigger rule breaking / validation
this.$nextTick(() => {
this.obj.name = null;
@@ -1139,7 +1139,7 @@ async function fetchReportData(vm) {
"sock-report-edit:fetchReportData - route parameter SockType is missing or empty, unable to init report designer"
);
}
vm.obj.aType = reportDataOptions.SockType;
vm.obj.sockType = reportDataOptions.SockType;
//handle includeWoItemDescendants by adding it's value to the request for report data
reportDataOptions["includeWoItemDescendants"] =
vm.obj.includeWoItemDescendants;