Add discount per item for invoice
This commit is contained in:
		| @@ -51,6 +51,12 @@ | ||||
|                                             <th class="text-right border-right-0 border-bottom-0">{{ trans($text_override['price']) }}</th> | ||||
|                                         @stack('price_th_end') | ||||
|  | ||||
|                                         @stack('discount_th_start') | ||||
|                                             @if(setting('default.discount_location', 'in_totals') === 'per_item') | ||||
|                                                 <th class="text-right border-right-0 border-bottom-0">{{ trans('invoices.discount') }}</th> | ||||
|                                             @endif | ||||
|                                         @stack('discount_th_end') | ||||
|  | ||||
|                                         @stack('taxes_th_start') | ||||
|                                             <th class="text-right border-right-0 border-bottom-0">{{ trans_choice('general.taxes', 1) }}</th> | ||||
|                                         @stack('taxes_th_end') | ||||
| @@ -69,13 +75,13 @@ | ||||
|                                                 <button type="button" @click="onAddItem" id="button-add-item" data-toggle="tooltip" title="{{ trans('general.add') }}" class="btn btn-icon btn-outline-success btn-lg" data-original-title="{{ trans('general.add') }}"><i class="fa fa-plus"></i> | ||||
|                                                 </button> | ||||
|                                             </td> | ||||
|                                             <td class="text-right border-bottom-0" colspan="5" :colspan="colspan"></td> | ||||
|                                             <td class="text-right border-bottom-0" colspan="6" :colspan="colspan"></td> | ||||
|                                         </tr> | ||||
|                                     @stack('add_item_td_end') | ||||
|  | ||||
|                                     @stack('sub_total_td_start') | ||||
|                                         <tr id="tr-subtotal"> | ||||
|                                             <td class="text-right border-right-0 border-bottom-0" colspan="5" :colspan="colspan"> | ||||
|                                             <td class="text-right border-right-0 border-bottom-0" colspan="6" :colspan="colspan"> | ||||
|                                                 <strong>{{ trans('invoices.sub_total') }}</strong> | ||||
|                                             </td> | ||||
|                                             <td class="text-right border-bottom-0 long-texts"> | ||||
| @@ -87,60 +93,62 @@ | ||||
|                                     @stack('sub_total_td_end') | ||||
|  | ||||
|                                     @stack('add_discount_td_start') | ||||
|                                         <tr id="tr-discount"> | ||||
|                                             <td class="text-right border-right-0 border-bottom-0" colspan="5" :colspan="colspan"> | ||||
|                                                 <el-popover | ||||
|                                                     popper-class="p-0 h-0" | ||||
|                                                     placement="bottom" | ||||
|                                                     width="300" | ||||
|                                                     v-model="discount"> | ||||
|                                                     <div class="card d-none" :class="[{'show' : discount}]"> | ||||
|                                                         <div class="discount card-body"> | ||||
|                                                             <div class="row align-items-center"> | ||||
|                                                                 <div class="col-sm-6"> | ||||
|                                                                     <div class="input-group input-group-merge"> | ||||
|                                                                         <div class="input-group-prepend"> | ||||
|                                                                             <span class="input-group-text" id="input-discount"> | ||||
|                                                                                 <i class="fa fa-percent"></i> | ||||
|                                                                             </span> | ||||
|                                         @if(setting('default.discount_location', 'in_totals') === 'in_totals') | ||||
|                                             <tr id="tr-discount"> | ||||
|                                                 <td class="text-right border-right-0 border-bottom-0" colspan="5" :colspan="colspan"> | ||||
|                                                     <el-popover | ||||
|                                                         popper-class="p-0 h-0" | ||||
|                                                         placement="bottom" | ||||
|                                                         width="300" | ||||
|                                                         v-model="discount"> | ||||
|                                                         <div class="card d-none" :class="[{'show' : discount}]"> | ||||
|                                                             <div class="discount card-body"> | ||||
|                                                                 <div class="row align-items-center"> | ||||
|                                                                     <div class="col-sm-6"> | ||||
|                                                                         <div class="input-group input-group-merge"> | ||||
|                                                                             <div class="input-group-prepend"> | ||||
|                                                                                 <span class="input-group-text" id="input-discount"> | ||||
|                                                                                     <i class="fa fa-percent"></i> | ||||
|                                                                                 </span> | ||||
|                                                                             </div> | ||||
|                                                                             {!! Form::number('pre_discount', null, ['id' => 'pre-discount', 'class' => 'form-control']) !!} | ||||
|                                                                         </div> | ||||
|                                                                     </div> | ||||
|                                                                     <div class="col-sm-6"> | ||||
|                                                                         <div class="discount-description"> | ||||
|                                                                             <strong>{{ trans('invoices.discount_desc') }}</strong> | ||||
|                                                                         </div> | ||||
|                                                                         {!! Form::number('pre_discount', null, ['id' => 'pre-discount', 'class' => 'form-control']) !!} | ||||
|                                                                     </div> | ||||
|                                                                 </div> | ||||
|                                                                 <div class="col-sm-6"> | ||||
|                                                                     <div class="discount-description"> | ||||
|                                                                         <strong>{{ trans('invoices.discount_desc') }}</strong> | ||||
|                                                             </div> | ||||
|                                                             <div class="discount card-footer"> | ||||
|                                                                 <div class="row float-right"> | ||||
|                                                                     <div class="col-xs-12 col-sm-12"> | ||||
|                                                                         <a href="javascript:void(0)" @click="discount = false" class="btn btn-outline-secondary header-button-top" @click="closePayment"> | ||||
|                                                                             {{ trans('general.cancel') }} | ||||
|                                                                         </a> | ||||
|                                                                         {!! Form::button(trans('general.save'), ['type' => 'button', 'id' => 'save-discount', '@click' => 'onAddDiscount', 'class' => 'btn btn-success header-button-top']) !!} | ||||
|                                                                     </div> | ||||
|                                                                 </div> | ||||
|                                                             </div> | ||||
|                                                         </div> | ||||
|                                                         <div class="discount card-footer"> | ||||
|                                                             <div class="row float-right"> | ||||
|                                                                 <div class="col-xs-12 col-sm-12"> | ||||
|                                                                     <a href="javascript:void(0)" @click="discount = false" class="btn btn-outline-secondary header-button-top" @click="closePayment"> | ||||
|                                                                         {{ trans('general.cancel') }} | ||||
|                                                                     </a> | ||||
|                                                                     {!! Form::button(trans('general.save'), ['type' => 'button', 'id' => 'save-discount', '@click' => 'onAddDiscount', 'class' => 'btn btn-success header-button-top']) !!} | ||||
|                                                                 </div> | ||||
|                                                             </div> | ||||
|                                                         </div> | ||||
|                                                     </div> | ||||
|                                                     <el-link class="cursor-pointer text-info" slot="reference" type="primary" v-if="!totals.discount_text">{{ trans('invoices.add_discount') }}</el-link> | ||||
|                                                     <el-link slot="reference" type="primary" v-if="totals.discount_text" v-html="totals.discount_text"></el-link> | ||||
|                                                 </el-popover> | ||||
|                                             </td> | ||||
|                                             <td class="text-right border-bottom-0"> | ||||
|                                                 {{ Form::moneyGroup('discount_total', '', '', ['disabled' => true, 'required' => 'required', 'v-model' => 'totals.discount', 'currency' => $currency, 'masked' => 'true'], 0.00, 'text-right d-none') }} | ||||
|                                                 <span id="discount-total" v-if="totals.discount" v-html="totals.discount"></span> | ||||
|                                                 <span v-else>@money(0, $currency->code, true)</span> | ||||
|                                                 {!! Form::hidden('discount', null, ['id' => 'discount', 'class' => 'form-control text-right', 'v-model' => 'form.discount']) !!} | ||||
|                                             </td> | ||||
|                                         </tr> | ||||
|                                                         <el-link class="cursor-pointer text-info" slot="reference" type="primary" v-if="!totals.discount_text">{{ trans('invoices.add_discount') }}</el-link> | ||||
|                                                         <el-link slot="reference" type="primary" v-if="totals.discount_text" v-html="totals.discount_text"></el-link> | ||||
|                                                     </el-popover> | ||||
|                                                 </td> | ||||
|                                                 <td class="text-right border-bottom-0"> | ||||
|                                                     {{ Form::moneyGroup('discount_total', '', '', ['disabled' => true, 'required' => 'required', 'v-model' => 'totals.discount', 'currency' => $currency, 'masked' => 'true'], 0.00, 'text-right d-none') }} | ||||
|                                                     <span id="discount-total" v-if="totals.discount" v-html="totals.discount"></span> | ||||
|                                                     <span v-else>@money(0, $currency->code, true)</span> | ||||
|                                                     {!! Form::hidden('discount', null, ['id' => 'discount', 'class' => 'form-control text-right', 'v-model' => 'form.discount']) !!} | ||||
|                                                 </td> | ||||
|                                             </tr> | ||||
|                                         @endif | ||||
|                                     @stack('add_discount_td_end') | ||||
|  | ||||
|                                     @stack('tax_total_td_start') | ||||
|                                         <tr id="tr-tax"> | ||||
|                                             <td class="text-right border-right-0 border-bottom-0" colspan="5" :colspan="colspan"> | ||||
|                                             <td class="text-right border-right-0 border-bottom-0" colspan="6" :colspan="colspan"> | ||||
|                                                 <strong>{{ trans_choice('general.taxes', 1) }}</strong> | ||||
|                                             </td> | ||||
|                                             <td class="text-right border-bottom-0 long-texts"> | ||||
| @@ -153,7 +161,7 @@ | ||||
|  | ||||
|                                     @stack('grand_total_td_start') | ||||
|                                         <tr id="tr-total"> | ||||
|                                             <td class="text-right border-right-0" colspan="5" :colspan="colspan"> | ||||
|                                             <td class="text-right border-right-0" colspan="6" :colspan="colspan"> | ||||
|                                                 <strong>{{ trans('invoices.total') }}</strong> | ||||
|                                             </td> | ||||
|                                             <td class="text-right long-texts"> | ||||
|   | ||||
| @@ -52,6 +52,10 @@ | ||||
|                                             <th class="text-right border-right-0 border-bottom-0">{{ trans($text_override['price']) }}</th> | ||||
|                                         @stack('price_th_end') | ||||
|  | ||||
|                                         @stack('discount_th_start') | ||||
|                                             <th class="text-right border-right-0 border-bottom-0">{{ trans('invoices.discount') }}</th> | ||||
|                                         @stack('discount_th_end') | ||||
|  | ||||
|                                         @stack('taxes_th_start') | ||||
|                                             <th class="text-right border-right-0 border-bottom-0">{{ trans_choice('general.taxes', 1) }}</th> | ||||
|                                         @stack('taxes_th_end') | ||||
| @@ -88,7 +92,7 @@ | ||||
|                                     @stack('sub_total_td_end') | ||||
|  | ||||
|                                     @stack('add_discount_td_start') | ||||
|                                         <tr id="tr-discount"> | ||||
|                                         <tr v-if="totals.discount" id="tr-discount"> | ||||
|                                             <td class="text-right border-right-0 border-bottom-0" colspan="5" :colspan="colspan"> | ||||
|                                                 <el-popover | ||||
|                                                     popper-class="p-0 h-0" | ||||
|   | ||||
| @@ -98,6 +98,37 @@ | ||||
|         </td> | ||||
|     @stack('price_td_end') | ||||
|  | ||||
|     @stack('discount_td_start') | ||||
|         <td class="border-right-0 border-bottom-0 w-12" | ||||
|             :class="[{'has-error': form.errors.has('items.' + index + '.discount') }]"> | ||||
|             @stack('discount_input_start') | ||||
|             <div class="input-group input-group-merge"> | ||||
|             <div class="input-group-prepend"> | ||||
|                     <span class="input-group-text" id="input-discount"> | ||||
|                         <i class="fa fa-percent"></i> | ||||
|                     </span> | ||||
|                 </div> | ||||
|                 <input type="number" | ||||
|                        max="100" | ||||
|                        min="0" | ||||
|                        class="form-control text-center" | ||||
|                        :name="'items.' + index + '.discount'" | ||||
|                        autocomplete="off" | ||||
|                        required="required" | ||||
|                        data-item="quantity" | ||||
|                        v-model="row.discount" | ||||
|                        @input="onCalculateTotal" | ||||
|                        @change="form.errors.clear('items.' + index + '.discount')"> | ||||
|  | ||||
|                 <div class="invalid-feedback d-block" | ||||
|                      v-if="form.errors.has('items.' + index + '.discount')" | ||||
|                      v-html="form.errors.get('items.' + index + '.discount')"> | ||||
|                 </div> | ||||
|             </div> | ||||
|             @stack('discount_input_end') | ||||
|         </td> | ||||
|     @stack('discount_td_end') | ||||
|  | ||||
|     @stack('taxes_td_start') | ||||
|         <td class="border-right-0 border-bottom-0" | ||||
|             :class="[{'has-error': form.errors.has('items.' + index + '.tax_id') }]"> | ||||
|   | ||||
| @@ -356,6 +356,12 @@ | ||||
|                                                 <th class="col-sm-3 text-right d-none d-sm-block">{{ trans($text_override['price']) }}</th> | ||||
|                                             @stack('price_th_end') | ||||
|  | ||||
|                                             @stack('discount_th_start') | ||||
|                                                 @if($discount_location === 'per_item') | ||||
|                                                     <th class="col-sm-1 text-center d-none d-sm-block">{{ trans('invoices.discount') }}</th> | ||||
|                                                 @endif | ||||
|                                             @stack('discount_th_end') | ||||
|  | ||||
|                                             @stack('total_th_start') | ||||
|                                                 <th class="col-xs-4 col-sm-3 text-right pr-5">{{ trans('invoices.total') }}</th> | ||||
|                                             @stack('total_th_end') | ||||
| @@ -379,6 +385,12 @@ | ||||
|                                                     <td class="col-sm-3 text-right d-none d-sm-block">@money($invoice_item->price, $invoice->currency_code, true)</td> | ||||
|                                                 @stack('price_td_end') | ||||
|  | ||||
|                                                 @stack('discount_td_start') | ||||
|                                                     @if($discount_location === 'per_item') | ||||
|                                                         <td class="col-sm-1 text-center d-none d-sm-block">{{ $invoice_item->discount_rate }}</td> | ||||
|                                                     @endif | ||||
|                                                 @stack('discount_td_end') | ||||
|  | ||||
|                                                 @stack('total_td_start') | ||||
|                                                     <td class="col-xs-4 col-sm-3 text-right pr-5">@money($invoice_item->total, $invoice->currency_code, true)</td> | ||||
|                                                 @stack('total_td_end') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user