Transaction logs

This commit is contained in:
David Bomba 2022-03-10 13:27:31 +11:00
parent b1887f8fa8
commit 7cd6327649
2 changed files with 42 additions and 17 deletions

View File

@ -50,19 +50,19 @@ class TransactionLog implements ShouldQueue
private $event_transformer; private $event_transformer;
private array $transformer_array = [ private array $transformer_array = [
TransactionEvent::INVOICE_MARK_PAID => MarkPaidTransaction::class, TransactionEvent::INVOICE_MARK_PAID => MarkPaidTransaction::class, //
TransactionEvent::INVOICE_UPDATED => InvoiceUpdatedTransaction::class, TransactionEvent::INVOICE_UPDATED => InvoiceUpdatedTransaction::class, //
TransactionEvent::INVOICE_DELETED => InvoiceDeletedTransaction::class, TransactionEvent::INVOICE_DELETED => InvoiceDeletedTransaction::class, //
TransactionEvent::INVOICE_PAYMENT_APPLIED => InvoicePaymentTransaction::class, TransactionEvent::INVOICE_PAYMENT_APPLIED => InvoicePaymentTransaction::class,
TransactionEvent::INVOICE_CANCELLED => InvoiceCancelledTransaction::class, TransactionEvent::INVOICE_CANCELLED => InvoiceCancelledTransaction::class,
TransactionEvent::INVOICE_REVERSED => InvoiceReversalTransaction::class, TransactionEvent::INVOICE_REVERSED => InvoiceReversalTransaction::class, //
TransactionEvent::INVOICE_FEE_APPLIED => InvoiceFeeAppliedTransaction::class, TransactionEvent::INVOICE_FEE_APPLIED => InvoiceFeeAppliedTransaction::class, //
TransactionEvent::PAYMENT_MADE => PaymentMadeTransaction::class, TransactionEvent::PAYMENT_MADE => PaymentMadeTransaction::class,
TransactionEvent::GATEWAY_PAYMENT_MADE => GatewayPaymentMadeTransaction::class, TransactionEvent::GATEWAY_PAYMENT_MADE => GatewayPaymentMadeTransaction::class,
TransactionEvent::PAYMENT_APPLIED => PaymentAppliedTransaction::class, TransactionEvent::PAYMENT_APPLIED => PaymentAppliedTransaction::class,
TransactionEvent::PAYMENT_REFUND => PaymentRefundedTransaction::class, TransactionEvent::PAYMENT_REFUND => PaymentRefundedTransaction::class,
TransactionEvent::PAYMENT_FAILED => PaymentFailedTransaction::class, TransactionEvent::PAYMENT_FAILED => PaymentFailedTransaction::class,
TransactionEvent::PAYMENT_DELETED => PaymentDeletedTransaction::class, TransactionEvent::PAYMENT_DELETED => PaymentDeletedTransaction::class, //
TransactionEvent::CLIENT_STATUS => ClientStatusTransaction::class, TransactionEvent::CLIENT_STATUS => ClientStatusTransaction::class,
]; ];

View File

@ -53,7 +53,7 @@ class RefundPayment
public function run() public function run()
{ {
return $this->calculateTotalRefund() //sets amount for the refund (needed if we are refunding multiple invoices in one payment) $this->payment = $this->calculateTotalRefund() //sets amount for the refund (needed if we are refunding multiple invoices in one payment)
->setStatus() //sets status of payment ->setStatus() //sets status of payment
//->reversePayment() //->reversePayment()
//->buildCreditNote() //generate the credit note //->buildCreditNote() //generate the credit note
@ -64,7 +64,6 @@ class RefundPayment
->processGatewayRefund() //process the gateway refund if needed ->processGatewayRefund() //process the gateway refund if needed
->save(); ->save();
$transaction = [ $transaction = [
'invoice' => [], 'invoice' => [],
'payment' => $this->payment->transaction_event(), 'payment' => $this->payment->transaction_event(),
@ -74,6 +73,8 @@ class RefundPayment
]; ];
TransactionLog::dispatch(TransactionEvent::PAYMENT_REFUND, $transaction, $this->payment->company->db); TransactionLog::dispatch(TransactionEvent::PAYMENT_REFUND, $transaction, $this->payment->company->db);
return $this->payment;
} }
/** /**
@ -269,27 +270,51 @@ class RefundPayment
$adjustment_amount += $refunded_invoice['amount']; $adjustment_amount += $refunded_invoice['amount'];
$client->balance += $refunded_invoice['amount']; $client->balance += $refunded_invoice['amount'];
//$client->paid_to_date -= $refunded_invoice['amount'];//todo refund balancing
$client->save(); $client->save();
//todo adjust ledger balance here? or after and reference the credit and its total
$transaction = [
'invoice' => $invoice->transaction_event(),
'payment' => [],
'client' => $client->transaction_event(),
'credit' => [],
'metadata' => [],
];
TransactionLog::dispatch(TransactionEvent::PAYMENT_REFUND, $transaction, $invoice->company->db);
} }
// $ledger_string = "Refund for Invoice {$invoice->number} for amount " . $refunded_invoice['amount']; //todo
// $this->credit_note->ledger()->updateCreditBalance($adjustment_amount, $ledger_string);
$client = $this->payment->client->fresh(); $client = $this->payment->client->fresh();
$client->service()->updatePaidToDate(-1 * $refunded_invoice['amount'])->save(); $client->service()->updatePaidToDate(-1 * $refunded_invoice['amount'])->save();
$transaction = [
'invoice' => [],
'payment' => [],
'client' => $client->transaction_event(),
'credit' => [],
'metadata' => [],
];
TransactionLog::dispatch(TransactionEvent::PAYMENT_REFUND, $transaction, $client->company->db);
} }
else{ else{
//if we are refunding and no payments have been tagged, then we need to decrement the client->paid_to_date by the total refund amount. //if we are refunding and no payments have been tagged, then we need to decrement the client->paid_to_date by the total refund amount.
$client = $this->payment->client->fresh(); $client = $this->payment->client->fresh();
$client->service()->updatePaidToDate(-1 * $this->total_refund)->save(); $client->service()->updatePaidToDate(-1 * $this->total_refund)->save();
$transaction = [
'invoice' => [],
'payment' => [],
'client' => $client->transaction_event(),
'credit' => [],
'metadata' => [],
];
TransactionLog::dispatch(TransactionEvent::PAYMENT_REFUND, $transaction, $client->company->db);
} }
return $this; return $this;