protected function setOrderDetails($wcOrder, $order, $timezone, $em) { foreach ($wcOrder['line_items'] as $lineItem) { $product = $em->getRepository('MeVisaERPBundle:Products')->findOneBy(array('wcId' => $lineItem['product_id'])); if (!$product) { $product = new Products(); $product->setEnabled(true); $product->setName($lineItem['name']); $product->setWcId($lineItem['product_id']); $product->setRequiredDocuments(array()); $productPrice = new ProductPrices(); $productPrice->setCost(0); $productPrice->setPrice($lineItem['price'] * 100); $product->addPricing($productPrice); $em->persist($product); } $orderProduct = new OrderProducts(); $orderProduct->setProduct($product); $orderProduct->setQuantity($lineItem['quantity']); $orderProduct->setUnitPrice($lineItem['price'] * 100); $orderProduct->setTotal($lineItem['total'] * 100); $order->addOrderProduct($orderProduct); $order->setPeople($lineItem['meta'][0]['value']); $order->setDeparture(\DateTime::createFromFormat("d/m/Y", $lineItem['meta'][4]['value'], $timezone)); $order->setArrival(\DateTime::createFromFormat("d/m/Y", $lineItem['meta'][5]['value']), $timezone); //FIXME: check available docs first $docs = explode(',', $lineItem['meta'][6]['value']); foreach ($docs as $doc) { $document = new \MeVisa\ERPBundle\Entity\OrderDocuments(); $document->setName($doc); // http://www.mevisa.ru/wp-content/uploads/product_files/confirmed/3975-915-img_9996.jpg $document->setPath('http://www.mevisa.ru/wp-content/uploads/product_files/confirmed/' . $wcOrder['order_number'] . '-' . $lineItem['product_id'] . '-' . $doc); $order->addOrderDocument($document); } } $orderPayment = new OrderPayments(); // method_id method_title $orderPayment->setMethod($wcOrder['payment_details']['method_id']); $orderPayment->setAmount($wcOrder['total'] * 100); $orderPayment->setCreatedAt(new \DateTime($wcOrder['created_at'], $timezone)); if ("true" == $wcOrder['payment_details']['paid']) { $orderPayment->setState("paid"); } else { $orderPayment->setState("not_paid"); } $order->addOrderPayment($orderPayment); if ("" != $wcOrder['note']) { $orderComment = new OrderComments(); $orderComment->setComment($wcOrder['note'] . "-- Customer: " . $order->getCustomer()->getName()); $orderComment->setCreatedAt(new \DateTime($wcOrder['created_at'], $timezone)); $order->addOrderComment($orderComment); } $order->setNumber($wcOrder['order_number']); $order->setWcId($wcOrder['order_number']); //FIXME: Dynamic channel $order->setChannel("MeVisa.ru"); $order->setAdjustmentTotal($wcOrder['total_discount'] * 100); $order->setProductsTotal($wcOrder['subtotal'] * 100); $order->setTotal($wcOrder['total'] * 100); $order->setState($wcOrder['status']); $order->setCreatedAt(new \DateTime($wcOrder['created_at'], $timezone)); }
protected function setOrderDetails($wcOrder, $order, $timezone, $em) { $order->setWcId($wcOrder['order_number']); $order->setNumber($wcOrder['order_number']); $order->setCreatedAt(new \DateTime($wcOrder['created_at'], $timezone)); switch ($wcOrder['status']) { case "cancelled": case "failed": $state = "cancelled"; break; case "refunded": $state = "refunded"; break; case "pending": case "processing": case "on-hold": case "completed": default: $state = "backoffice"; break; } $order->setState($state); $order->setTotal($wcOrder['total'] * 100); $order->setProductsTotal($wcOrder['subtotal'] * 100); $order->setPeople(0); foreach ($wcOrder['line_items'] as $lineItem) { $product = $em->getRepository('MeVisaERPBundle:Products')->findOneBy(array('wcId' => $lineItem['product_id'])); if (!$product) { $product = new Products(); $product->setEnabled(true); $product->setName($lineItem['name']); $product->setWcId($lineItem['product_id']); $product->setRequiredDocuments(array()); $productPrice = new ProductPrices(); $productPrice->setCost(0); $productPrice->setPrice($lineItem['price'] * 100); $product->addPricing($productPrice); $em->persist($product); } //TODO: 1) Check product cost structure //TODO: 2) Recalculate cost $productPrice = $product->getPricing()->last(); $orderProduct = new OrderProducts(); $orderProduct->setProduct($product); $orderProduct->setQuantity($lineItem['quantity']); $orderProduct->setUnitPrice($lineItem['price'] * 100); $orderProduct->setUnitCost($productPrice->getCost()); $orderProduct->setVendor($product->getVendor()); $orderProduct->setTotal($lineItem['total'] * 100); $order->addOrderProduct($orderProduct); foreach ($lineItem['meta'] as $key => $meta) { switch ($meta['key']) { case 'Кол-во человек': $order->setPeople($order->getPeople() + $meta['value']); break; case 'Дата вылета': $arrival = \DateTime::createFromFormat("d/m/Y", $meta['value'], $timezone); $order->setArrival($arrival); break; case 'Дата возврата': $departure = \DateTime::createFromFormat("d/m/Y", $meta['value'], $timezone); $order->setDeparture($departure); break; case 'Прикрепите копию паспорта и фото (для всех туристов)': $docs = explode(',', $meta['value']); foreach ($docs as $doc) { $document = new \MeVisa\ERPBundle\Entity\OrderDocuments(); $document->setName($doc); // http://www.mevisa.ru/wp-content/uploads/product_files/confirmed/3975-915-img_9996.jpg $document->setPath('http://www.mevisa.ru/wp-content/uploads/product_files/confirmed/' . $wcOrder['order_number'] . '-' . $lineItem['product_id'] . '-' . $doc); $order->addOrderDocument($document); } break; default: break; } } } $order->setAdjustmentTotal($wcOrder['total_discount'] * 100); $orderPayment = new OrderPayments(); // method_id method_title $orderPayment->setMethod($wcOrder['payment_details']['method_id']); $orderPayment->setAmount($wcOrder['total'] * 100); $orderPayment->setCreatedAt(new \DateTime($wcOrder['created_at'], $timezone)); if ("true" == $wcOrder['payment_details']['paid']) { $orderPayment->setState("paid"); } else { $orderPayment->setState("not_paid"); } $order->addOrderPayment($orderPayment); if ("" != $wcOrder['note']) { $orderComment = new OrderComments(); $orderComment->setComment($wcOrder['note'] . "-- Customer: " . $order->getCustomer()->getName()); $orderComment->setCreatedAt(new \DateTime($wcOrder['created_at'], $timezone)); $order->addOrderComment($orderComment); } //FIXME: Dynamic channel $order->setChannel("MeVisa.ru"); $order->setTicketRequired(false); }