Пример #1
0
 /**
  * @param InvoiceEvent $event
  */
 public function onInvoiceCancelled(InvoiceEvent $event)
 {
     $invoice = $event->getInvoice();
     /** @var PaymentRepository $paymentRepository */
     $paymentRepository = $this->manager->getRepository('CSBillPaymentBundle:Payment');
     $invoice->setBalance($invoice->getTotal());
     $this->manager->persist($invoice);
     $totalPaid = $paymentRepository->getTotalPaidForInvoice($invoice);
     if ($totalPaid->isPositive()) {
         $paymentRepository->updatePaymentStatus($invoice->getPayments(), Status::STATUS_CREDIT);
         /** @var CreditRepository $creditRepository */
         $creditRepository = $this->manager->getRepository('CSBillClientBundle:Credit');
         $creditRepository->addCredit($invoice->getClient(), $totalPaid);
     }
     $this->manager->flush();
 }
Пример #2
0
 /**
  * @param InvoiceEvent $event
  */
 public function onInvoicePaid(InvoiceEvent $event)
 {
     $invoice = $event->getInvoice();
     /** @var PaymentRepository $paymentRepository */
     $paymentRepository = $this->manager->getRepository('CSBillPaymentBundle:Payment');
     $invoice->setBalance(new Money(0, $this->currency));
     $this->manager->persist($invoice);
     $totalPaid = $paymentRepository->getTotalPaidForInvoice($invoice);
     if ($totalPaid->greaterThan($invoice->getTotal())) {
         $client = $invoice->getClient();
         /** @var CreditRepository $creditRepository */
         $creditRepository = $this->manager->getRepository('CSBillClientBundle:Credit');
         $creditRepository->addCredit($client, $totalPaid->subtract($invoice->getTotal()));
     }
     $this->manager->flush();
 }
Пример #3
0
 /**
  * @param InvoiceEvent $event
  */
 public function onInvoiceAccepted(InvoiceEvent $event)
 {
     $this->mailer->sendInvoice($event->getInvoice());
 }