public function load() { list($startDate, $endDate) = [NGS()->args()->startDate, NGS()->args()->endDate]; $expenseSaleOrders = SaleOrderManager::getInstance()->getSaleOrdersFull(['cancelled', '=', 0, 'AND', 'is_expense', '=', 1, 'AND', 'order_date', '>=', "'" . $startDate . "'", 'AND', 'order_date', '<=', "DATE_ADD('{$endDate}' ,INTERVAL 1 DAY)"], ['order_date'], 'DESC'); $this->addParam('currencies', CurrencyManager::getInstance()->mapDtosById(CurrencyManager::getInstance()->selectAdvance('*', ['active', '=', 1]))); $this->addParam("expenseSaleOrders", $expenseSaleOrders); }
private function prepareLineChartData($startDate, $endDate) { $begin = new DateTime($startDate); $end = (new DateTime($endDate))->modify('+1 day'); $interval = DateInterval::createFromDateString('1 day'); $period = new DatePeriod($begin, $interval, $end); $ret = []; foreach ($period as $dt) { $ret[$dt->format("Y-m-d")] = [0, 0, 0]; } $profitSaleOrders = SaleOrderManager::getInstance()->getSaleOrdersFull(['cancelled', '=', 0, 'AND', 'is_expense', '=', 0, 'AND', 'order_date', '>=', "'" . $startDate . "'", 'AND', 'order_date', '<=', "DATE_ADD('{$endDate}' ,INTERVAL 1 DAY)"], ['order_date'], 'DESC'); foreach ($profitSaleOrders as $profitSaleOrder) { $oDate = new DateTime($profitSaleOrder->getOrderDate()); $sDate = $oDate->format("Y-m-d"); $ret[$sDate][0] = $profitSaleOrder->getTotalProfit(); } $expenseSaleOrders = SaleOrderManager::getInstance()->getSaleOrdersFull(['cancelled', '=', 0, 'AND', 'is_expense', '=', 1, 'AND', 'order_date', '>=', "'" . $startDate . "'", 'AND', 'order_date', '<=', "DATE_ADD('{$endDate}' ,INTERVAL 1 DAY)"], ['order_date'], 'DESC'); foreach ($expenseSaleOrders as $expenseSaleOrder) { $oDate = new DateTime($expenseSaleOrder->getOrderDate()); $sDate = $oDate->format("Y-m-d"); $ret[$sDate][1] = $expenseSaleOrder->getTotalAmountInMainCurrency(); } $expensePaymentOrders = PaymentTransactionManager::getInstance()->getPaymentListFull(['cancelled', '=', 0, 'AND', 'is_expense', '=', 1, 'AND', 'date', '>=', "'" . $startDate . "'", 'AND', 'date', '<=', "DATE_ADD('{$endDate}' ,INTERVAL 1 DAY)"], ['date'], 'DESC'); foreach ($expensePaymentOrders as $expensePaymentOrder) { $oDate = new DateTime($expensePaymentOrder->getDate()); $sDate = $oDate->format("Y-m-d"); $ret[$sDate][2] = $expensePaymentOrder->getAmount() * $expensePaymentOrder->getCurrencyRate(); } return $ret; }
public function load() { $this->initErrorMessages(); $this->initSuccessMessages(); $partnerId = intval(NGS()->args()->id); $partner = PartnerManager::getInstance()->selectbyPK($partnerId); if ($partner) { $this->addParam('currencies', CurrencyManager::getInstance()->selectAdvance('*', ['active', '=', 1], null, null, null, null, true)); $this->addParam('partner', $partner); $partnerSaleOrders = SaleOrderManager::mapDtosById(SaleOrderManager::getInstance()->getPartnerSaleOrders($partnerId)); $partnerPurchaseOrders = PurchaseOrderManager::mapDtosById(PurchaseOrderManager::getInstance()->getPartnerPurchaseOrders($partnerId)); $partnerPaymentTransactions = PaymentTransactionManager::mapDtosById(PaymentTransactionManager::getInstance()->getPartnerPaymentTransactions($partnerId)); $partnerBillingTransactions = PaymentTransactionManager::mapDtosById(PaymentTransactionManager::getInstance()->getPartnerBillingTransactions($partnerId)); $sales = $this->mapByIdAndGivenField('sale_', 'order_date', $partnerSaleOrders); $purchases = $this->mapByIdAndGivenField('purchase_', 'order_date', $partnerPurchaseOrders); $paments = $this->mapByIdAndGivenField('payment_', 'date', $partnerPaymentTransactions); $billings = $this->mapByIdAndGivenField('billing_', 'date', $partnerBillingTransactions); $allDeals = $this->mergeAllDeals($sales, $purchases, $paments, $billings, $partnerSaleOrders, $partnerPurchaseOrders, $partnerPaymentTransactions, $partnerBillingTransactions); $this->addParam('allDeals', $allDeals); $this->addParam('partnerSaleOrders', $partnerSaleOrders); $this->addParam('partnerPurchaseOrders', $partnerPurchaseOrders); $this->addParam('partnerPaymentTransactions', $partnerPaymentTransactions); $this->addParam('partnerBillingTransactions', $partnerBillingTransactions); } }
public function service() { set_time_limit(120); $updateAllSaleOrderLinesCurrencyRates = SaleOrderManager::getInstance()->updateAllLinesCurrencyRates(); $updateAllPurchaseOrderLinesCurrencyRates = PurchaseOrderManager::getInstance()->updateAllLinesCurrencyRates(); $updateAllPaymentOrdersCurrencyRates = PaymentTransactionManager::getInstance()->updateAllOrdersCurrencyRates(); SaleOrderManager::getInstance()->updateAllOrderLines(); PurchaseOrderManager::getInstance()->updateAllOrderLines(); $this->addParam('status', true); $this->addParam('total_sale_orders', $updateAllSaleOrderLinesCurrencyRates); $this->addParam('total_purchase_orders', $updateAllPurchaseOrderLinesCurrencyRates); $this->addParam('total_payment_orders', $updateAllPaymentOrdersCurrencyRates); }
public function load() { $this->initErrorMessages(); $this->initSuccessMessages(); $this->addParam('products', ProductManager::getInstance()->selectAdvance('*', [], ['name'])); $this->addParam('currencies', CurrencyManager::getInstance()->selectAdvance('*', ['active', '=', 1], ['name'])); $paymentId = NGS()->args()->id; $saleOrders = SaleOrderManager::getInstance()->getSaleOrdersFull(['id', '=', $paymentId]); if (!empty($saleOrders)) { $saleOrder = $saleOrders[0]; $this->addParam('saleOrder', $saleOrder); } }
public function service() { $startDate = NGS()->args()->startDate; $endDate = NGS()->args()->endDate; $partnerId = intval(NGS()->args()->partner_id); $where = ['cancelled', '=', 0, 'and', 'order_date', '>=', "'{$startDate}'", 'and', 'order_date', '<=', "'{$endDate} 23:59:59'"]; $partnerDto = null; if ($partnerId > 0) { $partnerDto = \crm\managers\PartnerManager::getInstance()->selectByPK($partnerId); $where = array_merge($where, ['and', 'partner_id', '=', $partnerId]); } $rows = \crm\managers\SaleOrderManager::getInstance()->getSaleOrdersFull($where, 'order_date', "DESC"); $this->exportCsv($rows, $startDate, $endDate, $partnerDto); }
public function service() { try { list($partnerId, $date, $billingDeadlineDate, $isExpense, $note) = $this->getFormData(); } catch (RedirectException $exc) { $_SESSION['error_message'] = $exc->getMessage(); $_SESSION['action_request'] = $_REQUEST; $this->redirect($exc->getRedirectTo()); } $saleOrderId = SaleOrderManager::getInstance()->createSaleOrder($partnerId, $date, $billingDeadlineDate, $isExpense, $note); unset($_SESSION['action_request']); $_SESSION['success_message'] = 'Sale Order Successfully created!'; $this->redirect('sale/' . $saleOrderId); }
public function service() { if (!isset(NGS()->args()->sale_order_id)) { $_SESSION['error_message'] = 'Sale Order ID is missing'; $this->redirect('sale/list'); } $saleOrderId = intval(NGS()->args()->sale_order_id); try { SaleOrderLineManager::getInstance()->startTransaction(); 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; SaleOrderLineManager::getInstance()->updateSaleOrderLine($saleOrderId, $line->line_id, $line->product_id, $line->quantity, $line->unit_price, $line->currency_id); } else { $newLineId = SaleOrderLineManager::getInstance()->createSaleOrderLine($saleOrderId, $line->product_id, $line->quantity, $line->unit_price, $line->currency_id); $linesIdsToNotDelete[] = $newLineId; } } } SaleOrderLineManager::getInstance()->deleteWhereIdNotIdIds($saleOrderId, $linesIdsToNotDelete); } else { SaleOrderLineManager::getInstance()->deleteByField('sale_order_id', $saleOrderId); } SaleOrderManager::getInstance()->updateAllDependingSaleOrderLines($saleOrderId); SaleOrderManager::getInstance()->commitTransaction(); } catch (InsufficientProductException $exc) { SaleOrderManager::getInstance()->rollbackTransaction(); $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('sale/' . $saleOrderId); } catch (Exception $exc) { SaleOrderManager::getInstance()->rollbackTransaction(); $_SESSION['error_message'] = $exc->getMessage(); $this->redirect('sale/' . $saleOrderId); } $this->redirect('sale/warranty/' . $saleOrderId); }
public function service() { if (isset(NGS()->args()->id)) { $saleOrderId = NGS()->args()->id; } else { $_SESSION['error_message'] = 'Sale Order ID is missing'; $this->redirect('sale/list'); } $saleOrderManager = SaleOrderManager::getInstance(); $saleOrderManager->delete($saleOrderId); $_SESSION['success_message'] = 'Sale Order Successfully deleted!'; if (strpos($_SERVER['HTTP_REFERER'], 'sale/list') === false) { $this->redirect('sale/list'); } else { $this->redirectToReferer(); } }
public function load() { $this->initErrorMessages(); $this->initSuccessMessages(); $id = intval(NGS()->args()->id); $saleOrder = SaleOrderManager::getInstance()->selectByPK($id); if ($saleOrder) { if (!isset($_SESSION['action_request'])) { $_SESSION['action_request'] = ['order_date' => $this->cutSecondsFromDateTime($saleOrder->getOrderDate()), 'billing_deadline' => $saleOrder->getBillingDeadline(), 'partnerId' => $saleOrder->getPartnerId(), 'note' => $saleOrder->getNote(), 'isExpense' => $saleOrder->getIsExpense()]; } $this->addParam("saleOrder", $saleOrder); $this->addParam('req', $_SESSION['action_request']); unset($_SESSION['action_request']); $this->addParam('payment_methods', PaymentMethodManager::getInstance()->selectAdvance('*', ['active', '=', 1], ['name'])); $this->addParam('partners', PartnerManager::getInstance()->selectAdvance('*', [], ['name'])); $this->addParam('defaultPaymentMethodId', SettingManager::getInstance()->getSetting('default_payment_method_id')); } }
public function load() { $this->initErrorMessages(); $this->initSuccessMessages(); $this->addParam('payment_methods', PaymentMethodManager::getInstance()->selectAdvance('*', ['active', '=', 1], ['name'])); $this->addParam('partners', PartnerManager::getInstance()->selectAdvance('*', [], ['name'])); $this->addParam('products', ProductManager::getInstance()->selectAdvance('*', [], ['name'])); $limit = 100; list($where, $offset, $sortByFieldName, $selectedFilterSortByAscDesc) = $this->initFilters($limit); $saleOrders = SaleOrderManager::getInstance()->getSaleOrdersFull($where, $sortByFieldName, $selectedFilterSortByAscDesc, $offset, $limit); $this->addParam('saleOrders', $saleOrders); $count = SaleOrderManager::getInstance()->getLastSelectAdvanceRowsCount(); if (count($saleOrders) == 0 && $count > 0) { $this->redirectIncludedParamsExeptPaging(); } $pagesCount = ceil($count / $limit); $this->addParam('pagesCount', $pagesCount); $currencyManager = CurrencyManager::getInstance(); $this->addParam('currencies', $currencyManager->mapDtosById($currencyManager->selectAdvance('*', ['active', '=', 1]))); }
public function load() { list($startDate, $endDate) = $this->getFormData(); $this->addParam('startDate', $startDate); $this->addParam('endDate', $endDate); $partnerSaleOrders = AdvancedAbstractManager::mapDtosById(SaleOrderManager::getInstance()->getSaleOrdersFull(['cancelled', '=', 0, 'AND', 'order_date', '>=', "'" . $startDate . "'", 'AND', 'order_date', '<=', "DATE_ADD('{$endDate}' ,INTERVAL 1 DAY)"], ['order_date'], 'DESC')); $partnerPurchaseOrders = AdvancedAbstractManager::mapDtosById(PurchaseOrderManager::getInstance()->getPurchaseOrdersFull(['cancelled', '=', 0, 'AND', 'order_date', '>=', "'" . $startDate . "'", 'AND', 'order_date', '<=', "DATE_ADD('{$endDate}' ,INTERVAL 1 DAY)"], ['order_date'], 'DESC')); $partnerPaymentTransactions = AdvancedAbstractManager::mapDtosById(PaymentTransactionManager::getInstance()->getPaymentListFull(['cancelled', '=', 0, 'AND', 'amount', '>', 0, 'AND', 'date', '>=', "'" . $startDate . "'", 'AND', 'date', '<=', "DATE_ADD('{$endDate}' ,INTERVAL 1 DAY)"], ['date'], 'DESC')); $partnerBillingTransactions = AdvancedAbstractManager::mapDtosById(PaymentTransactionManager::getInstance()->getPaymentListFull(['cancelled', '=', 0, 'AND', 'amount', '<', 0, 'AND', 'date', '>=', "'" . $startDate . "'", 'AND', 'date', '<=', "DATE_ADD('{$endDate}' ,INTERVAL 1 DAY)"], ['date'], 'DESC')); $sales = $this->mapByIdAndGivenField('sale_', 'order_date', $partnerSaleOrders); $purchases = $this->mapByIdAndGivenField('purchase_', 'order_date', $partnerPurchaseOrders); $paments = $this->mapByIdAndGivenField('payment_', 'date', $partnerPaymentTransactions); $billings = $this->mapByIdAndGivenField('billing_', 'date', $partnerBillingTransactions); $allDeals = $this->mergeAllDeals($sales, $purchases, $paments, $billings, $partnerSaleOrders, $partnerPurchaseOrders, $partnerPaymentTransactions, $partnerBillingTransactions); $this->addParam('allDeals', $allDeals); $this->addParam('partnerSaleOrders', $partnerSaleOrders); $this->addParam('partnerPurchaseOrders', $partnerPurchaseOrders); $this->addParam('partnerPaymentTransactions', $partnerPaymentTransactions); $this->addParam('partnerBillingTransactions', $partnerBillingTransactions); $this->addParam('currencies', CurrencyManager::getInstance()->selectAdvance('*', ['active', '=', 1], null, null, null, null, true)); }
public function load() { $this->initErrorMessages(); $this->initSuccessMessages(); $this->addParam('products', ProductManager::getInstance()->selectAdvance('*', [], ['name'])); $this->addParam('currencies', CurrencyManager::getInstance()->selectAdvance('*', ['active', '=', 1], ['name'])); $paymentId = NGS()->args()->id; $saleOrders = SaleOrderManager::getInstance()->getSaleOrdersFull(['id', '=', $paymentId]); if (!empty($saleOrders)) { $saleOrder = $saleOrders[0]; $this->addParam('saleOrder', $saleOrder); } $polSerialNumbersDtos = []; $saleOrderLineIds = $this->getSaleOrderLineIds($saleOrders); if (!empty($saleOrderLineIds)) { $saleOrderLineIdsSql = '(' . implode(',', $saleOrderLineIds) . ')'; $polSerialNumbersDtos = SaleOrderLineSerialNumberManager::getInstance()->selectAdvance('*', ['line_id', 'IN', $saleOrderLineIdsSql]); $polSerialNumbersDtos = $this->mapDtosByLineId($polSerialNumbersDtos); } $this->addParam("polSerialNumbersDtos", $polSerialNumbersDtos); }
public function service() { if (isset(NGS()->args()->id)) { $saleOrderId = NGS()->args()->id; } else { $_SESSION['error_message'] = 'Sale Order ID is missing'; $this->redirect('sale/list'); } $saleOrderManager = SaleOrderManager::getInstance(); $saleOrderDto = $saleOrderManager->selectByPK($saleOrderId); if (!isset($saleOrderDto)) { $_SESSION['error_message'] = 'Sale Order with ID ' . NGS()->args()->id . ' does not exists.'; $this->redirect('sale/list'); } if ($saleOrderDto->getCancelled() == 0) { $_SESSION['error_message'] = 'Sale Order with ID ' . NGS()->args()->id . ' is not cancelled.'; $this->redirect('sale/list'); } $saleOrderManager->restoreSaleOrder($saleOrderId); $_SESSION['success_message'] = 'Sale Order Successfully restored!'; $this->redirectToReferer(); }
public function service() { if (isset(NGS()->args()->id)) { $saleOrderId = NGS()->args()->id; } else { $_SESSION['error_message'] = 'Sale Order ID is missing'; $this->redirect('sale/list'); } if (isset(NGS()->args()->non_profit)) { $nonProfit = NGS()->args()->non_profit; } else { $_SESSION['error_message'] = 'Non Profit parameter is missing'; $this->redirect('sale/' . NGS()->args()->id); } $saleOrderManager = SaleOrderManager::getInstance(); $saleOrderDto = $saleOrderManager->selectByPK($saleOrderId); if (!isset($saleOrderDto)) { $_SESSION['error_message'] = 'Sale Order with ID ' . NGS()->args()->id . ' does not exists.'; $this->redirect('sale/list'); } $saleOrderManager->setNonProfit($saleOrderId, $nonProfit); }
public function load() { $this->initErrorMessages(); $this->initSuccessMessages(); $partnerId = intval(NGS()->args()->id); $partner = PartnerManager::getInstance()->getPartnerFull($partnerId); if ($partner) { $this->addParam('partner', $partner); $partnerSaleOrders = SaleOrderManager::getInstance()->getPartnerSaleOrders($partnerId); $partnerPurchaseOrders = PurchaseOrderManager::getInstance()->getPartnerPurchaseOrders($partnerId); $partnerPaymentTransactions = PaymentTransactionManager::getInstance()->getPartnerPaymentTransactions($partnerId); $partnerBillingTransactions = PaymentTransactionManager::getInstance()->getPartnerBillingTransactions($partnerId); $partnerInitialDept = PartnerInitialDeptManager::getInstance()->getPartnerInitialDept($partnerId); $this->addParam('partnerSaleOrders', $partnerSaleOrders); $this->addParam('partnerPurchaseOrders', $partnerPurchaseOrders); $this->addParam('partnerPaymentTransactions', $partnerPaymentTransactions); $this->addParam('partnerBillingTransactions', $partnerBillingTransactions); $dept = CalculationManager::getInstance()->calculatePartnerDeptBySalePurchaseAndPaymentTransations($partnerSaleOrders, $partnerPurchaseOrders, $partnerPaymentTransactions, $partnerBillingTransactions, $partnerInitialDept); $this->addParam('partnerDept', $dept); $currencyManager = CurrencyManager::getInstance(); $this->addParam('currencies', $currencyManager->mapDtosById($currencyManager->selectAdvance('*', ['active', '=', 1], ['name']))); } }
public function load() { $this->initErrorMessages(); $this->initSuccessMessages(); $limit = 100; list($offset, $sortByFieldName, $selectedFilterSortByAscDesc) = $this->initFilters($limit); $partnerManager = PartnerManager::getInstance(); $partners = $partnerManager->selectAdvance('*', [], $sortByFieldName, $selectedFilterSortByAscDesc, $offset, $limit); $partnerIds = $partnerManager->getDtosIdsArray($partners); $partnersSaleOrdersMappedByPartnerId = []; $partnersPurchaseOrdersMappedByPartnerId = []; $partnersTransactionsMappedByPartnerId = []; $partnersInitialDept = []; if (!empty($partnerIds)) { $partnersSaleOrdersMappedByPartnerId = SaleOrderManager::getInstance()->getPartnersSaleOrders($partnerIds); $partnersPurchaseOrdersMappedByPartnerId = PurchaseOrderManager::getInstance()->getPartnersPurchaseOrders($partnerIds); $partnersPaymentTransactionsMappedByPartnerId = PaymentTransactionManager::getInstance()->getPartnersPaymentTransactions($partnerIds); $partnersBillingTransactionsMappedByPartnerId = PaymentTransactionManager::getInstance()->getPartnersBillingTransactions($partnerIds); $partnersInitialDept = PartnerInitialDeptManager::getInstance()->getPartnersInitialDept($partnerIds); } $partnersDept = CalculationManager::getInstance()->calculatePartnersDeptBySalePurchaseAndPaymentTransations($partnersSaleOrdersMappedByPartnerId, $partnersPurchaseOrdersMappedByPartnerId, $partnersPaymentTransactionsMappedByPartnerId, $partnersBillingTransactionsMappedByPartnerId, $partnersInitialDept); $this->addParam('partnersSaleOrdersMappedByPartnerId', $partnersSaleOrdersMappedByPartnerId); $this->addParam('partnersPurchaseOrdersMappedByPartnerId', $partnersPurchaseOrdersMappedByPartnerId); $this->addParam('partnersPaymentTransactionsMappedByPartnerId', $partnersPaymentTransactionsMappedByPartnerId); $this->addParam('partnersBillingTransactionsMappedByPartnerId', $partnersBillingTransactionsMappedByPartnerId); $this->addParam('partnersDept', $partnersDept); $this->addParam('partners', $partners); $count = PartnerManager::getInstance()->getLastSelectAdvanceRowsCount(); if (count($partners) == 0 && $count > 0) { $this->redirectIncludedParamsExeptPaging(); } $pagesCount = ceil($count / $limit); $this->addParam('pagesCount', $pagesCount); $currencyManager = CurrencyManager::getInstance(); $this->addParam('currencies', $currencyManager->mapDtosById($currencyManager->selectAdvance('*', ['active', '=', 1], ['name']))); }
public function service() { if (isset(NGS()->args()->id)) { $saleOrderId = NGS()->args()->id; } else { $_SESSION['error_message'] = 'Sale Order ID is missing'; $this->redirect('sale/list'); } $saleOrderManager = SaleOrderManager::getInstance(); $saleOrderDto = $saleOrderManager->selectByPK($saleOrderId); if (!isset($saleOrderDto)) { $_SESSION['error_message'] = 'Sale Order with ID ' . NGS()->args()->id . ' does not exists.'; $this->redirect('sale/list'); } if ($saleOrderDto->getCancelled() == 1) { $_SESSION['error_message'] = 'Sale Order with ID ' . NGS()->args()->id . ' is already cancelled.'; $this->redirect('sale/list'); } $note = NGS()->args()->note; $saleOrderManager->cancelSaleOrder($saleOrderId, $note); $_SESSION['success_message'] = 'Sale Order Successfully cancelled!'; $saleOrderManager->updateAllDependingSaleOrderLines($saleOrderId); $this->redirectToReferer(); }
public function updateAllDependingSaleOrderLines($purchaseOrderId) { $productsIds = $this->getProductsIdsInOrder($purchaseOrderId); SaleOrderManager::getInstance()->updateAllOrderLinesThatContainsProducts($productsIds); }
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; }
public function calculatePartnerDeptBySalePurchaseAndPaymentTransations($id) { $partnerSaleOrders = SaleOrderManager::getInstance()->getPartnerSaleOrders($id); $partnerPurchaseOrders = PurchaseOrderManager::getInstance()->getPartnerPurchaseOrders($id); $partnerPaymentTransactions = PaymentTransactionManager::getInstance()->getPartnerPaymentTransactions($id); $partnerBillingTransactions = PaymentTransactionManager::getInstance()->getPartnerBillingTransactions($id); $partnerInitialDept = PartnerInitialDeptManager::getInstance()->getPartnerInitialDept($id); return CalculationManager::getInstance()->calculatePartnerDeptBySalePurchaseAndPaymentTransations($partnerSaleOrders, $partnerPurchaseOrders, $partnerPaymentTransactions, $partnerBillingTransactions, $partnerInitialDept); }
public function getProductsSaleOrders($productIds) { $soLines = []; if (!empty($productIds)) { $soLines = $this->mapper->getNonCancelledProductsSaleOrders($productIds); } $soIdsMappedByProductId = []; $allSaleOrdersIds = []; foreach ($soLines as $sol) { $soIdsMappedByProductId[$sol->getProductId()][] = $sol->getSaleOrderId(); $allSaleOrdersIds[] = intval($sol->getSaleOrderId()); } $allSaleOrdersIds = array_unique($allSaleOrdersIds); $saleOrdersMappedById = []; if (!empty($allSaleOrdersIds)) { $idsSql = '(' . implode(',', $allSaleOrdersIds) . ')'; $saleOrdersMappedById = SaleOrderManager::getInstance()->selectAdvance('*', ['id', 'IN', $idsSql], null, null, null, null, true); } foreach ($soIdsMappedByProductId as &$r) { $r = array_unique($r); } $ret = []; foreach ($productIds as $productId) { if (!array_key_exists($productId, $soIdsMappedByProductId)) { $soIdsMappedByProductId[$productId] = []; } $ret[$productId] = []; foreach ($soIdsMappedByProductId[$productId] as $soId) { $ret[$productId][] = $saleOrdersMappedById[$soId]; } } 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; }