Новости Joomla

👩‍💻 WT Otpravkapochtaru - библиотека сервиса Отправка Почты России для Joomla-разработчиков.

👩‍💻 WT Otpravkapochtaru - библиотека сервиса Отправка Почты России для Joomla-разработчиков.

Joomla 5+ пакет для интеграции с API Почты России: нормализация данных, расчёт доставки, создание отправлений, партии, документы, возвраты, поиск отделений, справочники и SOAP-отслеживание.

v.3.0.0. Что нового?
Это дальнейшее развитие ранее закрытой Joomla-библиотеки для работы с API сервиса Отправка (для бизнеса) Почты России. Поэтому версия не 1.0.0, а 3.0.0.

Сейчас эта библиотека ушла от собственных реализаций и стала Joomla-обёрткой известного PHP SDK от Lapay Group.

Возможности библиотеки.
- получение настроек аккаунта, точек сдачи и текущего остатка запросов к API;
- нормализация адресов, ФИО и телефонов перед созданием отправления;
- расчёт тарифа и срока доставки;
- создание, поиск, изменение, удаление и возврат заказов в состояние «Новые»;
- проверка надёжности получателя;
- создание партий, просмотр партий и заказов внутри партии;
- генерация пакета печатных документов и формы Ф103;
- создание, изменение и удаление возвратных отправлений;
- поиск отделений по индексу, адресу и координатам, получение сервисов отделения;
- локальный список стран;
- SOAP-отслеживание операций по РПО и работа с билетами пакетного трекинга.

👩‍💻 Joomla-возможности.
В пакете библиотеки WT Otpravkapochtaru есть поля Joomla Form для расширений. Они позволяют работать в интерфейсе Joomla с некоторыми типами данных, получаемых по API из вашего личного кабинета в ЛК Почты России для бизнеса.
На данный момент в библиотеке доступны 3 поля списков, которые отображают доступные в аккаунте ОПС, типы и категории отправлений.
Поддерживаются зависимые списки: значение одного поля обновляется при изменении другого.

Системные требования.
Системные требования в основном связаны с системными требованиями апстрима библиотеки - LapayGroup PHP SDK.
- Joomla 5+
- PHP 8.3+
- Расширения PHP:
-- ext-mbstring
-- ext-simplexml
-- ext-soap (опционально, для трекинга)
-- ext-zip

Ссылки:
- Страница расширения
- GitHub библиотеки и документация

@joomlafeed

0 Пользователей и 1 Гость просматривают эту тему.
  • 10 Ответов
  • 1656 Просмотров
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Есть число с фиксированным набором знаков, необходимое кол-во знаков дописывается нулями в начале перед числом. Число вообще может быть равно 0, в этом случае оно будет выглядеть как '000000000000'. Число храниться в базе как строка и выводится во фронт компонентом. Вывод нужно сделать с форматированием, вставив пробелы в качестве разделителя групп: '000 000 000 000'. Как это можно реализовать быстро? number_format($this->escape($this->item->code), 0, '', ' ') выводит '0'. Имеется ли в php функция, аналогичная number_format, но учитывающая необходимое фиксированное кол-во знаков в результате?
*

icom

  • Давно я тут
  • 830
  • 202 / 4
Re: Форматирование числа в ведущими 0
« Ответ #1 : 07.11.2014, 22:11:34 »
можно так
Код
$code = '000000000000'.$this->item->code;
$code = substr($code, -12);

$res = '';
$g = 0;
for ($i = 0; $i < strlen($code); $i++) {
  if ($g == 3) {
    $res .= ' ';
    $g = 0;
  }

  $g++;
  $res .= $code[$i];
}

echo $res;
« Последнее редактирование: 07.11.2014, 23:58:42 от icom »
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
*

fsv

  • Живу я здесь
  • 2796
  • 414 / 2
Re: Форматирование числа в ведущими 0
« Ответ #3 : 07.11.2014, 23:01:34 »
sprintf / printf / +доработать
Веб-разработка: заказ. Только новая разработка.
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Форматирование числа в ведущими 0
« Ответ #4 : 07.11.2014, 23:48:45 »
Велосипед:
Код: php
  /*
   * string форматируемое число
   * int общее кол-во символов
   * int кол-во символов в блоке
  */
  function f_number($num,$rlenght,$rcount) {
    $num = preg_replace("[^0-9]",'',$num);
    if ($rlenght) {
      if (strlen($num) < $rlenght) {
        $num = str_pad($num, $rlenght, '0', STR_PAD_LEFT);
      } else if (strlen($num) > $rlenght) {
        $num = substr($num,0,$rlenght);
      }
    } else {
      $rlenght = strlen($num);
    }

    $result = '';
    while (strlen($num) > $rcount) {
      $result = substr($num,-$rcount).' '.$result;
      $num = substr($num,0,-$rcount);
    }
    if (strlen($num))
      $result = $num.' '.$result;

    return $result;
  }
