diff --git a/app/Filters/PaymentFilters.php b/app/Filters/PaymentFilters.php index 4b9c80269056..e69b0c4a7d8f 100644 --- a/app/Filters/PaymentFilters.php +++ b/app/Filters/PaymentFilters.php @@ -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; diff --git a/app/Http/Controllers/ClientPortal/PaymentController.php b/app/Http/Controllers/ClientPortal/PaymentController.php index 28142ce5565d..2f2779ad9887 100644 --- a/app/Http/Controllers/ClientPortal/PaymentController.php +++ b/app/Http/Controllers/ClientPortal/PaymentController.php @@ -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 ''.ctrans('texts.view').''; })->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); } diff --git a/app/Models/Payment.php b/app/Models/Payment.php index 577493869e83..8369530506c9 100644 --- a/app/Models/Payment.php +++ b/app/Models/Payment.php @@ -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 '

'.ctrans('texts.payment_status_1').'

'; break; - + case self::STATUS_VOIDED: + return '

'.ctrans('texts.payment_status_2').'

'; + break; + case self::STATUS_FAILED: + return '

'.ctrans('texts.payment_status_3').'

'; + break; + case self::STATUS_COMPLETED: + return '

'.ctrans('texts.payment_status_4').'

'; + break; + case self::STATUS_PARTIALLY_REFUNDED: + return '

'.ctrans('texts.payment_status_5').'

'; + break; + case self::STATUS_REFUNDED: + return '

'.ctrans('texts.payment_status_6').'

'; + break; default: # code... break; diff --git a/database/factories/PaymentFactory.php b/database/factories/PaymentFactory.php index 8cceae8779cc..d42007047be2 100644 --- a/database/factories/PaymentFactory.php +++ b/database/factories/PaymentFactory.php @@ -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 ]; }); diff --git a/database/seeds/RandomDataSeeder.php b/database/seeds/RandomDataSeeder.php index 2b751688c4f7..e7814791e079 100644 --- a/database/seeds/RandomDataSeeder.php +++ b/database/seeds/RandomDataSeeder.php @@ -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(); diff --git a/resources/views/portal/default/invoices/index.blade.php b/resources/views/portal/default/invoices/index.blade.php index 6499e14b9378..3778a5cbe96c 100644 --- a/resources/views/portal/default/invoices/index.blade.php +++ b/resources/views/portal/default/invoices/index.blade.php @@ -117,12 +117,12 @@ $(function() { columns: [ {data: 'checkbox', name: 'checkbox', title: '', 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}, ] }); diff --git a/resources/views/portal/default/payments/index.blade.php b/resources/views/portal/default/payments/index.blade.php index 9553efcc7e1b..129dff936214 100644 --- a/resources/views/portal/default/payments/index.blade.php +++ b/resources/views/portal/default/payments/index.blade.php @@ -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} ] });