/**
  * add method
  *
  * @return void
  */
 public function reset_quote_cabinets($quote_id)
 {
     $quote_cabinets = array();
     App::import("Model", "QuoteManager.Quote");
     $quote_model = new Quote();
     $quote = $quote_model->read(null, $quote_id);
     $drawer = $this->request['data']['Global']['drawer'];
     $drawer_slide = $this->request['data']['Global']['drawer_slide'];
     $delivery = $this->request['data']['Global']['delivery'];
     $installation = $this->request['data']['Global']['installation'];
     $is_interior_melamine = $this->request['data']['Global']['is_interior_melamine'];
     $quote['Quote']['drawer'] = $drawer;
     $quote['Quote']['drawer_slide'] = $drawer_slide;
     $quote['Quote']['delivery'] = $delivery;
     $quote['Quote']['installation'] = $installation;
     $quote['Quote']['is_interior_melamine'] = $is_interior_melamine;
     $quote_model->save($quote);
     $this->CabinetOrder->deleteAll(array('quote_id' => $quote_id));
     if (isset($this->request['data']['CabinetOrder']) && is_array($this->request['data']['CabinetOrder']) && !empty($this->request['data']['CabinetOrder'])) {
         foreach ($this->request['data']['CabinetOrder'] as $cabinet) {
             if ($cabinet['temporary']) {
                 continue;
                 // skip the not saved one
             }
             if ($cabinet['temporary_delete']) {
                 unset($cabinet['temporary_delete']);
             }
             $cabinet['quote_id'] = $quote_id;
             switch ($cabinet['resource_type']) {
                 case 'cabinet':
                     $resource_id = $cabinet['resource_id'];
                     //            $resource_type = $cabinet['resource_type'];
                     $cabinet_color = $cabinet['cabinet_color'];
                     $material_id = $cabinet['material_id'];
                     $door_id = $cabinet['door_id'];
                     $door_color = $cabinet['door_color'];
                     $quote_cabinets[] = $cabinet + array('quote_id' => $quote_id);
                     break;
                 case 'custom_panel':
                 case 'custom_door':
                     $cabinet['resource_id'] = '0';
                     $quote_cabinets[] = $cabinet;
                     break;
                 default:
                     $quote_cabinets[] = $cabinet;
                     break;
             }
         }
         $this->CabinetOrder->saveAll($quote_cabinets);
     }
     $this->redirect(FULL_BASE_URL . $this->webroot . 'quote_manager/quotes/detail/' . $quote_id . '#quote-detail');
 }
Beispiel #2
0
}
if (!isset($params[1])) {
    redir();
}
$page_number = isset($params[2]) ? (int) $params[2] < 1 ? 1 : (int) $params[2] : 1;
$string = urldecode($params[1]);
$search = new Search();
$search->criteria = $string;
$search->page = $page_number;
$search->show_hidden = $session->level != 'anonymous';
$search->read();
$session->search = htmlspecialchars($string);
if (!$search->results) {
    if ($search->page_size * ($search->page - 1) < $search->count) {
        $html->do_sysmsg(_('Page not found'), null, 404);
    } else {
        $html->do_sysmsg(_('No quotes found'), _('There are no quotes matching your criteria.'), 404);
    }
} else {
    $html->do_header(sprintf(_('Search results for "%s"'), htmlspecialchars($string)));
    $pager = $html->do_pages($search->page + 1, ceil($search->count / $search->page_size), sprintf('%ssearch/%s/%%d', $settings->base_url, str_replace('%', '%%', urlencode($string))), 4);
    $quote = new Quote();
    $odd = true;
    foreach ($search->results as $this_quote) {
        $quote->read($this_quote);
        $quote->output($odd);
        $odd = !$odd;
    }
    $html->output .= $pager;
    $html->do_footer();
}
 function getTotalAmount($id = null)
 {
     App::import("Model", "QuoteManager.Quote");
     $q_model = new Quote();
     $quote = $q_model->read(null, $id);
     $total_quote_price = 0;
     $total_quote_price_cabinet = 0;
     $total_quote_price_installation = 0;
     $total_quote_price_discount = 0;
     $cabinets = array();
     if ($quote['CabinetOrder'] && is_array($quote['CabinetOrder'])) {
         App::import("Model", "Inventory.Cabinet");
         App::import("Model", "Inventory.Item");
         foreach ($quote['CabinetOrder'] as $cabinet_order) {
             $cabinet = new Cabinet();
             $item_model = new Item();
             $resource_detail = array('Resource' => array('name' => '', 'description' => ''));
             switch ($cabinet_order['resource_type']) {
                 case 'cabinet':
                     $resource_detail = $cabinet->find('first', array('conditions' => array('id' => $cabinet_order['resource_id'])));
                     $resource_detail['Resource']['name'] = $resource_detail['Cabinet']['name'];
                     $resource_detail['Resource']['description'] = $resource_detail['Cabinet']['description'];
                     $cabinets[] = $resource_detail;
                     break;
                 case 'item':
                     $resource_detail = $item_model->find('first', array('conditions' => array('Item.id' => $cabinet_order['resource_id'])));
                     $resource_detail['Resource']['name'] = $resource_detail['Cabinet'][0]['name'];
                     $resource_detail['Resource']['description'] = $resource_detail['Cabinet'][0]['description'];
                     $cabinets[] = $resource_detail;
                     break;
                 default:
                     break;
             }
             $sub_total = $cabinet_order['total_cost'];
             $total_quote_price_cabinet += $sub_total;
         }
     }
     if ($quote['Quote']['installation'] == 'We Installed' && !empty($cabinets) && is_array($cabinets)) {
         $installation_summery_list = array();
         foreach ($cabinets as $cabinet) {
             if (!empty($cabinet['CabinetInstallation']) && is_array($cabinet['CabinetInstallation'])) {
                 foreach ($cabinet['CabinetInstallation'] as $installation) {
                     if (isset($installation_summery_list[$installation['name']]['quantity'])) {
                         $installation_summery_list[$installation['name']]['quantity']++;
                     } else {
                         $installation_summery_list[$installation['name']]['name'] = $installation['name'];
                         $installation_summery_list[$installation['name']]['price_unit'] = $installation['price_unit'];
                         $installation_summery_list[$installation['name']]['price'] = $installation['price'];
                         $installation_summery_list[$installation['name']]['quantity'] = 1;
                     }
                 }
             }
         }
         if (!empty($installation_summery_list)) {
             foreach ($installation_summery_list as $installation) {
                 $sub_total = $installation['price'] * $installation['quantity'];
                 $total_quote_price_installation += $sub_total;
             }
         }
     }
     $total_quote_price = $total_quote_price_cabinet + $total_quote_price_installation;
     if ($quote['Quote']['delivery'] == '5 – 10 Weeks Delivery') {
         $total_quote_price_discount = $total_quote_price * 0.25;
         // 25% discount for late delivery
     }
     $total_quote_price -= $total_quote_price_discount;
     return $total_quote_price;
 }
Beispiel #4
0
     break;
 case 'misc':
     required_post(array('misc_action'));
     switch ($_POST['misc_action']) {
         case 'approve_all':
             $quotes = $db->get_results('SELECT permaid FROM quotes WHERE status = \'pending\' AND db = :db', array(array(':db', $settings->db, PDO::PARAM_STR)));
             if (!$quotes) {
                 die('no_pending_quotes');
                 break;
             }
             require classes_dir . 'quote.php';
             echo 'Approving: ';
             foreach ($quotes as $quoteid) {
                 $quote = new Quote();
                 $quote->permaid = $quoteid['permaid'];
                 if (!$quote->read()) {
                     continue;
                 }
                 printf('%s ', $quote->permaid);
                 $push->hit(sprintf(_('New quote: %s - %s'), $quote->permalink, $quote->excerpt));
                 $quote->status = 'approved';
                 $quote->save(false);
                 unset($quote);
             }
             break;
         case 'privacy_login':
             $db->query('UPDATE sites SET privacy_level = 2 WHERE db = :db', array(array(':db', $settings->db, PDO::PARAM_STR)));
             break;
         case 'privacy_hide_all':
             $db->query('UPDATE sites SET privacy_level = 1 WHERE db = :db', array(array(':db', $settings->db, PDO::PARAM_STR)));
             break;
Beispiel #5
0
                sanitize($quote);
                $quotes[] = $quote;
            }
            out(array('results' => array('success' => 1, 'data' => $quotes, 'count' => $search->count)));
        } else {
            out(array('results' => array('success' => 1, 'error' => 'no_quotes_found', 'count' => 0)));
        }
        break;
    case 'delete':
        required_post(array('permaid'));
        if (check_key() === null) {
            out(array('results' => array('success' => 0, 'error' => 'access_denied')));
        }
        $quote = new Quote();
        $quote->permaid = $_POST['permaid'];
        if ($quote->read()) {
            $quote->status = 'deleted';
            $quote->save(false);
            $session->log(sprintf('JSON API delete successful: %s - %s', $quote->permaid, $params[1]));
            out(array('results' => array('success' => 1)));
        }
        out(array('results' => array('success' => 0, 'error' => 'no_such_quote')));
        break;
    case 'topic':
        required_post(array('topic'));
        if (check_key() === null) {
            out(array('results' => array('success' => 0, 'error' => 'access_denied')));
        }
        $returna = $db->query('INSERT INTO topics (timestamp, nick, text, db, ip, user_agent)
				VALUES (:timestamp, :nick, :text, :db, :ip, :user_agent)', array(array(':timestamp', time(), PDO::PARAM_INT), array(':nick', isset($_POST['nick']) ? $_POST['nick'] : '', PDO::PARAM_STR), array(':text', $_POST['topic'], PDO::PARAM_STR), array(':db', $settings->db, PDO::PARAM_STR), array(':ip', $session->ip, PDO::PARAM_STR), array(':user_agent', isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '', PDO::PARAM_STR)));
        $returnb = $db->query('UPDATE sites SET topic_text = :topic_text, topic_nick = :topic_nick WHERE db = :db', array(array(':topic_text', $_POST['topic'], PDO::PARAM_STR), array(':topic_nick', isset($_POST['nick']) ? $_POST['nick'] : '', PDO::PARAM_STR), array(':db', $settings->db, PDO::PARAM_STR)));
Beispiel #6
0
<div class="container white">
  <div class="content left">
    <table class="data">
      <thead>
        <th>Date</th>
        <th>Expires</th>
        <th>Company</th>
        <th>Contact/Email/Key</th>
        <th>Items</th>
        <th>Views</th>
      </thead>
      <tbody>
        <?php 
$quotes = Quote::read(['*'], FALSE, ['created > CURRENT_DATE - INTERVAL 2 MONTH'], 'created DESC');
foreach ($quotes as $quote) {
    $expiration = Util2::future_date(substr($quote['created'], 0, 10), 60);
    $items = QuoteItem::read_items($quote['id']);
    $views = QuoteView::read_views($quote['id']);
    $item_details = [];
    foreach ($items as $item) {
        $item_details[] = $item['quantity'] . ' ' . $item['part'];
    }
    $view_details = [];
    foreach ($views as $view) {
        $view_details[] = $view['created'] . ' ' . $view['ip'];
    }
    echo '<tr>';
    echo '<td>' . htmlspecialchars($quote['created']) . '</td>';
    echo '<td>' . htmlspecialchars($expiration) . '</td>';
    echo '<td>' . htmlspecialchars($quote['company']) . '</td>';
    echo '<td>' . htmlspecialchars($quote['technical_name']) . '<br/>';
Beispiel #7
0
	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU Affero General Public License as
	published by the Free Software Foundation, either version 3 of the
	License, or (at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU Affero General Public License for more details.

	You should have received a copy of the GNU Affero General Public License
	along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
require classes_dir . 'quote.php';
if (isset($params[0]) && strlen($params[0]) == 4) {
    $quote = new Quote();
    $quote->permaid = $params[0];
} else {
    $html->do_sysmsg(_('Page not found'), null, 404);
}
if (!$quote->read() || $session->level == 'anonymous' && $quote->status != 'approved' || $quote->status == 'deleted') {
    $html->do_sysmsg(_('Page not found'), null, 404);
}
if (isset($params[1]) && $params[1] == $quote->password) {
    $quote->forceshow = true;
} elseif (isset($params[1]) && $params[1] != $quote->password) {
    redir(sprintf('%s%s', $settings->base_url, $quote->permaid));
}
$html->do_header(sprintf(_('Quote #%s'), $quote->permaid));
$quote->output();
$html->do_footer();