API aktiviert / Anpassungen + User Übersicht Gutschriften Umsätze
This commit is contained in:
parent
c02fffd883
commit
a4c76d06fa
27 changed files with 500 additions and 110 deletions
1
.env
1
.env
|
|
@ -3,6 +3,7 @@ APP_ENV=local
|
|||
APP_KEY=base64:w0K6RjfleoAOpuICea14JnaZ28PNc6EMzIFMQZ3MVtU=
|
||||
APP_DEBUG=true
|
||||
APP_URL=https://partner.gruene-seele.test
|
||||
APP_DOMAIN=partner.gruene-seele.test
|
||||
|
||||
APP_CHECKOUT_MAIL=kevin.adametz@me.com
|
||||
APP_CHECKOUT_TEST_MAIL=kevin.adametz@me.com
|
||||
|
|
|
|||
|
|
@ -45,6 +45,14 @@ class AuthController extends Controller
|
|||
$token->expires_at = Carbon::now()->addDays(1);
|
||||
}
|
||||
|
||||
\DB::table('oauth_access_tokens')
|
||||
->whereDate('expires_at', '<', now()->addWeeks(1))
|
||||
->delete();
|
||||
|
||||
\DB::table('oauth_refresh_tokens')
|
||||
->whereDate('expires_at', '<', now()->addWeeks(1))
|
||||
->delete();
|
||||
|
||||
$token->save();
|
||||
return response()->json([
|
||||
'access_token' => $tokenResult->accessToken,
|
||||
|
|
|
|||
|
|
@ -23,10 +23,11 @@ class ShoppingUserController extends Controller
|
|||
|
||||
//protected static API_MAIL = 'api.thomas.krummel@gmail.com';
|
||||
//protected static API_PASS = 'UF(Q<9knap!ev3vH?5~!b8DP';
|
||||
//URL api.gruene-seele.bio
|
||||
|
||||
|
||||
protected $successStatus = 200;
|
||||
protected $member_id = 3; //thomas.krummel@gmail.com
|
||||
protected $member_id = 2; //thomas.krummel@gmail.com
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -275,7 +276,7 @@ class ShoppingUserController extends Controller
|
|||
'user' => $user,
|
||||
'customer_priority' => $priority,
|
||||
'customer_number' => $shopping_user->number,
|
||||
'member_email' => $shopping_user->member->email
|
||||
'member_email' => ($shopping_user && $shopping_user->member) ? $shopping_user->member->email : false,
|
||||
],
|
||||
'time' => Carbon::now()->toDateTimeString()
|
||||
], 200);
|
||||
|
|
@ -385,7 +386,7 @@ class ShoppingUserController extends Controller
|
|||
'user' => $user,
|
||||
'order' => $order,
|
||||
'customer_number' => $shopping_user->number,
|
||||
'member_email' => $shopping_user->member->email,
|
||||
'member_email' => ($shopping_user && $shopping_user->member) ? $shopping_user->member->email : false,
|
||||
'status' => $shopping_user->getAPIShippedType(),
|
||||
],
|
||||
'time' => Carbon::now()->toDateTimeString()
|
||||
|
|
@ -566,7 +567,7 @@ class ShoppingUserController extends Controller
|
|||
$ret['wp_order_date'] = Carbon::parse($ret['wp_order_date'])->toDateTimeString();
|
||||
}
|
||||
if ($need === 'same_as_billing') {
|
||||
$ret['same_as_billing'] = isset($data['same_as_billing']) ? $data['same_as_billing'] : true;
|
||||
$ret['same_as_billing'] = isset($data['same_as_billing']) ? (int) $data['same_as_billing'] : 1;
|
||||
}
|
||||
}
|
||||
$ret['has_buyed'] = true;
|
||||
|
|
@ -620,7 +621,7 @@ class ShoppingUserController extends Controller
|
|||
'shopping_user_id' => $shopping_user->id,
|
||||
'auth_user_id' => $shopping_user->auth_user_id,
|
||||
'country_id' => Yard::instance('shopping')->getShippingCountryId(),
|
||||
'user_shop_id' => auth()->user()->user_sponsor->shop->id,
|
||||
// 'user_shop_id' => auth()->user()->user_sponsor->shop->id,
|
||||
'member_id' => $shopping_user->member_id,
|
||||
'total' => Yard::instance('shopping')->total(2, '.', ''),
|
||||
'subtotal' => Yard::instance('shopping')->subtotal(2, '.', ''),
|
||||
|
|
@ -687,7 +688,7 @@ class ShoppingUserController extends Controller
|
|||
public function orderStatusSendMail(ShoppingOrder $shopping_order){
|
||||
|
||||
$bcc = [];
|
||||
$user_mail = $shopping_order->shopping_user->member->email;
|
||||
$user_mail = ($shopping_order->shopping_user && $shopping_order->shopping_user->member) ? $shopping_order->shopping_user->member->email : false;
|
||||
if($shopping_order->mode === 'dev'){
|
||||
$bcc[] = config('app.checkout_test_mail');
|
||||
}else{
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ use Storage;
|
|||
use Response;
|
||||
use App\Services\Credit;
|
||||
use App\Services\Invoice;
|
||||
use Auth;
|
||||
|
||||
class FileController extends Controller
|
||||
{
|
||||
|
|
@ -18,24 +19,32 @@ class FileController extends Controller
|
|||
{
|
||||
}
|
||||
|
||||
private function isPermission($user_id){
|
||||
|
||||
if(Auth::user()->isAdmin() || $user_id == Auth::user()->id){
|
||||
return true;
|
||||
}
|
||||
abort(404);
|
||||
|
||||
}
|
||||
|
||||
public function show($id = null, $disk = null, $do='file')
|
||||
{
|
||||
$path = "";
|
||||
$filename = "";
|
||||
|
||||
|
||||
if($disk === 'user'){
|
||||
$file = \App\Models\File::findOrFail($id);
|
||||
$this->isPermission($file->user_id);
|
||||
$path = Storage::disk($disk)->path($file->dir.$file->filename);
|
||||
if (file_exists($path)) {
|
||||
return Response::file($path);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($disk === 'invoice'){
|
||||
$shopping_order = \App\Models\ShoppingOrder::findOrFail($id);
|
||||
$this->isPermission($shopping_order->auth_user_id);
|
||||
$filename = Invoice::getFilename($shopping_order);
|
||||
$path = Invoice::getDownloadPath($shopping_order);
|
||||
if (!Storage::disk('public')->exists($path)) {
|
||||
|
|
@ -64,8 +73,11 @@ class FileController extends Controller
|
|||
|
||||
if ($disk === 'credit'){
|
||||
$UserCredit = \App\Models\UserCredit::findOrFail($id);
|
||||
$this->isPermission($UserCredit->auth_user_id);
|
||||
|
||||
$filename = Credit::getFilename($UserCredit);
|
||||
$path = Credit::getDownloadPath($UserCredit);
|
||||
|
||||
if (!Storage::disk('public')->exists($path)) {
|
||||
return Response::make('File no found.', 404);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ class PaymentCreditController extends Controller
|
|||
|
||||
|
||||
->addColumn('total', function (UserCredit $UserCredit) {
|
||||
return $UserCredit->getFormattedTotal();
|
||||
return $UserCredit->getFormattedTotal()." €";
|
||||
})
|
||||
->addColumn('user_margins', function (UserCredit $UserCredit) {
|
||||
$ret = "";
|
||||
|
|
|
|||
|
|
@ -2,19 +2,29 @@
|
|||
|
||||
|
||||
namespace App\Http\Controllers\User;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\User;
|
||||
use Request;
|
||||
use Carbon;
|
||||
use App\Models\ShoppingOrder;
|
||||
|
||||
use Request;
|
||||
use App\User;
|
||||
use App\Services\Credit;
|
||||
use App\Models\UserCredit;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\UserPayCredit;
|
||||
|
||||
class PaymentController extends Controller
|
||||
{
|
||||
|
||||
private $startYear;
|
||||
private $endYear;
|
||||
private $rangeYears;
|
||||
private $activeYear;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('auth');
|
||||
$this->startYear = 2021;
|
||||
$this->endYear = date('Y');
|
||||
$this->rangeYears = range($this->startYear, $this->endYear);
|
||||
$this->activeYear = $this->endYear;
|
||||
}
|
||||
|
||||
public function paycredit()
|
||||
|
|
@ -25,38 +35,120 @@ class PaymentController extends Controller
|
|||
return view('user.payment.paycredit', $data);
|
||||
}
|
||||
|
||||
/*public function index()
|
||||
{
|
||||
$start = 2021;
|
||||
$end = date('Y');
|
||||
$years = range($start, $end);
|
||||
public function paycredit_datatable(){
|
||||
|
||||
if(Request::get('filter_sales_year')){
|
||||
$active_year = Request::get('filter_sales_year');
|
||||
$user = \Auth::user();
|
||||
$query = UserPayCredit::select('user_pay_credits.*')->where('user_id', $user->id);
|
||||
|
||||
return \DataTables::eloquent($query)
|
||||
|
||||
->addColumn('message', function (UserPayCredit $user_pay_credit) {
|
||||
if($user_pay_credit->status === 3){
|
||||
return nl2br($user_pay_credit->message);
|
||||
}else{
|
||||
$active_year = $end;
|
||||
return trans('payment.'.$user_pay_credit->message).
|
||||
' <a class="btn btn-outline-secondary btn-xs" href="'.route('user_order_detail', [$user_pay_credit->shopping_order_id]).'"><i class="ion ion-md-eye"></i></a>';
|
||||
|
||||
}
|
||||
|
||||
$date1 = Carbon::parse('01.01.'.$active_year." 00:00:00")->format('Y-m-d H:i:s');
|
||||
$date2 = Carbon::parse('31.12.'.$active_year." 23:59:59")->toDateString();
|
||||
|
||||
|
||||
$values = ShoppingOrder::where('shopping_orders.auth_user_id', '!=', NULL) //::with('shopping_user', )->select('shopping_orders.*')
|
||||
->where('mode', '=', 'live')
|
||||
->where('paid', '=', 1)
|
||||
->whereHas('shopping_order_items', function($q) {
|
||||
|
||||
$q->where('product_id', 34)->OrWhere('product_id', 35)->OrWhere('product_id', 36)->OrWhere('product_id', 67)->OrWhere('product_id', 69);
|
||||
})
|
||||
->whereBetween('created_at', [$date1, $date2])
|
||||
->get();
|
||||
->addColumn('credit', function (UserPayCredit $user_pay_credit) {
|
||||
return formatNumber($user_pay_credit->credit)." €";
|
||||
})
|
||||
->addColumn('old_credit_total', function (UserPayCredit $user_pay_credit) {
|
||||
return formatNumber($user_pay_credit->old_credit_total)." €";
|
||||
})
|
||||
->addColumn('new_credit_total', function (UserPayCredit $user_pay_credit) {
|
||||
return formatNumber($user_pay_credit->new_credit_total)." €";
|
||||
})
|
||||
->addColumn('created_at', function (UserPayCredit $user_pay_credit) {
|
||||
return formatDate($user_pay_credit->created_at);
|
||||
})
|
||||
|
||||
->orderColumn('message', 'message $1')
|
||||
->orderColumn('txaction', 'txaction $1')
|
||||
->orderColumn('credit', 'credit $1')
|
||||
->orderColumn('created_at', 'created_at $1')
|
||||
->rawColumns(['message'])
|
||||
->make(true);
|
||||
}
|
||||
|
||||
public function credit()
|
||||
{
|
||||
$user = \Auth::user();
|
||||
$data = [
|
||||
'years' => $years,
|
||||
'active_year' => $active_year,
|
||||
'values' => $values,
|
||||
'user' => $user,
|
||||
];
|
||||
return view('user.revenue.index', $data);
|
||||
return view('user.payment.credit', $data);
|
||||
}
|
||||
|
||||
public function credit_datatable(){
|
||||
|
||||
$user = \Auth::user();
|
||||
$query = UserCredit::with('user', 'user.account')->select('user_credits.*')->where('auth_user_id', $user->id);
|
||||
|
||||
return \DataTables::eloquent($query)
|
||||
->addColumn('total', function (UserCredit $UserCredit) {
|
||||
return $UserCredit->getFormattedTotal()." €";
|
||||
})
|
||||
->addColumn('user_margins', function (UserCredit $UserCredit) {
|
||||
$ret = "";
|
||||
if($UserCredit->user_margins){
|
||||
foreach($UserCredit->user_margins as $user_margin){
|
||||
$ret .= $user_margin->firstname."/".$user_margin->lastname."/".$user_margin->reference."/".$user_margin->created_at."<br>";
|
||||
}
|
||||
}
|
||||
if($UserCredit->user_credits){
|
||||
foreach($UserCredit->user_credits as $user_credit){
|
||||
$ret .= nl2br($user_credit->message)." / ".$user_credit->created_at."<br>";
|
||||
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
})
|
||||
/* ->addColumn('txaction', function (ShoppingOrder $ShoppingOrder) {
|
||||
return Payment::getShoppingOrderBadge($ShoppingOrder);
|
||||
})*/
|
||||
->addColumn('credit', function (UserCredit $UserCredit) {
|
||||
$ret = "";
|
||||
if(Credit::isCredit($UserCredit)){
|
||||
$ret .= '<a href="'.route('storage_file', [$UserCredit->id, 'credit', 'download']).'" class="btn btn-primary btn-xs"><i class="fa fa-download"></i></a> ';
|
||||
$ret .= '<a href="'.route('storage_file', [$UserCredit->id, 'credit', 'stream']).'" target="_blank" class="btn btn-warning btn-xs"><i class="fa fa-eye"></i></a>';
|
||||
}else{
|
||||
$ret = "-";
|
||||
}
|
||||
return $ret;
|
||||
})
|
||||
|
||||
->addColumn('status', function (UserCredit $UserCredit) {
|
||||
return '<span class="badge badge-pill badge-'.$UserCredit->getStatusColor().'">'.$UserCredit->getStatusType().' <span class="ion ion-md-cash"></span></span>';
|
||||
})
|
||||
|
||||
|
||||
->orderColumn('id', 'id $1')
|
||||
->orderColumn('status', 'status $1')
|
||||
->orderColumn('total', 'total $1')
|
||||
->rawColumns(['shipping_order', 'total', 'credit', 'status', 'user_margins'])
|
||||
->make(true);
|
||||
}
|
||||
|
||||
|
||||
private function setActiveYears(){
|
||||
if(Request::get('filter_year')){
|
||||
$this->activeYear = Request::get('filter_year');
|
||||
}
|
||||
}
|
||||
|
||||
public function revenue()
|
||||
{
|
||||
$this->setActiveYears();
|
||||
|
||||
$user = \Auth::user();
|
||||
$data = [
|
||||
'user' => $user,
|
||||
'years' => $this->rangeYears,
|
||||
'active_year' => $this->activeYear,
|
||||
'months' => range(1, 12),
|
||||
];
|
||||
return view('user.payment.revenue', $data);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
|
@ -4,6 +4,8 @@ namespace App\Providers;
|
|||
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
|
||||
use Laravel\Passport\Passport;
|
||||
|
||||
|
||||
class AuthServiceProvider extends ServiceProvider
|
||||
{
|
||||
|
|
@ -24,6 +26,7 @@ class AuthServiceProvider extends ServiceProvider
|
|||
public function boot()
|
||||
{
|
||||
$this->registerPolicies();
|
||||
Passport::routes();
|
||||
|
||||
//
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,9 +72,14 @@ class RouteServiceProvider extends ServiceProvider
|
|||
*/
|
||||
protected function mapApiRoutes()
|
||||
{
|
||||
Route::prefix('api')
|
||||
Route::domain('api.'.config('app.domain'))
|
||||
->middleware('api')
|
||||
->namespace($this->namespace)
|
||||
->group(base_path('routes/api.php'));
|
||||
|
||||
/* Route::prefix('api')
|
||||
->middleware('api')
|
||||
->namespace($this->namespace)
|
||||
->group(base_path('routes/api.php'));*/
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ class CustomerPriority
|
|||
//only extern no members with no numbers
|
||||
$shopping_users = ShoppingUser::where('auth_user_id', '=', NULL)->where('number', '=', NULL)->orderBy('created_at', 'ASC')->get();
|
||||
foreach ($shopping_users as $shopping_user){
|
||||
if($shopping_user->shopping_order && $shopping_user->shopping_order->user_shop){
|
||||
if($shopping_user->shopping_order){
|
||||
self::checkOne($shopping_user);
|
||||
}
|
||||
}
|
||||
|
|
@ -217,8 +217,8 @@ class CustomerPriority
|
|||
}
|
||||
|
||||
private static function newCustomer($shopping_user){
|
||||
if($shopping_user->shopping_order && $shopping_user->shopping_order->user_shop) {
|
||||
$member_id = $shopping_user->shopping_order->user_shop->user_id;
|
||||
if($shopping_user->shopping_order && $shopping_user->shopping_order->member_id) {
|
||||
$member_id = $shopping_user->shopping_order->member_id;
|
||||
$shopping_user->member_id = $member_id;
|
||||
$shopping_user->number = self::nextNumber();
|
||||
$shopping_user->save();
|
||||
|
|
|
|||
|
|
@ -86,11 +86,16 @@ class UserMarign
|
|||
|
||||
public static function getMontlyPartnerCommissionOpen(User $user, $date = null, $format = false){
|
||||
|
||||
//$now = $date ? Carbon::parse($date) : Carbon::now();
|
||||
if(!$date){
|
||||
$start = Carbon::parse('01.01.2021');
|
||||
$end = Carbon::now();
|
||||
$startDay = $start->startOfMonth()->toDateString();
|
||||
$endDay = $end->endOfMonth()->toDateString();
|
||||
}else{
|
||||
$now = $date ? Carbon::parse($date) : Carbon::now();
|
||||
$startDay = $now->startOfMonth()->toDateString();
|
||||
$endDay = $now->endOfMonth()->toDateString();
|
||||
}
|
||||
|
||||
$sum_net_amount = ShoppingOrderMargin::whereMSponsorId($user->id)
|
||||
->whereBetween('from', [$startDay, $endDay])
|
||||
|
|
@ -129,11 +134,16 @@ class UserMarign
|
|||
|
||||
public static function getMontlyPartnerCommissionPending(User $user, $date = null, $format = false){
|
||||
|
||||
//$now = $date ? Carbon::parse($date) : Carbon::now();
|
||||
if(!$date){
|
||||
$start = Carbon::parse('01.01.2021');
|
||||
$end = Carbon::now();
|
||||
$startDay = $start->startOfMonth()->toDateString();
|
||||
$endDay = $end->endOfMonth()->toDateString();
|
||||
}else{
|
||||
$now = $date ? Carbon::parse($date) : Carbon::now();
|
||||
$startDay = $now->startOfMonth()->toDateString();
|
||||
$endDay = $now->endOfMonth()->toDateString();
|
||||
}
|
||||
|
||||
$sum_net_amount = ShoppingOrderMargin::whereMSponsorId($user->id)
|
||||
->whereBetween('from', [$startDay, $endDay])
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ use Illuminate\Notifications\Notifiable;
|
|||
use Illuminate\Contracts\Auth\MustVerifyEmail;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Laravel\Passport\HasApiTokens;
|
||||
use Util;
|
||||
|
||||
/**
|
||||
|
|
@ -98,10 +99,12 @@ use Util;
|
|||
* @method static \Illuminate\Database\Eloquent\Builder|User wherePaymentAccount($value)
|
||||
* @property string|null $payment_credit
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|User wherePaymentCredit($value)
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserPayCredit[] $user_pay_credits
|
||||
* @property-read int|null $user_pay_credits_count
|
||||
*/
|
||||
class User extends Authenticatable
|
||||
{
|
||||
use Notifiable;
|
||||
use Notifiable, HasApiTokens;
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ return [
|
|||
*/
|
||||
|
||||
'url' => env('APP_URL', 'https://partner.gruene-seele.bio'),
|
||||
'domain' => env('APP_DOMAIN', 'partner.gruene-seele.bio'),
|
||||
|
||||
'checkout_mail' => env('APP_CHECKOUT_MAIL', 'kevin.adametz@me.com'),
|
||||
'checkout_test_mail' => env('APP_CHECKOUT_TEST_MAIL', 'kevin.adametz@me.com'),
|
||||
|
|
|
|||
|
|
@ -42,9 +42,8 @@ return [
|
|||
],
|
||||
|
||||
'api' => [
|
||||
'driver' => 'token',
|
||||
'driver' => 'passport',
|
||||
'provider' => 'users',
|
||||
'hash' => false,
|
||||
],
|
||||
],
|
||||
|
||||
|
|
|
|||
|
|
@ -92,13 +92,7 @@
|
|||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">Über Shop</div>
|
||||
@if($shopping_user->shopping_order)
|
||||
@if($shopping_user->shopping_order->user_shop->user->isActive() && $shopping_user->shopping_order->user_shop->user->isActiveShop())
|
||||
<a href="{{$shopping_user->shopping_order->user_shop->getSubdomain(false)}}" class="badge badge-success" target="_blank">{{$shopping_user->shopping_order->user_shop->getSubdomain(false)}}</a>
|
||||
@else
|
||||
<span class="badge badge-danger" target="_blank">{{$shopping_user->shopping_order->user_shop->getSubdomain(false)}}</span>
|
||||
@endif
|
||||
@endif
|
||||
#
|
||||
</div>
|
||||
<div class="col-md-3 mb-3">
|
||||
<div class="text-muted small">ist Vertriebspartner</div>
|
||||
|
|
|
|||
|
|
@ -25,8 +25,6 @@
|
|||
<input type="hidden" name="action" value="{{$data['action']}}">
|
||||
<input type="hidden" name="id" value="{{$data['id']}}">
|
||||
|
||||
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group col-12">
|
||||
<label for="status" class="form-label">{{ __('Status') }}*</label>
|
||||
|
|
@ -36,6 +34,12 @@
|
|||
|
||||
<table class="table user-view-table m-0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Betrag:</td>
|
||||
<td>
|
||||
{{ $value->getFormattedTotal()." €" }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Zahlungsart:</td>
|
||||
<td>
|
||||
|
|
|
|||
|
|
@ -215,8 +215,6 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="modal fade" id="modals-credit">
|
||||
<div class="modal-dialog">
|
||||
<form class="modal-content" action="{{ route('admin_payments_credit_create') }}" method="post">
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@
|
|||
@endforeach
|
||||
</select>
|
||||
{!! Form::close() !!}
|
||||
|
||||
</div>
|
||||
|
||||
<div class="card-datatable table-responsive pt-0">
|
||||
|
|
|
|||
|
|
@ -88,9 +88,6 @@
|
|||
oTable.draw();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
|
||||
/*$('#filter_user_status').on('change', function(){
|
||||
$('#form_filter_user_status').submit();
|
||||
});*/
|
||||
|
|
|
|||
|
|
@ -22,11 +22,14 @@
|
|||
<li class="sidenav-item Request::is('user/payment/paycredit') ? ' active' : '' }} {{ Request::is('user/payment/paycredit') ? ' active' : '' }}">
|
||||
<a href="{{ route('user_payment_paycredit') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-cash"></i><div>{{ __('navigation.paycredit') }}</div></a>
|
||||
</li>
|
||||
{{--
|
||||
<li class="sidenav-item Request::is('user/payment/credit') ? ' active' : '' }} {{ Request::is('user/payment/credit') ? ' active' : '' }}">
|
||||
<a href="{{ route('user_payment_credit') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-cash"></i><div>{{ __('navigation.commissions') }}</div></a>
|
||||
<a href="{{ route('user_payment_credit') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-cash"></i><div>{{ __('navigation.credit') }}</div></a>
|
||||
</li>
|
||||
--}}
|
||||
|
||||
<li class="sidenav-item Request::is('user/payment/revenue') ? ' active' : '' }} {{ Request::is('user/payment/revenue') ? ' active' : '' }}">
|
||||
<a href="{{ route('user_payment_revenue') }}" class="sidenav-link"><i class="sidenav-icon ion ion-md-trending-up"></i><div>{{ __('navigation.revenue') }}</div></a>
|
||||
</li>
|
||||
|
||||
<li class="sidenav-item{{ Request::is('user/edit') ? ' active' : '' }}">
|
||||
<a href="{{ route('user_edit') }}" class="sidenav-link"><i class="sidenav-icon ion ion-ios-create"></i><div>{{ __('navigation.my_data') }}</div></a>
|
||||
</li>
|
||||
|
|
|
|||
|
|
@ -304,7 +304,7 @@
|
|||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
{{ __('Datum') }}/{{ __('Leistungsdatum)') }}: {{ $credit_date }}
|
||||
{{ __('Datum') }}/{{ __('Leistungsdatum') }}: {{ $credit_date }}
|
||||
</td>
|
||||
</tr>
|
||||
@if($user->account->tax_number)
|
||||
|
|
|
|||
58
resources/views/user/payment/credit.blade.php
Normal file
58
resources/views/user/payment/credit.blade.php
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
@extends('layouts.layout-2')
|
||||
|
||||
@section('content')
|
||||
<h4 class="font-weight-bold py-2 mb-2">
|
||||
{{ __('navigation.my_account') }} / {{ __('navigation.credit') }}
|
||||
</h4>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-datatable table-responsive">
|
||||
<table class="datatables-style table table-striped table-bordered" id="datatable-user-credit">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{__('G.Nr.')}}</th>
|
||||
<th>{{__('Gutschrift')}}</th>
|
||||
<th>{{__('Betrag') }}</th>
|
||||
<th>{{__('Datum') }}</th>
|
||||
<th>{{__('Zahlung')}}</th>
|
||||
<th>{{__('aus Bestellung / Gutschrift')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
var oTable = $('#datatable-user-credit').DataTable({
|
||||
"processing": true,
|
||||
"serverSide": true,
|
||||
ajax: {
|
||||
url: '{!! route( 'user_payment_credit_datatable') !!}',
|
||||
data: function(d) {
|
||||
//d.filter_sales_year = $('select[name=filter_sales_year]').val();
|
||||
}
|
||||
},
|
||||
"order": [[0, "desc" ]],
|
||||
"columns": [
|
||||
{ data: 'credit_number', name: 'credit_number' },
|
||||
{ data: 'credit', name: 'credit', orderable: false, searchable: false },
|
||||
{ data: 'total', name: 'total' },
|
||||
{ data: 'date', name: 'date' },
|
||||
{ data: 'status', name: 'status', searchable: false },
|
||||
{ data: 'user_margins', name: 'user_margins', orderable: false },
|
||||
],
|
||||
"bLengthChange": false,
|
||||
"iDisplayLength": 100,
|
||||
"language": {
|
||||
"url": "/js/German.json"
|
||||
}
|
||||
});
|
||||
/*$('#filter_sales_year').on('change', function(){
|
||||
oTable.draw();
|
||||
});
|
||||
*/
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
<div class="card">
|
||||
<div class="card-datatable table-responsive">
|
||||
<table class="datatables-style table table-striped table-bordered">
|
||||
<table class="datatables-style table table-striped table-bordered" id="datatable-user-pay-credit">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 55%">Mitteilung</th>
|
||||
|
|
@ -18,30 +18,39 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if($user && $user->user_pay_credits)
|
||||
@foreach($user->user_pay_credits as $user_pay_credit)
|
||||
<tr>
|
||||
@if($user_pay_credit->status === 3)
|
||||
<th scope="row"> {!! nl2br($user_pay_credit->message) !!}</th>
|
||||
@else
|
||||
<th scope="row">{{ trans('payment.'.$user_pay_credit->message) }}
|
||||
@if($user_pay_credit->shopping_order_id)
|
||||
<a class="btn btn-outline-secondary btn-xs" href="{{ route('admin_sales_users_detail', [$user_pay_credit->shopping_order_id]) }}"><i class="ion ion-md-eye"></i></a>
|
||||
@endif
|
||||
</th>
|
||||
@endif
|
||||
<td><div class="no-line-break">{{ formatNumber($user_pay_credit->credit) }} €</div></td>
|
||||
<td><div class="no-line-break">{{ formatNumber($user_pay_credit->old_credit_total) }} €</div></td>
|
||||
<td><div class="no-line-break">{{ formatNumber($user_pay_credit->new_credit_total) }} €</div></td>
|
||||
<td><div class="no-line-break">{{ formatDate($user_pay_credit->created_at) }}</div></td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
|
||||
$( document ).ready(function() {
|
||||
var oTable = $('#datatable-user-pay-credit').DataTable({
|
||||
"processing": true,
|
||||
"serverSide": true,
|
||||
ajax: {
|
||||
url: '{!! route( 'user_payment_paycredit_datatable') !!}',
|
||||
/*data: function(d) {
|
||||
d.filter_user_status = $('select[name=filter_user_status]').val();
|
||||
}*/
|
||||
},
|
||||
"order": [[4, "desc" ]],
|
||||
"columns": [
|
||||
{ data: 'message', name: 'message' },
|
||||
{ data: 'credit', name: 'credit' },
|
||||
{ data: 'old_credit_total', name: 'old_credit_total', orderable: false, searchable: false },
|
||||
{ data: 'new_credit_total', name: 'new_credit_total', orderable: false, searchable: false },
|
||||
{ data: 'created_at', name: 'created_at' },
|
||||
],
|
||||
"bLengthChange": false,
|
||||
"iDisplayLength": 100,
|
||||
"language": {
|
||||
"url": "/js/German.json"
|
||||
}
|
||||
});
|
||||
/*$('#filter_user_status').on('change', function(){
|
||||
oTable.draw();
|
||||
});*/
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
|
|
|||
83
resources/views/user/payment/revenue.blade.php
Normal file
83
resources/views/user/payment/revenue.blade.php
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
@extends('layouts.layout-2')
|
||||
|
||||
@section('content')
|
||||
<h4 class="font-weight-bold py-2 mb-2">
|
||||
{{ __('navigation.my_account') }} / {{ __('navigation.revenue') }}
|
||||
</h4>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-6 mb-0 mt-2 mb-2">
|
||||
{!! Form::open(['url' => route('user_payment_revenue'), 'class' => 'form-horizontal', 'id'=>'form_filter_year']) !!}
|
||||
<label class="form-label" for="filter_year">Filter Jahr</label>
|
||||
<select class="custom-select" name="filter_year" id="filter_year">
|
||||
@foreach($years as $year)
|
||||
<option value="{{$year}}" @if($active_year == $year) selected @endif>{{$year}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
{!! Form::close() !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@foreach ($months as $month)
|
||||
|
||||
@php($date = $active_year."-".$month."-01")
|
||||
<div class="card mb-4">
|
||||
<h6 class="card-header py-1 px-3">
|
||||
<div class="card-header-title"> {{ App\Services\HTMLHelper::getMonth($month) }} {{ $active_year }}</div>
|
||||
</h6>
|
||||
<div class="card-body">
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr>
|
||||
<td class="text-left font-weight-semibold">{{__('Umsatz gesamt')}}:</td>
|
||||
<td class="text-right font-weight-bold">
|
||||
{!! \App\Services\UserMarign::getMontlyPrice($user, $date, true) !!} €*
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-left font-weight-semibold">{{__('Umsatz Staffelrabatt')}}:</td>
|
||||
<td class="text-right font-weight-bold">
|
||||
{!! \App\Services\UserMarign::getMontlyAmount($user, $date, true) !!} €*
|
||||
</td>
|
||||
</tr>
|
||||
{{-- <tr>
|
||||
<td class="text-left font-weight-semibold">{{__('Umsatz Zahlung offen')}}:</td>
|
||||
<td class="text-right font-weight-bold">
|
||||
{!! \App\Services\UserMarign::getMontlyPriceOpen($user, $date, true) !!} €*
|
||||
</td>
|
||||
</tr>
|
||||
--}}
|
||||
</table>
|
||||
{{--
|
||||
<h6>{{__('Provision')}}</h6>
|
||||
<table class="table table-striped table-bordered">
|
||||
<tr>
|
||||
<td class="text-left font-weight-semibold">{{__('Vertriebspartner Provision')}} pending:</td>
|
||||
<td class="text-right font-weight-bold">
|
||||
{!! \App\Services\UserMarign::getMontlyPartnerCommissionPending($user, $date, true) !!} €*
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="text-left font-weight-semibold">{{__('Vertriebspartner Provision')}} bestätigt:</td>
|
||||
<td class="text-right font-weight-bold">
|
||||
{!! \App\Services\UserMarign::getMontlyPartnerCommissionOpen($user, $date, true) !!} €*
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
--}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@endforeach
|
||||
|
||||
<script>
|
||||
$( document ).ready(function() {
|
||||
|
||||
$('#filter_year').on('change', function(){
|
||||
$('#form_filter_year').submit();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
|
@ -1,7 +1,6 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
@ -14,6 +13,47 @@ use Illuminate\Support\Facades\Route;
|
|||
|
|
||||
*/
|
||||
|
||||
Route::middleware('auth:api')->get('/user', function (Request $request) {
|
||||
return $request->user();
|
||||
//Route::post('login', 'API\UserController@login');
|
||||
//Route::post('register', 'API\UserController@register');
|
||||
|
||||
|
||||
|
||||
//Route::post('login', 'Api\APIController@login');
|
||||
|
||||
|
||||
//Route::get('/payment/status', 'Api\PayoneController@paymentStatus')->name('api.payment_status');
|
||||
//Route::post('/payment/status', 'Api\PayoneController@paymentStatus')->name('api.payment_status');
|
||||
//Route::post('login', 'Api\AuthController@login');
|
||||
|
||||
|
||||
|
||||
Route::group([
|
||||
'prefix' => 'auth'
|
||||
], function () {
|
||||
Route::post('login', 'Api\AuthController@login');
|
||||
//Route::post('signup', 'Api\AuthController@signup');
|
||||
|
||||
Route::group([
|
||||
'middleware' => 'auth:api'
|
||||
], function() {
|
||||
Route::post('logout', 'Api\AuthController@logout');
|
||||
Route::post('checked', 'Api\AuthController@checked');
|
||||
});
|
||||
});
|
||||
|
||||
Route::group([
|
||||
'prefix' => 'wp'
|
||||
], function () {
|
||||
Route::group([
|
||||
'middleware' => 'auth:api'
|
||||
], function() {
|
||||
Route::post('show', 'Api\ShoppingUserController@show');
|
||||
Route::post('store', 'Api\ShoppingUserController@store');
|
||||
Route::post('update', 'Api\ShoppingUserController@update');
|
||||
Route::post('order', 'Api\ShoppingUserController@order');
|
||||
Route::post('status', 'Api\ShoppingUserController@status');
|
||||
Route::post('delete', 'Api\ShoppingUserController@delete');
|
||||
Route::post('cancel', 'Api\ShoppingUserController@cancel');
|
||||
Route::post('open', 'Api\ShoppingUserController@open');
|
||||
});
|
||||
});
|
||||
|
|
@ -181,10 +181,15 @@ Route::group(['middleware' => ['auth:user']], function() {
|
|||
|
||||
|
||||
Route::get('/user/payment/paycredit', 'User\PaymentController@paycredit')->name('user_payment_paycredit');
|
||||
//Route::post('/user/payment/paycredit', 'User\PaymentController@index')->name('user_payment_paycredit');
|
||||
Route::get('/user/payment/paycredit/datatable', 'User\PaymentController@paycredit_datatable')->name('user_payment_paycredit_datatable');
|
||||
|
||||
Route::get('/user/payment/credit', 'User\PaymentController@credit')->name('user_payment_credit');
|
||||
//Route::post('/user/payment/paycredit', 'User\PaymentController@index')->name('user_payment_paycredit');
|
||||
Route::get('/user/payment/credit/datatable', 'User\PaymentController@credit_datatable')->name('user_payment_credit_datatable');
|
||||
|
||||
Route::get('/user/payment/revenue', 'User\PaymentController@revenue')->name('user_payment_revenue');
|
||||
Route::post('/user/payment/revenue', 'User\PaymentController@revenue')->name('user_payment_revenue');
|
||||
|
||||
//Route::get('/user/payment/credit/datatable', 'User\PaymentController@credit_datatable')->name('user_payment_credit_datatable');
|
||||
|
||||
Route::get('/user/checkout/{identifier?}', 'User\CheckoutController@checkout')->name('user_checkout');
|
||||
Route::post('/user/checkout_store/{identifier?}', 'User\CheckoutController@store')->name('user_checkout_store');
|
||||
|
|
|
|||
51
storage/oauth-private.key
Normal file
51
storage/oauth-private.key
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
-----BEGIN RSA PRIVATE KEY-----
|
||||
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
|
||||
-----END RSA PRIVATE KEY-----
|
||||
14
storage/oauth-public.key
Normal file
14
storage/oauth-public.key
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
-----BEGIN PUBLIC KEY-----
|
||||
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnz56fXNAkVpe47wSxxWT
|
||||
SOmUynQ4J+uzBfv1CMVcilRFKVxOzLLZBQ8Z6QgyTBS1sp0X9awwJOYeEBzXcQhI
|
||||
B6NnvWYisiSjMivpHuycpWfsZywOMj0He7NHFmmt8QuxKVb+njXXRUNExkw45VBi
|
||||
BM0mPHYmSYoIDB7zr+z2zFdCiZwkihb1Qk7LkIfeAAhnqPwFM2QMM4+oLugFS+0r
|
||||
6DGNx+4o4MzJV+7RVvMWC658tDKTpWeb+Xm8c7JvGedLmh1HGZj9rLbEhQ0s5dBH
|
||||
VHroFRcpdt2aIrS3gxtQgeAXYkBipXvyDSILaE+bIaXVkIG1YPnQfb//55xrG1Ic
|
||||
c0+YafPldMlPhn1brzJHQkcNjVHmC4uLIsc9U4o88WRl2z4J3lW8zp81T9jxUDN4
|
||||
W9jm6AkNpqxheldEcYT+j2NzVgc2H889Ylq6QrMh+ucbL7RiH9s1qeD1WEkM+g2v
|
||||
rqtId+I4c299NcjE3sRLuLWgqS1vdS3x6S9qGOhEXDQB22ENeeB+JLqXvdVvxWg5
|
||||
k3F3HFLa+vYf0tRWDpYG3nx7N5hBuJR1mk04ehe6pPDMDCUSTewlOSBRFiBV23GA
|
||||
z9btwRMn6oF6DzFnkdmjeaS4OKkroDr2YaC9rvPWdna6s4PO+79L2Akb/BXI0+Bh
|
||||
vIaQVzHSLbW8v0KfSTY5JiMCAwEAAQ==
|
||||
-----END PUBLIC KEY-----
|
||||
Loading…
Add table
Add a link
Reference in a new issue