Fixes for factories (#3192)

This commit is contained in:
David Bomba 2020-01-03 20:34:10 +11:00 committed by GitHub
parent ad2e65aef5
commit b92a6a78c3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 130 additions and 6 deletions

View File

@ -0,0 +1,53 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2019. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Factory;
use App\Models\Credit;
class CreditFactory
{
public static function create(int $company_id, int $user_id) :Credit
{
$credit = new Credit();
$credit->status_id = Credit::STATUS_DRAFT;
$credit->number = null;
$credit->discount = 0;
$credit->is_amount_discount = true;
$credit->po_number = '';
$credit->footer = '';
$credit->terms = '';
$credit->public_notes = '';
$credit->private_notes = '';
$credit->date = null;
$credit->due_date = null;
$credit->partial_due_date = null;
$credit->is_deleted = false;
$credit->line_items = json_encode([]);
$credit->backup = json_encode([]);
$credit->tax_name1 = '';
$credit->tax_rate1 = 0;
$credit->tax_name2 = '';
$credit->tax_rate2 = 0;
$credit->custom_value1 = 0;
$credit->custom_value2 = 0;
$credit->custom_value3 = 0;
$credit->custom_value4 = 0;
$credit->amount = 0;
$credit->balance = 0;
$credit->partial = 0;
$credit->user_id = $user_id;
$credit->company_id = $company_id;
$credit->recurring_id = null;
return $credit;
}
}

View File

@ -68,7 +68,7 @@ class InvoiceItemFactory
$item->custom_value3 = $faker->realText(10);
$item->custom_value4 = $faker->realText(10);
$item->tax_name1 = 'GST';
$item->tax_rate1 = '10.00';
$item->tax_rate1 = 10.00;
$data[] = $item;
}

View File

@ -0,0 +1,49 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2019. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Repositories;
use App\Models\Credit;
use Illuminate\Http\Request;
/**
* CreditRepository
*/
class CreditRepository extends BaseRepository
{
public function __construct()
{
}
/**
* Gets the class name.
*
* @return string The class name.
*/
public function getClassName()
{
return Credit::class;
}
/**
* Saves the client and its contacts
*
* @param array $data The data
* @param \App\Models\Company $client The Company
*
* @return Credit|\App\Models\Credit|null Credit Object
*/
public function save(array $data, Credit $credit) : ?Credit
{
}
}

View File

@ -13,11 +13,12 @@ namespace App\Repositories;
use App\Events\Payment\PaymentWasCreated;
use App\Jobs\Company\UpdateCompanyLedgerWithPayment;
use App\Jobs\Invoice\UpdateInvoicePayment;
use App\Jobs\Invoice\ApplyInvoicePayment;
use App\Jobs\Invoice\ApplyClientPayment;
use App\Jobs\Invoice\ApplyInvoicePayment;
use App\Jobs\Invoice\UpdateInvoicePayment;
use App\Models\Invoice;
use App\Models\Payment;
use App\Repositories\CreditRepository;
use Illuminate\Http\Request;
/**
@ -25,6 +26,15 @@ use Illuminate\Http\Request;
*/
class PaymentRepository extends BaseRepository
{
protected $credit_repo;
public function __construct(CreditRepository $credit_repo)
{
$this->credit_repo = $credit_repo;
}
public function getClassName()
{
return Payment::class;
@ -46,7 +56,8 @@ class PaymentRepository extends BaseRepository
$payment->status_id = Payment::STATUS_COMPLETED;
$payment->save();
if ($request->has('invoices')) {
if ($request->input('invoices')) {
\Log::error('invoices found');
$invoices = Invoice::whereIn('id', array_column($request->input('invoices'), 'id'))->company()->get();
$payment->invoices()->saveMany($invoices);
@ -104,10 +115,21 @@ class PaymentRepository extends BaseRepository
if($request->has('invoices')){
foreach($request->input('invoices') as $adjusted_invoice) {
$invoice = Invoice::whereId($adjusted_invoice['id'])->company()->first();
$invoice_total_adjustment += $adjusted_invoice['amount'];
if(!array_key_exists('credit', $adjusted_invoice)){
if(array_key_exists('credits', $adjusted_invoice)){
//process and insert credit notes
foreach($adjusted_invoice['credits'] as $credit){
$credit = $this->credit_repo->save($credit, );
}
}
else {
//todo - generate Credit Note for $amount on $invoice - the assumption here is that it is a FULL refund
}