Fix Invoice/Estimate template issues and Add Payment Receipt, Custom Payment Modes and Item units

This commit is contained in:
Jay Makwana
2020-01-05 07:22:36 +00:00
committed by Mohit Panjwani
parent 56a955befd
commit 4c33a5d88c
112 changed files with 5050 additions and 331 deletions

View File

@ -85,7 +85,8 @@
</div>
<div class="customer-content mb-1">
<label class="email">{{ selectedCustomer.name }}</label>
<label class="action" @click="removeCustomer">{{ $t('general.remove') }}</label>
<label class="action" @click="editCustomer">{{ $t('general.edit') }}</label>
<label class="action" @click="removeCustomer">{{ $t('general.deselect') }}</label>
</div>
</div>
@ -195,6 +196,7 @@
:index="index"
:item-data="item"
:currency="currency"
:estimate-items="newEstimate.items"
:tax-per-item="taxPerItem"
:discount-per-item="discountPerItem"
@remove="removeItem"
@ -589,6 +591,14 @@ export default {
removeCustomer () {
this.resetSelectedCustomer()
},
editCustomer () {
this.openModal({
'title': this.$t('customers.edit_customer'),
'componentName': 'CustomerModal',
'id': this.selectedCustomer.id,
'data': this.selectedCustomer
})
},
openTemplateModal () {
this.openModal({
'title': this.$t('general.choose_template'),

View File

@ -24,6 +24,8 @@
:invalid="$v.item.name.$error"
:invalid-description="$v.item.description.$error"
:item="item"
:tax-per-item="taxPerItem"
:taxes="item.taxes"
@search="searchVal"
@select="onSelectItem"
@deselect="deselectItem"
@ -108,7 +110,7 @@
<div class="remove-icon-wrapper">
<font-awesome-icon
v-if="index > 0"
v-if="isShowRemoveItemIcon"
class="remove-icon"
icon="trash-alt"
@click="removeItem"
@ -180,6 +182,10 @@ export default {
discountPerItem: {
type: String,
default: ''
},
estimateItems: {
type: Array,
required: true
}
},
data () {
@ -221,6 +227,12 @@ export default {
return this.defaultCurrencyForInput
}
},
isShowRemoveItemIcon () {
if (this.estimateItems.length == 1) {
return false
}
return true
},
subtotal () {
return this.item.price * this.item.quantity
},
@ -324,6 +336,9 @@ export default {
created () {
window.hub.$on('checkItems', this.validateItem)
window.hub.$on('newItem', (val) => {
if (this.taxPerItem === 'YES') {
this.item.taxes = val.taxes
}
if (!this.item.item_id && this.modalActive && this.isSelected) {
this.onSelectItem(val)
}
@ -363,7 +378,13 @@ export default {
this.item.price = item.price
this.item.item_id = item.id
this.item.description = item.description
if (this.taxPerItem === 'YES' && item.taxes) {
let index = 0
item.taxes.forEach(tax => {
this.updateTax({index, item: { ...tax }})
index++
})
}
// if (this.item.taxes.length) {
// this.item.taxes = {...item.taxes}
// }

View File

@ -68,6 +68,14 @@ export default {
type: Boolean,
required: false,
default: false
},
taxPerItem: {
type: String,
default: ''
},
taxes: {
type: Array,
default: null
}
},
data () {
@ -129,7 +137,8 @@ export default {
this.$emit('onSelectItem')
this.openModal({
'title': 'Add Item',
'componentName': 'ItemModal'
'componentName': 'ItemModal',
'data': {taxPerItem: this.taxPerItem, taxes: this.taxes}
})
},
deselectItem () {

View File

@ -69,7 +69,9 @@
<font-awesome-icon icon="filter" />
</base-button>
</a>
<div class="filter-title">
{{ $t('general.sort_by') }}
</div>
<div class="filter-items">
<input
id="filter_estimate_date"
@ -107,7 +109,7 @@
<label class="inv-label" for="filter_estimate_number">{{ $t('estimates.estimate_number') }}</label>
</div>
</v-dropdown>
<base-button class="inv-button inv-filter-sorting-btn" color="default" size="medium" @click="sortData">
<base-button v-tooltip.top-center="{ content: getOrderName }" class="inv-button inv-filter-sorting-btn" color="default" size="medium" @click="sortData">
<font-awesome-icon v-if="getOrderBy" icon="sort-amount-up" />
<font-awesome-icon v-else icon="sort-amount-down" />
</base-button>
@ -172,7 +174,12 @@ export default {
}
return false
},
getOrderName () {
if (this.getOrderBy) {
return this.$t('general.ascending')
}
return this.$t('general.descending')
},
shareableLink () {
return `/estimates/pdf/${this.estimate.unique_hash}`
}