working on paid_to_date fields and calculations

This commit is contained in:
David Bomba 2021-01-24 17:44:14 +11:00
parent a274fdc353
commit 24dfbe48dc
33 changed files with 179 additions and 50 deletions

View File

@ -44,6 +44,7 @@ class InvoiceFactory
$invoice->custom_value4 = 0; $invoice->custom_value4 = 0;
$invoice->amount = 0; $invoice->amount = 0;
$invoice->balance = 0; $invoice->balance = 0;
$invoice->paid_to_date = 0;
$invoice->partial = 0; $invoice->partial = 0;
$invoice->user_id = $user_id; $invoice->user_id = $user_id;
$invoice->company_id = $company_id; $invoice->company_id = $company_id;

View File

@ -50,6 +50,7 @@ class InvoiceToRecurringInvoiceFactory
$recurring_invoice->last_sent_date = null; $recurring_invoice->last_sent_date = null;
$recurring_invoice->next_send_date = null; $recurring_invoice->next_send_date = null;
$recurring_invoice->remaining_cycles = 0; $recurring_invoice->remaining_cycles = 0;
$recurring_invoice->paid_to_date = 0;
return $recurring_invoice; return $recurring_invoice;
} }

View File

@ -45,6 +45,7 @@ class QuoteFactory
$quote->partial = 0; $quote->partial = 0;
$quote->user_id = $user_id; $quote->user_id = $user_id;
$quote->company_id = $company_id; $quote->company_id = $company_id;
$quote->paid_to_date = 0;
return $quote; return $quote;
} }

View File

@ -49,6 +49,7 @@ class RecurringInvoiceFactory
$invoice->last_sent_date = null; $invoice->last_sent_date = null;
$invoice->next_send_date = null; $invoice->next_send_date = null;
$invoice->remaining_cycles = 0; $invoice->remaining_cycles = 0;
$invoice->paid_to_date = 0;
return $invoice; return $invoice;
} }

View File

@ -50,6 +50,7 @@ class RecurringInvoiceToInvoiceFactory
$invoice->recurring_id = $recurring_invoice->id; $invoice->recurring_id = $recurring_invoice->id;
$invoice->client_id = $client->id; $invoice->client_id = $client->id;
$invoice->auto_bill_enabled = $recurring_invoice->auto_bill_enabled; $invoice->auto_bill_enabled = $recurring_invoice->auto_bill_enabled;
$invoice->paid_to_date = 0;
return $invoice; return $invoice;
} }

View File

@ -30,6 +30,7 @@
* @OA\Property(property="line_items", type="object", example="", description="_________"), * @OA\Property(property="line_items", type="object", example="", description="_________"),
* @OA\Property(property="amount", type="number", format="float", example="10.00", description="_________"), * @OA\Property(property="amount", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="balance", type="number", format="float", example="10.00", description="_________"), * @OA\Property(property="balance", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="paid_to_date", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="discount", type="number", format="float", example="10.00", description="_________"), * @OA\Property(property="discount", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="partial", type="number", format="float", example="10.00", description="_________"), * @OA\Property(property="partial", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="is_amount_discount", type="boolean", example=true, description="_________"), * @OA\Property(property="is_amount_discount", type="boolean", example=true, description="_________"),

View File

@ -29,6 +29,7 @@
* @OA\Property(property="line_items", type="object", example="", description="_________"), * @OA\Property(property="line_items", type="object", example="", description="_________"),
* @OA\Property(property="amount", type="number", format="float", example="10.00", description="_________"), * @OA\Property(property="amount", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="balance", type="number", format="float", example="10.00", description="_________"), * @OA\Property(property="balance", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="paid_to_date", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="discount", type="number", format="float", example="10.00", description="_________"), * @OA\Property(property="discount", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="partial", type="number", format="float", example="10.00", description="_________"), * @OA\Property(property="partial", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="is_amount_discount", type="boolean", example=true, description="_________"), * @OA\Property(property="is_amount_discount", type="boolean", example=true, description="_________"),

View File

@ -29,6 +29,7 @@
* @OA\Property(property="line_items", type="object", example="", description="_________"), * @OA\Property(property="line_items", type="object", example="", description="_________"),
* @OA\Property(property="amount", type="number", format="float", example="10.00", description="_________"), * @OA\Property(property="amount", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="balance", type="number", format="float", example="10.00", description="_________"), * @OA\Property(property="balance", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="paid_to_date", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="discount", type="number", format="float", example="10.00", description="_________"), * @OA\Property(property="discount", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="partial", type="number", format="float", example="10.00", description="_________"), * @OA\Property(property="partial", type="number", format="float", example="10.00", description="_________"),
* @OA\Property(property="is_amount_discount", type="boolean", example=true, description="_________"), * @OA\Property(property="is_amount_discount", type="boolean", example=true, description="_________"),

View File

@ -435,11 +435,6 @@ class PaymentController extends BaseController
*/ */
public function destroy(DestroyPaymentRequest $request, Payment $payment) public function destroy(DestroyPaymentRequest $request, Payment $payment)
{ {
// $payment->service()->deletePayment();
// $payment->is_deleted = true;
// $payment->save();
// $payment->delete();
$this->payment_repo->delete($payment); $this->payment_repo->delete($payment);

View File

@ -57,17 +57,31 @@ class ApplyCreditPayment implements ShouldQueue
if ($cred->id == $this->credit->id) { if ($cred->id == $this->credit->id) {
$cred->pivot->amount = $this->amount; $cred->pivot->amount = $this->amount;
$cred->pivot->save(); $cred->pivot->save();
$cred->paid_to_date += $this->amount;
$cred->save();
} }
}); });
$credit_balance = $this->credit->balance; $credit_balance = $this->credit->balance;
if ($this->amount == $credit_balance) { //total credit applied. if ($this->amount == $credit_balance) { //total credit applied.
$this->credit->setStatus(Credit::STATUS_APPLIED);
$this->credit->updateBalance($this->amount * -1); $this->credit
->service()
->setStatus(Credit::STATUS_APPLIED)
->updateBalance($this->amount * -1)
->updatePaidToDate($this->amount)
->save();
} elseif ($this->amount < $credit_balance) { //compare number appropriately } elseif ($this->amount < $credit_balance) { //compare number appropriately
$this->credit->setStatus(Credit::STATUS_PARTIAL);
$this->credit->updateBalance($this->amount * -1); $this->credit
->service()
->setStatus(Credit::STATUS_PARTIAL)
->updateBalance($this->amount * -1)
->updatePaidToDate($this->amount)
->save();
} }
/* Update Payment Applied Amount*/ /* Update Payment Applied Amount*/

View File

@ -896,14 +896,6 @@ class Import implements ShouldQueue
], ],
]; ];
//depending on the status, we do a final action.
//s$payment = $this->updatePaymentForStatus($payment, $modified['status_id']);
// if($modified['is_deleted'])
// $payment->service()->deletePayment();
// if(isset($modified['deleted_at']))
// $payment->delete();
} }
Payment::reguard(); Payment::reguard();

View File

@ -49,6 +49,6 @@ class CreditArchivedActivity implements ShouldQueue
$fields->company_id = $event->credit->company_id; $fields->company_id = $event->credit->company_id;
$fields->activity_type_id = Activity::ARCHIVE_CREDIT; $fields->activity_type_id = Activity::ARCHIVE_CREDIT;
$this->activity_repo->save($fields, $$event->credit, $event->event_vars); $this->activity_repo->save($fields, $event->credit, $event->event_vars);
} }
} }

View File

@ -261,4 +261,5 @@ class Credit extends BaseModel
} }
}); });
} }
} }

View File

@ -117,6 +117,10 @@ class PaymentMigrationRepository extends BaseRepository
$inv->pivot->amount = $invoice_totals; $inv->pivot->amount = $invoice_totals;
$inv->pivot->refunded = $refund_totals; $inv->pivot->refunded = $refund_totals;
$inv->pivot->save(); $inv->pivot->save();
$inv->paid_to_date += $invoice_totals;
$inv->save();
}); });
} }
@ -130,6 +134,9 @@ class PaymentMigrationRepository extends BaseRepository
$payment->credits->each(function ($cre) use ($credit_totals) { $payment->credits->each(function ($cre) use ($credit_totals) {
$cre->pivot->amount = $credit_totals; $cre->pivot->amount = $credit_totals;
$cre->pivot->save(); $cre->pivot->save();
$cre->paid_to_date += $invoice_totals;
$cre->save();
}); });
} }

View File

