public function load()
 {
     list($startDate, $endDate) = [NGS()->args()->startDate, NGS()->args()->endDate];
     $expensePaymentOrders = PaymentTransactionManager::getInstance()->getPaymentListFull(['cancelled', '=', 0, 'AND', 'is_expense', '=', 1, 'AND', 'date', '>=', "'" . $startDate . "'", 'AND', 'date', '<=', "DATE_ADD('{$endDate}' ,INTERVAL 1 DAY)"], ['date'], 'DESC');
     $this->addParam('currencies', CurrencyManager::getInstance()->mapDtosById(CurrencyManager::getInstance()->selectAdvance('*', ['active', '=', 1])));
     $this->addParam("expensePaymentOrders", $expensePaymentOrders);
 }
Example #2
0
 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);
     }
 }
Example #3
0
 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;
 }
Example #4
0
 public function load()
 {
     list($date, $curr) = $this->getFormData();
     $this->addParam('date', $date);
     $this->addParam('selectedCurrencyId', $curr);
     $this->addParam('currencies', CurrencyManager::getInstance()->selectAdvance('*', ['active', '=', 1], ['name']));
     $paymentTransactionManager = PaymentTransactionManager::getInstance();
     $nonCancelledPaymentOrdersByCurrency = $paymentTransactionManager->getNonCancelledPaymentOrdersByCurrency($date, $curr);
     $cashboxAmount = -$nonCancelledPaymentOrdersByCurrency;
     $this->addParam("amount", $cashboxAmount);
 }
Example #5
0
 public function load()
 {
     $this->initErrorMessages();
     $this->initSuccessMessages();
     $paymentId = NGS()->args()->id;
     $payments = PaymentTransactionManager::getInstance()->getPaymentListFull(['id', '=', $paymentId]);
     if (!empty($payments)) {
         $payment = $payments[0];
         $this->addParam('payment', $payment);
     }
 }
 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 service()
 {
     try {
         list($id, $partnerId, $paymentMethodId, $currencyId, $amount, $date, $isExpense, $paid, $note, $signature) = $this->getFormData();
     } catch (RedirectException $exc) {
         $_SESSION['error_message'] = $exc->getMessage();
         $_SESSION['action_request'] = $_REQUEST;
         $this->redirect($exc->getRedirectTo());
     }
     PaymentTransactionManager::getInstance()->updatePaymentOrder($id, $partnerId, $paymentMethodId, $currencyId, $amount, $date, $note, $signature, $paid, $isExpense);
     unset($_SESSION['action_request']);
     $_SESSION['success_message'] = 'Payment Successfully updated!';
     $this->redirect('payment/' . $id);
 }
Example #8
0
 public function service()
 {
     $startDate = NGS()->args()->startDate;
     $endDate = NGS()->args()->endDate;
     $partnerId = intval(NGS()->args()->partner_id);
     $where = ['amount', '<', 0, 'and', 'cancelled', '=', 0, 'and', 'date', '>=', "'{$startDate}'", 'and', '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\PaymentTransactionManager::getInstance()->getPaymentListFull($where, 'date', "DESC");
     $this->exportCsv($rows, $startDate, $endDate, $partnerDto);
 }
 public function service()
 {
     try {
         list($partnerId, $billingMethodId, $currencyId, $amount, $date, $note, $signature) = $this->getFormData();
     } catch (RedirectException $exc) {
         $_SESSION['error_message'] = $exc->getMessage();
         $_SESSION['action_request'] = $_REQUEST;
         $this->redirect($exc->getRedirectTo());
     }
     $paymentTransactionManager = PaymentTransactionManager::getInstance();
     $billingId = $paymentTransactionManager->createPaymentOrder($partnerId, $billingMethodId, $currencyId, -$amount, $date, $note, $signature);
     unset($_SESSION['action_request']);
     $_SESSION['success_message'] = 'Billing Successfully created!';
     $this->redirect('billing/' . $billingId);
 }
Example #10
0
 public function load()
 {
     $this->initErrorMessages();
     $this->initSuccessMessages();
     $limit = 100;
     list($where, $offset, $sortByFieldName, $selectedFilterSortByAscDesc) = $this->initFilters($limit);
     $billing = PaymentTransactionManager::getInstance()->getPaymentListFull($where, $sortByFieldName, $selectedFilterSortByAscDesc, $offset, $limit);
     $this->addParam('billings', $billing);
     $count = PaymentTransactionManager::getInstance()->getLastSelectAdvanceRowsCount();
     if (count($billing) == 0 && $count > 0) {
         $this->redirectIncludedParamsExeptPaging();
     }
     $pagesCount = ceil($count / $limit);
     $this->addParam('pagesCount', $pagesCount);
     $this->addParam('partners', PartnerManager::getInstance()->selectAdvance('*', [], ['name']));
     $this->addParam('currencies', CurrencyManager::getInstance()->selectAdvance('*', ['active', '=', 1], ['name']));
 }
 public function service()
 {
     if (isset(NGS()->args()->id)) {
         $paymentId = NGS()->args()->id;
     } else {
         $_SESSION['error_message'] = 'Billing ID is missing';
         $this->redirect('billing/list');
     }
     $paymentTransactionManager = PaymentTransactionManager::getInstance();
     $paymentTransactionManager->deleteByPK($paymentId);
     $_SESSION['success_message'] = 'Billing Successfully deleted!';
     if (strpos($_SERVER['HTTP_REFERER'], 'billing/list') === false) {
         $this->redirect('billing/list');
     } else {
         $this->redirectToReferer();
     }
 }
Example #12
0
 public function load()
 {
     $this->initErrorMessages();
     $this->initSuccessMessages();
     $id = intval(NGS()->args()->id);
     $paymentOrder = PaymentTransactionManager::getInstance()->selectByPK($id);
     if ($paymentOrder) {
         if (!isset($_SESSION['action_request'])) {
             $_SESSION['action_request'] = ['date' => $this->cutSecondsFromDateTime($paymentOrder->getDate()), 'partnerId' => $paymentOrder->getPartnerId(), 'billingMethodId' => $paymentOrder->getPaymentMethodId(), 'currencyId' => $paymentOrder->getCurrencyId(), 'note' => $paymentOrder->getNote(), 'signature' => $paymentOrder->getSignature(), 'amount' => $paymentOrder->getAmount(), 'isExpense' => $paymentOrder->getIsExpense(), 'paid' => $paymentOrder->getPaid()];
         }
         $this->addParam("paymentOrder", $paymentOrder);
         $this->addParam('req', $_SESSION['action_request']);
         unset($_SESSION['action_request']);
         $this->addParam('payment_methods', PaymentMethodManager::getInstance()->selectAdvance('*', ['active', '=', 1], ['name']));
         $this->addParam('currencies', CurrencyManager::getInstance()->selectAdvance('*', ['active', '=', 1], ['name']));
         $this->addParam('partners', PartnerManager::getInstance()->selectAdvance('*', [], ['name']));
         $this->addParam('defaultCurrencyId', SettingManager::getInstance()->getSetting('default_currency_id'));
         $this->addParam('defaultPaymentMethodId', SettingManager::getInstance()->getSetting('default_payment_method_id'));
     }
 }
Example #13
0
 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 service()
 {
     if (isset(NGS()->args()->id)) {
         $billingId = NGS()->args()->id;
     } else {
         $_SESSION['error_message'] = 'Billing ID is missing';
         $this->redirect('billing/list');
     }
     $paymentTransactionManager = PaymentTransactionManager::getInstance();
     $billingDto = $paymentTransactionManager->selectByPK($billingId);
     if (!isset($billingDto)) {
         $_SESSION['error_message'] = 'Billing with ID ' . NGS()->args()->id . ' does not exists.';
         $this->redirect('billing/list');
     }
     if ($billingDto->getCancelled() == 0) {
         $_SESSION['error_message'] = 'Billing with ID ' . NGS()->args()->id . ' is not cancelled.';
         $this->redirect('billing/list');
     }
     $paymentTransactionManager->undoCancelPayment($billingId);
     $_SESSION['success_message'] = 'Billing successfully restored!';
     $this->redirectToReferer();
 }
Example #15
0
 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 service()
 {
     if (isset(NGS()->args()->id)) {
         $paymentId = NGS()->args()->id;
     } else {
         $_SESSION['error_message'] = 'Payment ID is missing';
         $this->redirect('payment/list');
     }
     $paymentTransactionManager = PaymentTransactionManager::getInstance();
     $paymentDto = $paymentTransactionManager->selectByPK($paymentId);
     if (!isset($paymentDto)) {
         $_SESSION['error_message'] = 'Payment with ID ' . NGS()->args()->id . ' does not exists.';
         $this->redirect('payment/list');
     }
     if ($paymentDto->getCancelled() == 1) {
         $_SESSION['error_message'] = 'Payment with ID ' . NGS()->args()->id . ' is already cancelled.';
         $this->redirect('payment/list');
     }
     $note = NGS()->args()->note;
     $paymentTransactionManager->cancelPayment($paymentId, $note);
     $_SESSION['success_message'] = 'Payment Successfully cancelled!';
     $this->redirectToReferer();
 }
Example #17
0
 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'])));
 }
Example #18
0
 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);
 }