This commit is contained in:
2022-03-06 16:08:44 +00:00
parent e731cd107b
commit 426e8d86df
6 changed files with 354 additions and 215 deletions

View File

@@ -29,7 +29,8 @@ How to implement auto notifications if can report and send from server
Add customer tags to match to send auto subscription Add customer tags to match to send auto subscription
Add optional report to appropriate subscriptions Add optional report to appropriate subscriptions
add text message, has templates like v7 did add text message, has templates like v7 did
Also in that same form be able to set the impersonation values like what time zone, what currency symbol what language id if not server default whatever is needed for reporting Also in that same form be able to set the impersonation values that are *actually* used by the report code:
CurrencyName, LanguageName, TimeZoneName, hour12, translationid
defaults to local current user's settings, language setting etc and saves them defaults to local current user's settings, language setting etc and saves them
MUST HAVE feature click a button to see which current customers this would send to based on tags!!! MUST HAVE feature click a button to see which current customers this would send to based on tags!!!
ideally it would display in the form live as any changes are made and if the customer has no email it would highl8ight that somehow ideally it would display in the form live as any changes are made and if the customer has no email it would highl8ight that somehow
@@ -48,7 +49,14 @@ How to implement auto notifications if can report and send from server
Quote status changed (attach quote report), work order status changed (attach wo report) , wo follow up x days after closed (no report) Quote status changed (attach quote report), work order status changed (attach wo report) , wo follow up x days after closed (no report)
Set file name of attached report, maybe user can template that? Or use biz object name file friendly morphed Set file name of attached report, maybe user can template that? Or use biz object name file friendly morphed
CASES
OTHER B4BETA
test user color in home user and in adm-user with new record and exsiting just to confirm it's ok
cases
# OUTSTANDING BEFORE RELEASE # OUTSTANDING BEFORE RELEASE

View File

@@ -38,7 +38,7 @@ export default new Vuex.Store({
timeZoneOverride: null, //use browser tz by default timeZoneOverride: null, //use browser tz by default
currencyName: "USD", currencyName: "USD",
hour12: true, hour12: true,
// uiColor: "#000000", uiColor: "#000000",
emailAddress: null, emailAddress: null,
mapUrlTemplate: null mapUrlTemplate: null
}, },

View File

