示例#1
0
 /**
  * saveAll
  * Save all the data 
  * @param $params
  * @return Boolean
  */
 public static function saveAll($id, $params)
 {
     $date_end = null;
     if (!is_array($params)) {
         return false;
     }
     $details = Doctrine::getTable('OrdersItems')->find($id);
     // Generic price setting
     $rowtotal = $params['price'];
     $vat = null;
     $percentage = null;
     // Get the taxes applied
     $tax = Taxes::getTaxbyProductID($params['product_id']);
     if ($tax['percentage'] > 0) {
         $rowtotal = $params['price'] * (100 + $tax['percentage']) / 100;
         $vat = $params['price'] * $tax['percentage'] / 100;
         $percentage = $tax['percentage'];
     } else {
         if (!empty($params['parameters'])) {
             // it is a domain
             $domainparams = json_decode($params['parameters'], true);
             if (!empty($domainparams['domain']['tld'])) {
                 $tax = Taxes::getTaxbyTldID($domainparams['domain']['tld']);
                 if ($tax['percentage'] > 0) {
                     $vat = $params['price'] * $tax['percentage'] / 100;
                     $percentage = $tax['percentage'];
                     $rowtotal = $params['price'] * (100 + $tax['percentage']) / 100;
                 }
             }
         }
     }
     if (!empty($params['billing_cycle_id'])) {
         $months = BillingCycle::getMonthsNumber($params['billing_cycle_id']);
     }
     if ($months > 0 && is_numeric($params['product_id']) && $params['product_id'] > 0) {
         // only for the product and services. Domains excluded
         $rowtotal = $rowtotal * $months;
     }
     $params['date_end'] = Shineisp_Commons_Utilities::add_date($params['date_start'], null, $months);
     $details->quantity = $params['quantity'];
     $details->date_start = Shineisp_Commons_Utilities::formatDateIn($params['date_start']);
     $details->date_end = Shineisp_Commons_Utilities::formatDateIn($params['date_end']);
     $details->billing_cycle_id = !empty($params['billing_cycle_id']) ? $params['billing_cycle_id'] : null;
     $details->price = $params['price'];
     $details->vat = $vat;
     $details->percentage = $percentage;
     $details->cost = $params['cost'];
     $details->product_id = is_numeric($params['product_id']) && $params['product_id'] > 0 ? $params['product_id'] : NULL;
     $details->setupfee = $params['setupfee'];
     $details->discount = $params['discount'];
     $details->subtotal = $rowtotal * $params['quantity'];
     $details->status_id = $params['status_id'];
     $details->description = $params['description'];
     $details->parameters = $params['parameters'];
     if ($details->trySave()) {
         OrdersItems::setAutorenew($id, $params['autorenew']);
         // Remove all domains
         OrdersItemsDomains::removeAllDomains($id);
         if ($params['domains_selected']) {
             foreach ($params['domains_selected'] as $domain) {
                 OrdersItemsDomains::addDomain($details['order_id'], $domain);
             }
         }
         return true;
     }
     return false;
 }
示例#2
0
 public static function Create($domain, $tld_id, $customerid, $orderitemid, $statusid = "", $authcode = "")
 {
     $thedomain = new Domains();
     if (!is_numeric($statusid)) {
         $statusid = Statuses::id("processing", "domains");
     }
     list($domain, $tld) = explode('.', $domain);
     $retval = self::findByDomainName($domain, $tld, null, true);
     $date_end = Shineisp_Commons_Utilities::add_date(date('d-m-Y'), null, 12);
     $tldInfo = DomainsTlds::getbyID($tld_id);
     if (count($retval) == 0) {
         $thedomain->domain = $domain;
         $thedomain->tld = $tldInfo['WhoisServers']['tld'];
         $thedomain->tld_id = $tldInfo['tld_id'];
         $thedomain->customer_id = $customerid;
         $thedomain->orderitem_id = $orderitemid;
         $thedomain->status_id = $statusid;
         $thedomain->registrars_id = Isp::getActiveISPID();
         $thedomain->creation_date = date('Y-m-d');
         $thedomain->expiring_date = Shineisp_Commons_Utilities::formatDateIn($date_end);
         $thedomain->modification_date = date('Y-m-d');
         $thedomain->authinfocode = $authcode;
         $thedomain->autorenew = true;
         $thedomain->save();
         return $thedomain->getIncremented();
     } else {
         return $retval[0]['domain_id'];
     }
 }
示例#3
0
 /**
  * Create an order with many products
  *
  *
  * @param $product
  * @return integer $orderID
  */
 public static function createOrderWithMultiProducts(array $products, $customer_id, $type = "domain")
 {
     $order = new Orders();
     try {
         $customer = Customers::getAllInfo($customer_id);
         $isp_id = $customer['isp_id'];
         // Creating a new Order.
         $order->customer_id = $customer_id;
         $order->isp_id = $isp_id;
         $order->order_date = date('Y-m-d');
         $order->status_id = Statuses::id("tobepaid", "orders");
         // To pay
         $order->save();
         $id = $order->getIncremented();
         // Add a fastlink to a order
         $link_exist = Fastlinks::findlinks($id, $customer_id, 'orders');
         if (count($link_exist) == 0) {
             $link = new Fastlinks();
             $link->controller = "orders";
             $link->action = "edit";
             $link->params = json_encode(array('id' => $id));
             $link->customer_id = $customer_id;
             $link->sqltable = "orders";
             $link->id = $id;
             $link->code = Shineisp_Commons_Utilities::GenerateRandomString();
             $link->save();
         }
         foreach ($products as $product) {
             $product = Domains::getAllInfo($product, null, null, true);
             // Attaching the order item to the order previously created.
             $orderitem = new OrdersItems();
             $date_end = Shineisp_Commons_Utilities::add_date(date('d-m-Y'), null, 365);
             // Fixed Renew
             $orderitem->order_id = $id;
             $orderitem->product_id = $product[0]['Products']['product_id'];
             $orderitem->billing_cycle_id = 1;
             $orderitem->date_start = date('Y-m-d H:i:s');
             $orderitem->date_end = $date_end;
             $orderitem->autorenew = true;
             $orderitem->description = $product[0]['domain'] . "." . $product[0]['tld'];
             $orderitem->quantity = 1;
             $tax = Taxes::getTaxbyProductID($product[0]['Products']['product_id']);
             $orderitem->price = $product[0]['Products']['price_1'];
             $orderitem->cost = $product[0]['Products']['cost'];
             $orderitem->status_id = Statuses::id("processing", "orders");
             // Processing status set
             $orderitem->save();
             $detailid = $orderitem->getIncremented();
             // Set the domains status as processing
             Domains::setStatus($product[0]['domain_id'], 6);
         }
         // Update the total of the order
         self::updateTotalsOrder($id);
         return $id;
     } catch (Exception $e) {
         echo $e->getMessage();
         die;
     }
 }
示例#4
0
 /**
  * processAction
  * Update the record previously selected
  * @return unknown_type
  */
 public function processAction()
 {
     $i = 0;
     $redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
     $form = $this->getForm("/admin/services/process");
     $request = $this->getRequest();
     // Create the buttons in the edit form
     $this->view->buttons = array(array("url" => "#", "label" => $this->translator->translate('Save'), "params" => array('css' => null, 'id' => 'submit')), array("url" => "/admin/services/list", "label" => $this->translator->translate('List'), "params" => array('css' => null, 'id' => 'submit')), array("url" => "/admin/services/new/", "label" => $this->translator->translate('New'), "params" => array('css' => null)));
     // Check if we have a POST request
     if (!$request->isPost()) {
         return $this->_helper->redirector('list', 'services', 'admin');
     }
     if ($form->isValid($request->getPost())) {
         // Get the id
         $id = $this->getRequest()->getParam('detail_id');
         // Set the new values
         if (is_numeric($id)) {
             $this->services = Doctrine::getTable('OrdersItems')->find($id);
         }
         // Get the values posted
         $params = $form->getValues();
         $datestart = explode(" ", $params['date_start']);
         try {
             $months = BillingCycle::getMonthsNumber($params['billing_cycle_id']);
             if ($months > 0) {
                 $date_end = Shineisp_Commons_Utilities::add_date($datestart[0], null, $months);
             } else {
                 $date_end = null;
             }
             $this->services->date_start = Shineisp_Commons_Utilities::formatDateIn($params['date_start']);
             $this->services->date_end = Shineisp_Commons_Utilities::formatDateIn($date_end);
             $this->services->order_id = $params['order_id'];
             $this->services->product_id = $params['product_id'];
             $this->services->billing_cycle_id = $params['billing_cycle_id'];
             $this->services->quantity = $params['quantity'];
             $this->services->status_id = $params['status_id'];
             $this->services->setup = $params['setup'];
             $this->services->note = $params['note'];
             // Save the data
             $this->services->save();
             $id = is_numeric($id) ? $id : $this->services->getIncremented();
             // Set the autorenew
             OrdersItems::setAutorenew($id, $params['autorenew']);
             // Save the message note
             if (!empty($params['message'])) {
                 $message = new Messages();
                 $message->dateposted = date('Y-m-d H:i:s');
                 $message->message = $params['message'];
                 $message->isp_id = 1;
                 $message->detail_id = $id;
                 $message->save();
             }
             // Clear the list from the DB
             Doctrine::getTable('OrdersItemsDomains')->findBy('orderitem_id', $id)->delete();
             if ($params['domains_selected']) {
                 $service_domains = new Doctrine_Collection('OrdersItemsDomains');
                 foreach ($params['domains_selected'] as $domain) {
                     $service_domains[$i]->domain_id = $domain;
                     $service_domains[$i]->order_id = $params['order_id'];
                     $service_domains[$i]->orderitem_id = $id;
                     $i++;
                 }
                 $service_domains->save();
             }
             $this->_helper->redirector('edit', 'services', 'admin', array('id' => $id, 'mex' => 'The task requested has been executed successfully.', 'status' => 'success'));
         } catch (Exception $e) {
             $this->_helper->redirector('edit', 'services', 'admin', array('id' => $id, 'mex' => $this->translator->translate('Unable to process the request at this time.') . ": " . $e->getMessage(), 'status' => 'danger'));
         }
         $redirector->gotoUrl("/admin/services/edit/id/{$id}");
     } else {
         $this->view->form = $form;
         $this->view->title = $this->translator->translate("Service Details");
         $this->view->description = $this->translator->translate("Here you can see the details of the service subscribed by the customer.");
         return $this->render('applicantform');
     }
 }