Новости Joomla

Вышли релизы безопасности Joomla 6.1.3 и Joomla 5.4.8

Релиз безопасности Joomla 6.1.3 и Joomla 5.4.8

Проект Joomla! рад сообщить о выходе Joomla 6.1.3 и Joomla 5.4.8. Это релизы безопасности и исправления ошибок для серий 5.x и 6.x.

👩‍💻 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 Гость просматривают эту тему.
  • 0 Ответов
  • 4089 Просмотров
*

w00

  • Осваиваюсь на форуме
  • 16
  • 0 / 0
В общем у меня есть компонент для импорта цен на товары, мне нужно что бы из того же excel файла заносилась еще одна колоночка с данными о наличии товара.
admin.vmimporttool
Код
<?php
/** PHPExcel */
require_once 'includes/PHPExcel.php';
/** PHPExcel_IOFactory */
require_once 'includes/PHPExcel/IOFactory.php';

class VMImportTool {
const SKU_COL_NAME = 'Art';
const PRICE_COL_NAME = 'Pr_Rn';

const PRODUCT_CURRENCY = 'RUB';

private static $excelReader = null;

function __construct() {
$this->excelReader = PHPExcel_IOFactory::createReader('Excel2007');
$this->excelReader->setReadDataOnly(true);
}

private $rowCount = 0;
private $importCount = 0;

public function uploadFile($file) {

$this->rowCount = 0;
$this->importCount = 0;

$objExcel = @$this->excelReader->load($file);
if(!$objExcel) return false;
$objWorksheet = @$objExcel->getActiveSheet();
if(!$objWorksheet) return false;

$rowIterator = $objWorksheet->getRowIterator();
$skuCol = false;
$priceCol = false;
$isFindHeader = false;
foreach ($rowIterator as $row) {
if(!$isFindHeader) {
$cellIterator = $row->getCellIterator();
foreach ($cellIterator as $cell) {
if($cell->getValue() == self::SKU_COL_NAME) {
$skuCol = $cellIterator->key();
$isFindHeader = true;
}
if($cell->getValue() == self::PRICE_COL_NAME) {
$priceCol = $cellIterator->key();
$isFindHeader = true;
}

}
if($isFindHeader && ($skuCol===false || $priceCol===false)) {
return false;
}

  }
else {
  $cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false); // This loops all cells
$sku = '';
$price = '';
foreach ($cellIterator as $cell) {
if($cellIterator->key() == $skuCol) {
$sku = strip_tags(trim($cell->getValue()));
}
if($cellIterator->key() == $priceCol) {
$price = round(floatval($cell->getValue()),2);
}
  }
  if($this->import($sku, $price)) $this->importCount++;

$this->rowCount++;
}
}
return $this->rowCount;
}

protected function import($sku, $price) {
if(!$sku || !$price) return false;
global $database;
$database->setQuery("SELECT product_id FROM #__vm_product WHERE product_sku='$sku'");
$product_id = $database->loadResult();
if($product_id) {
$database->setQuery("SELECT product_price_id FROM #__vm_product_price WHERE product_id=$product_id");
$product_price_id  = $database->loadResult();
$update_time = time();
if($product_price_id) {
$database->setQuery("UPDATE #__vm_product_price SET product_price=$price, product_currency='".self::PRODUCT_CURRENCY."', mdate=$update_time WHERE product_id=$product_id");
$database->query();
}
else {
$database->setQuery("SELECT shopper_group_id FROM #__vm_shopper_group WHERE `default`=1");
$shopper_group_id  = $database->loadResult();
$database->setQuery("INSERT INTO #__vm_product_price(product_id, product_price, product_currency,cdate,mdate,product_price_vdate,product_price_edate,shopper_group_id) VALUES($product_id,$price,'".self::PRODUCT_CURRENCY."',$update_time,$update_time,0,0,$shopper_group_id)");
$database->query();
}
return true;
}
return false;
}

public function getImportStat() {
return array('rows_imported' => $this->importCount, 'rows_count' => $this->rowCount);
}
}
?>
vmimporttool.class
Код
<?php
defined( '_VALID_MOS' ) or die( 'Доступ Запрещен' );

if($task == 'load') {
submitRequest();
}

echo '<form enctype="multipart/form-data" action="index2.php?option=' . $option .'" method="post" name="filename">';
echo '<input type="hidden" name="option" value="'.$option.'">';
echo '<input type="hidden" name="act" value="'.$act.'">';
echo '<input type="hidden" name="task" value="load">';
echo '<table class="adminform"><tr><th>Импорт данных о ценах продукции</th></tr>
<tr><td align="left">Файл : <input class="text_area" name="userfile" type="file" size="100"/><input class="button" type="submit" value="Загрузить" /></td></tr>
</table>';
echo '</form>';



/**
*/
function submitRequest(  ) {
global $mainframe;
require_once( $mainframe->getPath( 'class' ) );

// Check if file uploads are enabled
if (!(bool)ini_get('file_uploads')) {
showMessage( "Импорт данных невозможен, пока запрещена загрузка файлов.", 'Ошибка импорта данных');
return;
}


$userfile = mosGetParam( $_FILES, 'userfile', null );

if (!$userfile || $userfile[error] || !$userfile[tmp_name] ) {
showMessage( 'Выберите файл для импорта данных', 'Ошибка импорта данных');
return;
}

$importTool = new VMImportTool();

$result = $importTool->uploadFile($userfile[tmp_name]);

if ($result !== false) {
$stat = $importTool->getImportStat();
showMessage( 'Данных из файла ' . $userfile[name] . ' загружены в систему. Просмотренно ' . $stat[rows_count] .' строк, затронутто ' . $stat[rows_imported] . ' записей', 'Загрузка данных завершена' );
} else {
showMessage( 'Во время загрузки произошла ошибка. Убедитесь, что выбранный файл верен и попробуте еще раз.', 'Ошибка импорта данных' );
}
}

/**
* @param string
* @param string
* @param string
*/
function showMessage( $message, $title) {
echo '<br /><table class="adminheading"><tr><th class="install">'.$title.'</th></tr></table>';
echo '<table class="adminform"><tr><td align="left"><strong>'.$message.'</strong></td></tr></table><br />';
}
 ?>

Сам php не знаю, помогите доделать пожалуйста  !
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

1C УТ 8.x &lt;-&gt; VirtueMart по протоколу CommerceML

Автор Centoff

Ответов: 1315
Просмотров: 254842
Последний ответ 27.10.2020, 15:32:10
от Leo1986
Импорт из CSV товаров с типами и свойствами из

Автор Gruz

Ответов: 499
Просмотров: 169268
Последний ответ 23.02.2017, 15:15:42
от orchanin
Как импортировать файл XML в Joomla VirtueMart?

Автор Кот Смюлан

Ответов: 2
Просмотров: 7396
Последний ответ 14.07.2016, 18:40:24
от Berzerker
импорт товаров в YML Яндекс маркет

Автор zmeyx

Ответов: 5
Просмотров: 13648
Последний ответ 14.07.2016, 18:34:28
от Berzerker
Общие вопросы по j1.5.26+vm1.1.9+импорт из 1С

Автор alexzhimuk

Ответов: 2
Просмотров: 4807
Последний ответ 06.05.2016, 15:28:04
от alexzhimuk