Example #1
0
 private function getPurchaseOrderLineIds($purchaseOrders)
 {
     $lineIds = [];
     foreach ($purchaseOrders as $purchaseOrder) {
         $purchaseOrderLineIds = PurchaseOrderLineManager::getDtosIdsArray($purchaseOrder->getPurchaseOrderLinesDtos());
         $lineIds = array_merge($lineIds, $purchaseOrderLineIds);
     }
     return $lineIds;
 }
Example #2
0
 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);
 }
Example #3
0
 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);
     }
 }
Example #4
0
 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);
 }
Example #6
0
 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);
 }
Example #7
0
 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;
 }
Example #8
0
 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);
 }