protected function processPayment($row) { if ($row) { $manager = $this->getContainer()->get('doctrine.orm.entity_manager'); // $accountRepo = $manager->getRepository('TSK\PaymentBundle\Entity\Account'); // $account = $accountRepo->findOneBy(array('name' => 'Inc Fm Students', 'organization' => $this->org)); $paymentTypeRepo = $manager->getRepository('TSK\\PaymentBundle\\Entity\\PaymentType'); $paymentMethodRepo = $manager->getRepository('TSK\\PaymentBundle\\Entity\\PaymentMethod'); // $incomeTypeRepo = $manager->getRepository('TSK\PaymentBundle\Entity\IncomeType'); // $incomeType = $incomeTypeRepo->findOneBy(array('name' => 'TUITION', 'organization' => $this->org)); $paymentRepo = $manager->getRepository('TSK\\PaymentBundle\\Entity\\Payment'); $oldPayment = $paymentRepo->findOneBy(array('legacyPaymentId' => $row[1])); $isCash = true; if (!$oldPayment) { switch ($row[4]) { case 'VISA': $row[4] = 'VISA'; break; case 'MC': $row[4] = 'MASTERCARD'; break; case 'SCHOOL CREDIT': case 'CREDIT': $row[4] = 'CREDIT'; $isCash = false; break; case 'AMEX': $row[4] = 'AMERICAN EXPRESS'; break; case 'CHECK': $row[4] = 'CHECK'; break; case 'DISCOVER': $row[4] = 'DISCOVER'; break; case 'CASH': $row[4] = 'CASH'; break; } $payment = new Payment(); $payment->setLegacyPaymentId($row[1]); $payment->setSchool($this->school); $payment->setPaymentType($paymentTypeRepo->findOneBy(array('name' => $row[3], 'organization' => $this->org))); $paymentMethod = $paymentMethodRepo->findOneBy(array('name' => $row[4], 'organization' => $this->org)); if (!$paymentMethod) { print "cannot find paymentMethod for " . $row[4]; exit; } $payment->setPaymentMethod($paymentMethod); $payment->setPaymentAmount($row[5]); $payment->setCreatedDate(new \DateTime($row[6])); $payment->setCreatedUser('mhill'); $payment->setDescription($row[7]); $payment->setRefNumber($row[8]); $payment->setIsVoided($row[9]); $payment->setIsCash($isCash); $chargeRepo = $manager->getRepository('TSK\\PaymentBundle\\Entity\\Charge'); $charge = $chargeRepo->findOneBy(array('legacyChargeId' => $row[2])); if ($charge) { $cp = new ChargePayment(); $cp->setCharge($charge); $cp->setPayment($payment); $cp->setAmount(min($charge->getAmount(), $payment->getPaymentAmount())); $manager->persist($cp); } $manager->persist($payment); $manager->flush(); } } }
/** * Saves a payment * * @Route("/", name="credit_save") * @Method("POST") * @Template("TSKPaymentBundle:Default:credit.html.twig") */ public function creditSaveAction(Request $request) { $session = $this->getRequest()->getSession(); $sessionKey = $this->container->getParameter('tsk_user.session.org_key'); $schoolKey = $this->container->getParameter('tsk_user.session.school_key'); $schoolId = $session->get($schoolKey); $em = $this->getDoctrine()->getManager(); $school = $em->getRepository('TSKSchoolBundle:School')->find($schoolId); // this is a little hokey ... searching for payment type when we could otherwise embed it. $paymentType = $em->getRepository('TSKPaymentBundle:PaymentType')->findOneBy(array('organization' => $session->get($sessionKey), 'name' => 'credit')); $payment = new ReceivePayment(); if ($paymentType) { $payment->setPaymentType($paymentType); } else { throw new HttpException(404, "Invalid payment type"); } $form = $this->createForm($this->get('tsk_payment.form.type.receivePayment'), $payment, array('is_credit' => true, 'show_date' => $this->canModifyDate())); $form->bind($request); if ($form->isValid()) { $authorizationNum = ''; if ($payment->getPaymentMethod()->getPaymentType() == 'CREDIT CARD') { // if credit card run payment through E4 $paymentGateway = $this->container->get('tsk_payment.gateway.service'); $paymentGateway->setCardHoldersName((string) $payment->getContact()); $paymentGateway->setCreditCardNumber($payment->getCreditCardNumber()); $paymentGateway->setCreditCardExpiration($payment->getCreditCardExpirationDate()); $paymentGateway->setCreditCardVerification($payment->getCvvNumber()); $paymentGateway->setCreditCardType($payment->getPaymentMethod()->getName()); try { $result = $paymentGateway->purchase($payment->getPaymentAmount()); $session->getFlashBag()->add('error', 'There was an error saving your payment!'); return $this->redirect($this->generateUrl('tsk_student_default_registerstudent')); } catch (\Exception $e) { } $obj = json_decode($result); $authorizationNum = $obj->authorization_num; } $pmt = new Payment(); $pmt->setSchool($school); $pmt->setPaymentAmount($payment->getPaymentAmount()); $pmt->setPaymentMethod($payment->getPaymentMethod()); $pmt->setPaymentType($payment->getPaymentType()); $pmt->setDescription($payment->getMemo()); $pmt->setRefNumber($payment->getRefNumber()); $paymentDate = $payment->getPaymentDate() ? $payment->getPaymentDate() : new \DateTime(); // $pmt->setCreatedDate($paymentDate); $pmt->setAuthorizationNum($authorizationNum); $em->persist($pmt); $payments = $this->get('request')->request->get('payments'); foreach ($payment->getCharges() as $charge) { if (!empty($payments[$charge->getId()])) { $cp = new ChargePayment(); $cp->setCharge($charge); $cp->setPayment($pmt); $cp->setAmount($payments[$charge->getId()]); $em->persist($cp); } } // write to journal? $em->flush(); $dispatcher = $this->get('event_dispatcher'); $paymentEvent = new PaymentEvent($pmt); try { $dispatcher->dispatch(PaymentEvents::RECEIVE, $paymentEvent); } catch (\Exception $e) { throw $e; } $session->getFlashBag()->add('success', 'Payment saved and applied!'); return $this->redirect($this->generateUrl('tsk_payment_default_index', array('contactID' => $payment->getContact()->getId()))); } else { $session->getFlashBag()->add('error', 'There was an error saving your payment!'); } return array('entity' => $payment, 'form' => $form->createView()); }