@ -118,8 +118,6 @@ class PaymentRepository extends BaseRepository
if (array_key_exists('invoices', $data) && is_array($data['invoices']) && count($data['invoices']) > 0) { if (array_key_exists('invoices', $data) && is_array($data['invoices']) && count($data['invoices']) > 0) {
$invoice_totals = array_sum(array_column($data['invoices'], 'amount')); $invoice_totals = array_sum(array_column($data['invoices'], 'amount'));
nlog("invoice totals = {$invoice_totals}");
$invoices = Invoice::whereIn('id', array_column($data['invoices'], 'invoice_id'))->get(); $invoices = Invoice::whereIn('id', array_column($data['invoices'], 'invoice_id'))->get();
$payment->invoices()->saveMany($invoices); $payment->invoices()->saveMany($invoices);

View File

@ -209,7 +209,7 @@ class PaymentMethod
$payment_urls = []; $payment_urls = [];
} }
$payment_urls[] = [ $this->payment_urls[] = [
'label' => ctrans('texts.apply_credit'), 'label' => ctrans('texts.apply_credit'),
'company_gateway_id' => CompanyGateway::GATEWAY_CREDIT, 'company_gateway_id' => CompanyGateway::GATEWAY_CREDIT,
'gateway_type_id' => GatewayType::CREDIT, 'gateway_type_id' => GatewayType::CREDIT,
@ -238,6 +238,5 @@ class PaymentMethod
return true; return true;
} }
}
}

View File

@ -70,6 +70,7 @@ class ApplyPayment
} }
$this->credit->balance -= $this->amount_applied; $this->credit->balance -= $this->amount_applied;
$this->credit->paid_to_date += $this->amount_applied;
if ((int)$this->credit->balance == 0) { if ((int)$this->credit->balance == 0) {
$this->credit->status_id = Credit::STATUS_APPLIED; $this->credit->status_id = Credit::STATUS_APPLIED;
@ -110,6 +111,8 @@ class ApplyPayment
$this->payment->currency_id = $this->credit->client->getSetting('currency_id'); $this->payment->currency_id = $this->credit->client->getSetting('currency_id');
$this->payment->save(); $this->payment->save();
$this->payment->service()->applyNumber()->save();
$this->payment $this->payment
->invoices() ->invoices()
->attach($this->invoice->id, ['amount' => $this->amount_applied]); ->attach($this->invoice->id, ['amount' => $this->amount_applied]);

View File

@ -97,6 +97,12 @@ class CreditService
return $this; return $this;
} }
public function updatePaidToDate($adjustment)
{
$this->credit->paid_to_date += $adjustment;
return $this;
}
public function fillDefaults() public function fillDefaults()
{ {

View File

@ -104,14 +104,24 @@ class ApplyPayment extends AbstractService
->ledger() ->ledger()
->updatePaymentBalance($amount_paid); ->updatePaymentBalance($amount_paid);
$this->invoice->client->service()->updateBalance($amount_paid)->save(); $this->invoice
->client
->service()
->updateBalance($amount_paid)
->save();
/* Update Pivot Record amount */ /* Update Pivot Record amount */
$this->payment->invoices->each(function ($inv) use($amount_paid){ $this->payment->invoices->each(function ($inv) use($amount_paid){
if ($inv->id == $this->invoice->id) { if ($inv->id == $this->invoice->id) {
$inv->pivot->amount = ($amount_paid*-1); $inv->pivot->amount = ($amount_paid*-1);
$inv->pivot->save(); $inv->pivot->save();
$inv->paid_to_date += floatval($amount_paid*-1);
$inv->save();
} }
}); });
$this->invoice->service()->applyNumber()->save(); $this->invoice->service()->applyNumber()->save();

View File

@ -59,9 +59,6 @@ class AutoBillInvoice extends AbstractService
$this->applyCreditPayment(); $this->applyCreditPayment();
} }
// info("partial = {$this->invoice->partial}");
// info("balance = {$this->invoice->balance}");
/* Determine $amount */ /* Determine $amount */
if ($this->invoice->partial > 0) { if ($this->invoice->partial > 0) {
$amount = $this->invoice->partial; $amount = $this->invoice->partial;
@ -122,18 +119,24 @@ class AutoBillInvoice extends AbstractService
$payment->invoices()->attach($this->invoice->id, ['amount' => $amount]); $payment->invoices()->attach($this->invoice->id, ['amount' => $amount]);
$this->invoice->service()->setStatus(Invoice::STATUS_PAID)->save(); $this->invoice
->service()
->setStatus(Invoice::STATUS_PAID)
->save();
foreach ($this->used_credit as $credit) { foreach ($this->used_credit as $credit) {
$current_credit = Credit::find($credit['credit_id']); $current_credit = Credit::find($credit['credit_id']);
$payment->credits()->attach($current_credit->id, ['amount' => $credit['amount']]); $payment->credits()
->attach($current_credit->id, ['amount' => $credit['amount']]);
info("adjusting credit balance {$current_credit->balance} by this amount ". $credit['amount']); info("adjusting credit balance {$current_credit->balance} by this amount ". $credit['amount']);
$current_credit->balance -= $credit['amount']; $current_credit->service()
->updateBalance($credit['amount']*-1)
->updatePaidToDate($credit['amount'])
->setCalculatedStatus()
->save();
$current_credit->service()->setCalculatedStatus()->save();
// $this->applyPaymentToCredit($current_credit, $credit['amount']);
} }
$payment->ledger() $payment->ledger()
@ -153,7 +156,10 @@ class AutoBillInvoice extends AbstractService
event(new PaymentWasCreated($payment, $payment->company, Ninja::eventVars())); event(new PaymentWasCreated($payment, $payment->company, Ninja::eventVars()));
return $this->invoice->service()->setCalculatedStatus()->save(); return $this->invoice
->service()
->setCalculatedStatus()
->save();
} }
/** /**
@ -194,6 +200,7 @@ class AutoBillInvoice extends AbstractService
$this->used_credit[$key]['credit_id'] = $credit->id; $this->used_credit[$key]['credit_id'] = $credit->id;
$this->used_credit[$key]['amount'] = $this->invoice->partial; $this->used_credit[$key]['amount'] = $this->invoice->partial;
$this->invoice->balance -= $this->invoice->partial; $this->invoice->balance -= $this->invoice->partial;
$this->invoice->paid_to_date += $this->invoice->partial;
$this->invoice->partial = 0; $this->invoice->partial = 0;
break; break;
} else { } else {
@ -201,6 +208,7 @@ class AutoBillInvoice extends AbstractService
$this->used_credit[$key]['amount'] = $credit->balance; $this->used_credit[$key]['amount'] = $credit->balance;
$this->invoice->partial -= $credit->balance; $this->invoice->partial -= $credit->balance;
$this->invoice->balance -= $credit->balance; $this->invoice->balance -= $credit->balance;
$this->invoice->paid_to_date += $credit->balance;
} }
} else { } else {
@ -208,12 +216,15 @@ class AutoBillInvoice extends AbstractService
if ($credit->balance >= $this->invoice->balance) { if ($credit->balance >= $this->invoice->balance) {
$this->used_credit[$key]['credit_id'] = $credit->id; $this->used_credit[$key]['credit_id'] = $credit->id;
$this->used_credit[$key]['amount'] = $this->invoice->balance; $this->used_credit[$key]['amount'] = $this->invoice->balance;
$this->invoice->paid_to_date += $this->invoice->balance;
$this->invoice->balance = 0; $this->invoice->balance = 0;
break; break;
} else { } else {
$this->used_credit[$key]['credit_id'] = $credit->id; $this->used_credit[$key]['credit_id'] = $credit->id;
$this->used_credit[$key]['amount'] = $credit->balance; $this->used_credit[$key]['amount'] = $credit->balance;
$this->invoice->balance -= $credit->balance; $this->invoice->balance -= $credit->balance;
$this->invoice->paid_to_date += $credit->balance;
} }
} }
} }

View File

@ -105,6 +105,9 @@ class HandleReversal extends AbstractService
//harvest the credit record and add in the amount for the credit. //harvest the credit record and add in the amount for the credit.
$paymentable_credit->pivot->amount = $total_paid; $paymentable_credit->pivot->amount = $total_paid;
$paymentable_credit->pivot->save(); $paymentable_credit->pivot->save();
$paymentable_credit->paid_to_date += $total_paid;
$paymentable_credit->save();
} }
/* Set invoice balance to 0 */ /* Set invoice balance to 0 */

View File

