From 8387830ecd39102815c063c2b98dd18b4d9df50f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=BCneyt=20=C5=9Eent=C3=BCrk?= Date: Mon, 28 Aug 2023 15:40:55 +0300 Subject: [PATCH] close #2975 Fixed: Recurring Invoice Custom Interval --- .../Components/Documents/Show/Schedule.php | 8 +++-- app/View/Components/Form/Group/Recurring.php | 32 ++++++++++++++++--- .../js/components/AkauntingRecurring.vue | 6 ++++ resources/lang/en-GB/recurring.php | 1 + .../recurring_transactions/edit.blade.php | 1 + .../recurring_transactions/index.blade.php | 15 ++++++++- .../documents/form/recurring.blade.php | 1 + .../index/recurring_templates.blade.php | 15 ++++++++- .../components/form/group/recurring.blade.php | 2 ++ 9 files changed, 73 insertions(+), 8 deletions(-) diff --git a/app/View/Components/Documents/Show/Schedule.php b/app/View/Components/Documents/Show/Schedule.php index 7a88011ef..381f38cee 100644 --- a/app/View/Components/Documents/Show/Schedule.php +++ b/app/View/Components/Documents/Show/Schedule.php @@ -22,10 +22,14 @@ class Schedule extends Component ->first(); $started_date = '' . company_date($recurring->started_at) . ''; - $frequency = Str::lower(trans('recurring.' . str_replace('ly', 's', $recurring->frequency))); + $frequency = Str::lower(trans('recurring.' . str_replace(['daily', 'ly'], ['days', 's'], $recurring->frequency))); $invertal = $recurring->interval; - $this->description = trans('transactions.slider.schedule', ['frequency' => $frequency, 'interval' => $invertal, 'date' => $started_date]); + $this->description = trans('transactions.slider.schedule', [ + 'frequency' => $frequency, + 'interval' => $invertal, + 'date' => $started_date + ]); return view('components.documents.show.schedule', compact('recurring')); } diff --git a/app/View/Components/Form/Group/Recurring.php b/app/View/Components/Form/Group/Recurring.php index 68b5873cf..6fcf4939e 100644 --- a/app/View/Components/Form/Group/Recurring.php +++ b/app/View/Components/Form/Group/Recurring.php @@ -12,6 +12,8 @@ class Recurring extends Component public $frequency; public $frequencies = []; + public $interval = ''; + public $customFrequency = ''; public $customFrequencies = []; @@ -35,6 +37,8 @@ class Recurring extends Component $frequency = '', $frequencies = [], + $interval = '', + $customFrequency = '', $customFrequencies = [], @@ -49,10 +53,13 @@ class Recurring extends Component $sendEmail = false ) { $this->type = $this->getType($type); - $this->frequency = $this->getFrequency($frequency); + + $this->interval = $this->getInterval($interval); + + $this->frequency = $this->getFrequency($frequency, $interval); $this->frequencies = $this->getFrequencies($frequencies); - $this->customFrequency = $this->getCustomFrequency($customFrequency); + $this->customFrequency = $this->getCustomFrequency($frequency, $customFrequency, $interval); $this->customFrequencies = $this->getCustomFrequencies($customFrequencies); $this->limit = $this->getLimit($limit); @@ -85,8 +92,12 @@ class Recurring extends Component return 'invoice'; } - protected function getFrequency($frequency) + protected function getFrequency($frequency, $interval = 0) { + if ($interval > 1) { + return 'custom'; + } + if (! empty($frequency)) { return $frequency; } @@ -109,8 +120,21 @@ class Recurring extends Component ]; } - protected function getCustomFrequency($customFrequency) + protected function getInterval($interval) { + if (! empty($interval)) { + return $interval; + } + + return ''; + } + + protected function getCustomFrequency($frequency, $customFrequency, $interval = 0) + { + if ($interval > 1) { + return $frequency; + } + if (! empty($customFrequency)) { return $customFrequency; } diff --git a/resources/assets/js/components/AkauntingRecurring.vue b/resources/assets/js/components/AkauntingRecurring.vue index d62c492e7..c472d3aa1 100644 --- a/resources/assets/js/components/AkauntingRecurring.vue +++ b/resources/assets/js/components/AkauntingRecurring.vue @@ -198,6 +198,11 @@ export default { default: 'monthly', description: "Default reccuring type" }, + intervalValue: { + type: String, + default: '', + description: 'Default interval value' + }, invertalError: { type: String, default: null, @@ -310,6 +315,7 @@ export default { mounted() { this.frequency = this.frequencyValue; + this.interval = this.intervalValue; this.customFrequency = this.customFrequencyValue; this.started_at = this.startedValue; diff --git a/resources/lang/en-GB/recurring.php b/resources/lang/en-GB/recurring.php index 75d8cb49e..57239be5c 100644 --- a/resources/lang/en-GB/recurring.php +++ b/resources/lang/en-GB/recurring.php @@ -32,6 +32,7 @@ return [ 'send_email_auto' => 'Send email automatically', 'frequency_type' => 'Repeat this :type', + 'custom_frequency_desc' => 'Repeat every :interval :frequency', 'limit_date' => 'Create first :type on', 'limit_middle' => 'and end', diff --git a/resources/views/banking/recurring_transactions/edit.blade.php b/resources/views/banking/recurring_transactions/edit.blade.php index 902478dc8..9b6b4aef7 100644 --- a/resources/views/banking/recurring_transactions/edit.blade.php +++ b/resources/views/banking/recurring_transactions/edit.blade.php @@ -59,6 +59,7 @@ - {{ trans('recurring.' . $item->recurring->frequency) }} + @if ($item->recurring->interval > 1) + + {{ trans('recurring.custom') }} + + @else + {{ trans('recurring.' . $item->recurring->frequency) }} + @endif @if ($item->recurring->limit_by == 'count') diff --git a/resources/views/components/documents/form/recurring.blade.php b/resources/views/components/documents/form/recurring.blade.php index e8294ad8a..cc2231c9c 100644 --- a/resources/views/components/documents/form/recurring.blade.php +++ b/resources/views/components/documents/form/recurring.blade.php @@ -10,6 +10,7 @@ - {{ trans('recurring.' . $item->recurring->frequency) }} + @if ($item->recurring->interval > 1) + + {{ trans('recurring.custom') }} + + @else + {{ trans('recurring.' . $item->recurring->frequency) }} + @endif @if ($item->recurring->limit_by == 'count') diff --git a/resources/views/components/form/group/recurring.blade.php b/resources/views/components/form/group/recurring.blade.php index 69f65db1f..5b4fe9117 100644 --- a/resources/views/components/form/group/recurring.blade.php +++ b/resources/views/components/form/group/recurring.blade.php @@ -21,6 +21,8 @@ :custom-frequencies="{{ json_encode($customFrequencies) }}" custom-frequency-value="{{ $customFrequency }}" :custom-frequency-error="form.errors.get('recurring_custom_frequency')" + + interval-value="{{ $interval }}" @if ($attributes->has('@interval')) @interval="form.recurring_interval = $event;{{ $attributes['@interval'] }}" @else