411 lines
18 KiB
PHP
411 lines
18 KiB
PHP
@extends('layouts.app')
|
|
@section('title', __('crm::lang.add_schedule'))
|
|
@section('content')
|
|
@include('crm::layouts.nav')
|
|
<!-- Content Header (Page header) -->
|
|
<section class="content-header no-print">
|
|
<h1>@lang('crm::lang.add_schedule')</h1>
|
|
</section>
|
|
<section class="content no-print">
|
|
{!! Form::open(['url' => action([\Modules\Crm\Http\Controllers\ScheduleController::class, 'store']), 'method' => 'post', 'id' => 'add_advance_schedule' ]) !!}
|
|
|
|
<div class="box box-solid">
|
|
<div class="box-body">
|
|
<div class="row">
|
|
<div class="col-md-4">
|
|
<div class="form-group">
|
|
{!! Form::label('followup_category_id', __('crm::lang.followup_category') .':*') !!}
|
|
{!! Form::select('followup_category_id', $followup_category, null, ['class' => 'form-control select2', 'required', 'style' => 'width: 100%;', 'placeholder' => __('messages.please_select')]); !!}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-4">
|
|
<div class="form-group">
|
|
{!! Form::label('follow_up_by', __('crm::lang.follow_up_by') .':') !!}
|
|
<select class="form-control" id="follow_up_by">
|
|
<option value="">@lang('messages.please_select')</option>
|
|
<optgroup label="@lang('sale.payment_status')">
|
|
<option value="all" data-category="payment_status">@lang('lang_v1.all')</option>
|
|
<option value="due" data-category="payment_status">@lang('lang_v1.due')</option>
|
|
<option value="partial" data-category="payment_status">@lang('lang_v1.partial')</option>
|
|
<option value="overdue" data-category="payment_status">@lang('lang_v1.overdue')</option>
|
|
</optgroup>
|
|
<optgroup label="@lang('restaurant.orders')">
|
|
<option value="has_transactions" data-category="orders">
|
|
@lang('crm::lang.has_transactions')
|
|
</option>
|
|
<option value="has_no_transactions" data-category="orders">
|
|
@lang('crm::lang.has_no_transactions')
|
|
</option>
|
|
</optgroup>
|
|
<optgroup label="@lang('contact.contact')">
|
|
<option value="contact_name" data-category="contact_name">
|
|
@lang('user.name')
|
|
</option>
|
|
</optgroup>
|
|
</select>
|
|
|
|
<input type="hidden" name="follow_up_by" id="follow_up_by_category" value="">
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-4 hide follow_up_by_order_field">
|
|
<div class="form-group">
|
|
<label for="in_days">{{__('crm::lang.in_days')}}:*</label>
|
|
<div class="input-group">
|
|
<div class="input-group-addon">{{__('crm::lang.in')}}</div>
|
|
<input type="text" class="form-control input_number" id="in_days" placeholder="@lang('crm::lang.enter_days')" name="in_days" required>
|
|
<div class="input-group-addon">{{__('lang_v1.days')}}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-2 hide follow_up_by_order_field" >
|
|
<div class="form-group">
|
|
<br>
|
|
<button type="button" class="btn btn-primary" id="group_customers">@lang('pagination.next')</button>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6 hide follow_up_by_payment_field" >
|
|
<div class="form-group">
|
|
{!! Form::label('invoices', __('lang_v1.invoices') .':') !!}
|
|
<button type="button" class="btn btn-primary btn-xs select-all">
|
|
@lang('lang_v1.select_all')
|
|
</button>
|
|
<button type="button" class="btn btn-primary btn-xs deselect-all">
|
|
@lang('lang_v1.deselect_all')
|
|
</button>
|
|
{!! Form::select('invoices', [], null, ['class' => 'form-control select2', 'style' => 'width: 100%;', 'id' => 'invoices', 'multiple']); !!}
|
|
</div>
|
|
</div>
|
|
<div class="col-md-2 hide follow_up_by_payment_field" >
|
|
<div class="form-group">
|
|
<br>
|
|
<button type="button" class="btn btn-primary" id="group_invoices">@lang('pagination.next')</button>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6 hide follow_up_by_contact_name" >
|
|
<div class="form-group">
|
|
{!! Form::label('contact_ids', __('lang_v1.customers') .':') !!}
|
|
<button type="button" class="btn btn-primary btn-xs select-all">
|
|
@lang('lang_v1.select_all')
|
|
</button>
|
|
<button type="button" class="btn btn-primary btn-xs deselect-all">
|
|
@lang('lang_v1.deselect_all')
|
|
</button>
|
|
{!! Form::select('contact_ids', $customers, null, ['class' => 'form-control select2', 'style' => 'width: 100%;', 'id' => 'contact_ids', 'multiple']); !!}
|
|
</div>
|
|
</div>
|
|
<div class="col-md-2 hide follow_up_by_contact_name" >
|
|
<div class="form-group">
|
|
<br>
|
|
<button type="button" class="btn btn-primary" id="group_customers_by_name">@lang('pagination.next')</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="box box-solid hide hidden_box">
|
|
<div class="box-body">
|
|
<div class="row">
|
|
<div class="col-md-12" id="group_invoices_div">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="box box-solid hide hidden_box">
|
|
<div class="box-body">
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="form-group">
|
|
{!! Form::label('title', __('crm::lang.title') . ':*' )!!}
|
|
{!! Form::text('title', null, ['class' => 'form-control', 'required' ]) !!}
|
|
<p>
|
|
<strong>
|
|
{{$followup_tags['help_text']}}:
|
|
</strong>
|
|
<span class="text-primary invoice_tags" id="title_invoice_tags">
|
|
{{implode(', ', $followup_tags['invoice'])}}
|
|
</span>
|
|
<span class="text-primary trans_days_tags" id="title_trans_days_tags">
|
|
{{implode(', ', $followup_tags['trans_days'])}}
|
|
</span>
|
|
<span class="text-primary contact_name_tags" id="title_contact_name_tags">
|
|
{{implode(', ', $followup_tags['contact_name'])}}
|
|
</span>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-4">
|
|
<div class="form-group">
|
|
{!! Form::label('status', __('sale.status') .':') !!}
|
|
{!! Form::select('status', $statuses, null, ['class' => 'form-control select2', 'placeholder' => __('messages.please_select'), 'style' => 'width: 100%;', 'id' => 'follow_up_create_status']); !!}
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<div class="form-group">
|
|
{!! Form::label('start_datetime', __('crm::lang.start_datetime') . ':*' )!!}
|
|
{!! Form::text('start_datetime', null, ['class' => 'form-control datetimepicker', 'required', 'readonly']) !!}
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<div class="form-group">
|
|
{!! Form::label('end_datetime', __('crm::lang.end_datetime') . ':*' )!!}
|
|
{!! Form::text('end_datetime', null, ['class' => 'form-control datetimepicker', 'required', 'readonly']) !!}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="form-group">
|
|
{!! Form::label('description', __('crm::lang.description') . ':') !!}
|
|
{!! Form::textarea('description', null, ['class' => 'form-control ', 'id' => 'description']); !!}
|
|
<p>
|
|
<strong>
|
|
{{$followup_tags['help_text']}}:
|
|
</strong>
|
|
<span class="text-primary invoice_tags">
|
|
{{implode(', ', $followup_tags['invoice'])}}
|
|
</span>
|
|
<span class="text-primary trans_days_tags">
|
|
{{implode(', ', $followup_tags['trans_days'])}}
|
|
</span>
|
|
<span class="text-primary contact_name_tags">
|
|
{{implode(', ', $followup_tags['contact_name'])}}
|
|
</span>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<div class="form-group">
|
|
{!! Form::label('schedule_type', __('crm::lang.schedule_type') .':*') !!}
|
|
{!! Form::select('schedule_type', $follow_up_types, null, ['class' => 'form-control select2', 'placeholder' => __('messages.please_select'), 'required', 'style' => 'width: 100%;']); !!}
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="form-group">
|
|
<br>
|
|
<label>
|
|
{!! Form::checkbox('allow_notification', 1, false, ['class' => 'input-icheck', 'id' => 'allow_notification']); !!}
|
|
@lang('crm::lang.send_notification')
|
|
</label>
|
|
@show_tooltip(__('crm::lang.send_schedule_notificatoion'))
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="allow_notification_elements hide">
|
|
<div class="col-md-6">
|
|
{!! Form::label('notify_via', __('crm::lang.notify_via') .':*') !!}
|
|
<div class="form-group checkbox-inline">
|
|
<label>
|
|
{!! Form::checkbox('notify_via[sms]', 1, false, ['class' => 'input-icheck']); !!}
|
|
@lang('crm::lang.sms')
|
|
</label>
|
|
</div>
|
|
<div class="form-group checkbox-inline">
|
|
<label>
|
|
{!! Form::checkbox('notify_via[mail]', 1, true, ['class' => 'input-icheck']); !!}
|
|
@lang('business.email')
|
|
</label>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="form-group">
|
|
<div class="multi-input">
|
|
{!! Form::label('notify_before', __('crm::lang.notify_before') . ':*') !!}
|
|
<br/>
|
|
{!! Form::number('notify_before', 1, ['class' => 'form-control width-40 pull-left', 'placeholder' => __('crm::lang.notify_before'), 'required']); !!}
|
|
|
|
{!! Form::select('notify_type', $notify_type, 'hour', ['class' => 'form-control width-60 pull-left']); !!}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<button type="submit" class="btn btn-primary pull-right">
|
|
@lang('messages.save')
|
|
</button>
|
|
<small class="pull-right text-muted mt-5 mr-8">
|
|
@lang('crm::lang.multiple_followups_will_be_created')
|
|
</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{!! Form::close() !!}
|
|
</section>
|
|
@endsection
|
|
@section('javascript')
|
|
@include('crm::layouts.date_helpers')
|
|
<script type="text/javascript">
|
|
$(document).ready( function(){
|
|
$('form#add_advance_schedule').validate();
|
|
initCrmDateTimePickers('form#add_advance_schedule .datetimepicker');
|
|
|
|
//initialize editor
|
|
tinymce.init({
|
|
selector: 'textarea#description',
|
|
});
|
|
|
|
$(document).on('ifChecked', '#allow_notification', function() {
|
|
$("div").find('.allow_notification_elements').removeClass('hide');
|
|
});
|
|
|
|
$(document).on('ifUnchecked', '#allow_notification', function() {
|
|
$("div").find('.allow_notification_elements').addClass('hide');
|
|
});
|
|
$('#invoices').change( function(){
|
|
$('#group_invoices_div').html('');
|
|
$('.hidden_box').addClass('hide');
|
|
});
|
|
$('#follow_up_by').change( function(){
|
|
$('#group_invoices_div').html('');
|
|
$('.hidden_box').addClass('hide');
|
|
var follow_up_by = $(this).val();
|
|
|
|
let category = $("#follow_up_by :selected").data('category');
|
|
|
|
if (category == 'payment_status') {
|
|
$('span.trans_days_tags').hide();
|
|
$('span.contact_name_tags').hide();
|
|
$('span.invoice_tags').show();
|
|
$("input#title").val('Payment followup: ' +$('span#title_invoice_tags').text().trim());
|
|
} else if (category == 'contact_name') {
|
|
$('span.invoice_tags').hide();
|
|
$('span.trans_days_tags').hide();
|
|
$('span.contact_name_tags').show();
|
|
$("input#title").val('Followup: ' + $('span#title_contact_name_tags').text().trim());
|
|
} else if (category == 'orders') {
|
|
$('span.invoice_tags').hide();
|
|
$('span.contact_name_tags').hide();
|
|
$('span.trans_days_tags').show();
|
|
$("input#title").val('Sales followup: ' +$('span#title_trans_days_tags').text().trim());
|
|
}
|
|
|
|
$("input#follow_up_by_category").val(category);
|
|
if (follow_up_by !== '') {
|
|
var arr = ['all', 'due', 'partial', 'overdue'];
|
|
if (arr.indexOf(follow_up_by) >= 0) {
|
|
$('.follow_up_by_payment_field').removeClass('hide');
|
|
$('.follow_up_by_order_field').addClass('hide');
|
|
var data = {
|
|
follow_up_by: 'payment_status',
|
|
payment_status: follow_up_by
|
|
}
|
|
|
|
$.ajax({
|
|
url: '{{action([\Modules\Crm\Http\Controllers\ScheduleController::class, 'getInvoicesForFollowUp'])}}',
|
|
dataType: 'json',
|
|
data: data,
|
|
success: function(data) {
|
|
$('#invoices').select2('destroy').empty().select2({data: data});
|
|
},
|
|
});
|
|
} else if(follow_up_by == 'contact_name') {
|
|
$('.follow_up_by_payment_field').addClass('hide');
|
|
$('.follow_up_by_order_field').addClass('hide');
|
|
$('.follow_up_by_contact_name').removeClass('hide');
|
|
} else {
|
|
$('.follow_up_by_payment_field').addClass('hide');
|
|
$('.follow_up_by_contact_name').addClass('hide');
|
|
$('.follow_up_by_order_field').removeClass('hide');
|
|
}
|
|
} else {
|
|
$('.follow_up_by_payment_field').addClass('hide');
|
|
$('.follow_up_by_order_field').addClass('hide');
|
|
$('.follow_up_by_contact_name').addClass('hide');
|
|
}
|
|
});
|
|
});
|
|
|
|
$(document).on('click', '#group_customers', function(){
|
|
$('#group_invoices_div').html('');
|
|
var days = $('#in_days').val();
|
|
var follow_up_by = $('#follow_up_by').val();
|
|
|
|
if (days != '') {
|
|
$('.hidden_box').removeClass('hide');
|
|
$.ajax({
|
|
url: '{{action([\Modules\Crm\Http\Controllers\ScheduleController::class, 'getFollowUpGroups'])}}',
|
|
dataType: 'html',
|
|
data: {days: days, follow_up_by: follow_up_by},
|
|
success: function(result) {
|
|
$('#group_invoices_div').html(result);
|
|
$('#group_invoices_div').find('.select2').each( function(){
|
|
$(this).select2();
|
|
});
|
|
},
|
|
});
|
|
} else {
|
|
$('.hidden_box').addClass('hide');
|
|
alert('{{__("crm::lang.enter_days")}}');
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '#group_customers_by_name', function(){
|
|
$('#group_invoices_div').html('');
|
|
var follow_up_by = $('#follow_up_by').val();
|
|
var contact_ids = $('#contact_ids').val();
|
|
if (contact_ids != '') {
|
|
$('.hidden_box').removeClass('hide');
|
|
$.ajax({
|
|
url: '{{action([\Modules\Crm\Http\Controllers\ScheduleController::class, 'getFollowUpGroups'])}}',
|
|
dataType: 'html',
|
|
data: {contact_ids: contact_ids, follow_up_by: follow_up_by},
|
|
success: function(result) {
|
|
$('#group_invoices_div').html(result);
|
|
$('#group_invoices_div').find('.select2').each( function(){
|
|
$(this).select2();
|
|
});
|
|
},
|
|
});
|
|
} else {
|
|
$('.hidden_box').addClass('hide');
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '#group_invoices', function(){
|
|
var invoices = $('#invoices').val();
|
|
$('#group_invoices_div').html('');
|
|
if (invoices != '') {
|
|
$('.hidden_box').removeClass('hide');
|
|
$.ajax({
|
|
url: '{{action([\Modules\Crm\Http\Controllers\ScheduleController::class, 'getFollowUpGroups'])}}',
|
|
dataType: 'html',
|
|
data: {invoices: invoices, follow_up_by: 'payment_status'},
|
|
success: function(result) {
|
|
$('#group_invoices_div').html(result);
|
|
$('#group_invoices_div').find('.select2').each( function(){
|
|
$(this).select2();
|
|
});
|
|
},
|
|
});
|
|
} else {
|
|
alert('{{__("crm::lang.select_invoices")}}');
|
|
$('.hidden_box').addClass('hide');
|
|
}
|
|
});
|
|
|
|
$(document).on('submit', '#add_advance_schedule', function(){
|
|
if ($("#customer_invoice_table tr").length <= 1) {
|
|
alert('{{__("crm::lang.there_is_no_customer_to_add_follow_up")}}');
|
|
$(this).find('button[type="submit"]').attr('disabled', false);
|
|
return false;
|
|
}
|
|
});
|
|
|
|
$(document).on('click', '.remove-follow-up', function(){
|
|
$(this).closest('tr').remove();
|
|
});
|
|
</script>
|
|
@endsection |