Subiendo proyecto completo sin restricciones de git ignore

This commit is contained in:
Jose Sanchez
2023-08-17 11:44:02 -04:00
parent a0d4f5ba3b
commit 20f1c60600
19921 changed files with 2509159 additions and 45 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View File

@@ -0,0 +1,64 @@
{
"name":"refund",
"unique_identifier":"refund_request",
"version":"1.6",
"minimum_item_version":"7.0.0",
"addon_banner":"refund_request.png",
"directory":[
{
"name":[
"resources/views/refund_request",
"resources/views/refund_request/frontend",
"resources/views/refund_request/frontend/refund_request",
"resources/views/refund_request/frontend/recieved_refund_request"
]
}
],
"sql_file":"",
"files":[
{
"root_directory":"addons/refund_system/views/refund_request/index.blade.php",
"update_directory":"resources/views/refund_request/index.blade.php"
},
{
"root_directory":"addons/refund_system/views/refund_request/config.blade.php",
"update_directory":"resources/views/refund_request/config.blade.php"
},
{
"root_directory":"addons/refund_system/views/refund_request/paid_refund.blade.php",
"update_directory":"resources/views/refund_request/paid_refund.blade.php"
},
{
"root_directory":"addons/refund_system/views/refund_request/reason.blade.php",
"update_directory":"resources/views/refund_request/reason.blade.php"
},
{
"root_directory":"addons/refund_system/views/refund_request/rejected_refund.blade.php",
"update_directory":"resources/views/refund_request/rejected_refund.blade.php"
},
{
"root_directory":"addons/refund_system/views/refund_request/frontend/refund_request/index.blade.php",
"update_directory":"resources/views/refund_request/frontend/refund_request/index.blade.php"
},
{
"root_directory":"addons/refund_system/views/refund_request/frontend/refund_request/create.blade.php",
"update_directory":"resources/views/refund_request/frontend/refund_request/create.blade.php"
},
{
"root_directory":"addons/refund_system/views/refund_request/frontend/refund_request/reason.blade.php",
"update_directory":"resources/views/refund_request/frontend/refund_request/reason.blade.php"
},
{
"root_directory":"addons/refund_system/views/refund_request/frontend/recieved_refund_request/index.blade.php",
"update_directory":"resources/views/refund_request/frontend/recieved_refund_request/index.blade.php"
},
{
"root_directory":"addons/refund_system/controllers/RefundRequestController.php",
"update_directory":"app/Http/Controllers/RefundRequestController.php"
},
{
"root_directory":"addons/refund_system/assets/refund_request.png",
"update_directory":"public/refund_request.png"
}
]
}

View File

