/** * saveOrder * * @param unknown $sender * @param unknown $param * * @throws Exception * */ public function saveOrder($sender, $param) { $results = $errors = array(); try { Dao::beginTransaction(); if (!($purchaseOrder = PurchaseOrder::get(trim($param->CallbackParameter->id))) instanceof PurchaseOrder) { throw new Exception('Invalid Purchase Order passed in!'); } if (!($supplier = Supplier::get(trim($param->CallbackParameter->supplierId))) instanceof Supplier) { throw new Exception('Invalid Supplier passed in!'); } $isSubmit = isset($param->CallbackParameter->isSubmit) && intval($param->CallbackParameter->isSubmit) === 1 ? true : false; $supplierRefNum = trim($param->CallbackParameter->supplierRefNum); $supplierContactName = trim($param->CallbackParameter->contactName); $supplierContactNo = trim($param->CallbackParameter->contactNo); $shippingCost = trim($param->CallbackParameter->shippingCost); $handlingCost = trim($param->CallbackParameter->handlingCost); $comment = trim($param->CallbackParameter->comments); $status = trim($param->CallbackParameter->status); $purchaseOrderTotalAmount = trim($param->CallbackParameter->totalAmount); $purchaseOrderTotalPaid = trim($param->CallbackParameter->totalPaid); $purchaseOrder->setTotalAmount($purchaseOrderTotalAmount)->setTotalPaid($purchaseOrderTotalPaid)->setSupplierRefNo($supplierRefNum)->setSupplierContact($supplierContactName)->setSupplierContactNumber($supplierContactNo)->setshippingCost($shippingCost)->sethandlingCost($handlingCost)->setStatus($status)->save(); $purchaseOrder->addComment($comment, Comments::TYPE_PURCHASING); foreach ($param->CallbackParameter->items as $item) { $productUnitPrice = trim($item->unitPrice); $qtyOrdered = trim($item->qtyOrdered); $productTotalPrice = trim($item->totalPrice); if (!($product = Product::get(trim($item->productId))) instanceof Product) { throw new Exception('Invalid Product passed in!'); } if (!isset($item->id) || trim($item->id) === '') { $poItem = null; $purchaseOrder->addItem($product, $productUnitPrice, $qtyOrdered, '', '', $productTotalPrice, $poItem); } else { if (($poItem = PurchaseOrderItem::get($item->id)) instanceof PurchaseOrderItem) { $poItem->setProduct($product)->setUnitPrice($productUnitPrice)->setTotalPrice($productTotalPrice)->setQty($qtyOrdered); } } $poItem->setActive(intval($item->active) === 1)->save(); } $results['item'] = $purchaseOrder->getJson(); if ($isSubmit === true) { $pdfFile = EntityToPDF::getPDF($purchaseOrder); $confirmEmail = trim($param->CallbackParameter->contactEmail); $asset = Asset::registerAsset($purchaseOrder->getPurchaseOrderNo() . '.pdf', file_get_contents($pdfFile), Asset::TYPE_TMP); EmailSender::addEmail('*****@*****.**', $confirmEmail, 'BudgetPC Purchase Order:' . $purchaseOrder->getPurchaseOrderNo(), 'Please Find the attached PurchaseOrder(' . $purchaseOrder->getPurchaseOrderNo() . ') from BudgetPC.', array($asset)); EmailSender::addEmail('*****@*****.**', '*****@*****.**', 'BudgetPC Purchase Order:' . $purchaseOrder->getPurchaseOrderNo(), 'Please Find the attached PurchaseOrder(' . $purchaseOrder->getPurchaseOrderNo() . ') from BudgetPC.', array($asset)); $purchaseOrder->addComment('An email sent to "' . $confirmEmail . '" with the attachment: ' . $asset->getAssetId(), Comments::TYPE_SYSTEM); } Dao::commitTransaction(); } catch (Exception $ex) { Dao::rollbackTransaction(); $errors[] = $ex->getMessage(); } $param->ResponseData = StringUtilsAbstract::getJson($results, $errors); }
public function preSave() { $this->setProduct($this->getProductQtyLog()->getproduct())->setLastPurchaseTime($this->getProductQtyLog()->getCreated()); switch ($this->getProductQtyLog()->getEntityName()) { case 'ReceivingItem': if (($receivingItem = ReceivingItem::get($this->getProductQtyLog()->getEntityId())) instanceof ReceivingItem) { $this->setReceivingItem($receivingItem); } break; case 'PurchaseOrderItem': if (($purchaseOrderItem = PurchaseOrderItem::get($this->getProductQtyLog()->getEntityId())) instanceof PurchaseOrderItem) { $this->setPurchaseOrderItem($purchaseOrderItem); } break; case 'OrderItem': if (($orderItem = OrderItem::get($this->getProductQtyLog()->getEntityId())) instanceof OrderItem) { $this->setOrderItem($orderItem); } break; case 'CreditNoteItem': if (($creditNoteItem = CreditNoteItem::get($this->getProductQtyLog()->getEntityId())) instanceof CreditNoteItem) { $this->setCreditNoteItem($creditNoteItem); } break; } }