private function getPurchaseOrderLineIds($purchaseOrders) { $lineIds = []; foreach ($purchaseOrders as $purchaseOrder) { $purchaseOrderLineIds = PurchaseOrderLineManager::getDtosIdsArray($purchaseOrder->getPurchaseOrderLinesDtos()); $lineIds = array_merge($lineIds, $purchaseOrderLineIds); } return $lineIds; }
public function load() { $productsQuantity = WarehouseManager::getInstance()->getAllProductsQuantity(); $products = ProductManager::getInstance()->getProductListFull([], 'name', 'ASC'); $productIds = ProductManager::getDtosIdsArray($products); $productsPurchaseOrders = PurchaseOrderLineManager::getInstance()->getProductsPurchaseOrders($productIds); $productsSaleOrders = SaleOrderLineManager::getInstance()->getProductsSaleOrders($productIds); $this->addParam('products', $products); $this->addParam('productsQuantity', $productsQuantity); $this->addParam('productsPurchaseOrder', $productsPurchaseOrders); $this->addParam('productsSaleOrder', $productsSaleOrders); }
public function load() { $this->initErrorMessages(); $this->initSuccessMessages(); $productId = NGS()->args()->id; $products = ProductManager::getInstance()->getProductListFull(['id', '=', $productId]); if (!empty($products)) { $productSaleQuantity = SaleOrderLineManager::getInstance()->getProductCountInNonCancelledSaleOrders($productId); $productPurchaseQuantity = PurchaseOrderLineManager::getInstance()->getProductCountInNonCancelledPurchaseOrders($productId); $productQuantity = $productPurchaseQuantity - $productSaleQuantity; $product = $products[0]; $this->addParam('product', $product); $this->addParam('productQuantity', $productQuantity); } }
public function deletePartnerFull($partnerId) { $saleOrderDtosMappedById = SaleOrderManager::getInstance()->selectAdvance('id', ['partner_id', '=', $partnerId], null, null, null, null, true); $purchaseOrderDtosMappedById = PurchaseOrderManager::getInstance()->selectAdvance('id', ['partner_id', '=', $partnerId], null, null, null, null, true); if (!empty($saleOrderDtosMappedById)) { $sqlSaleOrderIds = '(' . implode(',', array_keys($saleOrderDtosMappedById)) . ')'; SaleOrderLineManager::getInstance()->deleteAdvance(['sale_order_id', 'in', $sqlSaleOrderIds]); } if (!empty($purchaseOrderDtosMappedById)) { $sqlPurchaseOrderIds = '(' . implode(',', array_keys($purchaseOrderDtosMappedById)) . ')'; PurchaseOrderLineManager::getInstance()->deleteAdvance(['purchase_order_id', 'in', $sqlPurchaseOrderIds]); } SaleOrderManager::getInstance()->deleteByField('partner_id', $partnerId); PurchaseOrderManager::getInstance()->deleteByField('partner_id', $partnerId); PaymentTransactionManager::getInstance()->deleteByField('partner_id', $partnerId); PartnerManager::getInstance()->deleteByPK($partnerId); return true; }
public function service() { if (!isset(NGS()->args()->purchase_order_id)) { $_SESSION['error_message'] = 'Purchase Order ID is missing'; $this->redirect('purchase/list'); } $purchaseOrderId = intval(NGS()->args()->purchase_order_id); try { if (isset(NGS()->args()->lines)) { $jsonLinesArray = NGS()->args()->lines; $linesIdsToNotDelete = []; if (!empty($jsonLinesArray)) { foreach ($jsonLinesArray as $jsonLine) { $line = json_decode($jsonLine); if (isset($line->line_id)) { $linesIdsToNotDelete[] = $line->line_id; PurchaseOrderLineManager::getInstance()->updatePurchaseOrderLine($purchaseOrderId, $line->line_id, $line->product_id, $line->quantity, $line->unit_price, $line->currency_id); } else { $newLineId = PurchaseOrderLineManager::getInstance()->createPurchaseOrderLine($purchaseOrderId, $line->product_id, $line->quantity, $line->unit_price, $line->currency_id); $linesIdsToNotDelete[] = $newLineId; } } } PurchaseOrderLineManager::getInstance()->deleteWhereIdNotIdIds($purchaseOrderId, $linesIdsToNotDelete); } else { PurchaseOrderLineManager::getInstance()->deleteByField('purchase_order_id', $purchaseOrderId); } } catch (InsufficientProductException $exc) { $product = \crm\managers\ProductManager::getInstance()->selectByPK($exc->getProductId()); $productInfo = $product->getId(); if (isset($product)) { $productInfo = $product->getName() . " (" . $product->getId() . ")"; } $_SESSION['error_message'] = "Insufficient Product: " . $productInfo; $this->redirect('purchase/' . $purchaseOrderId); } catch (Exception $exc) { $_SESSION['error_message'] = $exc->getMessage(); $this->redirect('purchase/' . $purchaseOrderId); } $_SESSION['success_message'] = 'Purchase Order lines successfully saved.'; PurchaseOrderManager::getInstance()->updateAllDependingSaleOrderLines($purchaseOrderId); $this->redirect('purchase/warranty/' . $purchaseOrderId); }
public function load() { $this->initErrorMessages(); $this->initSuccessMessages(); $limit = 100; list($offset, $sortByFieldName, $selectedFilterSortByAscDesc) = $this->initFilters($limit); $products = ProductManager::getInstance()->getProductListFull([], $sortByFieldName, $selectedFilterSortByAscDesc, $offset, $limit); $productIds = ProductManager::getDtosIdsArray($products); $productsPurchaseOrder = PurchaseOrderLineManager::getInstance()->getProductsPurchaseOrders($productIds); $productsSaleOrder = SaleOrderLineManager::getInstance()->getProductsSaleOrders($productIds); $this->addParam('productsPurchaseOrder', $productsPurchaseOrder); $this->addParam('productsSaleOrder', $productsSaleOrder); $this->addParam('products', $products); $count = ProductManager::getInstance()->getLastSelectAdvanceRowsCount(); if (count($products) == 0 && $count > 0) { $this->redirectIncludedParamsExeptPaging(); } $pagesCount = ceil($count / $limit); $this->addParam('pagesCount', $pagesCount); }
public function calculateProductCost($productId, $productSaleQty, $saleOrderId = 0) { $date = null; if ($saleOrderId > 0) { $so = SaleOrderManager::getInstance()->selectByPK($saleOrderId); if (!$so) { throw new NgsErrorException('Sale Order does not exist! id: ' . $saleOrderId); } $date = $so->getOrderDate(); } $this->calculationProductId = $productId; $productPurchaseOrderLines = PurchaseOrderLineManager::getInstance()->getNonCancelledProductPurchaseOrders($productId, $date); $productPurchaseOrderLines = $this->mapDtosById($productPurchaseOrderLines); $productSaleOrderLines = SaleOrderLineManager::getInstance()->getNonCancelledProductSaleOrders($productId, $saleOrderId, $date); $productPurchaseOrderLines = $this->subtracPurchaseOrderLinesByProductSaleOrders($productPurchaseOrderLines, $productSaleOrderLines); $ret = $this->removePurchaseOrderLinesQuantityByProductSale($productPurchaseOrderLines, $productSaleQty, $date); return $ret; }
private function getPurchaseOrdersDatesMappedBySN($pol_searial_numbers) { $snMappedByPolIds = []; foreach ($pol_searial_numbers as $pol_searial_number) { $snMappedByPolIds[$pol_searial_number->getLineId()][] = $pol_searial_number->getSerialNumber(); } $polDtos = PurchaseOrderLineManager::getInstance()->selectByPKs(array_keys($snMappedByPolIds)); $poIdsMappedByPolId = $this->getPoIdsMappedByPolIds($polDtos); $poDtos = PurchaseOrderManager::getInstance()->getPurchaseOrdersFull($where = ['id', 'in', '(' . implode(',', array_unique(array_values($poIdsMappedByPolId))), ')']); $poDtosMappedByID = SaleOrderManager::mapDtosById($poDtos); $ret = []; foreach ($poIdsMappedByPolId as $polId => $poId) { foreach ($snMappedByPolIds[$polId] as $sn) { if (isset($poDtosMappedByID[$poId])) { $ret[$sn] = [$poDtosMappedByID[$poId]->getOrderDate(), $poDtosMappedByID[$poId]->getPartnerDto()->getName()]; } } } return $ret; }
public function delete($id) { PurchaseOrderLineManager::getInstance()->deleteByField('purchase_order_id', $id); return $this->deleteByPK($id); }