1
Шаблоны XSLT / Re: Cумма значения атрибутов элемента на xslt
« : 06 Июля 2016, 17:38:23 »
Да, спасибо! Отлично работает
В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.
<Предложение>
<Ид>94fc9103-77c0-11e4-8b2c-d850e64ee1bc#d3874fa8-2a04-11e4-bd13-d850e64ee1bc</Ид>
<Артикул>1902319_9430</Артикул>
<Наименование>Вело куртка мужская</Наименование>
....
<Склад ИдСклада="213628c5-fdd3-11e3-b78c-dc85de5515fd" КоличествоНаСкладе="1"/>
<Склад ИдСклада="213628c6-fdd3-11e3-b78c-dc85de5515fd" КоличествоНаСкладе="3"/>
</Предложение>
<xsl:variable name="count" select="0"/>
<xsl:for-each select="../../Склад">
<xsl:variable name="count" select="$count + number(@КоличествоНаСкладе)" />
</xsl:for-each>
<option float="{$count}" object-id="{substring-after(../../Ид, '#')}"/>
$file = getServer('DOCUMENT_ROOT') . '/log.txt';
public function process($template = null) {
$this->order->order();
objectProxyHelper::includeClass('emarket/classes/payment/api/', 'TinkoffMerchantAPI');
$tinkoff = new TinkoffMerchantAPI($this->getValue('terminal_key'),$this->getValue('password'),$this->getValue('url'));
$amount = $this->order->getActualPrice() * 100;
$orderId = $this->order->getValue('number');
$customerId = $this->order->getCustomerId();
$customer = umiObjectsCollection::getInstance()->getObject($customerId);
$email = $customer->getValue('e-mail');
if(!$email) {
$email = $customer->getValue('email');
}
$params = array('OrderId' => $orderId, 'Amount' => $amount, 'DATA' => 'Email='.$email);
$tinkoff->init($params);
$param = array();
$param['link'] = $tinkoff->paymentUrl;
// Вот этот кусок...
$file = 'log.txt';
$info = 'Параметры: ';
$info .= $params['OrderId'];
$info .= PHP_EOL;
$info .= 'Ссылка: ';
$info .= $param['link'];
$info .= PHP_EOL;
file_put_contents($file, $info);
// ...кода не работает
$this->order->setPaymentStatus('initialized');
list($templateString) = def_module::loadTemplates("emarket/payment/tinkoff/".$template);
return def_module::parseTemplate($templateString, $param);
}
public function applyBonus(){
$urlPrefix = cmsController::getInstance()->getUrlPrefix() ? (cmsController::getInstance()->getUrlPrefix() . '/') : '';
$order = $this->getBasketOrder();
$bonus = getRequest('bonus');
if ($bonus || $bonus === 0 || $bonus === '0') {
$order->setBonusDiscount($bonus);
$order->refresh();
if (!$order->getActualPrice()) {
$order->setPaymentStatus('accepted');
}
}
$this->redirect($this->pre_lang .'/'. $urlPrefix . 'emarket/cart/');
}
$permissions = array('purchasing' => array('applyBonus'));
<xsl:if test="$bonus > 0">
<tr>
<td colspan="6" style="border:0;text-align:right;color:#408fd1;font-weight:bold;padding:2px 5px;">
Вы можете оплатить Ваш заказ накопленными бонусами. Доступно бонусов на <span id="bonus_available"><xsl:value-of select="$bonus" /></span> руб.
</td>
<td colspan="2" style="border:0;text-align:center;padding:2px 5px;">
<input type="text" id="bonus_amount" name="bonus" placeholder="Введите кол-во бонусов"/>
</td>
<td style="border:0">
<input type="button" id="bonus_apply" class="btn bonus_apply" value="Оплатить" />
</td>
</tr>
</xsl:if>
$('#bonus_apply').live('click',function(e){
e.preventDefault();
//Вызов кастомного метода зачисления бонусов
$.ajax({
type: "POST",
url: '/emarket/applyBonus/',
data: $('#bonus_amount').serialize(),
success: function(response){
var totalPrice = $('#total_price').text().replace(/\s/g, ''),
deliveryPrice = $('#result_delivery_price').text(),
newDiscount = $(response).find('#result_discount').text().replace(/\s/g, ''),
bonusAvailable = $(response).find('#bonus_available').text(),
resultTotalPrice;
resultTotalPrice = +totalPrice + +deliveryPrice - +newDiscount;
$('#result_discount').text(newDiscount.replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 '));
$('#result_total_price').text(String(resultTotalPrice).replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 '));
$('#bonus_available').text(bonusAvailable);
}
});
});
$price = $order->getActualPrice();
$price = $order->getOriginalPrice();
//сохранение способа оплаты и редирект на итоговую страницу, либо страницу подтверждения оплаты.
$order->setValue('payment_id', getRequest('payment-id'));
$order->refresh();
$paymentId = getRequest('payment-id');
if(!$paymentId) {
$this->errorNewMessage(getLabel('error-emarket-choose-payment'));
$this->errorPanic();
}
$payment = payment::get($paymentId);
if($payment instanceof payment) {
$paymentName = $payment->getCodeName();
$url = "{$this->pre_lang}/".cmsController::getInstance()->getUrlPrefix()."emarket/purchase/payment/{$paymentName}/";
} else {
$url = "{$this->pre_lang}/".cmsController::getInstance()->getUrlPrefix()."emarket/cart/";
}
$this->redirect($url);
А что может содержаться в поле delivery_service_id?
И какой у данного поля тип данных?
<property id="618" name="delivery_service_id" type="string">
<title>Идентификатор отслеживания</title>
<value>12291951MOW</value>
</property>
<xsl:if test="document(concat('uobject://',@id,'.delivery_service'))//value">
<tr>
<td>
<xsl:text>Отслеживание заказа:</xsl:text>
</td>
<td>
<xsl:apply-templates select="document(concat('uobject://',@id))/udata" mode="delivery_service" />
</td>
</tr>
</xsl:if>
<property id="617" name="delivery_service" type="relation">
<title>Сервис доставки</title>
<value>
<item id="36165" name="DPD" type-id="250" ownerId="2" xlink:href="uobject://36165"/>
</value>
</property>
<xsl:template match="status_notification">
<xsl:variable name="order" select="document(concat('uobject://', order_id))/udata" />
<br />
<xsl:text>Ваш заказ № </xsl:text>
....
<xsl:when test="contains(status, 'доставляется')">
доставляется.
<xsl:if test="$order//property[@name = 'delivery_service_id']/value">
Отследить ход доставки Вы можете на сайте
<xsl:apply-templates select="document(concat('uobject://',order_id))/udata" mode="delivery_link" />
</xsl:if>
....
<xsl:template match="status_notification">
<br />
<xsl:text>Ваш заказ № </xsl:text>
<xsl:value-of select="order_number" />
<xsl:text> </xsl:text>
<xsl:choose>
<!-- Уведомления о статусе заказа -->
<xsl:when test="contains(status, 'поступил в обработку')">
был получен.
</xsl:when>
<xsl:when test="contains(status, 'отменён')">
был отменен.
</xsl:when>
<xsl:when test="contains(status, 'отклонён')">
был отклонен.
</xsl:when>
<xsl:when test="contains(status, 'доставляется')">
доставляется.
<xsl:if test="document(concat('uobject://',order_id,'.delivery_service_id'))//value">
<xsl:apply-templates select="document(concat('uobject://',order_id))/udata" mode="delivery_link" />
</xsl:if>
</xsl:when>
<xsl:when test="contains(status, 'готов')">
готов.
</xsl:when>
<xsl:when test="contains(status, 'принят')">
принят.
</xsl:when>
<xsl:when test="contains(status, 'оплачивается')">
оплачивается.
</xsl:when>
<xsl:when test="contains(status, 'редактируется')">
редактируется.
</xsl:when>
<!-- Уведомления о статусе оплаты -->
<xsl:when test="contains(status, 'ожидает оплаты')">
ожидает оплаты.
</xsl:when>
<xsl:when test="contains(status, 'оплачен')">
был оплачен.
</xsl:when>
<xsl:when test="contains(status, 'обновлен: оплата подтверждена')">
был обновлен, оплата подтверждена.
</xsl:when>
<xsl:when test="contains(status, 'обновлен: оплата отклонена')">
был обновлен, оплата отклонена.
</xsl:when>
<!-- Уведомления о статусе доставки -->
<xsl:when test="contains(status, 'ожидает отгрузки')">
ожидает отгрузки.
</xsl:when>
<xsl:when test="contains(status, 'доставляется')">
отправлен.
</xsl:when>
<xsl:when test="contains(status, 'доставлен')">
доставлен.
</xsl:when>
</xsl:choose>
<br/><br/>
<xsl:text>Посмотреть историю заказов и самостоятельно отслеживать этапы доставки заказа Вы можете в своем </xsl:text>
<a href="http://{domain}/users/login/">
<xsl:text>личном кабинете</xsl:text>
</a> в разделе <a href="http://{domain}/emarket/ordersList/" target="_blank"><xsl:text>"Мои заказы"</xsl:text></a>.<br />
</xsl:template>