8282 {{ $tc("words.deviceType") }}
8383 </div >
8484 <div class =" md-layout-item md-subheader n-font" >
85- {{ $tc(`words.${transaction.device.device_type}`) }}
85+ {{ deviceType }}
8686 </div >
8787 </div >
8888 <hr class =" hr-d" />
8989 <div class =" md-layout" >
9090 <div class =" md-layout-item md-subheader" >
91- {{ $tc("words.device") }}
91+ {{
92+ transaction.device
93+ ? $tc("words.device")
94+ : $tc("words.appliance")
95+ }}
9296 </div >
9397 <div
9498 class =" md-layout-item md-subheader n-font"
9599 v-if ="
96100 transaction.payment_histories[0].paymentHistory &&
101+ transaction.device &&
97102 transaction.device.device_type === 'meter'
98103 "
99104 >
110115 class =" md-layout-item md-subheader n-font"
111116 v-else-if ="
112117 transaction.payment_histories[0].paymentHistory &&
118+ transaction.device &&
113119 transaction.device.device_type === 'solar_home_system'
114120 "
115121 >
124130 {{ transaction.message }}
125131 </router-link >
126132 </div >
133+ <div
134+ class =" md-layout-item md-subheader n-font"
135+ v-else-if ="
136+ transaction.appliance && transaction.appliance.id
137+ "
138+ >
139+ <router-link
140+ :to =" {
141+ path:
142+ '/sold-appliance-detail/' +
143+ transaction.appliance.id,
144+ }"
145+ class =" nav-link"
146+ >
147+ {{ deviceDisplay }}
148+ </router-link >
149+ </div >
150+ <div
151+ class =" md-layout-item md-subheader n-font"
152+ v-else-if ="
153+ isApplianceTransaction && applianceIdFromMessage
154+ "
155+ >
156+ <router-link
157+ :to =" {
158+ path:
159+ '/sold-appliance-detail/' + applianceIdFromMessage,
160+ }"
161+ class =" nav-link"
162+ >
163+ {{ deviceDisplay }}
164+ </router-link >
165+ </div >
127166 <div class =" md-layout-item md-subheader n-font" v-else >
128- {{ transaction.message }}
167+ {{ deviceDisplay }}
129168 </div >
130169 </div >
131170 <hr class =" hr-d" />
@@ -308,6 +347,7 @@ import { timing } from "@/mixins/timing"
308347import { currency } from " @/mixins/currency"
309348import PaymentHistoryChart from " @/modules/Transactions/PaymentHistoryChart"
310349import AgentTransactionDetail from " @/modules/Agent/AgentTransactionDetail"
350+ import CashTransactionDetail from " @/modules/Transactions/CashTransactionDetail"
311351import Widget from " @/shared/Widget.vue"
312352import { TransactionService } from " @/services/TransactionService"
313353import { PersonService } from " @/services/PersonService"
@@ -320,6 +360,7 @@ export default {
320360 components: {
321361 Widget,
322362 AgentTransactionDetail,
363+ CashTransactionDetail,
323364 PaymentHistoryChart,
324365 },
325366 created () {
@@ -360,10 +401,46 @@ export default {
360401 return " WaveComTransactionDetail"
361402 case " paystack_transaction" :
362403 return " PaystackTransactionDetail"
404+ case " cash_transaction" :
405+ return " CashTransactionDetail"
363406 default :
364407 return null
365408 }
366409 },
410+ deviceType () {
411+ if (this .transaction .device && this .transaction .device .device_type ) {
412+ return this .$tc (` words.${ this .transaction .device .device_type } ` )
413+ }
414+ if (this .transaction .appliance && this .transaction .appliance .appliance ) {
415+ return this .transaction .appliance .appliance .name
416+ }
417+ return this .$tc (" words.appliance" )
418+ },
419+ deviceDisplay () {
420+ if (this .transaction .device ) {
421+ return this .transaction .message
422+ }
423+ if (this .transaction .appliance && this .transaction .appliance .appliance ) {
424+ return this .transaction .appliance .appliance .name
425+ }
426+ return this .transaction .message !== " -"
427+ ? this .transaction .message
428+ : this .$tc (" phrases.noDeviceAssigned" )
429+ },
430+ isApplianceTransaction () {
431+ return (
432+ this .transaction .type === " deferred_payment" &&
433+ this .transaction .original_transaction_type === " cash_transaction" &&
434+ ! this .transaction .device
435+ )
436+ },
437+ applianceIdFromMessage () {
438+ const message = this .transaction .message
439+ if (message && message !== " -" && / ^ \d + $ / .test (message)) {
440+ return parseInt (message, 10 )
441+ }
442+ return null
443+ },
367444 },
368445 methods: {
369446 async getDetail (id ) {
0 commit comments