Skip to content

Instantly share code, notes, and snippets.

@iKrevedko
iKrevedko / external.js
Last active January 27, 2017 14:15
external delivery sample
(function($) {
MyExternal = (function() {
function MyExternal(deliveryId, fieldId) {
this.deliveryId = deliveryId;
this.fieldId = fieldId;
this.bind();
}
MyExternal.prototype.input = function() {
return this.element || (this.element = $(this.inputSelector));
Важно!!
После того, как вы добавили обработчик события 'inited:insales:checkout:deliveries'
нужно вызвать событие 'ready:insales:delivery' (можно для document), которое сообщает нам о том, что вы готовы обрабатывать события.
В этом случае если событие 'inited:insales:checkout:deliveries' уже сработало, мы сгенерируем его повторно.
Для вызова событий необходимо использовать CustomEvent
// Для удобства вызова события можно добавить метод jQuery
if (typeof $.fn.triggerCustom !== 'function') {
$.fn['triggerCustom'] = function(type, data, options) {
Действия приложения необходимые для подключения способа доставки.
1. Создаем доп поля для заказа (опционально)
В доп полях можно хранить информацию необходимую для дальнейшей передачи в службу доставки (номер постамата, зона доставки и т.д.).
https://wiki.insales.ru/wiki/InSales_API_-_%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BF%D0%BE%D0%BB%D1%8F#.D0.94.D0.BE.D0.B1.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5
2. Создаем способ доставки
https://wiki.insales.ru/wiki/InSales_API_-_%D0%A1%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%D1%8B_%D0%B4%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B8#.D0.94.D0.BE.D0.B1.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5
(function($) {
MyExternalPickup = (function() {
function MyExternalPickup(deliveryId, fieldId) {
this.deliveryId = deliveryId;
this.fieldId = fieldId;
this.bind();
}
MyExternalPickup.prototype.input = function() {
return this.element || (this.element = $(this.inputSelector));
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script type="text/javascript">
(function($) {
MyExternalPickup = (function() {
function MyExternalPickup(deliveryId, fieldId) {
this.deliveryId = deliveryId;
this.fieldId = fieldId;
this.bind();
this.prependDialog();
'use strict';
self.addEventListener('push', function(event) {
if (!(self.Notification && self.notification.permission === 'granted')) {
return;
}
var data = {};
if (event.data) {
@iKrevedko
iKrevedko / block_and_block_list.txt
Last active February 16, 2017 09:30
Новый синтаксис работы с блоками и панелями блоков с учетом шаблонов блоков
Сейчас появилась возможность содздавать блоки с одинаковыми permalink для разных шаблонов блоков
т.е. у нас может быть блок slide1 с типом блоков slider1 и еще один slide1 с типом блоков slider2
в связи с этим мы добавили новый синтаксис для обращения к блокам через liquid
blocks.with_template['slider1'].slide1.content
blocks.with_template['slider2'].slide1.content
Тоже самое касается панелей блоков, за исключением того, что панели блоков могут не иметь типа
Запрос:
Актуально только для PostgreSQL, т.к. оконные функции есть не везде.
SELECT t.* FROM
(
SELECT
news.*,
row_number() OVER (PARTITION BY source ORDER BY source, CASE n_type WHEN 'realty' THEN 0 WHEN 'sport' THEN 1 ELSE 2 END, created_at DESC) as rnum
FROM news
@iKrevedko
iKrevedko / request.json
Created August 1, 2017 07:28
Пример запроса к внешнему сервису доставкт
{
"order": {
"order_lines": [
{
"quantity":1,
"weight":100, // Вес в кг
"dimensions":"100х10х3" //Габариты в формате ШхГхВ
}
],
"shipping_address": {
@iKrevedko
iKrevedko / response.json
Last active November 30, 2017 10:43
Ответ от сервиса доставки
[
{
"price": 100, // Стоимость доставки
// Для срока доставки может быть указано описание и\или числовые значения min и\или max
"delivery_interval": {
"min_days": 1, // Минимальный срок доставки
"max_days": 3, // Максимальный срок доставки
"description": "от 1 до 3-х дней" // Текстовое описание срока доставки
},
// Внутрениий идентификатор тарифа службы доставки. Нужен для возможности пересчета стоимости доставки при изменении состава заказа