Работает, меня устраивает. Оптимизация приветствуется.
« Последнее редактирование: 07.11.2014, 23:55:06 от AlekVolsk »
*

icom

  • Давно я тут
  • 830
  • 202 / 4
Re: Форматирование числа в ведущими 0
« Ответ #5 : 08.11.2014, 00:00:14 »
можно так
Код
$code = '000000000000'.$this->item->code;
$code = substr($code, -12);

$res = '';
$g = 0;
for ($i = 0; $i < strlen($code); $i++) {
  if ($g == 3) {
    $res .= ' ';
    $g = 0;
  }

  $g++;
  $res .= $code[$i];
}

echo $res;

а лучше так
Код
echo chunk_split(str_pad($this->item->code, 12, '0', STR_PAD_LEFT), 3, ' ');
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Форматирование числа в ведущими 0
« Ответ #6 : 08.11.2014, 00:09:42 »
Хороший рефакторинг )) но кол-во знаков может быть и не кратным кол-ву знаков в блоке, т.е. не 12 и 3, а 9 и 4, тогда
Код: php
echo chunk_split(str_pad('0', 9, '0', STR_PAD_LEFT), 4, ' ');
вернет '0000 0000 0', а надо '0 0000 0000', т.о. chunk_split() не подходит, ибо разбиение не стой стороны начинает.
*

icom

  • Давно я тут
  • 830
  • 202 / 4
Re: Форматирование числа в ведущими 0
« Ответ #7 : 08.11.2014, 00:26:01 »
Код: php
echo strrev(chunk_split(strrev(str_pad('0', 9, '0', STR_PAD_LEFT)), 4, ' '));
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Форматирование числа в ведущими 0
« Ответ #8 : 08.11.2014, 00:28:15 »
Шиворот-навыворот-задом-наперед )))

Код: php
  function f_number($num,$rlenght,$rcount) {
    return strrev(chunk_split(strrev(str_pad($num, $rlenght, '0', STR_PAD_LEFT)), $rcount, ' '));
  }
Работает, решено.
« Последнее редактирование: 08.11.2014, 00:32:19 от AlekVolsk »
*

icom

  • Давно я тут
  • 830
  • 202 / 4
Re: Форматирование числа в ведущими 0
« Ответ #9 : 08.11.2014, 00:33:38 »
Код: php
function f_number($num,$rlenght,$rcount) {
    return strrev(chunk_split(strrev(str_pad($num, $rlenght, '0', STR_PAD_LEFT)), $rcount, ' '));
}
окончательный вариант)

UPD: а, уже исправил)
*

AlekVolsk

  • Гуру
  • 6913
  • 416 / 4
Re: Форматирование числа в ведущими 0
« Ответ #10 : 08.11.2014, 00:41:41 »
Общая длина может быть произвольной, а может и фиксированной, согласно заданным параметрам (используется в компоненте).
Если длина фиксированная, а строка больше заданной длины, сделаем ей обрезание.
А еще бывают случаи, когда строка уже содержит лишние пробелы не в тех местах где нужно (данные импортируются на сайт извне).

Окончательный вариант пока так:
Код: php
  protected function f_number($num,$rlenght,$rcount) {
    $num = preg_replace("[^0-9]",'',$num);
    if ($rlenght) {
      if (strlen($num) > $rlenght)
        $num = substr($num,0,$rlenght);
    } else {
      $rlenght = strlen($num);
    }
    return strrev(chunk_split(strrev(str_pad($num, $rlenght, '0', STR_PAD_LEFT)), $rcount, ' '));
  }
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Форматирование текста. Вопрос связан с MySQL

Автор Аня

Ответов: 6
Просмотров: 1516
Последний ответ 06.05.2018, 00:35:31
от Аня
Сортировка материалов категории, содержащии в названии числа

Автор RezistoR

Ответов: 2
Просмотров: 1210
Последний ответ 15.12.2015, 23:49:36
от robert