@@ -0,0 +1,311 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\BusinessSetting;
use App\Models\ClubPoint;
use App\Models\RefundRequest;
use App\Models\OrderDetail;
use App\Models\Shop;
use App\Models\Wallet;
use App\Models\User;
use Artisan;
use Auth;
class RefundRequestController extends Controller
{
public function __construct() {
// Staff Permission Check
$this->middleware(['permission:view_refund_requests'])->only('admin_index');
$this->middleware(['permission:view_approved_refund_requests'])->only('paid_index');
$this->middleware(['permission:view_rejected_refund_requests'])->only('rejected_index');
$this->middleware(['permission:refund_request_configuration'])->only('refund_config');
}
/**
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
//Store Customer Refund Request
public function request_store(Request $request, $id)
{
$order_detail = OrderDetail::where('id', $id)->first();
$refund = new RefundRequest;
$refund->user_id = Auth::user()->id;
$refund->order_id = $order_detail->order_id;
$refund->order_detail_id = $order_detail->id;
$refund->seller_id = $order_detail->seller_id;
$refund->seller_approval = 0;
$refund->reason = $request->reason;
$refund->admin_approval = 0;
$refund->admin_seen = 0;
$refund->refund_amount = $order_detail->price + $order_detail->tax;
$refund->refund_status = 0;
if ($refund->save()) {
flash( translate("Refund Request has been sent successfully") )->success();
return redirect()->route('purchase_history.index');
}
else {
flash( translate("Something went wrong") )->error();
return back();
}
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function vendor_index()
{
$refunds = RefundRequest::where('seller_id', Auth::user()->id)->latest()->paginate(10);
return view('refund_request.frontend.recieved_refund_request.index', compact('refunds'));
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function customer_index()
{
$refunds = RefundRequest::where('user_id', Auth::user()->id)->latest()->paginate(10);
return view('refund_request.frontend.refund_request.index', compact('refunds'));
}
//Set the Refund configuration
public function refund_config()
{
return view('refund_request.config');
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function refund_time_update(Request $request)
{
$business_settings = BusinessSetting::where('type', $request->type)->first();
if ($business_settings != null) {
$business_settings->value = $request->value;
$business_settings->save();
}
else {
$business_settings = new BusinessSetting;
$business_settings->type = $request->type;
$business_settings->value = $request->value;
$business_settings->save();
}
Artisan::call('cache:clear');
flash( translate("Refund Request sending time has been updated successfully") )->success();
return back();
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function refund_sticker_update(Request $request)
{
$business_settings = BusinessSetting::where('type', $request->type)->first();
if ($business_settings != null) {
$business_settings->value = $request->logo;
$business_settings->save();
}
else {
$business_settings = new BusinessSetting;
$business_settings->type = $request->type;
$business_settings->value = $request->logo;
$business_settings->save();
}
Artisan::call('cache:clear');
flash( translate("Refund Sticker has been updated successfully"))->success();
return back();
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function admin_index()
{
$refunds = RefundRequest::where('refund_status', 0)->latest()->paginate(15);
return view('refund_request.index', compact('refunds'));
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function paid_index()
{
$refunds = RefundRequest::where('refund_status', 1)->latest()->paginate(15);
return view('refund_request.paid_refund', compact('refunds'));
}
public function rejected_index()
{
$refunds = RefundRequest::where('refund_status', 2)->latest()->paginate(15);
return view('refund_request.rejected_refund', compact('refunds'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function request_approval_vendor(Request $request)
{
$refund = RefundRequest::findOrFail($request->el);
if (Auth::user()->user_type == 'admin' || Auth::user()->user_type == 'staff') {
$refund->seller_approval = 1;
$refund->admin_approval = 1;
}
else {
$refund->seller_approval = 1;
}
if ($refund->save()) {
return 1;
}
else {
return 0;
}
}
/**
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function refund_pay(Request $request)
{
$refund = RefundRequest::findOrFail($request->refund_id);
if ($refund->seller_approval == 1) {
$seller = Shop::where('user_id', $refund->seller_id)->first();
if ($seller != null) {
$seller->admin_to_pay -= $refund->refund_amount;
}
$seller->save();
}
$refund_amount = $refund->refund_amount;
// Club Point conversion check
if (addon_is_activated('club_point')) {
$club_point = ClubPoint::where('order_id', $refund->order_id)->first();
if($club_point != null){
$club_point_details = $club_point->club_point_details->where('product_id',$refund->orderDetail->product->id)->first();
if($club_point->convert_status == 1 ){
$refund_amount -= $club_point_details->converted_amount;
}
else{
$club_point_details->refunded = 1;
$club_point_details->save();
}
}
}
$wallet = new Wallet;
$wallet->user_id = $refund->user_id;
$wallet->amount = $refund_amount;
$wallet->payment_method = 'Refund';
$wallet->payment_details = 'Product Money Refund';
$wallet->save();
$user = User::findOrFail($refund->user_id);
$user->balance += $refund_amount;
$user->save();
if (Auth::user()->user_type == 'admin' || Auth::user()->user_type == 'staff') {
$refund->admin_approval = 1;
$refund->refund_status = 1;
}
if ($refund->save()) {
flash(translate('Refund has been sent successfully.'))->success();
}
else {
flash(translate('Something went wrong.'))->error();
}
return back();
}
public function reject_refund_request(Request $request){
$refund = RefundRequest::findOrFail($request->refund_id);
if (Auth::user()->user_type == 'admin' || Auth::user()->user_type == 'staff') {
$refund->admin_approval = 2;
$refund->refund_status = 2;
$refund->reject_reason = $request->reject_reason;
}
else{
$refund->seller_approval = 2;
$refund->reject_reason = $request->reject_reason;
}
if ($refund->save()) {
flash(translate('Refund request rejected successfully.'))->success();
return back();
}
else {
return back();
}
}
/**
* Show the form for creating a new resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function refund_request_send_page($id)
{
$order_detail = OrderDetail::findOrFail($id);
if ($order_detail->product != null && $order_detail->product->refundable == 1) {
return view('refund_request.frontend.refund_request.create', compact('order_detail'));
}
else {
return back();
}
}
/**
* Show the form for view the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
//Shows the refund reason
public function reason_view($id)
{
$refund = RefundRequest::findOrFail($id);
if (Auth::user()->user_type == 'admin' || Auth::user()->user_type == 'staff') {
if ($refund->orderDetail != null) {
$refund->admin_seen = 1;
$refund->save();
return view('refund_request.reason', compact('refund'));
}
}
else {
return view('refund_request.frontend.refund_request.reason', compact('refund'));
}
}
public function reject_reason_view($id)
{
$refund = RefundRequest::findOrFail($id);
return $refund->reject_reason;
}
}

View File

@@ -0,0 +1 @@
COMMIT;

View File

@@ -0,0 +1,3 @@
ALTER TABLE `refund_requests` ADD `reject_reason` LONGTEXT NULL DEFAULT NULL AFTER `refund_status`;
COMMIT;

View File

@@ -0,0 +1 @@
COMMIT;

View File

@@ -0,0 +1 @@
COMMIT;

View File

@@ -0,0 +1 @@
COMMIT;

View File

@@ -0,0 +1 @@
COMMIT;

View File

@@ -0,0 +1,79 @@
INSERT INTO `business_settings` (`type`, `value`, `created_at`, `updated_at`) VALUES ('refund_request_time', '3', '2019-03-12 05:58:23', '2019-03-12 05:58:23');
-- phpMyAdmin SQL Dump
-- version 4.9.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Mar 15, 2020 at 06:20 AM
-- Server version: 10.4.8-MariaDB
-- PHP Version: 7.3.11
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `shop`
--
-- --------------------------------------------------------
--
-- Table structure for table `refund_requests`
--
CREATE TABLE `refund_requests` (
`id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`order_id` int(11) NOT NULL,
`order_detail_id` int(11) NOT NULL,
`seller_id` int(11) NOT NULL,
`seller_approval` int(1) NOT NULL DEFAULT 0,
`admin_approval` int(1) NOT NULL DEFAULT 0,
`refund_amount` double(8,2) NOT NULL DEFAULT 0.00,
`refund_status` int(1) NOT NULL DEFAULT 0,
`created_at` timestamp NOT NULL DEFAULT current_timestamp(),
`updated_at` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `refund_requests`
--
ALTER TABLE `refund_requests`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
ALTER TABLE `refund_requests` ADD `reason` LONGTEXT NULL DEFAULT NULL AFTER `refund_amount`;
ALTER TABLE `refund_requests` ADD `admin_seen` INT NOT NULL AFTER `reason`;
ALTER TABLE `products` ADD `refundable` INT(1) NOT NULL DEFAULT '0' AFTER `slug`;
ALTER TABLE `refund_requests` ADD `reject_reason` LONGTEXT NULL DEFAULT NULL AFTER `refund_status`;
--
-- AUTO_INCREMENT for table `refund_requests`
--
ALTER TABLE `refund_requests`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@@ -0,0 +1,75 @@
@extends('backend.layouts.app')
@section('content')
<div class="row">
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Set Refund Time')}}</h5>
</div>
<form class="form-horizontal" action="{{ route('refund_request_time_config') }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="card-body">
<div class="form-group row">
<input type="hidden" name="type" value="refund_request_time">
<label class="col-lg-4 col-from-label">{{translate('Set Time for sending Refund Request')}}</label>
<div class="col-lg-5">
<input type="number" min="0" step="1" value="{{ get_setting('refund_request_time') }}" placeholder="" name="value" class="form-control">
</div>
<div class="col-lg-3">
<option class="form-control">days</option>
</div>
</div>
<div class="form-group mb-0 text-right">
<button type="submit" class="btn btn-sm btn-primary">{{translate('Save')}}</button>
</div>
</div>
</form>
</div>
</div>
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<h6 class="mb-0 h6">{{translate('Set Refund Sticker')}}</h6>
</div>
<form class="form-horizontal" action="{{ route('refund_sticker_config') }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="card-body">
<div class="form-group row">
<input type="hidden" name="type" value="refund_sticker">
<label class="col-md-2 col-form-label" for="signinSrEmail">{{translate('Sticker')}}</label>
<div class="col-md-10">
<div class="input-group" data-toggle="aizuploader" data-type="image" data-multiple="false">
<div class="input-group-prepend">
<div class="input-group-text bg-soft-secondary font-weight-medium">{{ translate('Browse')}}</div>
</div>
<div class="form-control file-amount">{{ translate('Choose File') }}</div>
<input type="hidden" name="logo" class="selected-files" value="{{ get_setting('refund_sticker') }}">
</div>
<div class="file-preview box sm">
</div>
</div>
</div>
<!-- <div class="form-group row">
<input type="hidden" name="type" value="refund_sticker">
<div class="form-group row">
<label class="col-lg-3 col-from-label" for="logo">{{translate('Sticker')}}</label>
<div class="col-lg-5">
<input type="file" id="logo" name="logo" class="form-control">
</div>
</div>
</div> -->
<div class="form-group mb-0 text-right">
<button type="submit" class="btn btn-sm btn-primary">{{translate('Save')}}</button>
</div>
</div>
</form>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,171 @@
@extends('seller.layouts.app')
@section('panel_content')
<div class="aiz-titlebar mt-2 mb-4">
<div class="row align-items-center">
<div class="col-md-6">
<h1 class="h3">{{ translate('Refund Requests') }}</h1>
</div>
</div>
</div>
<div class="card">
<div class="card-header row gutters-5">
<h5 class="mb-0 h6">{{ translate('All Refund Request') }}</h5>
</div>
<div class="card-body">
<table class="table aiz-table mb-0">
<thead>
<tr>
<th>#</th>
<th data-breakpoints="lg">{{ translate('Date') }}</th>
<th>{{translate('Order id')}}</th>
<th data-breakpoints="lg">{{translate('Product')}}</th>
<th data-breakpoints="lg">{{translate('Amount')}}</th>
<th data-breakpoints="lg">{{translate('Status')}}</th>
<th data-breakpoints="lg">{{translate('Reason')}}</th>
<th>{{translate('Approval')}}</th>
<th data-breakpoints="lg">{{translate('Reject')}}</th>
</tr>
</thead>
<tbody>
@foreach ($refunds as $key => $refund)
<tr>
<td>{{ $key+1 }}</td>
<td>{{ date('d-m-Y', strtotime($refund->created_at)) }}</td>
<td>
@if ($refund->order != null)
{{ $refund->order->code }}
@endif
</td>
<td>
@if ($refund->orderDetail != null && $refund->orderDetail->product != null)
{{ $refund->orderDetail->product->getTranslation('name') }}
@endif
</td>
<td>
@if ($refund->orderDetail != null)
{{single_price($refund->orderDetail->price)}}
@endif
</td>
<td>
@if($refund->refund_status == 1)
<span class="badge badge-inline badge-success"><strong>{{translate('Approved')}}</strong></span>
@elseif($refund->refund_status == 2)
<span class="badge badge-inline badge-danger"><strong>{{translate('Rejected')}}</strong></span>
@else
<span class="badge badge-inline badge-warning"><strong>{{translate('PENDING')}}</strong></span>
@endif
</td>
<td>
<a href="{{ route('seller.reason_show', $refund->id) }}"><span class="badge badge-inline badge-success">{{translate('Show')}}</span></a>
</td>
<td>
@if($refund->refund_status != 2 && $refund->seller_approval != 2)
@if ($refund->seller_approval == 1)
<label class="aiz-switch aiz-switch-success mb-0 ">
<input type="checkbox" @if ($refund->seller_approval == 1) checked @endif>
<span class="slider round"></span>
</label>
@else
<label class="aiz-switch aiz-switch-success mb-0">
<input onchange="update_refund_approval('{{ $refund->id }}')" type="checkbox" @if ($refund->seller_approval == 1) checked @endif>
<span class="slider round"></span>
</label>
@endif
@endif
</td>
<td>
@if($refund->refund_status == 0 && $refund->seller_approval == 0)
<a class="btn btn-soft-danger btn-icon btn-circle btn-sm" onclick="reject_refund_request({{$refund->id}})" title="{{ translate('Reject Refund Request') }}">
<i class="las la-trash"></i>
</a>
@elseif($refund->seller_approval == 2 || $refund->refund_status == 2)
<a href="javascript:void(0);" onclick="refund_reject_reason_show('{{ route('seller.reject_reason_show', $refund->id )}}')" class="btn btn-soft-primary btn-icon btn-circle btn-sm" title="{{ translate('Reject Reason') }}">
<i class="las la-eye"></i>
</a>
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="aiz-pagination">
{{ $refunds->links() }}
</div>
</div>
</div>
@endsection
@section('modal')
<div class="modal fade reject_refund_request" id="modal-basic">
<div class="modal-dialog">
<div class="modal-content">
<form class="form-horizontal member-block" action="{{ route('seller.reject_refund_request')}}" method="POST">
@csrf
<input type="hidden" name="refund_id" id="refund_id" value="">
<div class="modal-header">
<h5 class="modal-title h6">{{translate('Reject Refund Request !')}}</h5>
<button type="button" class="close" data-dismiss="modal"></button>
</div>
<div class="modal-body">
<div class="form-group row">
<label class="col-md-3 col-form-label">{{translate('Reject Reason')}}</label>
<div class="col-md-9">
<textarea type="text" name="reject_reason" rows="5" class="form-control" placeholder="{{translate('Reject Reason')}}" required></textarea>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-dismiss="modal">{{translate('Close')}}</button>
<button type="submit" class="btn btn-success">{{translate('Submit')}}</button>
</div>
</form>
</div>
</div>
</div>
<div class="modal fade reject_reason_show_modal" id="modal-basic">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title h6">{{translate('Refund Request Reject Reason')}}</h5>
<button type="button" class="close" data-dismiss="modal"></button>
</div>
<div class="modal-body reject_reason_show">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-dismiss="modal">{{translate('Close')}}</button>
</div>
</div>
</div>
</div>
@endsection
@section('script')
<script type="text/javascript">
function update_refund_approval(el){
$.post('{{ route('seller.vendor_refund_approval') }}',{_token:'{{ @csrf_token() }}', el:el}, function(data){
if (data == 1) {
AIZ.plugins.notify('success', '{{ translate('Approval has been done successfully') }}');
}
else {
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
}
});
}
function reject_refund_request(id) {
$('.reject_refund_request').modal('show');
$('#refund_id').val(id);
}
function refund_reject_reason_show(url){
$.get(url, function(data){
$('.reject_reason_show').html(data);
$('.reject_reason_show_modal').modal('show');
});
}
</script>
@endsection

View File

@@ -0,0 +1,64 @@
@extends('frontend.layouts.app')
@section('content')
<section class="py-5">
<div class="container">
<div class="d-flex align-items-start">
@include('frontend.inc.user_side_nav')
<div class="aiz-user-panel">
<div class="card rounded-0 shadow-none border">
<div class="card-header border-bottom-0">
<h5 class="mb-0 fs-20 fw-700 text-dark">{{translate('Send Refund Request')}}</h5>
</div>
<div class="card-body">
<form class="" action="{{route('refund_request_send', $order_detail->id)}}" method="POST" enctype="multipart/form-data" id="choice_form">
@csrf
<div class="form-box bg-white mt-4">
<div class="form-box-content p-3">
<div class="row">
<div class="col-md-3">
<label>{{translate('Product Name')}} <span class="text-danger">*</span></label>
</div>
<div class="col-md-9">
<input type="text" class="form-control mb-3 rounded-0" name="name" placeholder="{{translate('Product Name')}}" value="{{ $order_detail->product->getTranslation('name') }}" readonly>
</div>
</div>
<div class="row">
<div class="col-md-3">
<label>{{translate('Product Price')}} <span class="text-danger">*</span></label>
</div>
<div class="col-md-9">
<input type="number" class="form-control mb-3 rounded-0" name="name" placeholder="{{translate('Product Price')}}" value="{{ $order_detail->product->unit_price }}" readonly>
</div>
</div>
<div class="row">
<div class="col-md-3">
<label>{{translate('Order Code')}} <span class="text-danger">*</span></label>
</div>
<div class="col-md-9">
<input type="text" class="form-control mb-3 rounded-0" name="code" value="{{ $order_detail->order->code }}" readonly>
</div>
</div>
<div class="row">
<div class="col-md-3">
<label>{{translate('Refund Reason')}} <span class="text-danger">*</span></label>
</div>
<div class="col-md-9">
<textarea name="reason" rows="8" class="form-control mb-3 rounded-0"></textarea>
</div>
</div>
<div class="form-group mb-0 text-right">
<button type="submit" class="btn btn-primary rounded-0 w-150px">{{translate('Send Request')}}</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</section>
@endsection

View File

@@ -0,0 +1,103 @@
@extends('frontend.layouts.app')
@section('content')
<section class="py-5">
<div class="container">
<div class="d-flex align-items-start">
@include('frontend.inc.user_side_nav')
<div class="aiz-user-panel">
<div class="card rounded-0 shadow-none border">
<div class="card-header border-bottom-0">
<h5 class="mb-0 fs-20 fw-700 text-dark">{{ translate('Applied Refund Requests') }}</h5>
</div>
<div class="card-body py-0">
<table class="table aiz-table mb-0">
<thead class="text-gray fs-12">
<tr>
<th class="pl-0">#</th>
<th data-breakpoints="lg">{{ translate('Date') }}</th>
<th>{{translate('Code')}}</th>
<th data-breakpoints="lg">{{translate('Product')}}</th>
<th data-breakpoints="lg">{{translate('Amount')}}</th>
<th class="text-right pr-0 w-140px">{{translate('Status')}}</th>
</tr>
</thead>
<tbody class="fs-14">
@foreach ($refunds as $key => $refund)
<tr>
<td class="pl-0 text-dark" style="vertical-align: middle;">{{ sprintf('%02d', $key+1) }}</td>
<td class="text-secondary" style="vertical-align: middle;">{{ date('d-m-Y', strtotime($refund->created_at)) }}</td>
<td style="vertical-align: middle;">
@if ($refund->order != null)
<a href="{{route('purchase_history.details', encrypt($refund->order->id))}}" class="fw-700 text-primary">{{ $refund->order->code }}</a>
@endif
</td>
<td style="vertical-align: middle;">
@if ($refund->orderDetail != null && $refund->orderDetail->product != null)
{{ $refund->orderDetail->product->getTranslation('name') }}
@endif
</td>
<td class="fw-700" style="vertical-align: middle;">
@if ($refund->orderDetail != null)
{{single_price($refund->orderDetail->price)}}
@endif
</td>
<td class="text-right pr-0" style="vertical-align: middle;">
@if ($refund->refund_status == 1)
<span class="badge badge-inline badge-success p-3 fs-12" style="border-radius: 25px; min-width: 80px !important;">{{translate('Approved')}}</span>
@elseif ($refund->refund_status == 2)
<a href="javascript:void(0);" onclick="refund_reject_reason_show('{{ route('reject_reason_show', $refund->id )}}')" class="btn btn-soft-primary hov-svg-white btn-icon btn-circle btn-sm" title="{{ translate('Reject Reason') }}">
<svg xmlns="http://www.w3.org/2000/svg" width="12.004" height="11.001" viewBox="0 0 12.004 11.001">
<g id="Group_24939" data-name="Group 24939" transform="translate(-1336.909 -418.5)">
<path id="Intersection_8" data-name="Intersection 8" d="M9246.738,757.5a5.908,5.908,0,0,0-9.655,0h-1.174a6.9,6.9,0,0,1,12,0Z" transform="translate(-7899 -335.501)" fill="#d43533"/>
<path id="Intersection_9" data-name="Intersection 9" d="M0,0H1.176A5.91,5.91,0,0,0,6,2.5,5.91,5.91,0,0,0,10.828,0H12A6.9,6.9,0,0,1,6,3.5,6.9,6.9,0,0,1,0,0Z" transform="translate(1336.909 426)" fill="#d43533"/>
<rect id="Rectangle_18880" data-name="Rectangle 18880" width="4" height="4" rx="2" transform="translate(1341 422)" fill="#d43533"/>
</g>
</svg>
</a>
<span class="badge badge-inline badge-danger p-3 fs-12" style="border-radius: 25px; min-width: 80px !important;">{{translate('REJECTED')}}</span>
@else
<span class="badge badge-inline badge-info p-3 fs-12" style="border-radius: 25px; min-width: 80px !important;">{{translate('PENDING')}}</span>
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
{{ $refunds->links() }}
</div>
</div>
</div>
</div>
</div>
</section>
@endsection
@section('modal')
<div class="modal fade reject_reason_show_modal" id="modal-basic">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title h6">{{translate('Refund Request Reject Reason')}}</h5>
<button type="button" class="close" data-dismiss="modal"></button>
</div>
<div class="modal-body reject_reason_show">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-sm btn-secondary rounded-0" data-dismiss="modal">{{translate('Close')}}</button>
</div>
</div>
</div>
</div>
@endsection
@section('script')
<script type="text/javascript">
function refund_reject_reason_show(url){
$.get(url, function(data){
$('.reject_reason_show').html(data);
$('.reject_reason_show_modal').modal('show');
});
}
</script>
@endsection

View File

@@ -0,0 +1,36 @@
@extends('seller.layouts.app')
@section('panel_content')
<div class="aiz-titlebar mt-2 mb-4">
<div class="row align-items-center">
<div class="col-md-6">
<h1 class="h3">{{ translate('Reason of Refund Request') }}</h1>
</div>
</div>
</div>
<section class="py-5">
<div class="container">
<div class="d-flex align-items-start">
<div class="aiz-user-panel">
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{ translate('Reason of Refund Request') }}</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-12">
{{ $refund->reason }}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
@endsection

View File

@@ -0,0 +1,193 @@
@extends('backend.layouts.app')
@section('content')
<!-- Basic Data Tables -->
<!--===================================================-->
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Refund Request All')}}</h5>
</div>
<div class="card-body">
<table class="table aiz-table">
<thead>
<tr>
<th>#</th>
<th>{{translate('Order Code')}}</th>
<th data-breakpoints="lg">{{translate('Seller Name')}}</th>
<th data-breakpoints="lg">{{translate('Product')}}</th>
<th data-breakpoints="lg">{{translate('Price')}}</th>
<th data-breakpoints="lg">{{translate('Seller Approval')}}</th>
<th>{{translate('Refund Status')}}</th>
<th data-breakpoints="lg" width="15%" class="text-right">{{translate('Options')}}</th>
</tr>
</thead>
<tbody>
@foreach($refunds as $key => $refund)
<tr>
<td>{{ ($key+1) + ($refunds->currentPage() - 1)*$refunds->perPage() }}</td>
<td>
@if($refund->order != null)
{{ optional($refund->order)->code }}
@else
{{ translate('Order deleted') }}
@endif
</td>
<td>
@if ($refund->seller != null)
{{ $refund->seller->name }}
@endif
</td>
<td>
@if ($refund->orderDetail != null && $refund->orderDetail->product != null)
<a href="{{ route('product', $refund->orderDetail->product->slug) }}" target="_blank" class="media-block">
<div class="row">
<div class="col-auto">
<img src="{{ uploaded_asset($refund->orderDetail->product->thumbnail_img) }}" alt="Image" class="size-50px">
</div>
<div class="col">
<div class="media-body text-truncate-2">{{ $refund->orderDetail->product->getTranslation('name') }}</div>
</div>
</div>
</a>
@endif
</td>
<td>
@if ($refund->orderDetail != null)
{{single_price($refund->orderDetail->price)}}
@endif
</td>
<td>
@if ($refund->orderDetail != null && $refund->orderDetail->product != null && $refund->orderDetail->product->added_by == 'admin')
<span class="badge badge-inline badge-warning">{{translate('Own Product')}}</span>
@else
@if ($refund->seller_approval == 1)
<span class="badge badge-inline badge-success">{{translate('Approved')}}</span>
@elseif ($refund->seller_approval == 2)
<span class="badge badge-inline badge-danger">{{translate('Rejected')}}</span>
@else
<span class="badge badge-inline badge-primary">{{translate('Pending')}}</span>
@endif
@endif
</td>
<td>
@if ($refund->refund_status == 1)
<span class="badge badge-inline badge-success">{{translate('Paid')}}</span>
@else
<span class="badge badge-inline badge-warning">{{translate('Non-Paid')}}</span>
@endif
</td>
<td class="text-right">
@can('accept_refund_request')
<a class="btn btn-soft-success btn-icon btn-circle btn-sm" onclick="refund_request_money('{{ $refund->id }}')" title="{{ translate('Refund Now') }}">
<i class="las la-backward"></i>
</a>
@endcan
@can('reject_refund_request')
<a class="btn btn-soft-danger btn-icon btn-circle btn-sm" onclick="reject_refund_request('{{ route('admin.reject_reason_show', $refund->id )}}', '{{$refund->id}}', '{{ optional($refund->order)->code }}')" title="{{ translate('Reject Refund Request') }}">
<i class="las la-trash"></i>
</a>
@endcan
<a href="{{ route('admin.reason_show', $refund->id) }}" class="btn btn-soft-primary btn-icon btn-circle btn-sm" title="{{ translate('View Reason') }}">
<i class="las la-eye"></i>
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="clearfix">
<div class="pull-right">
{{ $refunds->appends(request()->input())->links() }}
</div>
</div>
</div>
</div>
@endsection
@section('modal')
<div class="modal fade reject_refund_request" id="modal-basic">
<div class="modal-dialog">
<div class="modal-content">
<form class="form-horizontal member-block" action="{{ route('admin.reject_refund_request')}}" method="POST">
@csrf
<input type="hidden" name="refund_id" id="refund_id" value="">
<div class="modal-header">
<h5 class="modal-title h6">{{translate('Reject Refund Request !')}}</h5>
<button type="button" class="close" data-dismiss="modal"></button>
</div>
<div class="modal-body">
<div class="form-group row">
<label class="col-md-3 col-form-label">{{translate('Order Code')}}</label>
<div class="col-md-9">
<input type="text" value="" id="order_id" class="form-control" disabled>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-form-label">{{translate('Reject Reason')}}</label>
<div class="col-md-9">
<textarea type="text" name="reject_reason" id="reject_reason" rows="5" class="form-control" placeholder="{{translate('Reject Reason')}}" required></textarea>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-dismiss="modal">{{translate('Close')}}</button>
<button type="submit" class="btn btn-success">{{translate('Submit')}}</button>
</div>
</form>
</div>
</div>
</div>
<div class="modal fade approve_refund_request" id="modal-basic">
<div class="modal-dialog">
<div class="modal-content">
<form class="form-horizontal member-block" action="{{ route('refund_request_money_by_admin')}}" method="POST">
@csrf
<input type="hidden" name="refund_id" id="approve_refund_id" value="">
<div class="modal-header">
<h5 class="modal-title h6">{{translate('Approve Refund Request !')}}</h5>
<button type="button" class="close" data-dismiss="modal"></button>
</div>
<div class="modal-body">
<p class="text-center">{{translate('Do you want to approve this refund request?')}}</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-dismiss="modal">{{translate('Close')}}</button>
<button type="submit" class="btn btn-success">{{translate('Approve')}}</button>
</div>
</form>
</div>
</div>
</div>
@endsection
@section('script')
<script type="text/javascript">
function update_refund_approval(el){
$.post('{{ route('admin.refund_approval') }}',{_token:'{{ @csrf_token() }}', el:el}, function(data){
if (data == 1) {
AIZ.plugins.notify('success', '{{ translate('Approval has been done successfully') }}');
}
else {
AIZ.plugins.notify('danger', '{{ translate('Something went wrong') }}');
}
});
}
function refund_request_money(refund_id){
$('.approve_refund_request').modal('show');
$('#approve_refund_id').val(refund_id);
}
function reject_refund_request(url, id, order_id){
$.get(url, function(data){
$('.reject_refund_request').modal('show');
$('#refund_id').val(id);
$('#order_id').val(order_id);
$('#reject_reason').html(data);
});
}
</script>
@endsection

View File

@@ -0,0 +1,89 @@
@extends('backend.layouts.app')
@section('content')
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Approved Request')}}</h5>
</div>
<div class="card-body">
<table class="table aiz-table">
<thead>
<tr>
<th>#</th>
<th>{{translate('Order Code')}}</th>
<th data-breakpoints="lg">{{translate('Seller Name')}}</th>
<th data-breakpoints="lg">{{translate('Product')}}</th>
<th data-breakpoints="lg">{{translate('Price')}}</th>
<th data-breakpoints="lg">{{translate('Seller Approval')}}</th>
<th data-breakpoints="lg">{{translate('Admin Approval')}}</th>
<th>{{translate('Refund Status')}}</th>
</tr>
</thead>
<tbody>
@foreach($refunds as $key => $refund)
<tr>
<td>{{ ($key+1) + ($refunds->currentPage() - 1)*$refunds->perPage() }}</td>
<td>
@if($refund->order != null)
{{ $refund->order->code }}
@else
{{ translate('Order deleted') }}
@endif
</td>
<td>
@if ($refund->seller != null)
{{ $refund->seller->name }}
@endif
</td>
<td>
@if ($refund->orderDetail != null && $refund->orderDetail->product != null)
<a href="{{ route('product', $refund->orderDetail->product->slug) }}" target="_blank" class="media-block">
<div class="form-group row">
<div class="col-md-5">
<img src="{{ uploaded_asset($refund->orderDetail->product->thumbnail_img)}}" alt="Image" class="w-50px">
</div>
<div class="col-md-7">
<div class="media-body">{{ $refund->orderDetail->product->getTranslation('name') }}</div>
</div>
</div>
</a>
@endif
</td>
<td>
@if ($refund->orderDetail != null)
{{single_price($refund->orderDetail->price)}}
@endif
</td>
<td>
@if ($refund->seller_approval == 1)
<span class="badge badge-inline badge-success">{{translate('Approved')}}</span>
@else
<span class="badge badge-inline badge-warning">{{translate('Pending')}}</span>
@endif
</td>
<td>
@if ($refund->admin_approval == 1)
<span class="badge badge-inline badge-success">{{translate('Approved')}}</span>
@endif
</td>
<td>
@if ($refund->refund_status == 1)
<span class="badge badge-inline badge-success">{{translate('Paid')}}</span>
@else
<span class="badge badge-inline badge-warning">{{translate('Non-Paid')}}</span>
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="clearfix">
<div class="pull-right">
{{ $refunds->appends(request()->input())->links() }}
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,22 @@
@extends('backend.layouts.app')
@section('content')
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Reason For Refund Request')}}</h5>
</div>
<div class="card-body">
<div class="form-group row">
<label class="col-lg-2 col-from-label"><b>{{translate('Reason')}}:</b></label>
<div class="col-lg-8">
<p class="bord-all pad-all">{{ $refund->reason }}</p>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -0,0 +1,115 @@
@extends('backend.layouts.app')
@section('content')
<div class="card">
<div class="card-header">
<h5 class="mb-0 h6">{{translate('Rejected Request')}}</h5>
</div>
<div class="card-body">
<table class="table aiz-table">
<thead>
<tr>
<th>#</th>
<th>{{translate('Order Code')}}</th>
<th data-breakpoints="lg">{{translate('Seller Name')}}</th>
<th data-breakpoints="lg">{{translate('Product')}}</th>
<th data-breakpoints="lg">{{translate('Price')}}</th>
<th data-breakpoints="lg">{{translate('Seller Approval')}}</th>
<th>{{translate('Admin Approval')}}</th>
<th data-breakpoints="lg">{{translate('Reject Reason')}}</th>
</tr>
</thead>
<tbody>
@foreach($refunds as $key => $refund)
<tr>
<td>{{ ($key+1) + ($refunds->currentPage() - 1)*$refunds->perPage() }}</td>
<td>
@if($refund->order != null)
{{ $refund->order->code }}
@else
{{ translate('Order deleted') }}
@endif
</td>
<td>
@if ($refund->seller != null)
{{ $refund->seller->name }}
@endif
</td>
<td>
@if ($refund->orderDetail != null && $refund->orderDetail->product != null)
<a href="{{ route('product', $refund->orderDetail->product->slug) }}" target="_blank" class="media-block">
<div class="form-group row">
<div class="col-md-5">
<img src="{{ uploaded_asset($refund->orderDetail->product->thumbnail_img)}}" alt="Image" class="w-50px">
</div>
<div class="col-md-7">
<div class="media-body">{{ $refund->orderDetail->product->getTranslation('name') }}</div>
</div>
</div>
</a>
@endif
</td>
<td>
@if ($refund->orderDetail != null)
{{single_price($refund->orderDetail->price)}}
@endif
</td>
<td>
@if ($refund->seller_approval == 1)
<span class="badge badge-inline badge-success">{{translate('Approved')}}</span>
@else
<span class="badge badge-inline badge-warning">{{translate('Pending')}}</span>
@endif
</td>
<td>
@if($refund->admin_approval == 2)
<span class="badge badge-inline badge-danger">{{translate('Rejected')}}</span>
@endif
</td>
<td class="text-right">
<a href="javascript:void(0);" onclick="refund_reject_reason_show('{{ route('admin.reject_reason_show', $refund->id )}}')" class="btn btn-soft-primary btn-icon btn-circle btn-sm" title="{{ translate('Reject Reason') }}">
<i class="las la-eye"></i>
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="clearfix">
<div class="pull-right">
{{ $refunds->appends(request()->input())->links() }}
</div>
</div>
</div>
</div>
@endsection
@section('modal')
<div class="modal fade reject_reason_show_modal" id="modal-basic">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title h6">{{translate('Refund Request Reject Reason')}}</h5>
<button type="button" class="close" data-dismiss="modal"></button>
</div>
<div class="modal-body reject_reason_show">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-dismiss="modal">{{translate('Close')}}</button>
</div>
</div>
</div>
</div>
@endsection
@section('script')
<script type="text/javascript">
function refund_reject_reason_show(url){
$.get(url, function(data){
$('.reject_reason_show').html(data);
$('.reject_reason_show_modal').modal('show');
});
}
</script>
@endsection