@ -112,6 +112,13 @@ class InvoiceService
return $this; return $this;
} }
public function updatePaidToDate($adjustment)
{
$this->invoice->paid_to_date += $adjustment;
return $this;
}
public function createInvitations() public function createInvitations()
{ {
$this->invoice = (new CreateInvitations($this->invoice))->run(); $this->invoice = (new CreateInvitations($this->invoice))->run();

View File

@ -70,6 +70,7 @@ class MarkPaid extends AbstractService
$this->invoice->service() $this->invoice->service()
->updateBalance($payment->amount * -1) ->updateBalance($payment->amount * -1)
->updatePaidToDate($payment->amount)
->setStatus(Invoice::STATUS_PAID) ->setStatus(Invoice::STATUS_PAID)
->applyNumber() ->applyNumber()
->save(); ->save();

View File

@ -33,7 +33,7 @@ class UpdateBalance extends AbstractService
} }
$this->invoice->balance += floatval($this->balance_adjustment); $this->invoice->balance += floatval($this->balance_adjustment);
if ($this->invoice->balance == 0) { if ($this->invoice->balance == 0) {
$this->invoice->status_id = Invoice::STATUS_PAID; $this->invoice->status_id = Invoice::STATUS_PAID;
} }

View File

@ -55,7 +55,6 @@ class DeletePayment
private function cleanupPayment() private function cleanupPayment()
{ {
$this->payment->is_deleted = true; $this->payment->is_deleted = true;
// $entity->save();
$this->payment->delete(); $this->payment->delete();
return $this; return $this;
@ -78,10 +77,22 @@ class DeletePayment
private function adjustInvoices() private function adjustInvoices()
{ {
if ($this->payment->invoices()->exists()) { if ($this->payment->invoices()->exists()) {
$this->payment->invoices()->each(function ($paymentable_invoice) { $this->payment->invoices()->each(function ($paymentable_invoice) {
$paymentable_invoice->service()->updateBalance($paymentable_invoice->pivot->amount)->save();
$paymentable_invoice->ledger()->updateInvoiceBalance($paymentable_invoice->pivot->amount, "Adjusting invoice {$paymentable_invoice->number} due to deletion of Payment {$this->payment->number}")->save(); $paymentable_invoice->service()
$paymentable_invoice->client->service()->updateBalance($paymentable_invoice->pivot->amount)->save(); ->updateBalance($paymentable_invoice->pivot->amount)
->updatePaidToDate($paymentable_invoice->pivot->amount * -1)
->save();
$paymentable_invoice->ledger()
->updateInvoiceBalance($paymentable_invoice->pivot->amount, "Adjusting invoice {$paymentable_invoice->number} due to deletion of Payment {$this->payment->number}")
->save();
$paymentable_invoice->client
->service()
->updateBalance($paymentable_invoice->pivot->amount)
->save();
if ($paymentable_invoice->balance == $paymentable_invoice->amount) { if ($paymentable_invoice->balance == $paymentable_invoice->amount) {
$paymentable_invoice->service()->setStatus(Invoice::STATUS_SENT)->save(); $paymentable_invoice->service()->setStatus(Invoice::STATUS_SENT)->save();
@ -101,10 +112,12 @@ class DeletePayment
{ {
if ($this->payment->credits()->exists()) { if ($this->payment->credits()->exists()) {
$this->payment->credits()->each(function ($paymentable_credit) { $this->payment->credits()->each(function ($paymentable_credit) {
$paymentable_credit->balance += $paymentable_credit->pivot->amount;
$paymentable_credit->setStatus(Credit::STATUS_SENT); $paymentable_credit->service()
//fire event for this credit ->updateBalance($paymentable_credit->pivot->amount)
// ->updatePaidToDate($paymentable_credit->pivot->amount*-1)
->setStatus(Credit::STATUS_SENT)
->save();
}); });
} }

View File

@ -59,11 +59,16 @@ class PaymentService
$client = $this->payment->client; $client = $this->payment->client;
$invoices->each(function ($invoice) { $invoices->each(function ($invoice) {
if ($invoice->pivot->amount > 0) { if ($invoice->pivot->amount > 0) {
$invoice->status_id = Invoice::STATUS_SENT;
$invoice->balance = $invoice->pivot->amount; $invoice->service()
$invoice->save(); ->updateBalance($invoice->pivot->amount)
->updatePaidToDate($invoice->pivot->amount*-1)
->setStatus(Invoice::STATUS_SENT)
->save();
} }
}); });
$this->payment $this->payment

View File

@ -188,18 +188,26 @@ class RefundPayment
if ($available_credit > $this->total_refund) { if ($available_credit > $this->total_refund) {
$paymentable_credit->pivot->refunded += $this->total_refund; $paymentable_credit->pivot->refunded += $this->total_refund;
$paymentable_credit->pivot->save(); $paymentable_credit->pivot->save();
$paymentable_credit->balance += $this->total_refund;
$paymentable_credit->service()->setStatus(Credit::STATUS_SENT)->save(); $paymentable_credit->service()
//$paymentable_credit->save(); ->setStatus(Credit::STATUS_SENT)
->updateBalance($this->total_refund)
->updatePaidToDate($this->total_refund*-1)
->save();
$this->total_refund = 0; $this->total_refund = 0;
} else { } else {
$paymentable_credit->pivot->refunded += $available_credit; $paymentable_credit->pivot->refunded += $available_credit;
$paymentable_credit->pivot->save(); $paymentable_credit->pivot->save();
$paymentable_credit->balance += $available_credit; $paymentable_credit->balance += $available_credit;
$paymentable_credit->service()->setStatus(Credit::STATUS_SENT)->save(); $paymentable_credit->service()
// $paymentable_credit->save(); ->setStatus(Credit::STATUS_SENT)
->updateBalance($available_credit)
->updatePaidToDate($available_credit*-1)
->save();
$this->total_refund -= $available_credit; $this->total_refund -= $available_credit;
} }

View File

@ -79,6 +79,7 @@ class UpdateInvoicePayment
$invoice->service() //caution what if we amount paid was less than partial - we wipe it! $invoice->service() //caution what if we amount paid was less than partial - we wipe it!
->clearPartial() ->clearPartial()
->updateBalance($paid_amount * -1) ->updateBalance($paid_amount * -1)
->updatePaidToDate($paid_amount)
->updateStatus() ->updateStatus()
->save(); ->save();

View File

@ -136,6 +136,7 @@ class CreditTransformer extends EntityTransformer
'line_items' => $credit->line_items ?: (array) [], 'line_items' => $credit->line_items ?: (array) [],
'entity_type' => 'credit', 'entity_type' => 'credit',
'exchange_rate' => (float) $credit->exchange_rate, 'exchange_rate' => (float) $credit->exchange_rate,
'paid_to_date' => (float) $credit->paid_to_date,
]; ];
} }
} }

View File

@ -140,6 +140,8 @@ class InvoiceTransformer extends EntityTransformer
'reminder2_sent' => $invoice->reminder2_sent ?: '', 'reminder2_sent' => $invoice->reminder2_sent ?: '',
'reminder3_sent' => $invoice->reminder3_sent ?: '', 'reminder3_sent' => $invoice->reminder3_sent ?: '',
'reminder_last_sent' => $invoice->reminder_last_sent ?: '', 'reminder_last_sent' => $invoice->reminder_last_sent ?: '',
'paid_to_date' => (float) $invoice->paid_to_date,
]; ];
} }
} }

View File

@ -137,6 +137,7 @@ class QuoteTransformer extends EntityTransformer
'line_items' => $quote->line_items ?: (array) [], 'line_items' => $quote->line_items ?: (array) [],
'entity_type' => 'quote', 'entity_type' => 'quote',
'exchange_rate' => (float) $quote->exchange_rate, 'exchange_rate' => (float) $quote->exchange_rate,
'paid_to_date' => (float) $quote->paid_to_date,
'project_id' => $this->encodePrimaryKey($quote->project_id), 'project_id' => $this->encodePrimaryKey($quote->project_id),
]; ];
} }

View File

@ -138,6 +138,7 @@ class RecurringInvoiceTransformer extends EntityTransformer
'auto_bill' => (string) $invoice->auto_bill, 'auto_bill' => (string) $invoice->auto_bill,
'auto_bill_enabled' => (bool) $invoice->auto_bill_enabled, 'auto_bill_enabled' => (bool) $invoice->auto_bill_enabled,
'due_date_days' => (string) $invoice->due_date_days ?: '', 'due_date_days' => (string) $invoice->due_date_days ?: '',
'paid_to_date' => (float) $invoice->paid_to_date,
]; ];
} }
} }

View File

@ -0,0 +1,42 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddPaidToDateColumn extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('invoices', function (Blueprint $table) {
$table->decimal('paid_to_date', 20, 6)->default(0);
});
Schema::table('quotes', function (Blueprint $table) {
$table->decimal('paid_to_date', 20, 6)->default(0);
});
Schema::table('credits', function (Blueprint $table) {
$table->decimal('paid_to_date', 20, 6)->default(0);
});
Schema::table('recurring_invoices', function (Blueprint $table) {
$table->decimal('paid_to_date', 20, 6)->default(0);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
}
}