@@ -441,7 +441,7 @@ export default {
phone2: null, phone2: null,
phone3: null, phone3: null,
mapUrlTemplate: null, mapUrlTemplate: null,
// uiColor: "#000000", uiColor: "#000000",
languageOverride: null, languageOverride: null,
timeZoneOverride: null, timeZoneOverride: null,
currencyName: "USD", currencyName: "USD",

View File

@@ -3,8 +3,15 @@
<v-row v-if="formState.ready"> <v-row v-if="formState.ready">
<v-col> <v-col>
<v-form ref="form"> <v-form ref="form">
<v-tabs v-model="tab" mobile-breakpoint="100">
<v-tab>{{ $ay.t("NotifyEventType") }}</v-tab>
<v-tab>{{ $ay.t("NotificationSettings") }}</v-tab>
<v-tabs-items v-model="tab">
<v-tab-item class="mt-4 ml-2">
<v-row> <v-row>
<gz-error :error-box-message="formState.errorBoxMessage"></gz-error> <gz-error
:error-box-message="formState.errorBoxMessage"
></gz-error>
<v-col cols="12" sm="6" lg="4" xl="3"> <v-col cols="12" sm="6" lg="4" xl="3">
<gz-tag-picker <gz-tag-picker
ref="customerTags" ref="customerTags"
@@ -12,7 +19,9 @@
:label="$ay.t('CustomerTags')" :label="$ay.t('CustomerTags')"
:readonly="formState.readOnly" :readonly="formState.readOnly"
data-cy="customerTags" data-cy="customerTags"
:error-messages="form().serverErrors(this, 'customerTags')" :error-messages="
form().serverErrors(this, 'customerTags')
"
@input="fieldValueChanged('customerTags')" @input="fieldValueChanged('customerTags')"
></gz-tag-picker> ></gz-tag-picker>
</v-col> </v-col>
@@ -45,7 +54,9 @@
</v-list-item-avatar> </v-list-item-avatar>
<v-list-item-content> <v-list-item-content>
<v-list-item-title <v-list-item-title
><span class="text-subtitle-2">{{ data.item.name }}</span ><span class="text-subtitle-2">{{
data.item.name
}}</span
><v-icon ><v-icon
v-if="data.item.locked" v-if="data.item.locked"
small small
@@ -83,7 +94,9 @@
</v-list-item-avatar> </v-list-item-avatar>
<v-list-item-content> <v-list-item-content>
<v-list-item-title <v-list-item-title
><span class="text-subtitle-2">{{ data.item.name }}</span ><span class="text-subtitle-2">{{
data.item.name
}}</span
><v-icon ><v-icon
v-if="data.item.locked" v-if="data.item.locked"
small small
@@ -124,7 +137,13 @@
></gz-decimal> ></gz-decimal>
</v-col> </v-col>
<v-col v-if="showIntegerDecValue" cols="12" sm="6" lg="4" xl="3"> <v-col
v-if="showIntegerDecValue"
cols="12"
sm="6"
lg="4"
xl="3"
>
<v-text-field <v-text-field
ref="decValue" ref="decValue"
v-model="obj.decValue" v-model="obj.decValue"
@@ -169,7 +188,13 @@
></v-select> ></v-select>
</v-col> </v-col>
<!-- :menu-props="{ contentClass: 'cyAyaType' }" --> <!-- :menu-props="{ contentClass: 'cyAyaType' }" -->
<v-col v-if="showAdvanceNotice" cols="12" sm="6" lg="4" xl="3"> <v-col
v-if="showAdvanceNotice"
cols="12"
sm="6"
lg="4"
xl="3"
>
<gz-duration-picker <gz-duration-picker
ref="advanceNotice" ref="advanceNotice"
v-model="obj.advanceNotice" v-model="obj.advanceNotice"
@@ -177,7 +202,9 @@
:label="$ay.t('NotifySubscriptionPendingSpan')" :label="$ay.t('NotifySubscriptionPendingSpan')"
:show-seconds="false" :show-seconds="false"
data-cy="advanceNotice" data-cy="advanceNotice"
:error-messages="form().serverErrors(this, 'advanceNotice')" :error-messages="
form().serverErrors(this, 'advanceNotice')
"
@input="fieldValueChanged('advanceNotice')" @input="fieldValueChanged('advanceNotice')"
></gz-duration-picker> ></gz-duration-picker>
</v-col> </v-col>
@@ -197,7 +224,9 @@
:readonly="formState.readOnly" :readonly="formState.readOnly"
:label="$ay.t('AttachReport')" :label="$ay.t('AttachReport')"
data-cy="linkReportId" data-cy="linkReportId"
:error-messages="form().serverErrors(this, 'linkReportId')" :error-messages="
form().serverErrors(this, 'linkReportId')
"
@input="fieldValueChanged('linkReportId')" @input="fieldValueChanged('linkReportId')"
></gz-pick-list> ></gz-pick-list>
</v-col> </v-col>
@@ -214,6 +243,95 @@
></gz-tag-picker> ></gz-tag-picker>
</v-col> </v-col>
</v-row> </v-row>
</v-tab-item>
<v-tab-item class="mt-4 ml-2">
<v-row>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-select
ref="translationId"
v-model="obj.translationId"
:items="selectLists.translations"
item-text="name"
item-value="id"
:readonly="formState.readOnly"
:label="$ay.t('Translation')"
:error-messages="
form().serverErrors(this, 'translationId')
"
@input="fieldValueChanged('translationId')"
></v-select>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-checkbox
ref="hour12"
v-model="obj.hour12"
:readonly="formState.readOnly"
:label="$ay.t('Hour12')"
:error-messages="form().serverErrors(this, 'hour12')"
@change="fieldValueChanged('hour12')"
></v-checkbox>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-text-field
ref="currencyName"
v-model="obj.currencyName"
:hint="
optionsObj.currencyName == null ||
optionsObj.currencyName == ''
? locale().getCurrencyName()
: ''
"
persistent-hint
:readonly="formState.readOnly"
:label="$ay.t('CurrencyCode')"
:error-messages="
form().serverErrors(this, 'currencyName')
"
append-outer-icon="$ayiQuestionCircle"
@input="fieldValueChanged('currencyName')"
@click:append-outer="goHelp()"
></v-text-field>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-text-field
ref="languageOverride"
v-model="obj.languageOverride"
:hint="locale().getResolvedLanguage()"
persistent-hint
:readonly="formState.readOnly"
:label="$ay.t('LanguageCode')"
:error-messages="
form().serverErrors(this, 'languageOverride')
"
append-outer-icon="$ayiQuestionCircle"
@input="fieldValueChanged('languageOverride')"
@click:append-outer="goHelp()"
></v-text-field>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<v-text-field
ref="timeZoneOverride"
v-model="obj.timeZoneOverride"
:hint="locale().getResolvedTimeZoneName()"
persistent-hint
:readonly="formState.readOnly"
:label="$ay.t('TimeZone')"
:error-messages="
form().serverErrors(this, 'timeZoneOverride')
"
append-outer-icon="$ayiQuestionCircle"
@input="fieldValueChanged('timeZoneOverride')"
@click:append-outer="goHelp()"
></v-text-field>
</v-col>
</v-row>
</v-tab-item>
</v-tabs-items>
</v-tabs>
</v-form> </v-form>
</v-col> </v-col>
</v-row> </v-row>
@@ -238,6 +356,11 @@ export default {
obj: { obj: {
id: 0, id: 0,
concurrency: 0, concurrency: 0,
languageOverride: null,
timeZoneOverride: null,
currencyName: "USD",
hour12: true,
translationId: 1,
ayaType: 0, ayaType: 0,
eventType: 0, eventType: 0,
advanceNotice: "00:00:00", advanceNotice: "00:00:00",
@@ -258,7 +381,8 @@ export default {
serverError: {} serverError: {}
}, },
rights: window.$gz.role.defaultRightsObject(), rights: window.$gz.role.defaultRightsObject(),
ayaType: window.$gz.type.CustomerNotifySubscription ayaType: window.$gz.type.CustomerNotifySubscription,
tab: 0
}; };
}, },
computed: { computed: {
@@ -704,7 +828,14 @@ async function fetchTranslatedText() {
"Total", "Total",
"UiFieldDataTypesInteger", "UiFieldDataTypesInteger",
"QuoteQuoteStatusType", "QuoteQuoteStatusType",
"AttachReport" "AttachReport",
"NotificationSettings",
"NotifyEventType",
"CurrencyCode",
"LanguageCode",
"TimeZone",
"Hour12",
"Translation"
]); ]);
} }

View File

@@ -173,21 +173,20 @@
></v-text-field> ></v-text-field>
</v-col> </v-col>
<!-- <v-col cols="12" sm="6" lg="4" xl="3"> <v-col cols="12" sm="6" lg="4" xl="3">
<span class="text-caption"> <span class="text-caption">
{{ $ay.t("UserColor") }} {{ $ay.t("UserColor") }}
</span> </span>
<v-color-picker <v-color-picker
ref="uiColor"
v-model="obj.uiColor" v-model="obj.uiColor"
:readonly="formState.readOnly" :readonly="formState.readOnly"
hide-mode-switch hide-mode-switch
mode="hexa" mode="hexa"
:error-messages="form().serverErrors(this, 'uiColor')" :error-messages="form().serverErrors(this, 'uiColor')"
ref="uiColor"
@input="fieldValueChanged('uiColor')" @input="fieldValueChanged('uiColor')"
></v-color-picker> ></v-color-picker>
</v-col> --> </v-col>
</v-row> </v-row>
</v-form> </v-form>
</v-col> </v-col>
@@ -216,6 +215,7 @@ export default {
phone2: null, phone2: null,
phone3: null, phone3: null,
mapUrlTemplate: null, mapUrlTemplate: null,
uiColor: "#000000",
languageOverride: null, languageOverride: null,
timeZoneOverride: null, timeZoneOverride: null,
currencyName: null, currencyName: null,