fixed bug ##292
hier wurde beim baruser und normalen user folgendes hinzugefügt: es wird kontrolliert ob der anzuschreibene betrag das limit überschreitet. falls ja wird ein dialog gezeigt, welcher eine bestätigung zum anschreiben verlangt oder zurücksetzt. sollte der betrag 5 € über den limit betragen, wird das anzuschreibende zurückgesetzt und es kommt eine warnung, dass das nicht geht.
This commit is contained in:
		
							parent
							
								
									c86f1afd4c
								
							
						
					
					
						commit
						c78ef99a0d
					
				|  | @ -35,6 +35,40 @@ | |||
|         </v-card-actions> | ||||
|       </v-card> | ||||
|     </v-dialog> | ||||
|     <v-dialog | ||||
|       v-if="overLimitUser" | ||||
|       v-model="overLimitUser" | ||||
|       max-width="290" | ||||
|       persistent | ||||
|     > | ||||
|       <v-card> | ||||
|         <v-card-title>Warnung</v-card-title> | ||||
|         <v-card-text> | ||||
|           {{ overLimitUser.firstname }} {{ overLimitUser.lastname }} übersteigt | ||||
|           das Anschreibelimit von | ||||
|           {{ (overLimitUser.limit / 100).toFixed(2) }} €. Danach kann dieses | ||||
|           Mitglied nichts mehr anschreiben. Will er das wirklich? | ||||
|         </v-card-text> | ||||
|         <v-card-actions> | ||||
|           <v-spacer /> | ||||
|           <v-btn text @click="cancel()">Abbrechen</v-btn> | ||||
|           <v-btn text @click="continueAdd(overLimitUser)">Anschreiben</v-btn> | ||||
|         </v-card-actions> | ||||
|       </v-card> | ||||
|     </v-dialog> | ||||
|     <v-dialog v-if="overOverLimit" v-model="overOverLimit" max-width="290" persistent> | ||||
|       <v-card> | ||||
|         <v-card-title>Anschreiben nicht möglich</v-card-title> | ||||
|         <v-card-text> | ||||
|           {{ overOverLimit.firstname }} | ||||
|           {{ overOverLimit.lastname }} überschreitet das Anschreibelimit zuviel. | ||||
|           Das Anschreiben wurde daher gestoppt und zurückgesetzt. | ||||
|         </v-card-text> | ||||
|         <v-card-actions> | ||||
|           <v-btn text @click="overOverLimit = null">Verstanden</v-btn> | ||||
|         </v-card-actions> | ||||
|       </v-card> | ||||
|     </v-dialog> | ||||
|     <v-progress-linear v-if="loading && users.length !== 0" indeterminate /> | ||||
|     <v-container> | ||||
|       <AddAmountSkeleton v-if="loading && users.length === 0" /> | ||||
|  | @ -173,13 +207,11 @@ | |||
|                     <v-list-item> | ||||
|                       <v-list-item-content class="text-center"> | ||||
|                         <v-list-item-action-text :class="getColor(user.type)" | ||||
|                         >{{ | ||||
|                           (user.amount / 100).toFixed(2) | ||||
|                           }} | ||||
|                           >{{ (user.amount / 100).toFixed(2) }} | ||||
|                           € | ||||
|                         </v-list-item-action-text> | ||||
|                         <v-list-item-action-text v-if="user.toSetAmount"> | ||||
|                           - {{(user.toSetAmount / 100).toFixed(2)}} | ||||
|                           - {{ (user.toSetAmount / 100).toFixed(2) }} | ||||
|                         </v-list-item-action-text> | ||||
|                       </v-list-item-content> | ||||
|                     </v-list-item> | ||||
|  | @ -189,23 +221,19 @@ | |||
|               <v-row> | ||||
|                 <v-col class="hidden-sm-and-down" cols="80"> | ||||
|                   <v-alert v-if="user.locked" type="error" | ||||
|                   >{{ user.firstname }} darf nicht mehr anschreiben. | ||||
|                     >{{ user.firstname }} darf nicht mehr anschreiben. | ||||
|                     {{ user.firstname }} sollte sich lieber mal beim Finanzer | ||||
|                     melden. | ||||
|                   </v-alert | ||||
|                   > | ||||
|                   </v-alert> | ||||
|                 </v-col> | ||||
|                 <v-col align-self="center" v-if="user.locked"> | ||||
|                   <v-row> | ||||
|                     <v-list-item> | ||||
|                       <v-list-item-content class="text-center"> | ||||
|                         <v-list-item-action-text :class="getColor(user.type)" | ||||
|                         >{{ | ||||
|                           (user.amount / 100).toFixed(2) | ||||
|                           }} | ||||
|                           >{{ (user.amount / 100).toFixed(2) }} | ||||
|                           € | ||||
|                         </v-list-item-action-text | ||||
|                         > | ||||
|                         </v-list-item-action-text> | ||||
|                       </v-list-item-content> | ||||
|                     </v-list-item> | ||||
|                   </v-row> | ||||
|  | @ -221,16 +249,18 @@ | |||
|             :value="messages.length > 0 ? messages[0].visible : test" | ||||
|             vertical | ||||
|           > | ||||
|               <v-list-item v-for="message in messages" | ||||
|                            :key="messages.indexOf(message)" | ||||
|                            style="background-color: #4CAF50;" | ||||
|                             v-show="message.visible"> | ||||
|                 <v-list-item-content> | ||||
|                   <v-list-item-title style="color: white"> | ||||
|                     {{ createMessage(message) }} | ||||
|                   </v-list-item-title> | ||||
|                 </v-list-item-content> | ||||
|               </v-list-item> | ||||
|             <v-list-item | ||||
|               v-for="message in messages" | ||||
|               :key="messages.indexOf(message)" | ||||
|               style="background-color: #4CAF50;" | ||||
|               v-show="message.visible" | ||||
|             > | ||||
|               <v-list-item-content> | ||||
|                 <v-list-item-title style="color: white"> | ||||
|                   {{ createMessage(message) }} | ||||
|                 </v-list-item-title> | ||||
|               </v-list-item-content> | ||||
|             </v-list-item> | ||||
|           </v-snackbar> | ||||
|         </v-container> | ||||
|       </div> | ||||
|  | @ -258,7 +288,9 @@ export default { | |||
|       timer: '', | ||||
|       stornoMessage: null, | ||||
|       checkValidate: false, | ||||
|       test: null | ||||
|       test: null, | ||||
|       overLimitUser: null, | ||||
|       overOverLimit: null | ||||
|     } | ||||
|   }, | ||||
|   created() { | ||||
|  | @ -273,17 +305,75 @@ export default { | |||
|       deactivate: 'barUsers/deactivateMenu', | ||||
|       commitStorno: 'barUsers/storno' | ||||
|     }), | ||||
|     continueAdd(user) { | ||||
|       this.overLimitUser = null | ||||
|       user.checkedOverLimit = true | ||||
|       if (user.value) { | ||||
|         this.addAmount({ | ||||
|           username: user.username, | ||||
|           amount: Math.round(Math.abs(user.value * 100)), | ||||
|           user: user | ||||
|         }) | ||||
|         setTimeout(() => { | ||||
|           user.value = null | ||||
|           user.toSetAmount = null | ||||
|         }, 300) | ||||
|       } else { | ||||
|         user.timeout = setTimeout(() => { | ||||
|           this.addAmount({ | ||||
|             username: user.username, | ||||
|             amount: user.toSetAmount, | ||||
|             user: user | ||||
|           }) | ||||
|           setTimeout(() => { | ||||
|             user.toSetAmount = null | ||||
|           }, 300) | ||||
|         }, 2000) | ||||
|       } | ||||
|     }, | ||||
|     cancel() { | ||||
|       this.overLimitUser.toSetAmount = null | ||||
|       this.overLimitUser.value = null | ||||
|       this.overLimitUser = null | ||||
|     }, | ||||
|     checkOverLimitIsValid(user) { | ||||
|       if (user.toSetAmount) { | ||||
|         if (Math.abs(user.amount - Number.parseInt(user.toSetAmount)) > user.limit + 500) { | ||||
|           this.overOverLimit = user | ||||
|           user.toSetAmount = null | ||||
|           user.value = null | ||||
|           return false | ||||
|         } | ||||
|       } | ||||
|       return true | ||||
|     }, | ||||
|     checkOverLimit(user) { | ||||
|       if (user.toSetAmount) { | ||||
|         if (Math.abs( user.amount - user.toSetAmount) > user.limit) { | ||||
|           return user.checkedOverLimit ? false : true | ||||
|         } | ||||
|       } | ||||
|       return false | ||||
|     }, | ||||
|     addingAmount(user, amount) { | ||||
|       clearTimeout(user.timeout) | ||||
|       user.toSetAmount = user.toSetAmount ? user.toSetAmount + amount : amount | ||||
|       user.timeout = setTimeout(() => { | ||||
|         this.addAmount({username: user.username, | ||||
|           amount: user.toSetAmount, | ||||
|           user: user}) | ||||
|         setTimeout(() => { | ||||
|           user.toSetAmount = null | ||||
|         }, 300) | ||||
|       }, 2000) | ||||
|       if (this.checkOverLimitIsValid(user)) { | ||||
|         if (this.checkOverLimit(user)) { | ||||
|           this.overLimitUser = user | ||||
|         } else { | ||||
|           user.timeout = setTimeout(() => { | ||||
|             this.addAmount({ | ||||
|               username: user.username, | ||||
|               amount: user.toSetAmount, | ||||
|               user: user | ||||
|             }) | ||||
|             setTimeout(() => { | ||||
|               user.toSetAmount = null | ||||
|             }, 300) | ||||
|           }, 2000) | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     forceRender() { | ||||
|       this.componentRenderer += 1 | ||||
|  | @ -315,14 +405,25 @@ export default { | |||
|       } | ||||
|     }, | ||||
|     addAmountMore(user) { | ||||
|       this.addAmount({ | ||||
|         username: user.username, | ||||
|         amount: Math.round(Math.abs(user.value * 100)), | ||||
|         user: user | ||||
|       }) | ||||
|       setTimeout(() => { | ||||
|         user.value = null | ||||
|       }, 300) | ||||
|       user.toSetAmount = user.toSetAmount | ||||
|         ? user.toSetAmount + Math.round(Math.abs(user.value * 100)) | ||||
|         : Math.round(Math.abs(user.value * 100)) | ||||
|       if (this.checkOverLimitIsValid(user)) { | ||||
|         if (this.checkOverLimit(user)) { | ||||
|           this.overLimitUser = user | ||||
|         } | ||||
|         else { | ||||
|           this.addAmount({ | ||||
|             username: user.username, | ||||
|             amount: Math.round(Math.abs(user.value * 100)), | ||||
|             user: user | ||||
|           }) | ||||
|           setTimeout(() => { | ||||
|             user.value = null | ||||
|             user.toSetAmount = null | ||||
|           }, 300) | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     storno(message) { | ||||
|       if (!message.error) { | ||||
|  | @ -373,7 +474,7 @@ export default { | |||
|     calcLastSeen(user) { | ||||
|       if (user.last_seen) { | ||||
|         let date = new Date() | ||||
|         if (((date - user.last_seen)/1000/60/60) < 72) { | ||||
|         if ((date - user.last_seen) / 1000 / 60 / 60 < 72) { | ||||
|           return true | ||||
|         } | ||||
|       } | ||||
|  |  | |||
|  | @ -6,11 +6,13 @@ | |||
|           Willst du wirklich?? | ||||
|         </v-card-title> | ||||
|         <v-card-text v-if="stornoMessage"> | ||||
|           Willst du wirklich den Betrag {{(stornoMessage.amount/100).toFixed(2)}}€ von {{stornoMessage.user.firstname}} | ||||
|           {{stornoMessage.user.lastname}} stornieren? | ||||
|           Willst du wirklich den Betrag | ||||
|           {{ (stornoMessage.amount / 100).toFixed(2) }}€ von | ||||
|           {{ stornoMessage.user.firstname }} | ||||
|           {{ stornoMessage.user.lastname }} stornieren? | ||||
|         </v-card-text> | ||||
|         <v-card-actions> | ||||
|           <v-spacer/> | ||||
|           <v-spacer /> | ||||
|           <v-btn text @click="cancelStorno">Abbrechen</v-btn> | ||||
|           <v-btn text @click="acceptStorno">Stornieren</v-btn> | ||||
|         </v-card-actions> | ||||
|  | @ -34,6 +36,40 @@ | |||
|         </v-card-actions> | ||||
|       </v-card> | ||||
|     </v-dialog> | ||||
|     <v-dialog | ||||
|             v-if="overLimitUser" | ||||
|             v-model="overLimitUser" | ||||
|             max-width="290" | ||||
|             persistent | ||||
|     > | ||||
|       <v-card> | ||||
|         <v-card-title>Warnung</v-card-title> | ||||
|         <v-card-text> | ||||
|           {{ overLimitUser.firstname }} {{ overLimitUser.lastname }} übersteigt | ||||
|           das Anschreibelimit von | ||||
|           {{ (overLimitUser.limit / 100).toFixed(2) }} €. Danach kann dieses | ||||
|           Mitglied nichts mehr anschreiben. Will er das wirklich? | ||||
|         </v-card-text> | ||||
|         <v-card-actions> | ||||
|           <v-spacer /> | ||||
|           <v-btn text @click="cancel()">Abbrechen</v-btn> | ||||
|           <v-btn text @click="continueAdd(overLimitUser)">Anschreiben</v-btn> | ||||
|         </v-card-actions> | ||||
|       </v-card> | ||||
|     </v-dialog> | ||||
|     <v-dialog v-if="overOverLimit" v-model="overOverLimit" max-width="290" persistent> | ||||
|       <v-card> | ||||
|         <v-card-title>Anschreiben nicht möglich</v-card-title> | ||||
|         <v-card-text> | ||||
|           {{ overOverLimit.firstname }} | ||||
|           {{ overOverLimit.lastname }} überschreitet das Anschreibelimit zuviel. | ||||
|           Das Anschreiben wurde daher gestoppt und zurückgesetzt. | ||||
|         </v-card-text> | ||||
|         <v-card-actions> | ||||
|           <v-btn text @click="overOverLimit = null">Verstanden</v-btn> | ||||
|         </v-card-actions> | ||||
|       </v-card> | ||||
|     </v-dialog> | ||||
|     <AddAmountSkeleton v-if="loading" /> | ||||
|     <v-navigation-drawer v-model="menu" right app clipped> | ||||
|       <v-list-item-group :key="componentRenderer"> | ||||
|  | @ -54,7 +90,7 @@ | |||
|                 <v-progress-linear indeterminate v-if="message.loading" /> | ||||
|                 <v-list-item-title>{{ now(message.date) }}</v-list-item-title> | ||||
|                 <v-list-item-subtitle> | ||||
|                   {{createSum(message)}} {{ createMessage(message) }} | ||||
|                   {{ createSum(message) }} {{ createMessage(message) }} | ||||
|                 </v-list-item-subtitle> | ||||
|                 <v-list-item-subtitle class="red--text" v-if="message.storno" | ||||
|                   >STORNIERT!!! | ||||
|  | @ -76,6 +112,10 @@ | |||
|           <v-icon>{{ menuIcon }}</v-icon> | ||||
|         </v-btn> | ||||
|       </v-card-title> | ||||
|       <v-card-subtitle v-if="user.limit + getAllSum() > 0"> | ||||
|         Nur noch {{ ((user.limit + getAllSum()) / 100).toFixed(2) }} € | ||||
|         übrig!! | ||||
|       </v-card-subtitle> | ||||
|       <v-card-text> | ||||
|         <v-row> | ||||
|           <v-col cols="10"> | ||||
|  | @ -166,14 +206,11 @@ | |||
|               <v-list-item> | ||||
|                 <v-list-item-content class="text-center"> | ||||
|                   <v-list-item-action-text :class="getColor(getAllSum())" | ||||
|                   >{{ | ||||
|                     (getAllSum() / 100).toFixed(2) | ||||
|                     }} | ||||
|                     >{{ (getAllSum() / 100).toFixed(2) }} | ||||
|                     € | ||||
|                   </v-list-item-action-text | ||||
|                   > | ||||
|                   </v-list-item-action-text> | ||||
|                   <v-list-item-action-text v-if="toSetAmount"> | ||||
|                     - {{(toSetAmount / 100).toFixed(2)}} | ||||
|                     - {{ (toSetAmount / 100).toFixed(2) }} | ||||
|                   </v-list-item-action-text> | ||||
|                 </v-list-item-content> | ||||
|               </v-list-item> | ||||
|  | @ -188,7 +225,6 @@ | |||
|       </v-card-text> | ||||
|     </v-card> | ||||
|     <v-snackbar | ||||
| 
 | ||||
|       v-for="message in messages" | ||||
|       :key="messages.indexOf(message)" | ||||
|       :color="message.error ? 'error' : 'success'" | ||||
|  | @ -199,14 +235,15 @@ | |||
|       vertical | ||||
|     > | ||||
|       <div class="title"> | ||||
|         <p style="font-size: 5em; margin: 20px">{{createSum(message)}}</p>{{ createMessage(message) }} | ||||
|         <p style="font-size: 5em; margin: 20px">{{ createSum(message) }}</p> | ||||
|         {{ createMessage(message) }} | ||||
|       </div> | ||||
|       <div> | ||||
|         {{now(message.date)}} | ||||
|         {{ now(message.date) }} | ||||
|       </div> | ||||
|       <v-btn color="white" icon @click="message.visible = false"> | ||||
|         <v-icon> | ||||
|           {{close}} | ||||
|           {{ close }} | ||||
|         </v-icon> | ||||
|       </v-btn> | ||||
|     </v-snackbar> | ||||
|  | @ -235,7 +272,9 @@ export default { | |||
|       checkValidate: false, | ||||
|       stornoMessage: null, | ||||
|       timeout: null, | ||||
|       toSetAmount: null | ||||
|       toSetAmount: null, | ||||
|       overLimitUser: null, | ||||
|       overOverLimit: null, | ||||
|     } | ||||
|   }, | ||||
|   created() { | ||||
|  | @ -246,15 +285,63 @@ export default { | |||
|       addAmount: 'user/addAmount', | ||||
|       commitStorno: 'user/storno' | ||||
|     }), | ||||
|     continueAdd(user) { | ||||
|       this.overLimitUser = null | ||||
|       user.checkedOverLimit = true | ||||
|       if (this.value) { | ||||
|         this.addAmount(Math.round(Math.abs(this.value * 100))) | ||||
|         setTimeout(() => { | ||||
|           this.value = null | ||||
|           this.toSetAmount = null | ||||
|         }, 300) | ||||
|       } else { | ||||
|         user.timeout = setTimeout(() => { | ||||
|           this.addAmount(this.toSetAmount) | ||||
|           setTimeout(() => { | ||||
|             this.toSetAmount = null | ||||
|           }, 300) | ||||
|         }, 2000) | ||||
|       } | ||||
|     }, | ||||
|     cancel() { | ||||
|       this.toSetAmount = null | ||||
|       this.value = null | ||||
|       this.overLimitUser = null | ||||
|     }, | ||||
|     checkOverLimitIsValid(user) { | ||||
|       if (this.toSetAmount) { | ||||
|         if (Math.abs(this.getAllSum() - Number.parseInt(this.toSetAmount)) > user.limit + 500) { | ||||
|           this.overOverLimit = user | ||||
|           this.toSetAmount = null | ||||
|           this.value = null | ||||
|           return false | ||||
|         } | ||||
|       } | ||||
|       return true | ||||
|     }, | ||||
|     checkOverLimit(user) { | ||||
|       if (this.toSetAmount) { | ||||
|         if (Math.abs( this.getAllSum() - this.toSetAmount) > user.limit) { | ||||
|           return user.checkedOverLimit ? false : true | ||||
|         } | ||||
|       } | ||||
|       return false | ||||
|     }, | ||||
|     addingAmount(amount) { | ||||
|       clearTimeout(this.timeout) | ||||
|       this.toSetAmount = this.toSetAmount ? this.toSetAmount + amount : amount | ||||
|       this.timeout = setTimeout(() => { | ||||
|         this.addAmount(this.toSetAmount) | ||||
|         setTimeout(() => { | ||||
|           this.toSetAmount = null | ||||
|         }, 300) | ||||
|       }, 2000) | ||||
|       if (this.checkOverLimitIsValid(this.user)) { | ||||
|         if (this.checkOverLimit(this.user)) { | ||||
|           this.overLimitUser = this.user | ||||
|         } else { | ||||
|           this.timeout = setTimeout(() => { | ||||
|             this.addAmount(this.toSetAmount) | ||||
|             setTimeout(() => { | ||||
|               this.toSetAmount = null | ||||
|             }, 300) | ||||
|           }, 2000) | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     forceRender() { | ||||
|       this.componentRenderer += 1 | ||||
|  | @ -279,29 +366,37 @@ export default { | |||
|         } | ||||
|       } | ||||
|     }, | ||||
|   acceptStorno() { | ||||
|     this.commitStorno({ | ||||
|       amount: this.stornoMessage.amount, | ||||
|       date: this.stornoMessage.date | ||||
|     }) | ||||
|     setTimeout(() => { | ||||
|       this.cancelStorno() | ||||
|     }, 300) | ||||
|   }, | ||||
|   cancelStorno() { | ||||
|     this.stornoMessage = null | ||||
|     this.checkValidate = null | ||||
|   }, | ||||
|     addAmountMore() { | ||||
|       this.addAmount(Math.abs(this.value * 100)) | ||||
|     acceptStorno() { | ||||
|       this.commitStorno({ | ||||
|         amount: this.stornoMessage.amount, | ||||
|         date: this.stornoMessage.date | ||||
|       }) | ||||
|       setTimeout(() => { | ||||
|         this.value = null | ||||
|         this.cancelStorno() | ||||
|       }, 300) | ||||
|     }, | ||||
|     cancelStorno() { | ||||
|       this.stornoMessage = null | ||||
|       this.checkValidate = null | ||||
|     }, | ||||
|     addAmountMore() { | ||||
|       this.toSetAmount = this.toSetAmount | ||||
|               ? this.toSetAmount + Math.round(Math.abs(this.value * 100)) | ||||
|               : Math.round(Math.abs(this.value * 100)) | ||||
|       if (this.checkOverLimitIsValid(this.user)) { | ||||
|         if (this.checkOverLimit(this.user)) { | ||||
|           this.overLimitUser = this.user | ||||
|         } | ||||
|         else { | ||||
|           this.addAmount(Math.abs(this.value * 100)) | ||||
|           setTimeout(() => { | ||||
|             this.value = null | ||||
|           }, 300) | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     createSum(message) { | ||||
|       var text = '' + | ||||
|       (message.amount / 100).toFixed(2) + | ||||
|       '€' | ||||
|       var text = '' + (message.amount / 100).toFixed(2) + '€' | ||||
|       return text | ||||
|     }, | ||||
|     createMessage(message) { | ||||
|  | @ -335,7 +430,7 @@ export default { | |||
|     under5minutes() { | ||||
|       return now => { | ||||
|         var actual = new Date() | ||||
|        return actual - now < 15000 | ||||
|         return actual - now < 15000 | ||||
|       } | ||||
|     }, | ||||
|     now() { | ||||
|  |  | |||
|  | @ -242,6 +242,7 @@ const actions = { | |||
|         }, | ||||
|         { headers: { Token: rootState.login.user.accessToken } } | ||||
|       ) | ||||
|       console.log(response.data) | ||||
|       commit('setUsers', { [response.data.username]: response.data }) | ||||
|       commit('updateMessage', { date: data.date, storno: true }) | ||||
|       dispatch('getLifeTime', null, { root: true }) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue