Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Подскажите начинающему  (Прочитано 21178 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Sega063
Интересующийся

ru
Offline Offline

« : 14-06-2011 09:42 » 

Доброго времени суток, у меня такая проблемка, хочу написать модуль на престу, для интернет магазина, что бы мои клиенты могли выбирать время к которому им доставить товар, но вот как его написать, у меня это стало броблемой. Нашёл форму, где они выбирают часы и минуты, но вот как сделать что бы это время записывалось, и привязывалось к каждому клиенту по отдельности и выводилось в админке на заказе. Подскажите пожалуйста, если не трудно по подробнее, я просто ещё новичёк

Добавлено через 1 минуту и 1 секунду:
вот форма. она наверное подойдёт?


Код:
<form name="chas" id="chas" size="1">
Выберите время:
  <select name="language" size="1">
  <option selected value="на текущее">
  <option value="10 часов">10 часов
  <option value="11 часов">11 часов
  </select>

<select name="min" id="min" size="1">
 <option value="на текущее" selected>
 <option value="1">1 минута
 <option value="2">2 минуты
 <option value="3">3 минуты
 <option value="4">4 минут
</select>
</form>

Добавлено через 7 минут и 43 секунды:
картинка, что бы наглядно было видно
« Последнее редактирование: 14-06-2011 13:37 от RXL » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 14-06-2011 09:59 » 

Код:
<select name="hours">
  <option selected value="на текущее">
  <option value="10">10 часов</option>
  <option value="11">11 часов</option>
  </select>
<select name="min" id="min" size="1">
 <option value="-1" selected="selected">на текущее</option>
 <option value="1">1 минута</option>
 <option value="2">2 минуты</option>
 <option value="3">3 минуты</option>
 <option value="4">4 минут</option>
</select>
Может так?

Результат запроса на каком языке обрабатывается?
Как хранятся данные?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sega063
Интересующийся

ru
Offline Offline

« Ответ #2 : 14-06-2011 10:14 » 

все данные храняться в базе данных

Добавлено через 1 минуту и 26 секунд:
Вот код полносстью всей траницы, куда хочу вставить эту форму выбора

Код:
<script type="text/javascript">
<!--
var baseDir = '{$base_dir_ssl}';
-->
</script>
<script type="text/javascript" src="{$js_dir}layer.js"></script>
<script type="text/javascript" src="{$content_dir}js/conditions.js"></script>
{if !$virtual_cart && $giftAllowed && $cart->gift == 1}
<script type="text/javascript">{literal}
// <![CDATA[
    $('document').ready( function(){
        $('#gift_div').toggle('slow');
    });
//]]>
{/literal}</script>
{/if}
{include file=$tpl_dir./thickbox.tpl}

{capture name=path}{l s='Shipping'}{/capture}
{include file=$tpl_dir./breadcrumb.tpl}

<h2>{l s='Shipping'}</h2>

{assign var='current_step' value='shipping'}
{include file=$tpl_dir./order-steps.tpl}

{include file=$tpl_dir./errors.tpl}

Выберите время

<select name="hours">
  <option selected value="на текущее">
  <option value="10">10 часов</option>
  <option value="11">11 часов</option>
  </select>
<select name="min" id="min" size="1">
 <option value="-1" selected="selected">на текущее</option>
 <option value="1">1 минута</option>
 <option value="2">2 минуты</option>
 <option value="3">3 минуты</option>
 <option value="4">4 минут</option>
</select>


{include file=$tpl_dir./errors.tpl}


<form id="form" action="{$base_dir_ssl}order.php" method="post" onsubmit="return acceptCGV('{l s='Please accept the terms of service before the next step.' js=1}');">

{if $conditions}
<h3 class="condition_title">{l s='Terms of service'}</h3>
<p class="checkbox">
<input type="checkbox" name="cgv" id="cgv" value="1" {if $checkedTOS}checked="checked"{/if} />
<label for="cgv">{l s='I agree with the terms of service and I adhere to them unconditionally.'}</label> <a href="{$link_conditions}" class="thickbox">{l s='(read)'}</a>
</p>
{/if}

{if $virtual_cart}
<input id="input_virtual_carrier" class="hidden" type="hidden" name="id_carrier" value="0" />
{else}
<h3 class="carrier_title">{l s='Choose your delivery method'}</h3>
{if $recyclablePackAllowed}
<p class="checkbox">
<input type="checkbox" name="recyclable" id="recyclable" value="1" {if $recyclable == 1}checked="checked"{/if} />
<label for="recyclable">{l s='I agree to receive my order in recycled packaging'}.</label>
</p>
{/if}

{if $carriers && count($carriers)}
<div class="table_block"><br />
<table class="std">
<thead>
<tr>
<th class="carrier_action first_item"></th>
<th class="carrier_name item">{l s='Carrier'}</th>
<th class="carrier_infos item">{l s='Information'}</th>
<th class="carrier_price last_item">{l s='Price'}</th>
</tr>
</thead>
<tbody>
{foreach from=$carriers item=carrier name=myLoop}
<tr class="{if $smarty.foreach.myLoop.first}first_item{elseif $smarty.foreach.myLoop.last}last_item{/if} {if $smarty.foreach.myLoop.index % 2}alternate_item{else}item{/if}">
<td class="carrier_action radio">
<input type="radio" name="id_carrier" value="{$carrier.id_carrier|intval}" id="id_carrier{$carrier.id_carrier|intval}" {if $carrier.id_carrier == $checked || ($checked == 0 && $i == 0) || ($carriers|@sizeof == 1) || $default_carrier == $carrier.id_carrier}checked="checked"{/if} />
</td>
<td class="carrier_name">
<label for="id_carrier{$carrier.id_carrier|intval}">
{if $carrier.img}<img src="{$carrier.img|escape:'htmlall':'UTF-8'}" alt="{$carrier.name|escape:'htmlall':'UTF-8'}" />{else}{$carrier.name|escape:'htmlall':'UTF-8'}{/if}
</label>
</td>
<td class="carrier_infos">{$carrier.delay|escape:'htmlall':'UTF-8'}</td>
<td class="carrier_price">
{if $carrier.price}
<span class="price">
{if $priceDisplay == 1}{convertPrice price=$carrier.price_tax_exc}{else}{convertPrice price=$carrier.price}{/if}
</span>
{if $use_taxes}{if $priceDisplay == 1} {l s='(tax excl.)'}{else} {l s='(tax incl.)'}{/if}{/if}
{else}
{l s='Free!'}
{/if}
</td>
</tr>
{/foreach}
{$HOOK_EXTRACARRIER}
</tbody>
</table>
<div style="display: none;" id="extra_carrier"></div>
</div>
{else}
<p class="warning">{l s='There are no carriers available that will deliver to this address!'}</td></tr>
{/if}

{if $giftAllowed}
<h3 class="gift_title">{l s='Gift'}</h3>
<p class="checkbox">
<input type="checkbox" name="gift" id="gift" value="1" {if $cart->gift == 1}checked="checked"{/if} onclick="$('#gift_div').toggle('slow');" />
<label for="gift">{l s='I would like the order to be gift-wrapped.'}</label>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{if $gift_wrapping_price > 0}
({l s='Additional cost of'}
<span class="price">
{if $priceDisplay == 1}{convertPrice price=$total_wrapping_tax_exc}{else}{convertPrice price=$total_wrapping}{/if}
</span>
{if $use_taxes}{if $priceDisplay == 1} {l s='(tax excl.)'}{else} {l s='(tax incl.)'}{/if}{/if})
{/if}
</p>
<p id="gift_div" class="textarea">
<label for="gift_message">{l s='If you wish, you can add a note to the gift:'}</label>
<textarea rows="5" cols="35" id="gift_message" name="gift_message">{$cart->gift_message|escape:'htmlall':'UTF-8'}</textarea>
</p>
{/if}
{/if}

<p class="cart_navigation submit">
<input type="hidden" name="step" value="3" />
<input type="hidden" name="back" value="{$back}" />
<a href="{$base_dir_ssl}order.php?step=1{if $back}&back={$back}{/if}" title="{l s='Previous'}" class="button">&laquo; {l s='Previous'}</a>
<input type="submit" name="processCarrier" value="{l s='Next'} &raquo;" class="exclusive" />
</p>
</form>
« Последнее редактирование: 14-06-2011 13:37 от RXL » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 14-06-2011 10:34 » 

Это ты показал шаблон, но в шаблоне результат запроса не обрабатывается, нужно показать скрипт обработки запроса
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sega063
Интересующийся

ru
Offline Offline

« Ответ #4 : 14-06-2011 12:19 » 

Тогда вот наверно скрипт обработки:
Код:
<?php

/* SSL Management */
$useSSL true;

include_once(
dirname(__FILE__).&#39;/config/config.inc.php&#39;);
/* Step number is needed on some modules */
$step intval(Tools::getValue(&#39;step&#39;));
include_once(dirname(__FILE__).&#39;/init.php&#39;);

/* Disable some cache related bugs on the cart/order */
header(&#39;Cache-Control: no-cache, must-revalidate&#39;);
header(&#39;Expires: Mon, 26 Jul 1997 05:00:00 GMT&#39;);

$errors = array();

/* Class FreeOrder to use PaymentModule (abstract class, cannot be instancied) */
class FreeOrder extends PaymentModule {}

/* If some products have disappear */
if (!$cart->checkQuantities())
{
$step 0;
$errors[] = Tools::displayError(&#39;An item in your cart is no longer available, you cannot proceed with your order&#39;);
}

/* Check minimal account */
$orderTotal $cart->getOrderTotal();

$orderTotalDefaultCurrency Tools::convertPrice($cart->getOrderTotal(true1), Currency::getCurrency(intval(Configuration::get(&#39;PS_CURRENCY_DEFAULT&#39;))));
$minimalPurchase floatval(Configuration::get(&#39;PS_PURCHASE_MINIMUM&#39;));
if ($orderTotalDefaultCurrency $minimalPurchase)
{
$step 0;
$errors[] = Tools::displayError(&#39;A minimum purchase total of&#39;).&#39; &#39;.Tools::displayPrice($minimalPurchase, Currency::getCurrency(intval($cart->id_currency))).
&#39; &#39;.Tools::displayError(&#39;is required in order to validate your order&#39;);
}

if (!
$cookie->isLogged() AND in_array($step, array(123)))
Tools::redirect(&#39;authentication.php?back=order.php?step=&#39;.$step);

$smarty->assign(&#39;back&#39;, Tools::safeOutput(Tools::getValue(&#39;back&#39;)));

if ($cart->nbProducts())
{
/* Manage discounts */
if ((Tools::isSubmit(&#39;submitDiscount&#39;) OR Tools::isSubmit(&#39;submitDiscount&#39;)) AND Tools::getValue(&#39;discount_name&#39;))
{
$discountName Tools::getValue(&#39;discount_name&#39;);
if (!Validate::isDiscountName($discountName))
$errors[] = Tools::displayError(&#39;voucher name not valid&#39;);
else
{
$discount = new Discount(intval(Discount::getIdByName($discountName)));
if (is_object($discount) AND $discount->id)
{
if ($tmpError $cart->checkDiscountValidity($discount$cart->getDiscounts(), $cart->getOrderTotal(), $cart->getProducts(), true))
$errors[] = $tmpError;
}
else
$errors[] = Tools::displayError(&#39;voucher name not valid&#39;);
if (!sizeof($errors))
{
$cart->addDiscount(intval($discount->id));
Tools::redirect(&#39;order.php&#39;);
}
else
{
$smarty->assign(array(
&#39;errors&#39; => $errors,
&#39;discount_name&#39; => Tools::safeOutput($discountName)));
}
}
}
elseif (isset($_GET[&#39;deleteDiscount&#39;]) AND Validate::isUnsignedId($_GET[&#39;deleteDiscount&#39;]))
{
$cart->deleteDiscount(intval($_GET[&#39;deleteDiscount&#39;]));
Tools::redirect(&#39;order.php&#39;);
}

/* Is there only virtual product in cart */
if ($isVirtualCart $cart->isVirtualCart())
setNoCarrier();
$smarty->assign(&#39;virtual_cart&#39;, $isVirtualCart);

/* 4 steps to the order */
switch (intval($step))
{
case 1:
displayAddress();
break;
case 2:
if(Tools::isSubmit(&#39;processAddress&#39;))
processAddress();
autoStep(2);
displayCarrier();
break;
case 3:
if(Tools::isSubmit(&#39;processCarrier&#39;))
processCarrier();
autoStep(3);
checkFreeOrder();
displayPayment();
break;
default:
$smarty->assign(&#39;errors&#39;, $errors);
displaySummary();
break;
}
}
else
{
/* Default page */
$smarty->assign(&#39;empty&#39;, 1);
Tools::safePostVars();
include_once(dirname(__FILE__).&#39;/header.php&#39;);
$smarty->display(_PS_THEME_DIR_.&#39;shopping-cart.tpl&#39;);
}

include(
dirname(__FILE__).&#39;/footer.php&#39;);

/* Order process controller */
function autoStep($step)
{
global $cart$isVirtualCart;

if ($step >= AND (!$cart->id_address_delivery OR !$cart->id_address_invoice))
Tools::redirect(&#39;order.php?step=1&#39;);
$delivery = new Address(intval($cart->id_address_delivery));
$invoice = new Address(intval($cart->id_address_invoice));
if ($delivery->deleted OR $invoice->deleted)
{
if ($delivery->deleted)
unset($cart->id_address_delivery);
if ($invoice->deleted)
unset($cart->id_address_invoice);
Tools::redirect(&#39;order.php?step=1&#39;);
}
elseif ($step >= AND !$cart->id_carrier AND !$isVirtualCart)
Tools::redirect(&#39;order.php?step=2&#39;);
}

/* Bypass payment step if total is 0 */
function checkFreeOrder()
{
global $cart;

if ($cart->getOrderTotal() <= 0)
{
$order = new FreeOrder();
$order->validateOrder(intval($cart->id), _PS_OS_PAYMENT_0Tools::displayError(&#39;Free order&#39;, false));
Tools::redirect(&#39;history.php&#39;);
}
}

/**
 * Set id_carrier to 0 (no shipping price)
 *
 */
function setNoCarrier()
{
global $cart;
$cart->id_carrier 0;
$cart->update();
}

/*
 * Manage address
 */
function processAddress()
{
global $cart$smarty;
$errors = array();

if (!isset($_POST[&#39;id_address_delivery&#39;]) OR !Address::isCountryActiveById(intval($_POST[&#39;id_address_delivery&#39;])))
$errors[] = &#39;this address is not in a valid area&#39;;
else
{
$cart->id_address_delivery intval(Tools::getValue(&#39;id_address_delivery&#39;));
$cart->id_address_invoice Tools::isSubmit(&#39;same&#39;) ? $cart->id_address_delivery : intval(Tools::getValue(&#39;id_address_invoice&#39;));
if (!$cart->update())
$errors[] = Tools::displayError(&#39;an error occured while updating your cart&#39;);

if (Tools::isSubmit(&#39;message&#39;) AND !empty($_POST[&#39;message&#39;]))
{
if (!Validate::isMessage($_POST[&#39;message&#39;]))
$errors[] = Tools::displayError(&#39;invalid message&#39;);
elseif ($oldMessage Message::getMessageByCartId(intval($cart->id)))
{
$message = new Message(intval($oldMessage[&#39;id_message&#39;]));
$message->message htmlentities($_POST[&#39;message&#39;], ENT_COMPAT, &#39;UTF-8&#39;);
$message->update();
}
else
{
$message = new Message();
$message->message htmlentities($_POST[&#39;message&#39;], ENT_COMPAT, &#39;UTF-8&#39;);
$message->id_cart intval($cart->id);
$message->id_customer intval($cart->id_customer);
$message->add();
}
}
}
if (sizeof($errors))
{
if (Tools::getValue(&#39;ajax&#39;))
die(&#39;{\&#39;hasError\&#39; : true, errors : [\&#39;&#39;.implode(&#39;\&#39;,\&#39;&#39;, $errors).&#39;\&#39;]}&#39;);
$smarty->assign(&#39;errors&#39;, $errors);
displayAddress();
include_once(dirname(__FILE__).&#39;/footer.php&#39;);
exit;
}
if (Tools::getValue(&#39;ajax&#39;))
die(true);
}

/* Carrier step */
function processCarrier()
{
global $cart$smarty$isVirtualCart$orderTotal;

$errors = array();

$cart->recyclable = (isset($_POST[&#39;recyclable&#39;]) AND !empty($_POST[&#39;recyclable&#39;])) ? 1 : 0;

if (isset($_POST[&#39;gift&#39;]) AND !empty($_POST[&#39;gift&#39;]))
{
  if (!Validate::isMessage($_POST[&#39;gift_message&#39;]))
$errors[] = Tools::displayError(&#39;invalid gift message&#39;);
else
{
$cart->gift 1;
$cart->gift_message strip_tags($_POST[&#39;gift_message&#39;]);
}
}
else
$cart->gift 0;

$address = new Address(intval($cart->id_address_delivery));
if (!Validate::isLoadedObject($address))
die(Tools::displayError());
if (!$id_zone Address::getZoneById($address->id))
$errors[] = Tools::displayError(&#39;no zone match with your address&#39;);
if (isset($_POST[&#39;id_carrier&#39;]) AND Validate::isInt($_POST[&#39;id_carrier&#39;]) AND sizeof(Carrier::checkCarrierZone(intval($_POST[&#39;id_carrier&#39;]), intval($id_zone))))
$cart->id_carrier intval($_POST[&#39;id_carrier&#39;]);
elseif (!$isVirtualCart)
$errors[] = Tools::displayError(&#39;invalid carrier or no carrier selected&#39;);

$cart->update();

if (sizeof($errors))
{
$smarty->assign(&#39;errors&#39;, $errors);
displayCarrier();
include(dirname(__FILE__).&#39;/footer.php&#39;);
exit;
}
$orderTotal $cart->getOrderTotal();
}

/* Address step */
function displayAddress()
{
global $smarty$cookie$cart;

if (!Customer::getAddressesTotalById(intval($cookie->id_customer)))
Tools::redirect(&#39;address.php?back=order.php?step=1&#39;);
$customer = new Customer(intval($cookie->id_customer));
if (Validate::isLoadedObject($customer))
{
/* Getting customer addresses */
$customerAddresses $customer->getAddresses(intval($cookie->id_lang));
$smarty->assign(&#39;addresses&#39;, $customerAddresses);

/* Setting default addresses for cart */
if ((!isset($cart->id_address_delivery) OR empty($cart->id_address_delivery)) AND sizeof($customerAddresses))
{
$cart->id_address_delivery intval($customerAddresses[0][&#39;id_address&#39;]);
$update 1;
}
if ((!isset($cart->id_address_invoice) OR empty($cart->id_address_invoice)) AND sizeof($customerAddresses))
{
$cart->id_address_invoice intval($customerAddresses[0][&#39;id_address&#39;]);
$update 1;
}
/* Update cart addresses only if needed */
if (isset($update) AND $update)
$cart->update();

/* If delivery address is valid in cart, assign it to Smarty */
if (isset($cart->id_address_delivery))
{
$deliveryAddress = new Address(intval($cart->id_address_delivery));
if (Validate::isLoadedObject($deliveryAddress) AND ($deliveryAddress->id_customer == $customer->id))
$smarty->assign(&#39;delivery&#39;, $deliveryAddress);
}

/* If invoice address is valid in cart, assign it to Smarty */
if (isset($cart->id_address_invoice))
{
$invoiceAddress = new Address(intval($cart->id_address_invoice));
if (Validate::isLoadedObject($invoiceAddress) AND ($invoiceAddress->id_customer == $customer->id))
$smarty->assign(&#39;invoice&#39;, $invoiceAddress);
}
}
if ($oldMessage Message::getMessageByCartId(intval($cart->id)))
$smarty->assign(&#39;oldMessage&#39;, $oldMessage[&#39;message&#39;]);
$smarty->assign(&#39;cart&#39;, $cart);

Tools::safePostVars();
include_once(dirname(__FILE__).&#39;/header.php&#39;);
$smarty->display(_PS_THEME_DIR_.&#39;order-address.tpl&#39;);
}

/* Carrier step */
function displayCarrier()
{
global $smarty$cart$cookie$defaultCountry$link;

$address = new Address(intval($cart->id_address_delivery));
$id_zone Address::getZoneById(intval($address->id));
if (isset($cookie->id_customer))
$customer = new Customer(intval($cookie->id_customer));
else
die(Tools::displayError($this->l(&#39;Hack attempt: No customer&#39;)));
$result Carrier::getCarriers(intval($cookie->id_lang), truefalseintval($id_zone), $customer->getGroups());
if (!$result)
$result Carrier::getCarriers(intval($cookie->id_lang), truefalseintval($id_zone));
$resultsArray = array();
foreach ($result AS $k => $row)
{
$carrier = new Carrier(intval($row[&#39;id_carrier&#39;]));

// Get only carriers that are compliant with shipping method
if ((Configuration::get(&#39;PS_SHIPPING_METHOD&#39;) AND $carrier->getMaxDeliveryPriceByWeight($id_zone) === false)
OR (!Configuration::get(&#39;PS_SHIPPING_METHOD&#39;) AND $carrier->getMaxDeliveryPriceByPrice($id_zone) === false))
{
unset($result[$k]);
continue ;
}

// If out-of-range behavior carrier is set on "Desactivate carrier"
if ($row[&#39;range_behavior&#39;])
{
// Get id zone
        if (isset($cart->id_address_delivery) AND $cart->id_address_delivery)
$id_zone Address::getZoneById(intval($cart->id_address_delivery));
else
$id_zone intval($defaultCountry->id_zone);

// Get only carriers that have a range compatible with cart
if ((Configuration::get(&#39;PS_SHIPPING_METHOD&#39;) AND (!Carrier::checkDeliveryPriceByWeight($row[&#39;id_carrier&#39;], $cart->getTotalWeight(), $id_zone)))
OR (!Configuration::get(&#39;PS_SHIPPING_METHOD&#39;) AND (!Carrier::checkDeliveryPriceByPrice($row[&#39;id_carrier&#39;], $cart->getOrderTotal(true, 4), $id_zone))))
{
unset($result[$k]);
continue ;
}
}
$row[&#39;name&#39;] = (strval($row[&#39;name&#39;]) != &#39;0&#39; ? $row[&#39;name&#39;] : Configuration::get(&#39;PS_SHOP_NAME&#39;));
$row[&#39;price&#39;] = $cart->getOrderShippingCost(intval($row[&#39;id_carrier&#39;]));
$row[&#39;price_tax_exc&#39;] = $cart->getOrderShippingCost(intval($row[&#39;id_carrier&#39;]), false);
$row[&#39;img&#39;] = file_exists(_PS_SHIP_IMG_DIR_.intval($row[&#39;id_carrier&#39;]).&#39;.jpg&#39;) ? _THEME_SHIP_DIR_.intval($row[&#39;id_carrier&#39;]).&#39;.jpg&#39; : &#39;&#39;;
$resultsArray[] = $row;
}

// Wrapping fees
$wrapping_fees floatval(Configuration::get(&#39;PS_GIFT_WRAPPING_PRICE&#39;));
$wrapping_fees_tax = new Tax(intval(Configuration::get(&#39;PS_GIFT_WRAPPING_TAX&#39;)));
$wrapping_fees_tax_inc $wrapping_fees * (+ ((floatval($wrapping_fees_tax->rate) / 100)));

if (Validate::isUnsignedInt($cart->id_carrier) AND $cart->id_carrier)
{
$carrier = new Carrier(intval($cart->id_carrier));
if ($carrier->active AND !$carrier->deleted)
$checked intval($cart->id_carrier);
}
$cms = new CMS(3intval($cookie->id_lang));
$link_conditions $link->getCMSLink($cms$cms->link_rewrite);
if (!strpos($link_conditions, &#39;?&#39;))
$link_conditions .= &#39;?content_only=1&TB_iframe=true&width=450&height=500&thickbox=true&#39;;
else
$link_conditions .= &#39;&content_only=1&TB_iframe=true&width=450&height=500&thickbox=true&#39;;
if (!isset($checked) OR intval($checked) == 0)
$checked intval(Configuration::get(&#39;PS_CARRIER_DEFAULT&#39;));
$smarty->assign(array(
&#39;checkedTOS&#39; => intval($cookie->checkedTOS),
&#39;recyclablePackAllowed&#39; => intval(Configuration::get(&#39;PS_RECYCLABLE_PACK&#39;)),
&#39;giftAllowed&#39; => intval(Configuration::get(&#39;PS_GIFT_WRAPPING&#39;)),
&#39;conditions&#39; => intval(Configuration::get(&#39;PS_CONDITIONS&#39;)),
&#39;link_conditions&#39; => $link_conditions,
&#39;recyclable&#39; => intval($cart->recyclable),
&#39;gift_wrapping_price&#39; => floatval(Configuration::get(&#39;PS_GIFT_WRAPPING_PRICE&#39;)),
&#39;carriers&#39; => $resultsArray,
&#39;default_carrier&#39; => intval(Configuration::get(&#39;PS_CARRIER_DEFAULT&#39;)),
&#39;HOOK_EXTRACARRIER&#39; => Module::hookExec(&#39;extraCarrier&#39;, array(&#39;address&#39; => $address)),
&#39;checked&#39; => intval($checked),
&#39;total_wrapping&#39; => Tools::convertPrice($wrapping_fees_tax_inc, new Currency(intval($cookie->id_currency))),
&#39;total_wrapping_tax_exc&#39; => Tools::convertPrice($wrapping_fees, new Currency(intval($cookie->id_currency)))));
Tools::safePostVars();
$css_files = array(__PS_BASE_URI__.&#39;css/thickbox.css&#39; => &#39;all&#39;);
$js_files = array(__PS_BASE_URI__.&#39;js/jquery/thickbox-modified.js&#39;);
include_once(dirname(__FILE__).&#39;/header.php&#39;);
$smarty->display(_PS_THEME_DIR_.&#39;order-carrier.tpl&#39;);
}

/* Payment step */
function displayPayment()
{
global $smarty$cart$currency$cookie$orderTotal;

// Redirect instead of displaying payment modules if any module are grefted on
Hook::backBeforePayment(strval(Tools::getValue(&#39;back&#39;)));

/* We may need to display an order summary */
$smarty->assign($cart->getSummaryDetails());

$cookie->checkedTOS = &#39;1&#39;;
$smarty->assign(array(
&#39;HOOK_PAYMENT&#39; => Module::hookExecPayment(), 
&#39;total_price&#39; => floatval($orderTotal),
&#39;taxes_enabled&#39; => intval(Configuration::get(&#39;PS_TAX&#39;))
));

Tools::safePostVars();
include_once(dirname(__FILE__).&#39;/header.php&#39;);
$smarty->display(_PS_THEME_DIR_.&#39;order-payment.tpl&#39;);
}

/* Confirmation step */
function displaySummary()
{
global $smarty$cart;

if (file_exists(_PS_SHIP_IMG_DIR_.intval($cart->id_carrier).&#39;.jpg&#39;))
$smarty->assign(&#39;carrierPicture&#39;, 1);
$summary $cart->getSummaryDetails();
$customizedDatas Product::getAllCustomizedDatas(intval($cart->id));
Product::addCustomizationPrice($summary[&#39;products&#39;], $customizedDatas);

if ($free_ship Tools::convertPrice(floatval(Configuration::get(&#39;PS_SHIPPING_FREE_PRICE&#39;)), new Currency(intval($cart->id_currency))))
{
$discounts $cart->getDiscounts();
$total_free_ship =  $free_ship - ($summary[&#39;total_products_wt&#39;] + $summary[&#39;total_discounts&#39;]);
foreach ($discounts as $discount)
if ($discount[&#39;id_discount_type&#39;] == 3)
{
$total_free_ship 0;
break ;
}
$smarty->assign(&#39;free_ship&#39;, $total_free_ship);
}
// for compatibility with 1.2 themes
foreach($summary[&#39;products&#39;] AS $key => $product)
$summary[&#39;products&#39;][$key][&#39;quantity&#39;] = $product[&#39;cart_quantity&#39;];
$smarty->assign($summary);
$token Tools::getToken(false);
$smarty->assign(array(
&#39;token_cart&#39; => $token,
&#39;isVirtualCart&#39; => $cart->isVirtualCart(),
&#39;productNumber&#39; => $cart->nbProducts(),
&#39;voucherAllowed&#39; => Configuration::get(&#39;PS_VOUCHERS&#39;),
&#39;HOOK_SHOPPING_CART&#39; => Module::hookExec(&#39;shoppingCart&#39;, $summary),
&#39;HOOK_SHOPPING_CART_EXTRA&#39; => Module::hookExec(&#39;shoppingCartExtra&#39;, $summary),
&#39;shippingCost&#39; => $cart->getOrderTotal(true, 5),
&#39;shippingCostTaxExc&#39; => $cart->getOrderTotal(false, 5),
&#39;customizedDatas&#39; => $customizedDatas,
&#39;CUSTOMIZE_FILE&#39; => _CUSTOMIZE_FILE_,
&#39;CUSTOMIZE_TEXTFIELD&#39; => _CUSTOMIZE_TEXTFIELD_,
&#39;lastProductAdded&#39; => $cart->getLastProduct()
));
Tools::safePostVars();
include_once(dirname(__FILE__).&#39;/header.php&#39;);
$smarty->display(_PS_THEME_DIR_.&#39;shopping-cart.tpl&#39;);
}

?>

« Последнее редактирование: 14-06-2011 13:36 от RXL » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 14-06-2011 13:25 » 

Sega063, пользуйся тегами [code] ... [/code] !
А то последуют кары. Это ж читать невозможно.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 14-06-2011 14:13 » 

Sega063, ты не то показываешь, зачем мне твой index.php?
В каком скрипте (части скрипта) происходит обработка запроса?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sega063
Интересующийся

ru
Offline Offline

« Ответ #7 : 14-06-2011 14:26 » 

обработка кода? Т.е. это то, где написанно действие, когда нажимаешь на кнопку, правильно? или я ошибаюсь? Просто я новичёк и заранее прошу прощния за тупые вопросы

Добавлено через 8 минут и 21 секунду:
Вроде бы нашёл, наверно это Краснею
Код:
<?php

/**
  * Orders class, Order.php
  * Orders management
  * @category classes
  *
  * @author PrestaShop <support@prestashop.com>
  * @copyright PrestaShop
  * @license http://www.opensource.org/licenses/osl-3.0.php Open-source licence 3.0
  * @version 1.3
  *
  */

class Order extends ObjectModel
{
/** @var integer Delivery address id */
public  $id_address_delivery;

/** @var integer Invoice address id */
public  $id_address_invoice;

/** @var integer Cart id */
public  $id_cart;

/** @var integer Currency id */
public  $id_currency;

/** @var integer Language id */
public  $id_lang;

/** @var integer Customer id */
public  $id_customer;

/** @var integer Carrier id */
public  $id_carrier;

/** @var string Secure key */
public $secure_key;

/** @var string Payment method id */
public  $payment;

/** @var string Payment module */
public  $module;

/** @var boolean Customer is ok for a recyclable package */
public $recyclable 1;

/** @var boolean True if the customer wants a gift wrapping */
public $gift 0;

/** @var string Gift message if specified */
public  $gift_message;

/** @var string Shipping number */
public  $shipping_number;

/** @var float Discounts total */
public  $total_discounts;

/** @var float Total to pay */
public  $total_paid;

/** @var float Total really paid */
public  $total_paid_real;

/** @var float Products total */
public  $total_products;

/** @var float Products total tax excluded */
public  $total_products_wt;

/** @var float Shipping total */
public  $total_shipping;

/** @var float Wrapping total */
public  $total_wrapping;

/** @var integer Invoice number */
public  $invoice_number;

/** @var integer Delivery number */
public  $delivery_number;

/** @var string Invoice creation date */
public  $invoice_date;

/** @var string Delivery creation date */
public  $delivery_date;

/** @var boolean Order validity (paid and not canceled) */
public  $valid;

/** @var string Object creation date */
public  $date_add;

/** @var string Object last modification date */
public  $date_upd;

protected $tables = array (&#39;orders&#39;);

protected $fieldsRequired = array(&#39;id_address_delivery&#39;, &#39;id_address_invoice&#39;, &#39;id_cart&#39;, &#39;id_currency&#39;, &#39;id_lang&#39;, &#39;id_customer&#39;, &#39;id_carrier&#39;, &#39;payment&#39;, &#39;total_paid&#39;, &#39;total_paid_real&#39;, &#39;total_products&#39;, &#39;total_products_wt&#39;);
protected $fieldsSize = array(&#39;payment&#39; => 32);
protected $fieldsValidate = array(
&#39;id_address_delivery&#39; => &#39;isUnsignedId&#39;,
&#39;id_address_invoice&#39; => &#39;isUnsignedId&#39;,
&#39;id_cart&#39; => &#39;isUnsignedId&#39;,
&#39;id_currency&#39; => &#39;isUnsignedId&#39;,
&#39;id_lang&#39; => &#39;isUnsignedId&#39;,
&#39;id_customer&#39; => &#39;isUnsignedId&#39;,
&#39;id_carrier&#39; => &#39;isUnsignedId&#39;,
&#39;secure_key&#39; => &#39;isMd5&#39;,
&#39;payment&#39; => &#39;isGenericName&#39;,
&#39;recyclable&#39; => &#39;isBool&#39;,
&#39;gift&#39; => &#39;isBool&#39;,
&#39;gift_message&#39; => &#39;isMessage&#39;,
&#39;total_discounts&#39; => &#39;isPrice&#39;,
&#39;total_paid&#39; => &#39;isPrice&#39;,
&#39;total_paid_real&#39; => &#39;isPrice&#39;,
&#39;total_products&#39; => &#39;isPrice&#39;,
&#39;total_products_wt&#39; => &#39;isPrice&#39;,
&#39;total_shipping&#39; => &#39;isPrice&#39;,
&#39;total_wrapping&#39; => &#39;isPrice&#39;,
&#39;shipping_number&#39; => &#39;isUrl&#39;
);

/* MySQL does not allow &#39;order&#39; for a table name */
protected  $table = &#39;orders&#39;;
protected  $identifier = &#39;id_order&#39;;
private $_taxCalculationMethod PS_TAX_EXC;

public function getFields()
{
parent::validateFields();

$fields[&#39;id_address_delivery&#39;] = intval($this->id_address_delivery);
$fields[&#39;id_address_invoice&#39;] = intval($this->id_address_invoice);
$fields[&#39;id_cart&#39;] = intval($this->id_cart);
$fields[&#39;id_currency&#39;] = intval($this->id_currency);
$fields[&#39;id_lang&#39;] = intval($this->id_lang);
$fields[&#39;id_customer&#39;] = intval($this->id_customer);
$fields[&#39;id_carrier&#39;] = intval($this->id_carrier);
$fields[&#39;secure_key&#39;] = pSQL($this->secure_key);
$fields[&#39;payment&#39;] = pSQL($this->payment);
$fields[&#39;module&#39;] = pSQL($this->module);
$fields[&#39;recyclable&#39;] = intval($this->recyclable);
$fields[&#39;gift&#39;] = intval($this->gift);
$fields[&#39;gift_message&#39;] = pSQL($this->gift_message);
$fields[&#39;shipping_number&#39;] = pSQL($this->shipping_number);
$fields[&#39;total_discounts&#39;] = floatval($this->total_discounts);
$fields[&#39;total_paid&#39;] = floatval($this->total_paid);
$fields[&#39;total_paid_real&#39;] = floatval($this->total_paid_real);
$fields[&#39;total_products&#39;] = floatval($this->total_products);
$fields[&#39;total_products_wt&#39;] = floatval($this->total_products_wt);
$fields[&#39;total_shipping&#39;] = floatval($this->total_shipping);
$fields[&#39;total_wrapping&#39;] = floatval($this->total_wrapping);
$fields[&#39;invoice_number&#39;] = intval($this->invoice_number);
$fields[&#39;delivery_number&#39;] = intval($this->delivery_number);
$fields[&#39;invoice_date&#39;] = pSQL($this->invoice_date);
$fields[&#39;delivery_date&#39;] = pSQL($this->delivery_date);
$fields[&#39;valid&#39;] = intval($this->valid) ? 1 : 0;
$fields[&#39;date_add&#39;] = pSQL($this->date_add);
$fields[&#39;date_upd&#39;] = pSQL($this->date_upd);

return $fields;
}

public function __construct($id NULL$id_lang NULL)
{
parent::__construct($id$id_lang);
if ($this->id_customer)
{
$customer = new Customer(intval($this->id_customer));
$this->_taxCalculationMethod Group::getPriceDisplayMethod(intval($customer->id_default_group));
}
else
$this->_taxCalculationMethod Group::getDefaultPriceDisplayMethod();
}

public function getTaxCalculationMethod()
{
return intval($this->_taxCalculationMethod);
}

/* Does NOT delete a product but "cancel" it (which means return/refund/delete it depending of the case) */
public function deleteProduct($order$orderDetail$quantity)
{
if (!$currentStatus intval($this->getCurrentState()))
return false;

if ($this->hasBeenDelivered())
{
if (!Configuration::get(&#39;PS_ORDER_RETURN&#39;))
die(Tools::displayError());
$orderDetail->product_quantity_return += intval($quantity);
return $orderDetail->update();
}
elseif ($this->hasBeenPaid())
{
$orderDetail->product_quantity_refunded += intval($quantity);
return $orderDetail->update();
}
return $this->_deleteProduct($orderDetailintval($quantity));
}

/* DOES delete the product */
private function _deleteProduct($orderDetail$quantity)
{
$unitPrice number_format($orderDetail->product_price * ($orderDetail->tax_rate 0.01), 2, &#39;.&#39;, &#39;&#39;);
$productPrice number_format($quantity $unitPrice2, &#39;.&#39;, &#39;&#39;);
$productPriceWithoutTax number_format($productPrice / ($orderDetail->tax_rate 0.01), 2, &#39;.&#39;, &#39;&#39;);

/* Update order */
$this->total_paid -= $productPrice;
$this->total_paid_real -= $productPrice;
$this->total_products -= $productPriceWithoutTax;
$this->total_products_wt -= $productPrice;

/* Prevent from floating precision issues (total_products has only 2 decimals) */
if ($this->total_products 0)
$this->total_products 0;

/* Prevent from floating precision issues */
$this->total_paid number_format($this->total_paid2, &#39;.&#39;, &#39;&#39;);
$this->total_paid_real number_format($this->total_paid_real2, &#39;.&#39;, &#39;&#39;);
$this->total_products number_format($this->total_products2, &#39;.&#39;, &#39;&#39;);
$this->total_products_wt number_format($this->total_products_wt2, &#39;.&#39;, &#39;&#39;);

/* Update order detail */
$orderDetail->product_quantity -= intval($quantity);

if (!$orderDetail->product_quantity)
{
if (!$orderDetail->delete())
return false;
if (count($this->getProductsDetail()) == 0)
{
global $cookie;
$history = new OrderHistory();
$history->id_order intval($this->id);
$history->changeIdOrderState(_PS_OS_CANCELED_intval($this->id));
if (!$history->addWithemail())
return false;
}
return $this->update();
}
return $orderDetail->update() AND $this->update();
}

public function deleteCustomization($id_customization$quantity$orderDetail)
{
if (!$currentStatus intval($this->getCurrentState()))
return false;

if ($this->hasBeenDelivered())
return Db::getInstance()->Execute(&#39;UPDATE `&#39;._DB_PREFIX_.&#39;customization` SET `quantity_returned` = `quantity_returned` + &#39;.intval($quantity).&#39; WHERE `id_customization` = &#39;.intval($id_customization).&#39; AND `id_cart` = &#39;.intval($this->id_cart).&#39; AND `id_product` = &#39;.intval($orderDetail->product_id));
elseif ($this->hasBeenPaid())
return Db::getInstance()->Execute(&#39;UPDATE `&#39;._DB_PREFIX_.&#39;customization` SET `quantity_refunded` = `quantity_refunded` + &#39;.intval($quantity).&#39; WHERE `id_customization` = &#39;.intval($id_customization).&#39; AND `id_cart` = &#39;.intval($this->id_cart).&#39; AND `id_product` = &#39;.intval($orderDetail->product_id));
if (!Db::getInstance()->Execute(&#39;UPDATE `&#39;._DB_PREFIX_.&#39;customization` SET `quantity` = `quantity` - &#39;.intval($quantity).&#39; WHERE `id_customization` = &#39;.intval($id_customization).&#39; AND `id_cart` = &#39;.intval($this->id_cart).&#39; AND `id_product` = &#39;.intval($orderDetail->product_id)))
return false;
if (!Db::getInstance()->Execute(&#39;DELETE FROM `&#39;._DB_PREFIX_.&#39;customization` WHERE `quantity` = 0&#39;))
return false;
return $this->_deleteProduct($orderDetailintval($quantity));
}

/**
 * Get order history
 *
 * @param integer $id_lang Language id
 *
 * @return array History entries ordered by date DESC
 */
public function getHistory($id_lang$id_order_state false$no_hidden false)
{
$id_lang $id_lang intval($id_lang) : &#39;o.`id_lang`&#39;;
$query = &#39;
SELECT oh.*, e.`firstname` AS employee_firstnamee.`lastname` AS employee_lastnameosl.`name` AS ostate_name
FROM `&#39;._DB_PREFIX_.&#39;orderso
LEFT JOIN `&#39;._DB_PREFIX_.&#39;order_historyoh ON o.`id_order` = oh.`id_order`
LEFT JOIN `&#39;._DB_PREFIX_.&#39;order_stateos ON os.`id_order_state` = oh.`id_order_state`
LEFT JOIN `&#39;._DB_PREFIX_.&#39;order_state_langosl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = &#39;.intval($id_lang).&#39;)
LEFT JOIN `&#39;._DB_PREFIX_.&#39;employeee ON e.`id_employee` = oh.`id_employee`
WHERE oh.id_order = &#39;.intval($this->id).&#39;
&#39;.($no_hidden ? &#39; AND os.hidden = 0&#39; : &#39;&#39;);
if (intval($id_order_state))
$query.= &#39; AND oh.`id_order_state` = &#39;.intval($id_order_state);
$query.= &#39; ORDER BY oh.date_add DESC, oh.id_order_history DESC&#39;;
return Db::getInstance()->ExecuteS($query);
}

public function getProductsDetail()
{
return Db::getInstance()->ExecuteS(&#39;
SELECT *
FROM `&#39;._DB_PREFIX_.&#39;order_detailod
WHERE od.`id_order` = &#39;.intval($this->id));
}

public function getLastMessage()
{
$sql = &#39;SELECT `message` FROM `&#39;._DB_PREFIX_.&#39;message` WHERE `id_order` = &#39;.intval($this->id).&#39; ORDER BY `id_message` desc&#39;;
$result Db::getInstance()->getRow($sql);
return $result[&#39;message&#39;];
}

public function getFirstMessage()
{
$sql = &#39;SELECT `message` FROM `&#39;._DB_PREFIX_.&#39;message` WHERE `id_order` = &#39;.intval($this->id).&#39; ORDER BY `id_message` asc&#39;;
$result Db::getInstance()->getRow($sql);
return $result[&#39;message&#39;];
}

/**
 * Get order products
 *
 * @return array Products with price, quantity (with taxe and without)
 */
public function getProducts($products false$selectedProducts false$selectedQty false)
{
if (!$products)
$products $this->getProductsDetail();
$resultArray = array();
foreach ($products AS $k => $row)
{
// Change qty if selected
if ($selectedQty)
{
$row[&#39;product_quantity&#39;] = 0;
foreach ($selectedProducts AS $key => $id_product)
if ($row[&#39;id_order_detail&#39;] == $id_product)
$row[&#39;product_quantity&#39;] = intval($selectedQty[$key]);
if (!$row[&#39;product_quantity&#39;])
continue ;
}
$price $row[&#39;product_price&#39;];
if ($this->_taxCalculationMethod == PS_TAX_EXC)
$price Tools::ps_round($price2);
$row[&#39;product_price_wt&#39;] = Tools::ps_round($price * (1 + ($row[&#39;tax_rate&#39;] * 0.01)), 2);
$row[&#39;total_wt&#39;] = $row[&#39;product_quantity&#39;] * $row[&#39;product_price_wt&#39;];
$row[&#39;total_price&#39;] = $row[&#39;product_quantity&#39;] * $row[&#39;product_price_wt&#39;];

/* Add information for virtual product */
if ($row[&#39;download_hash&#39;] AND !empty($row[&#39;download_hash&#39;]))
$row[&#39;filename&#39;] = ProductDownload::getFilenameFromIdProduct($row[&#39;product_id&#39;]);

/* Stock product */
$resultArray[intval($row[&#39;id_order_detail&#39;])] = $row;
}
return $resultArray;
}

/**
 * Count virtual products in order
 *
 * @return int number of virtual products
 */
public function getVirtualProducts()
{
$sql = &#39;
SELECT `product_id`, `download_hash`, `download_deadline`
FROM `&#39;._DB_PREFIX_.&#39;order_detailod
WHERE od.`id_order` = &#39;.intval($this->id).&#39;
AND `download_hash` <> \&#39;\&#39;&#39;;
return Db::getInstance()->ExecuteS($sql);
}

/**
* Check if order contains (only) virtual products
* @return boolean true if is a virtual order or false
*
*/
public function isVirtual($strict true)
{
$products $this->getProducts();
if (count($products) < 1)
return false;
$virtual false;
foreach ($products AS $product)
{
$pd ProductDownload::getIdFromIdProduct(intval($product[&#39;product_id&#39;]));
if ($pd AND Validate::isUnsignedInt($pd) AND $product[&#39;download_hash&#39;])
{
if ($strict === false)
return true;
$virtual &= true;
}
}
return $virtual;
}


/**
 * Get order discounts
 *
 * @return array Discounts with price and quantity
 */
public function getDiscounts()
{
return Db::getInstance()->ExecuteS(&#39;
SELECT *
FROM `&#39;._DB_PREFIX_.&#39;order_discount`
WHERE `id_order` = &#39;.intval($this->id));
}


static public function getDiscountsCustomer($id_customer$id_discount)
{
$result Db::getInstance()->ExecuteS(&#39;
SELECT od.id_discount FROM `&#39;._DB_PREFIX_.&#39;orderso
LEFT JOIN &#39;._DB_PREFIX_.&#39;order_discount od ON (od.id_order = o.id_order)
WHERE o.id_customer = &#39;.intval($id_customer).&#39;
AND od.id_discount = &#39;.intval($id_discount));

return Db::getInstance()->NumRows();
}

/**
 * Get current order state (eg. Awaiting payment, Delivered...)
 *
 * @return array Order state details
 */
public function getCurrentState()
{
$orderHistory OrderHistory::getLastOrderState($this->id);
if (!isset($orderHistory) OR !$orderHistory)
return false;
return $orderHistory->id;
}

/**
 * Get current order state name (eg. Awaiting payment, Delivered...)
 *
 * @return array Order state details
 */
public function getCurrentStateFull($id_lang)
{
return Db::getInstance()->getRow(&#39;
SELECT oh.`id_order_state`, osl.`name`, os.`logable`
FROM `&#39;._DB_PREFIX_.&#39;order_historyoh
LEFT JOIN `&#39;._DB_PREFIX_.&#39;order_state_langosl ON (osl.`id_order_state` = oh.`id_order_state`)
LEFT JOIN `&#39;._DB_PREFIX_.&#39;order_stateos ON (os.`id_order_state` = oh.`id_order_state`)
WHERE osl.`id_lang` = &#39;.intval($id_lang).&#39; AND oh.`id_order` = &#39;.intval($this->id).&#39;
ORDER BY `date_addDESC, `id_order_historyDESC&#39;);
}


public function isLogable()
{
return $this->valid;
}

public function hasBeenDelivered()
{
return sizeof($this->getHistory(intval($this->id_lang), _PS_OS_DELIVERED_));
}

public function hasBeenPaid()
{
return sizeof($this->getHistory(intval($this->id_lang), _PS_OS_PAYMENT_));
}

public function hasBeenShipped()
{
return sizeof($this->getHistory(intval($this->id_lang), _PS_OS_SHIPPING_));
}

public function isInPreparation()
{
return sizeof($this->getHistory(intval($this->id_lang), _PS_OS_PREPARATION_));
}

/**
 * Get customer orders
 *
 * @param integer $id_customer Customer id
 * @return array Customer orders
 */
static public function getCustomerOrders($id_customer)
    {
global $cookie;

    
$res Db::getInstance()->ExecuteS(&#39;
        
SELECT o.*, (
SELECT SUM(od.`product_quantity`)
FROM `&#39;._DB_PREFIX_.&#39;order_detailod
WHERE od.`id_order` = o.`id_order`)
AS nb_products
        FROM 
`&#39;._DB_PREFIX_.&#39;orderso
        LEFT JOIN 
`&#39;._DB_PREFIX_.&#39;order_detailod ON (od.`id_order` = o.`id_order`)
        
WHERE o.`id_customer` = &#39;.intval($id_customer).&#39;
        
GROUP BY o.`id_order`
        
ORDER BY o.`date_addDESC&#39;);
if (!$res)
return array();

foreach ($res AS $key => $val)
{
$res2 Db::getInstance()->ExecuteS(&#39;
SELECT os.`id_order_state`, osl.`name` AS order_stateos.`invoice`
FROM `&#39;._DB_PREFIX_.&#39;order_historyoh
LEFT JOIN `&#39;._DB_PREFIX_.&#39;order_stateos ON (os.`id_order_state` = oh.`id_order_state`)
INNER JOIN `&#39;._DB_PREFIX_.&#39;order_state_langosl ON (os.`id_order_state` = osl.`id_order_state` AND osl.`id_lang` = &#39;.intval($cookie->id_lang).&#39;)
WHERE oh.`id_order` = &#39;.intval($val[&#39;id_order&#39;]).&#39;
AND os.`hidden` != 1
ORDER BY oh.`date_addDESC
LIMIT 1
&#39;);
if ($res2)
$res[$key] = array_merge($res[$key], $res2[0]);
}
return $res;
    }

static public function getOrdersIdByDate($date_from$date_to$id_customer NULL$type NULL)
{
$sql = &#39;
SELECT `id_order`
FROM `&#39;._DB_PREFIX_.&#39;orders`
WHERE DATE_ADD(date_updINTERVAL -1 DAY) <= \&#39;&#39;.pSQL($date_to).&#39;\&#39; AND date_upd >= \&#39;&#39;.pSQL($date_from).&#39;\&#39;&#39;
.($type ? &#39; AND &#39;.pSQL(strval($type)).&#39;_number != 0&#39; : &#39;&#39;)
.($id_customer ? &#39; AND id_customer = &#39;.intval($id_customer) : &#39;&#39;);
$result Db::getInstance()->ExecuteS($sql);

$orders = array();
foreach ($result AS $order)
$orders[] = intval($order[&#39;id_order&#39;]);
return $orders;
}

static public function getOrdersIdInvoiceByDate($date_from$date_to$id_customer NULL$type NULL)
{
$result Db::getInstance()->ExecuteS(&#39;
SELECT `id_order`
FROM `&#39;._DB_PREFIX_.&#39;orders`
WHERE DATE_ADD(invoice_dateINTERVAL -1 DAY) <= \&#39;&#39;.pSQL($date_to).&#39;\&#39; AND invoice_date >= \&#39;&#39;.pSQL($date_from).&#39;\&#39;&#39;
.($type ? &#39; AND &#39;.pSQL(strval($type)).&#39;_number != 0&#39; : &#39;&#39;)
.($id_customer ? &#39; AND id_customer = &#39;.intval($id_customer) : &#39;&#39;).
&#39; ORDER BY invoice_date ASC&#39;);

$orders = array();
foreach ($result AS $order)
$orders[] = intval($order[&#39;id_order&#39;]);
return $orders;
}


    
/**
     * Get product total without taxes
     *
     * @return Product total with taxes
     */
    
public function getTotalProductsWithoutTaxes($products false)
{
return $this->total_products;
}

    
/**
     * Get product total with taxes
     *
     * @return Product total with taxes
     */
    
public function getTotalProductsWithTaxes($products false)
{
if ($this->total_products_wt != &#39;0.00&#39; AND !$products)
return $this->total_products_wt;

if (!$products)
$products $this->getProductsDetail();

$total 0;
foreach ($products AS $k => $row)
{
$qty intval($row[&#39;product_quantity&#39;]);
$total += floatval($row[&#39;product_price&#39;]) * $qty * (1 + $row[&#39;tax_rate&#39;] / 100);
}
$this->total_products_wt round($total2);
$this->update();
return $this->total_products_wt;
}

/**
 * Get customer orders number
 *
 * @param integer $id_customer Customer id
 * @return array Customer orders number
 */
static public function getCustomerNbOrders($id_customer)
    {
    
$result Db::getInstance()->getRow(&#39;
        
SELECT COUNT(`id_order`) AS nb
        FROM 
`&#39;._DB_PREFIX_.&#39;orders`
        
WHERE `id_customer` = &#39;.intval($id_customer));

return isset($result[&#39;nb&#39;]) ? $result[&#39;nb&#39;] : 0;
    
}

/**
 * Get an order by its cart id
 *
 * @param integer $id_cart Cart id
 * @return array Order details
 */
static public function getOrderByCartId($id_cart)
    {
    
$result Db::getInstance()->getRow(&#39;
        
SELECT `id_order`
        
FROM `&#39;._DB_PREFIX_.&#39;orders`
        
WHERE `id_cart` = &#39;.intval($id_cart));

return isset($result[&#39;id_order&#39;]) ? $result[&#39;id_order&#39;] : false;
    
}

    
/**
 * Add a discount to order
 *
 * @param integer $id_discount Discount id
 * @param string $name Discount name
 * @param float $value Discount value
 * @return boolean Query sucess or not
 */
public function addDiscount($id_discount$name$value)
{
return Db::getInstance()->AutoExecute(_DB_PREFIX_.&#39;order_discount&#39;, array(&#39;id_order&#39; => intval($this->id), &#39;id_discount&#39; => intval($id_discount), &#39;name&#39; => pSQL($name), &#39;value&#39; => floatval($value)), &#39;INSERT&#39;);
}

/**
 * Get orders number last week
 *
 * @return integer Orders number last week
 */
public static function getWeeklyOrders()
{
$result Db::getInstance()->getRow(&#39;
SELECT COUNT(`id_order`) as nb
FROM `&#39;._DB_PREFIX_.&#39;orders`
WHERE YEARWEEK(`date_add`) = YEARWEEK(NOW())&#39;);

return isset($result[&#39;nb&#39;]) ? $result[&#39;nb&#39;] : 0;
}

/**
 * Get sales amount last month
 *
 * @return float Sales amount last month
 */
public static function getMonthlySales()
{
$result Db::getInstance()->getRow(&#39;
SELECT SUM(`total_paid`) as nb
FROM `&#39;._DB_PREFIX_.&#39;orders`
WHERE MONTH(`date_add`) = MONTH(NOW())
AND YEAR(`date_add`) = YEAR(NOW())&#39;);

return isset($result[&#39;nb&#39;]) ? $result[&#39;nb&#39;] : 0;
}

public function getNumberOfDays()
{
$nbReturnDays intval(Configuration::get(&#39;PS_ORDER_RETURN_NB_DAYS&#39;));
if (!$nbReturnDays)
return true;
$result Db::getInstance()->getRow(&#39;
SELECT TO_DAYS(NOW()) - TO_DAYS(`delivery_date`)  AS days FROM `&#39;._DB_PREFIX_.&#39;orders`
WHERE `id_order` = &#39;.intval($this->id));
if ($result[&#39;days&#39;] <= $nbReturnDays)
return true;
return false;
}


public function isReturnable()
{
return (intval(Configuration::get(&#39;PS_ORDER_RETURN&#39;)) == 1 AND intval($this->getCurrentState()) == _PS_OS_DELIVERED_ AND $this->getNumberOfDays());
}

public function setInvoice()
{
// Set invoice number
$number intval(Configuration::get(&#39;PS_INVOICE_NUMBER&#39;));
if (!intval($number))
die(Tools::displayError(&#39;Invalid invoice number&#39;));
$this->invoice_number $number;
Configuration::updateValue(&#39;PS_INVOICE_NUMBER&#39;, $number + 1);

// Set invoice date
$this->invoice_date date(&#39;Y-m-d H:i:s&#39;);

// Save
$this->update();
}

public function setDelivery()
{
// Set delivery number
$number intval(Configuration::get(&#39;PS_DELIVERY_NUMBER&#39;));
if (!intval($number))
die(Tools::displayError(&#39;Invalid delivery number&#39;));
$this->delivery_number $number;
Configuration::updateValue(&#39;PS_DELIVERY_NUMBER&#39;, $number + 1);

// Set delivery date
$this->delivery_date date(&#39;Y-m-d H:i:s&#39;);

// Update object
$this->update();
}

static public function printPDFIcons($id_order$tr)
{
$order = new Order($id_order);
$orderState OrderHistory::getLastOrderState($id_order);
if (!Validate::isLoadedObject($orderState) OR !Validate::isLoadedObject($order))
die(Tools::displayError(&#39;Invalid objects!&#39;));
echo &#39;<span style="width:20px; margin-right:5px;">&#39;;
if (($orderState->invoice AND $order->invoice_number) AND intval($tr[&#39;product_number&#39;]))
echo &#39;<a href="pdf.php?id_order=&#39;.intval($order->id).&#39;&pdf"><img src="../img/admin/tab-invoice.gif" alt="invoice" /></a>&#39;;
else
echo &#39;&nbsp;&#39;;
echo &#39;</span>&#39;;
echo &#39;<span style="width:20px;">&#39;;
if ($orderState->delivery AND $order->delivery_number)
echo &#39;<a href="pdf.php?id_delivery=&#39;.intval($order->delivery_number).&#39;"><img src="../img/admin/delivery.gif" alt="delivery" /></a>&#39;;
else
echo &#39;&nbsp;&#39;;
echo &#39;</span>&#39;;
}

static public function getByDelivery($id_delivery)
{
    $res Db::getInstance()->getRow(&#39;
        
SELECT id_order
        FROM 
`&#39;._DB_PREFIX_.&#39;orders`
        
WHERE `delivery_number` = &#39;.intval($id_delivery));
return new Order(intval($res[&#39;id_order&#39;]));
}

public function getTotalWeight()
{
$result Db::getInstance()->getRow(&#39;
SELECT SUM(product_weight product_quantityweight
FROM &#39;._DB_PREFIX_.&#39;order_detail
WHERE id_order = &#39;.intval($this->id));

return floatval($result[&#39;weight&#39;]);
}

static public function getInvoice($id_invoice)
{
return Db::getInstance()->getRow(&#39;
SELECT `invoice_number`, `id_order`
FROM `&#39;._DB_PREFIX_.&#39;orders`
WHERE invoice_number = &#39;.intval($id_invoice));
}
}

?>


Добавлено через 3 часа, 43 минуты и 48 секунд:
для этой формы, выбора времени, никакой ещё обработки нет, не знаюкак вообще это сделать, подскажите пожалуйста, просто вот как написать такую форму, что бы она записывала в базу данных значения, но при этом что бы она хранила много значений? т.е. что бы пользователи могли выбирать это врёмя, и у меня в админке оно для каждого заказа отображалось разное.
« Последнее редактирование: 14-06-2011 18:19 от Sega063 » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 14-06-2011 20:05 » 

чтобы еще и в админку внедрить твои пожелания... это надолго.
Движок построен по mvc-технологии.
Твоя задача... понять где модель, где контроллер, а где вьювер.

Так как не хочется глубоко вникать в prestahop, тебе придется самостоятельно в этом разобраться.

А теперь смотри...
Твоя форма это часть некторой "формы" (я так понял) формы order, Что это? Модель или вьювер? Я бы назвал вьювером - по сути дела шаблон.
Контроллер обрабатывает полученные данные от вьювера, и передает данные в модель
При заказе (order) используется как вьювер, так и контроллер, дальше я не смотрел, для обработки формы заказа. Соответсвенно тебе нужно дополнить и модель и вьювер и контроллер твоими "полями"формы.

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sega063
Интересующийся

ru
Offline Offline

« Ответ #9 : 14-06-2011 20:09 » 

Было бы не плохо всё это внедрить, вот только мозгов у меня на это не хватает, буду мучаться, может что то и получится. Спасибо за помощь! Буду теперь разбираться))) Я думал будет всё намного проще, сделаю модель, переменные, и форму для них, и просто заставить его их сохранять для каждого пользователя. а теперь понимаю что это всё очень запутанно и сложно))
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 14-06-2011 20:19 » 

Sega063, не... на самом деле это вес не сложно...
в двух словах..

html форма -> запрос  (вьювер)
запрос -> обработчик (контроллер)
обработчик -Ю модель (запись в базу

Возможно, я где-то ошибаюсь, в применении понятий... но приблизительно так.

Рекомендую рассмотреь сначала как работает форма order, как получает данные заказа сервер, как он их обрабатывает, и что он с сними делает дальше.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sega063
Интересующийся

ru
Offline Offline

« Ответ #11 : 14-06-2011 20:26 » 

я это уже рассматривал, и вот у меня большой минус в том, что я не понимаю большинство иэтих переменных и принципа действия)) Спасибо большое за ответ! Сейчас более понятнее стало, буду искать учебники, надеюсь они мне помогут)))
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 14-06-2011 20:52 » 

здесь, увы учебники не помогут...
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sega063
Интересующийся

ru
Offline Offline

« Ответ #13 : 14-06-2011 20:56 » 

значит буду надеяться на свои знания и на удачу, авось и получится))
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #14 : 14-06-2011 21:02 » 

Sega063, Улыбаюсь на авось надейся, а сам не плошай

Возникнут вопросы - милости просим.

Совет... Не спеши писать свою форму...
Разберись со стандартной формой заказа.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sega063
Интересующийся

ru
Offline Offline

« Ответ #15 : 14-06-2011 21:04 » 

Спасибо большое за советы и помощь! Буду сейчас рассматривать и разбираться
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 14-06-2011 21:08 » 

Если скинешь в личку, адрес сайта, то, возможно, что-то подскажу, не хочется запускать, даже тестовый вариант pestashop

Добавлено через 10 часов, 49 минут и 35 секунд:
тебе надо раскручивать контроллер
OrderController.php

а в нем (step 2) Это методы
$this->processAddress();
$this->autoStep();
$this->_assignCarrier();

Нужно смотреть каждый метод и узнать каким способом (через вызовы каких методов) происходит доступ к POST переменным


шаблон, в котором ты будешь создавать(менять)
order-carrier.tpl


« Последнее редактирование: 15-06-2011 07:58 от Sla » Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sega063
Интересующийся

ru
Offline Offline

« Ответ #17 : 15-06-2011 08:19 » 

Спасибо большое за помощь!!!!!))) Теперь уже будет легче, а то я лазил, смотрел искал непонятно где)))
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines