public function testFabricQuantity() { $orderItem = new OrderItem(); $orderItem->setFabricQuantity(2.25); $this->assertEquals(225, $orderItem->getQuantity()); $this->assertEquals(2.25, $orderItem->getFabricQuantity()); }
private function createOrder($status, $stockLevel) { $repository = $this->em->getRepository('ElmetSiteBundle:CurtainColour'); $curtainColour = $repository->findOneById('1'); $curtainColour->setAvailableStock($stockLevel); $curtainColour->setInStock(1); $order = new Order(); $order->setOrderStatus($status); $orderItems = $order->getOrderItems(); $orderItem = new OrderItem(); $orderItem->setColour($curtainColour->getName()); $orderItem->setDescription("Geneva Ready-made (Jacquard) Curtains"); $orderItem->setItemFilepath($curtainColour->getThumbnailFilepath()); $orderItem->setName("Ready-made Curtains (pair)"); $orderItem->setPrice(100.25); $orderItem->setCurtainColour($curtainColour); $orderItem->setProductType("Curtain"); $orderItem->setQuantity(1); $orderItem->setSize("52\" x 90\""); $orderItem->setSubtotal(100.25); $orderItem->setProductCategoryId($curtainColour->getId()); $orderItem->setOrder($order); $orderItems->add($orderItem); $orderItem = new OrderItem(); $orderItem->setColour($curtainColour->getName()); $orderItem->setDescription("Fabric Only"); $orderItem->setItemFilepath("/img/products/" . $curtainColour->getThumbnailFilepath()); $orderItem->setName("Geneva"); $orderItem->setPrice("5.0"); $orderItem->setCurtainColour($curtainColour); $orderItem->setProductType("Fabric"); $orderItem->setFabricQuantity(2.0); $orderItem->setSize("140"); $orderItem->setSubtotal(10.0); $orderItem->setOrder($order); $orderItem->setProductCategoryId($curtainColour->getId()); $orderItems->add($orderItem); $order->updateOrderTotal(); $this->em->merge($curtainColour); $this->em->persist($order); $this->em->flush(); return $order; }
public function addAction($urlName, $colour) { $repository = $this->getDoctrine()->getRepository('ElmetSiteBundle:CurtainColour'); $curtainColour = $repository->findOneByNameJoinedToDesignByUrlName($colour, $urlName); $curtainDesign = $curtainColour->getCurtainDesign(); $curtainPriceBand = $curtainDesign->getCurtainPriceBand(); $curtainFabrics = $curtainPriceBand->getCurtainFabrics(); $cushionCovers = $curtainPriceBand->getCushionCovers(); $curtainPelmets = $curtainPriceBand->getCurtainPelmets(); $curtainTieBacks = $curtainPriceBand->getCurtainTieBacks(); $em = $this->getDoctrine()->getEntityManager(); $query = $em->createQuery('SELECT cp FROM ElmetSiteBundle:CurtainPrice cp JOIN cp.curtain_price_band cpd WHERE cpd.id = :id ORDER BY cp.width ASC, cp.height asc'); $query->setParameter('id', $curtainPriceBand->getId()); $curtainPrices = $query->getResult(); $order = $this->getOrder(); $orderItems = $order->getOrderItems(); $discount = 1 - $curtainColour->getDiscountPercentage() / 100; //add curtains first $homeWindowIndex = 0; $caravanWindowIndex = 0; $caravanDoorIndex = 0; foreach ($curtainPrices as $curtainPrice) { $eyeletQuantity = 0; $quantity = 0; if ($curtainPrice->getType() == 'HomeWindow') { $quantity = $this->getRequest()->get('home_tape_curtain_' . $homeWindowIndex); $eyeletQuantity = $this->getRequest()->get('home_eyelet_curtain_' . $homeWindowIndex); } else { if ($curtainPrice->getType() == 'CaravanWindow') { $quantity = $this->getRequest()->get('caravan_window_curtain_' . $caravanWindowIndex); } else { if ($curtainPrice->getType() == 'CaravanDoor') { $quantity = $this->getRequest()->get('caravan_door_curtain_' . $caravanDoorIndex); } } } if ($quantity != 0) { $orderItem = new OrderItem(); $orderItem->setColour($curtainColour->getName()); if ($curtainPrice->getType() == 'CaravanDoor') { $orderItem->setDescription("Ready-made Curtains"); } else { $orderItem->setDescription("Ready-made Curtains (pair)"); } $orderItem->setItemFilepath("/img/products/" . $curtainColour->getThumbnailFilepath()); $orderItem->setName($curtainDesign->getName()); if ($curtainColour->getOnOffer() == 0) { $price = $curtainPrice->getPrice(); } else { $price = number_format(round($curtainPrice->getPrice() * $discount, 2), 2); } $orderItem->setPrice($price); $orderItem->setCurtainColour($curtainColour); $orderItem->setProductType("Curtain"); $orderItem->setQuantity($quantity); $orderItem->setSize($curtainPrice->getSize()); $orderItem->setSubtotal($quantity * $price); $orderItem->setOrder($order); $orderItem->setProductCategoryId($curtainColour->getId()); $orderItems->add($orderItem); } if ($eyeletQuantity != 0) { $price = $curtainPrice->getPrice() + $curtainPrice->getCurtainEyeletPriceBand()->getPrice(); if ($curtainColour->getOnOffer() == 1) { $price = number_format(round($price * $discount, 2), 2); } $orderItem = new OrderItem(); $orderItem->setColour($curtainColour->getName()); $orderItem->setDescription("Ready-made Curtains (pair)"); $orderItem->setItemFilepath("/img/products/" . $curtainColour->getThumbnailFilepath()); $orderItem->setName($curtainDesign->getName() . " with Eyelets"); $orderItem->setPrice($price); $orderItem->setCurtainColour($curtainColour); $orderItem->setProductType("Curtain"); $orderItem->setQuantity($eyeletQuantity); $orderItem->setSize($curtainPrice->getSize()); $orderItem->setSubtotal($eyeletQuantity * $price); $orderItem->setOrder($order); $orderItem->setProductCategoryId($curtainColour->getId()); $orderItems->add($orderItem); } if ($curtainPrice->getType() == 'HomeWindow') { $homeWindowIndex = $homeWindowIndex + 1; } else { if ($curtainPrice->getType() == 'CaravanWindow') { $caravanWindowIndex = $caravanWindowIndex + 1; } else { if ($curtainPrice->getType() == 'CaravanDoor') { $caravanDoorIndex = $caravanDoorIndex + 1; } } } } $i = 0; foreach ($curtainPelmets as $curtainPelmet) { $quantity = $this->getRequest()->get('pelmet_' . $i); if ($quantity != 0) { $orderItem = new OrderItem(); $orderItem->setColour($curtainColour->getName()); $orderItem->setDescription("Pelmet"); $orderItem->setItemFilepath("/img/products/" . $curtainColour->getThumbnailFilepath()); $orderItem->setName($curtainDesign->getName()); if ($curtainColour->getOnOffer() == 0) { $price = $curtainPelmet->getPrice(); } else { $price = number_format(round($curtainPelmet->getPrice() * $discount, 2), 2); } $orderItem->setPrice($price); $orderItem->setCurtainColour($curtainColour); $orderItem->setProductType("Pelmet"); $orderItem->setQuantity($quantity); $orderItem->setSize($curtainPelmet->getSize()); $orderItem->setSubtotal($quantity * $price); $orderItem->setOrder($order); $orderItem->setProductCategoryId($curtainColour->getId()); $orderItems->add($orderItem); } $i = $i + 1; } $i = 0; foreach ($cushionCovers as $cushionCover) { $quantity = $this->getRequest()->get('cushion_' . $i); if ($quantity != 0) { $orderItem = new OrderItem(); $orderItem->setColour($curtainColour->getName()); $orderItem->setDescription("Cushion Cover"); $orderItem->setItemFilepath("/img/products/" . $curtainColour->getThumbnailFilepath()); $orderItem->setName($curtainDesign->getName()); if ($curtainColour->getOnOffer() == 0) { $price = $cushionCover->getPrice(); } else { $price = number_format(round($cushionCover->getPrice() * $discount, 2), 2); } $orderItem->setPrice($price); $orderItem->setCurtainColour($curtainColour); $orderItem->setProductType("Cushion Cover"); $orderItem->setQuantity($quantity); $orderItem->setSize($cushionCover->getSize()); $orderItem->setSubtotal($quantity * $price); $orderItem->setOrder($order); $orderItem->setProductCategoryId($curtainColour->getId()); $orderItems->add($orderItem); } $i = $i + 1; } $curtainFabric = $curtainFabrics->first(); $quantity = $this->getRequest()->get('fabric'); if ($quantity != 0) { $orderItem = new OrderItem(); $orderItem->setColour($curtainColour->getName()); $orderItem->setDescription("Fabric Only"); $orderItem->setItemFilepath("/img/products/" . $curtainColour->getThumbnailFilepath()); $orderItem->setName($curtainDesign->getName()); if ($curtainColour->getOnOffer() == 0) { $price = $curtainFabric->getPricePerMetre(); } else { $price = number_format(round($curtainFabric->getPricePerMetre() * $discount, 2), 2); } $orderItem->setPrice($price); $orderItem->setCurtainColour($curtainColour); $orderItem->setProductType("Fabric"); $orderItem->setFabricQuantity($quantity); $orderItem->setSize($curtainDesign->getFabricWidth()); $orderItem->setSubtotal($quantity * $price); $orderItem->setOrder($order); $orderItem->setProductCategoryId($curtainColour->getId()); $orderItems->add($orderItem); } $homeTieBackIndex = 0; $caravanTieBackIndex = 0; foreach ($curtainTieBacks as $curtainTieBack) { if ($curtainTieBack->getType() == 'HomeWindow') { $quantity = $this->getRequest()->get('home_tieback_' . $homeTieBackIndex); } else { if ($curtainTieBack->getType() == 'CaravanWindow') { $quantity = $this->getRequest()->get('caravan_tieback_' . $caravanTieBackIndex); } } if ($quantity != 0) { $orderItem = new OrderItem(); $orderItem->setColour($curtainColour->getName()); $orderItem->setDescription("Tieback (pair)"); $orderItem->setItemFilepath("/img/products/" . $curtainColour->getThumbnailFilepath()); $orderItem->setName($curtainDesign->getName()); if ($curtainColour->getOnOffer() == 0) { $price = $curtainTieBack->getPrice(); } else { $price = number_format(round($curtainTieBack->getPrice() * $discount, 2), 2); } $orderItem->setPrice($price); $orderItem->setCurtainColour($curtainColour); $orderItem->setProductType("Tieback"); $orderItem->setQuantity($quantity); $orderItem->setSize($curtainTieBack->getSize()); $orderItem->setSubtotal($quantity * $price); $orderItem->setOrder($order); $orderItem->setProductCategoryId($curtainColour->getId()); $orderItems->add($orderItem); } if ($curtainTieBack->getType() == 'HomeWindow') { $homeTieBackIndex = $homeTieBackIndex + 1; } else { if ($curtainTieBack->getType() == 'CaravanWindow') { $caravanTieBackIndex = $caravanTieBackIndex + 1; } } } $order->updateOrderTotal(); return $this->viewAction(); }