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

View File

@ -11,11 +11,12 @@
namespace App\Factory; namespace App\Factory;
use App\Models\Client;
use App\Models\Credit; use App\Models\Credit;
class CreditFactory 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 = new Credit();
$credit->status_id = Credit::STATUS_DRAFT; $credit->status_id = Credit::STATUS_DRAFT;
@ -23,9 +24,9 @@ class CreditFactory
$credit->discount = 0; $credit->discount = 0;
$credit->is_amount_discount = true; $credit->is_amount_discount = true;
$credit->po_number = ''; $credit->po_number = '';
$credit->footer = ''; $credit->footer = strlen($settings->credit_footer) > 0 ? $settings->credit_footer : '';
$credit->terms = ''; $credit->terms = strlen($settings->credit_terms) > 0 ? $settings->credit_terms : '';
$credit->public_notes = ''; $credit->public_notes = strlen($client->public_notes) > 0 ? $client->public_notes : '';
$credit->private_notes = ''; $credit->private_notes = '';
$credit->date = null; $credit->date = null;
$credit->due_date = null; $credit->due_date = null;

View File

@ -13,12 +13,13 @@ namespace App\Factory;
use App\DataMapper\ClientSettings; use App\DataMapper\ClientSettings;
use App\DataMapper\CompanySettings; use App\DataMapper\CompanySettings;
use App\Models\Client;
use App\Models\Invoice; use App\Models\Invoice;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
class InvoiceFactory 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 = new Invoice();
$invoice->status_id = Invoice::STATUS_DRAFT; $invoice->status_id = Invoice::STATUS_DRAFT;
@ -26,9 +27,9 @@ class InvoiceFactory
$invoice->discount = 0; $invoice->discount = 0;
$invoice->is_amount_discount = true; $invoice->is_amount_discount = true;
$invoice->po_number = ''; $invoice->po_number = '';
$invoice->footer = ''; $invoice->footer = strlen($settings->invoice_footer) > 0 ? $settings->invoice_footer : '';
$invoice->terms = ''; $invoice->terms = strlen($settings->invoice_terms) > 0 ? $settings->invoice_terms : '';
$invoice->public_notes = ''; $invoice->public_notes = strlen($client->public_notes) > 0 ? $client->public_notes : '';
$invoice->private_notes = ''; $invoice->private_notes = '';
$invoice->date = null; $invoice->date = null;
$invoice->due_date = null; $invoice->due_date = null;

View File

@ -13,12 +13,13 @@ namespace App\Factory;
use App\DataMapper\ClientSettings; use App\DataMapper\ClientSettings;
use App\DataMapper\CompanySettings; use App\DataMapper\CompanySettings;
use App\Models\Client;
use App\Models\Quote; use App\Models\Quote;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
class QuoteFactory 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 = new Quote();
$quote->status_id = Quote::STATUS_DRAFT; $quote->status_id = Quote::STATUS_DRAFT;
@ -26,9 +27,9 @@ class QuoteFactory
$quote->discount = 0; $quote->discount = 0;
$quote->is_amount_discount = true; $quote->is_amount_discount = true;
$quote->po_number = ''; $quote->po_number = '';
$quote->footer = ''; $quote->footer = strlen($settings->quote_footer) > 0 ? $settings->quote_footer : '';
$quote->terms = ''; $quote->terms = strlen($settings->quote_terms) > 0 ? $settings->quote_terms : '';
$quote->public_notes = ''; $quote->public_notes = strlen($client->public_notes) > 0 ? $client->public_notes : '';
$quote->private_notes = ''; $quote->private_notes = '';
$quote->date = null; $quote->date = null;
$quote->due_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\EmailInvoice;
use App\Jobs\Invoice\StoreInvoice; use App\Jobs\Invoice\StoreInvoice;
use App\Jobs\Invoice\ZipInvoices; use App\Jobs\Invoice\ZipInvoices;
use App\Models\Client;
use App\Models\Invoice; use App\Models\Invoice;
use App\Models\InvoiceInvitation; use App\Models\InvoiceInvitation;
use App\Repositories\InvoiceRepository; use App\Repositories\InvoiceRepository;
@ -203,7 +204,10 @@ class InvoiceController extends BaseController {
* *
*/ */
public function store(StoreInvoiceRequest $request) { 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 $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\AbstractService;
use App\Services\Client\ClientService; use App\Services\Client\ClientService;
use App\Services\Payment\PaymentService; use App\Services\Payment\PaymentService;
use App\Utils\Traits\GeneratesCounter;
class MarkPaid extends AbstractService class MarkPaid extends AbstractService
{ {
use GeneratesCounter;
private $client_service; private $client_service;
private $invoice; private $invoice;
@ -42,6 +45,7 @@ class MarkPaid extends AbstractService
$payment = PaymentFactory::create($this->invoice->company_id, $this->invoice->user_id); $payment = PaymentFactory::create($this->invoice->company_id, $this->invoice->user_id);
$payment->amount = $this->invoice->balance; $payment->amount = $this->invoice->balance;
$payment->number = $this->getNextPaymentNumber($payment->client);
$payment->status_id = Payment::STATUS_COMPLETED; $payment->status_id = Payment::STATUS_COMPLETED;
$payment->client_id = $this->invoice->client_id; $payment->client_id = $this->invoice->client_id;
$payment->transaction_reference = ctrans('texts.manual_entry'); $payment->transaction_reference = ctrans('texts.manual_entry');