diff --git a/app/Models/Income/InvoiceItem.php b/app/Models/Income/InvoiceItem.php
index c6e50c9e8..dff192aec 100644
--- a/app/Models/Income/InvoiceItem.php
+++ b/app/Models/Income/InvoiceItem.php
@@ -29,6 +29,11 @@ class InvoiceItem extends Model
return $this->belongsTo('App\Models\Common\Item');
}
+ public function itemTaxes()
+ {
+ return $this->hasMany('App\Models\Income\InvoiceItemTax', 'invoice_item_id', 'id');
+ }
+
public function tax()
{
return $this->belongsTo('App\Models\Setting\Tax');
@@ -66,4 +71,23 @@ class InvoiceItem extends Model
{
$this->attributes['tax'] = (double) $value;
}
+
+ /**
+ * Convert tax to double.
+ *
+ * @param string $value
+ * @return void
+ */
+ public function getTaxIdAttribute($value)
+ {
+ $tax_ids = [];
+
+ if (!empty($value)) {
+ $tax_ids[] = $value;
+
+ return $tax_ids;
+ }
+
+ return $this->itemTaxes->pluck('tax_id');
+ }
}
diff --git a/resources/views/incomes/invoices/edit.blade.php b/resources/views/incomes/invoices/edit.blade.php
index be2e901a4..cb6c1cdf4 100644
--- a/resources/views/incomes/invoices/edit.blade.php
+++ b/resources/views/incomes/invoices/edit.blade.php
@@ -170,6 +170,14 @@
placeholder: {
id: '-1', // the value of the option
text: "{{ trans('general.form.select.field', ['field' => trans_choice('general.taxes', 1)]) }}"
+ },
+ escapeMarkup: function (markup) {
+ return markup;
+ },
+ language: {
+ noResults: function () {
+ return ' {{ trans('general.title.new', ['type' => trans_choice('general.tax_rates', 1)]) }}';
+ }
}
});
@@ -192,6 +200,24 @@
});
});
+ $(document).on('click', '#tax-add-new', function(e){
+ tax_name = $('.select2-search__field').val();
+
+ $('#modal-create-tax').remove();
+
+ $.ajax({
+ url: '{{ url("modals/taxes/create") }}',
+ type: 'GET',
+ dataType: 'JSON',
+ data: {name: tax_name},
+ success: function(json) {
+ if (json['success']) {
+ $('body').append(json['html']);
+ }
+ }
+ });
+ });
+
$(document).ready(function(){
$(".input-price").maskMoney({
thousands : '{{ $currency->thousands_separator }}',
@@ -231,6 +257,14 @@
placeholder: {
id: '-1', // the value of the option
text: "{{ trans('general.form.select.field', ['field' => trans_choice('general.taxes', 1)]) }}"
+ },
+ escapeMarkup: function (markup) {
+ return markup;
+ },
+ language: {
+ noResults: function () {
+ return ' {{ trans('general.title.new', ['type' => trans_choice('general.tax_rates', 1)]) }}';
+ }
}
});
@@ -446,7 +480,7 @@
url: '{{ url("common/items/totalItem") }}',
type: 'POST',
dataType: 'JSON',
- data: $('#currency_code, #discount input[type=\'number\'], #items input[type=\'text\'], #items input[type=\'number\'], #items input[type=\'hidden\'], #items textarea, #items select'),
+ data: $('#currency_code, #discount input[type=\'number\'], #items input[type=\'text\'], #items input[type=\'number\'], #items input[type=\'hidden\'], #items textarea, #items select').serialize(),
headers: { 'X-CSRF-TOKEN': '{{ csrf_token() }}' },
success: function(data) {
if (data) {