Fixes for payment numbers (#3384)

This commit is contained in:
David Bomba 2020-02-26 21:06:08 +11:00 committed by GitHub
parent cb9e4b26e5
commit 0b2435af2a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 28 additions and 13 deletions

View File

@ -115,6 +115,8 @@ class CompanySettings extends BaseSettings {
public $invoice_design_id = '1';
public $quote_design_id = '1';
public $invoice_footer = '';
public $credit_footer = '';
public $credit_terms = '';
public $invoice_labels = '';
public $tax_name1 = '';
public $tax_rate1 = 0;
@ -336,6 +338,8 @@ class CompanySettings extends BaseSettings {
'invoice_footer' => 'string',
'invoice_labels' => 'string',
'invoice_terms' => 'string',
'credit_footer' => 'string',
'credit_terms' => 'string',
'name' => 'string',
'payment_terms' => 'integer',
'payment_type_id' => 'string',

View File

@ -11,11 +11,12 @@
namespace App\Factory;
use App\Models\Client;
use App\Models\Credit;
class CreditFactory
{
public static function create(int $company_id, int $user_id) :Credit
public static function create(int $company_id, int $user_id, object $settings, Client $client) :Credit
{
$credit = new Credit();
$credit->status_id = Credit::STATUS_DRAFT;
@ -23,9 +24,9 @@ class CreditFactory
$credit->discount = 0;
$credit->is_amount_discount = true;
$credit->po_number = '';
$credit->footer = '';
$credit->terms = '';
$credit->public_notes = '';
$credit->footer = strlen($settings->credit_footer) > 0 ? $settings->credit_footer : '';
$credit->terms = strlen($settings->credit_terms) > 0 ? $settings->credit_terms : '';
$credit->public_notes = strlen($client->public_notes) > 0 ? $client->public_notes : '';
$credit->private_notes = '';
$credit->date = null;
$credit->due_date = null;

View File

@ -13,12 +13,13 @@ namespace App\Factory;
use App\DataMapper\ClientSettings;
use App\DataMapper\CompanySettings;
use App\Models\Client;
use App\Models\Invoice;
use Illuminate\Support\Facades\Log;
class InvoiceFactory
{
public static function create(int $company_id, int $user_id) :Invoice
public static function create(int $company_id, int $user_id, object $settings, Client $client) :Invoice
{
$invoice = new Invoice();
$invoice->status_id = Invoice::STATUS_DRAFT;
@ -26,9 +27,9 @@ class InvoiceFactory
$invoice->discount = 0;
$invoice->is_amount_discount = true;
$invoice->po_number = '';
$invoice->footer = '';
$invoice->terms = '';
$invoice->public_notes = '';
$invoice->footer = strlen($settings->invoice_footer) > 0 ? $settings->invoice_footer : '';
$invoice->terms = strlen($settings->invoice_terms) > 0 ? $settings->invoice_terms : '';
$invoice->public_notes = strlen($client->public_notes) > 0 ? $client->public_notes : '';
$invoice->private_notes = '';
$invoice->date = null;
$invoice->due_date = null;

View File

@ -13,12 +13,13 @@ namespace App\Factory;
use App\DataMapper\ClientSettings;
use App\DataMapper\CompanySettings;
use App\Models\Client;
use App\Models\Quote;
use Illuminate\Support\Facades\Log;
class QuoteFactory
{
public static function create(int $company_id, int $user_id) :Quote
public static function create(int $company_id, int $user_id, object $settings, Client $client) :Quote
{
$quote = new Quote();
$quote->status_id = Quote::STATUS_DRAFT;
@ -26,9 +27,9 @@ class QuoteFactory
$quote->discount = 0;
$quote->is_amount_discount = true;
$quote->po_number = '';
$quote->footer = '';
$quote->terms = '';
$quote->public_notes = '';
$quote->footer = strlen($settings->quote_footer) > 0 ? $settings->quote_footer : '';
$quote->terms = strlen($settings->quote_terms) > 0 ? $settings->quote_terms : '';
$quote->public_notes = strlen($client->public_notes) > 0 ? $client->public_notes : '';
$quote->private_notes = '';
$quote->date = null;
$quote->due_date = null;

View File

@ -29,6 +29,7 @@ use App\Jobs\Invoice\CreateInvoicePdf;
use App\Jobs\Invoice\EmailInvoice;
use App\Jobs\Invoice\StoreInvoice;
use App\Jobs\Invoice\ZipInvoices;
use App\Models\Client;
use App\Models\Invoice;
use App\Models\InvoiceInvitation;
use App\Repositories\InvoiceRepository;
@ -203,7 +204,10 @@ class InvoiceController extends BaseController {
*
*/
public function store(StoreInvoiceRequest $request) {
$invoice = $this->invoice_repo->save($request->all(), InvoiceFactory::create(auth()->user()->company()->id, auth()->user()->id));
$client = Client::find($request->input('client_id'));
$invoice = $this->invoice_repo->save($request->all(), InvoiceFactory::create(auth()->user()->company()->id, auth()->user()->id), $client->getMergedSettings(), $client);
$invoice = StoreInvoice::dispatchNow($invoice, $request->all(), $invoice->company);//todo potentially this may return mixed ie PDF/$invoice... need to revisit when we implement UI

View File

@ -18,9 +18,12 @@ use App\Models\Payment;
use App\Services\AbstractService;
use App\Services\Client\ClientService;
use App\Services\Payment\PaymentService;
use App\Utils\Traits\GeneratesCounter;
class MarkPaid extends AbstractService
{
use GeneratesCounter;
private $client_service;
private $invoice;
@ -42,6 +45,7 @@ class MarkPaid extends AbstractService
$payment = PaymentFactory::create($this->invoice->company_id, $this->invoice->user_id);
$payment->amount = $this->invoice->balance;
$payment->number = $this->getNextPaymentNumber($payment->client);
$payment->status_id = Payment::STATUS_COMPLETED;
$payment->client_id = $this->invoice->client_id;
$payment->transaction_reference = ctrans('texts.manual_entry');