Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Выгрузка заказов через почту. Формирование excel файла


Recommended Posts

Здравствуйте! Возникла следующая задача. Заказчик затребовал создать файл-приложение к письму которое приходит админу, чтобы загружать в старую 1с 7.7 данные по заказу. Поскольку со шлюзами старая 1с не дружит, было принято решение создать такое вот своеобразное приложение к письму в excel. Готовых модулей по этой теме я не нашел, но нашел на просторах инета код, который создавал нечто похожее.  Клиенту было нужно, чтобы в этом экселе выгружались товары списком, и я добавил  "product" =>$product['name'], . Проблема в том, что данный код создает excel, но там всего две строки (заголовок и одна строка с товаром). Подскажите, как сделать чтобы строк было много, и на каждой строке был товар в столбец? 

$data = array(
array("ORDER ID" => $order_id, 
"CONTACT PERSON"=>$order_info['shipping_firstname']." ".$order_info['shipping_lastname'],
"ADDRESS LINE1" =>$order_info['shipping_address_1'], 

"CITY" =>$order_info['shipping_city'],
 "PHONE_1"=>$order_info['telephone'], 

 "product" =>$product['name'],
 "price" =>$product['price'], 
 "WH NUMBER" =>$product['model'],
  "SKU" =>$product['sku'],
 "PIECES"=>$product['quantity'],
 "Total"=>$order_info['total']),
);



function filterData(&$str)
{
$str = preg_replace("/\t/", "\\t", $str);
$str = preg_replace("/\r?\n/", "\\n", $str);
$str = iconv("UTF-8", "WINDOWS-1251",  $str);
if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}

// file name for download
$fileName = $order_id.".xls";$flag = false;
foreach($data as $row) {
if(!$flag) {
// display column names as first row
echo implode("\t", array_keys($row)) . "\r\n";
$flag = true;
}
// filter data
array_walk($row, 'filterData');
$rows=  implode("\t", array_keys($row)) . "\r\n"  . implode("\t", array_values($row)) . "\r\n";file_put_contents( $fileName, $rows);
}

$mail->setTo('email of delivery company or any you need');
$mail->setFrom($this->config->get('config_email'));
$mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'WIN-1251'));
$mail->setSubject(html_entity_decode($subject, ENT_QUOTES, 'WIN-1251'));
$mail->setHtml($this->load->view('mail/excel', $data));
$mail->setText($text);
$mail->send();

 

Надіслати
Поділитися на інших сайтах


7 минут назад, Designer сказал:

1. Так XLS файл не создается, максимум вы можете создать CSV
2. Для отправки файла в письме, нужно использовать функцию addAttachment класса Mail

3. Читайте больше документацию и лучше изучите функционал движка

 

Дело в том, что XLS в этом примере создается в корень сайта. К письму я просто креплю ссылку на этот файл. Название заказа.xls. Мне бы просто получить подсказку, как сделать так, чтобы в таблице экселя создавался не одна строка с товаром, а  чтобы были все товары. 

 

Не пойму что нужно переделать здесь 

function filterData(&$str)
{
$str = preg_replace("/\t/", "\\t", $str);
$str = preg_replace("/\r?\n/", "\\n", $str);
$str = iconv("UTF-8", "WINDOWS-1251",  $str);
if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}

или здесь 

 

 

// filter data
array_walk($row, 'filterData');
$rows=  implode("\t", array_keys($row)) . "\r\n"  . implode("\t", array_values($row)) . "\r\n";file_put_contents( $fileName, $rows);
}
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.