Working on Payment list for client portal

This commit is contained in:
David Bomba 2019-08-19 16:50:33 +10:00
parent c2441bdef0
commit a40fb82971
7 changed files with 62 additions and 25 deletions

View File

@ -13,6 +13,7 @@ namespace App\Filters;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\Log;
/**
* PaymentFilters
@ -30,7 +31,8 @@ class PaymentFilters extends QueryFilters
*
*/
public function filter(string $filter = '') : Builder
{
{Log::error('ewwo');
Log::error($filter);
if(strlen($filter) == 0)
return $this->builder;

View File

@ -39,19 +39,19 @@ class PaymentController extends Controller
*/
public function index(PaymentFilters $filters, Builder $builder)
{
$payments = Payment::filter($filters);
//$payments = Payment::filter($filters);
$payments = Payment::all();
if (request()->ajax()) {
return DataTables::of($payments)->addColumn('action', function ($payment) {
return '<a href="/client/payments/'. $payment->hashed_id .'/edit" class="btn btn-xs btn-primary"><i class="glyphicon glyphicon-edit"></i>'.ctrans('texts.view').'</a>';
})->editColumn('payment_type_id', function ($payment) {
return Payment::typeForKey($payment->payment_type_id);
return $payment->type->name;
})
->editColumn('status_id', function ($payment){
return Payment::badgeForStatus($invoice->status);
return Payment::badgeForStatus($payment->status_id);
})
->rawColumns(['action', 'status_id'])
->rawColumns(['action', 'status_id','payment_type_id'])
->make(true);
}

View File

@ -11,6 +11,7 @@
namespace App\Models;
use App\Models\BaseModel;
use App\Models\Filterable;
use App\Utils\Traits\MakesHash;
use Illuminate\Database\Eloquent\Model;
@ -27,6 +28,21 @@ class Payment extends BaseModel
const STATUS_PARTIALLY_REFUNDED = 5;
const STATUS_REFUNDED = 6;
const TYPE_CREDIT_CARD = 1;
const TYPE_BANK_TRANSFER = 2;
const TYPE_PAYPAL = 3;
const TYPE_BITCOIN = 4;
const TYPE_DWOLLA = 5;
const TYPE_CUSTOM1 = 6;
const TYPE_ALIPAY = 7;
const TYPE_SOFORT = 8;
const TYPE_SEPA = 9;
const TYPE_GOCARDLESS = 10;
const TYPE_APPLE_PAY = 11;
const TYPE_CUSTOM2 = 12;
const TYPE_CUSTOM3 = 13;
const TYPE_TOKEN = 'token';
protected $fillable = [
'client_id',
'payment_type_id',
@ -65,18 +81,32 @@ class Payment extends BaseModel
return $this->morphMany(CompanyLedger::class, 'company_ledgerable');
}
public static function typeForId(int $payment_type_id)
public function type()
{
return $this->hasOne(PaymentType::class,'id','payment_type_id');
}
public static function badgeForStatus(int $status)
{
switch ($status) {
case 'value':
# code...
case self::STATUS_PENDING:
return '<h4><span class="badge badge-light">'.ctrans('texts.payment_status_1').'</span></h4>';
break;
case self::STATUS_VOIDED:
return '<h4><span class="badge badge-light">'.ctrans('texts.payment_status_2').'</span></h4>';
break;
case self::STATUS_FAILED:
return '<h4><span class="badge badge-light">'.ctrans('texts.payment_status_3').'</span></h4>';
break;
case self::STATUS_COMPLETED:
return '<h4><span class="badge badge-light">'.ctrans('texts.payment_status_4').'</span></h4>';
break;
case self::STATUS_PARTIALLY_REFUNDED:
return '<h4><span class="badge badge-light">'.ctrans('texts.payment_status_5').'</span></h4>';
break;
case self::STATUS_REFUNDED:
return '<h4><span class="badge badge-light">'.ctrans('texts.payment_status_6').'</span></h4>';
break;
default:
# code...
break;

View File

@ -2,6 +2,7 @@
use App\DataMapper\ClientSettings;
use App\DataMapper\CompanySettings;
use App\Models\Payment;
use Faker\Generator as Faker;
$factory->define(App\Models\Payment::class, function (Faker $faker) {
@ -10,6 +11,8 @@ $factory->define(App\Models\Payment::class, function (Faker $faker) {
'amount' => $faker->numberBetween(1,10),
'payment_date' => $faker->date(),
'transaction_reference' => $faker->text(10),
'payment_type_id' => Payment::TYPE_CREDIT_CARD,
'status_id' => Payment::STATUS_COMPLETED
];
});

View File

@ -101,6 +101,8 @@ class RandomDataSeeder extends Seeder
/** Recurring Invoice Factory */
factory(\App\Models\RecurringInvoice::class,20)->create(['user_id' => $user->id, 'company_id' => $company->id, 'client_id' => $client->id]);
factory(\App\Models\Payment::class,20)->create(['user_id' => $user->id, 'company_id' => $company->id, 'client_id' => $client->id]);
$clients = Client::all();

View File

@ -117,12 +117,12 @@ $(function() {
columns: [
{data: 'checkbox', name: 'checkbox', title: '<input type="checkbox" class="select_all">', searchable: false, orderable: false},
{data: 'invoice_number', name: 'invoice_number', title: '{{trans('texts.invoice_number')}}', visible: true},
{data: 'invoice_date', name: 'invoice_date', title: '{{trans('texts.invoice_date')}}', visible: true},
{data: 'amount', name: 'amount', title: '{{trans('texts.total')}}', visible: true},
{data: 'balance', name: 'balance', title: '{{trans('texts.balance')}}', visible: true},
{data: 'due_date', name: 'due_date', title: '{{trans('texts.due_date')}}', visible: true},
{data: 'status_id', name: 'status_id', title: '{{trans('texts.status')}}', visible: true},
{data: 'invoice_number', name: 'invoice_number', title: '{{ctrans('texts.invoice_number')}}', visible: true},
{data: 'invoice_date', name: 'invoice_date', title: '{{ctrans('texts.invoice_date')}}', visible: true},
{data: 'amount', name: 'amount', title: '{{ctrans('texts.total')}}', visible: true},
{data: 'balance', name: 'balance', title: '{{ctrans('texts.balance')}}', visible: true},
{data: 'due_date', name: 'due_date', title: '{{ctrans('texts.due_date')}}', visible: true},
{data: 'status_id', name: 'status_id', title: '{{ctrans('texts.status')}}', visible: true},
{data: 'action', name: 'action', title: '', searchable: false, orderable: false},
]
});

View File

@ -54,7 +54,7 @@ $(function() {
zeroRecords: "{{ trans('texts.no_records_found') }}"
},
ajax: {
url: '{!! route('client.recurring_invoices.index') !!}',
url: '{!! route('client.payments.index') !!}',
data: function(data) {
}
@ -62,16 +62,16 @@ $(function() {
drawCallback: function(settings){
data = this.api().ajax.json().data;
console.log(data);
},
columns: [
{data: 'payment_date', name: 'payment_date', title: '{{trans('texts.payment_date')}}', visible: true},
{data: 'payment_type_id', name: 'payment_type_id', title: '{{trans('texts.payment_type_id')}}', visible: true},
{data: 'amount', name: 'amount', title: '{{trans('texts.amount')}}', visible: true},
{data: 'status_id', name: 'status_id', title: '{{trans('texts.status')}}', visible: true},
{data: 'transaction_reference', name: 'transaction_reference', title: '{{trans('texts.transaction_reference')}}', visible: true},
{data: 'action', name: 'action', title: '', searchable: false, orderable: false},
{data: 'payment_date', name: 'payment_date', title: '{{ctrans('texts.payment_date')}}', visible: true},
{data: 'payment_type_id', name: 'payment_type_id', title: '{{ctrans('texts.payment_type_id')}}', visible: true},
{data: 'amount', name: 'amount', title: '{{ctrans('texts.amount')}}', visible: true},
{data: 'transaction_reference', name: 'transaction_reference', title: '{{ctrans('texts.transaction_reference')}}', visible: true},
{data: 'status_id', name: 'status_id', title: '{{ctrans('texts.status')}}', visible: true},
{data: 'action', name: 'action', title: '', searchable: false, orderable: false}
]
});