Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вот тут написал систему заливки CVS файла с товарами в базу.
osCommerce по-русски. Форум. > Дизайн и программирование > Базы данных, Easy Populate
Страницы: 1, 2
Мурань Евгений
Долго игрался с разными модулями по заливке из 1С в базу osCommerce и нашел море недостатков. И самый главный невозможность заливки файла скажем раз в полчаса (частая динамика изменения цен). Поставщики другие - база у них. Выгружают они все в CVS-файл
Код
products_image;products_model;categories_id;categories_name_ukr;categories_name_
r;

categories_id_parent;products_name_ukr;products_description_ukr;products_name_ru
s;

products_description_rus;products_price_r;products_price_prev_r;products_price_o
;products_price_prev_o;

products_weight;date_avail;tax_class_id;products_quantity

потом у них запускается программа ftpsupershop.exe и заливает файл по FTP ко мне на сервер (см. файл ftpsupershop.ini) после чего мой скрипт по крону (периодично) запускается на сервере и обновляет базу.
Сам скрипт cvs_load.pl (написан на Perl) (в самом верху скрипта надо заполнить конфигурационные параметры:
Код
$file_cvs = "/usr/home/hosting/supershop.if.ua/htdocs/update/upload.cvs";

$file_log = "/usr/home/hosting/supershop.if.ua/htdocs/tmp/ksenia.log";

$language_id_rus=4;

$language_id_ukr=5;



$connect_string = "DBI:mysql:host=127.0.0.1;database=supershop";

$connect_user = "shopbase";

$connect_password = "shoppassw";


Лично я доволен. smile.gif

P.S. Версия двух языковая - при необходимости исправте или напишите - я добавлю.

Прикрепленная версия без поддержки Total B2B, с поддержкой в форуме ниже!
Aleck
Странно, но я скачать файл не могу.

Пишет: К сожалению вы не можете просматривать или скачивать это вложение

Уважаемый администратор, помогите.
Fredi
Скачивается без проблем, смотрите установки вашего компьютера.
Aleck
Действительно, с другого компьютера скачалось.
Спасибо.
vworld
А можно немного поподробнее про эту систему заливки? а то что-то вообще не врубился sad.gif
Мурань Евгений
Все предельно просто. В папку по фтп льется CVS файл, а с заданым интервалом (по крону) запускается мой скрипт и заливает CVS файл в базу.
Таблицы товаров и каталогов вычищаются, отзывы сохраняются в промежуточном масиве по номеру товара и, потом, привязываются после заливки товара к новым product_id. Из-за того, что таблицы перед заливкой вычищаются, нет проблем со старым товаром. Кроме этого предусмотрено поле пердыдущей цены - дает возможность корректно заполнить скидки, что скрипт с успехом и делает.
Заливка товаров на 1400 позиций занимает 1-2 секунды.

Расшифровка полей в CVS-файле по порядку:
products_image - фото товара
products_model - код товара
categories_id - номер раздела
categories_name_ukr - назва раздела на укр.
categories_name_r - назва разделу на рус.
categories_id_parent - номер батьковского раздела (для товара номер раздела в котором он находится)
products_name_ukr - назва товара на укр.
products_description_ukr - описание товара на укр.
products_name_rus - назва товара на рус.
products_description_rus - описание товара на рос.
products_price_r - цена продажная в USD
products_price_prev_r - предыдущая продажная цена в USD
products_price_o - цена оптовая в USD (не загружается)
products_price_prev_o - предыдущая оптовая цена в USD (не загружается)
products_weight - вес товара в кг
date_avail - конечная дата наличия товара в магазине (можна не заполнять). Формат mm/dd/yyyy
tax_class_id - клас налогобложения
products_quantity - колличество товара на складе
ProxyKZ
Радует, что многие ведут свои разработки в области "синхронизации" OSC и 1С. И достигают результатов.
Обязательно опробую выложенное здесь.

p.s. Евгений, неплохо бы выложить в "Загрузку" с инструкцией, хотя многим было бы жалко такую разработку отдавать Просто так.
vworld
Мурань Евгений
Все равно не доходит sad.gif
Ведь надо в определенном формате из 1С выгрузить...и еще очень вниматеольно подходит к product_id, чтобы отзывы сохранились, так же нюанс существует и в структуре состава каталога товаров по группам и подгруппам...
Можно еще подробнее для тех кто в танке?
Мурань Евгений
Выгрузка программера 1С. Я этим не занимался. Дал ему структуру, а он мне написал выгрузку. (я в 1С не силен). Файл полностью отрахает сруктуру каталога в 1С.
product_id - мой скрипт обрабатывает сам при загрузке в базу - Вам об этом заботится не стоит.
Ваше дело только правильно выгрузить файл, положить его в каталог и запустить скрипт. Сейчас товара у меня более 2200 наименований - загрузка 1-2 сек. Можете сами посмотреть пример что получается на
http://supershop.if.ua
Незнама
OT
Евгений,
у вас при отключенном ActiveX невозможно оформить заказ -- не происходит перехода на https. очень странно на других сайтах подобного не замечал.
Мурань Евгений
Если Вы говорите про WebMoney, то это стандартно для Вебмани. Если все модули, то проверл - заказ оформляется. Проверте, пожалуйста, если повторится на других заказах, то опишите подробней ошибку.
Незнама
в корзине назымаю "оформить" и не срабатывает
Мурань Евгений
Спасибо! Потестирую! Может еще кто сталкивался и подскажет причину?
Мурань Евгений
Проверил. Все браузеры кроме IE нормально работают. IE предупреждает, но все равно на https переходит. А вот каза забрать ругательства... Есть идеи?
Мурань Евгений
а оформить Вам не дало, потому что Вы не зарегестрированы в маназине!
Незнама
мне вообщем-то все равно, как у вас делают заказы, но ОСК позволяет нам
положить в корзину -> оформить (зарегистрироваться)
так и
зарегистрироваться -> положить в корзину

у вас не работает. я нашел, сообщил вам. исправлять или нет ваше дело
Мурань Евгений
Исправлять надо! Но где собака порылась? sad.gif
Мурань Евгений
Все оказалось проще. Это ИЕ на флешевый банер ругается. smile.gif
Незнама
да? ща проверим..
Незнама
пока не могу сказать утвердительно.
всплыл новый глюк smile

1. положил в корзину 2 товара.
2. отметил их "удалить". нажал пересчитать.
3. в корзине товаров на сумму 0. есть кнопка "оформить"
4. нажимаю её ивижу, что я Євгеній Мурань. а также все дела для оформления заказа.
Что оформлять в корзине же пусто lol
Мурань Евгений
о! Глюк ССЛА у прова! Вот за это СПАСИБО! smile.gif
Мурань Евгений
Незнама:
Говорит что поправил - проверь еще разок, плиз.
Незнама
Евгений, у вас есть модуль вебмани. скажите, пожалуйста, после перехода на сайт вебмани, возвращается ли пользователь обратно на ваш сайт и, как он попадает (и попадает ли) на /checkout_success.php, чтобы завершить покупку и вам ушло сообщение о заказе.
Мурань Евгений
Да возвращается и попадает. Сообщение приходит. И соответсвенно при отказе - тоже возвращается, но уже не на /checkout_success.php
Незнама
а каким макаром? можете по шагово рассказать процесс ухода прихода.

и второе, модуль брали на офсайте?
Мурань Евгений
Да. Там же в архиве есть инструкция. Но сначало надо получить персональный сертификат - иначе работать не будет. sad.gif
http://www.oscommerce.com/community/contri...search,webmoney
Хотя в файле есть маленькая ошибочка - вот как правильно:
============
Код
Как инсталировать:



1. в includesmodulespaymentwebmoney.php найти строчку 49



 tep_draw_hidden_field('LMI_PAYEE_PURSE', 'Z912573467722') .



  Заменить код кошелька, который будет использован для приема WM.



2. включить в админе модуль Webmoney



3 .Изменить настройки торгового кошелька на https://merchant.webmoney.ru



  Success URL: http://www.yourhost.com/checkout_process.php   POST

  Fail URL:    http://www.yourhost.com/checkout_process.php   POST



4. Добавить данные в mySQL (изменить номер кошелька во второй строчке):



insert into configuration (configuration_id, configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, last_modified, date_added, use_function, set_function) values ('291', 'Enable WEBMONEY Module', 'MODULE_PAYMENT_WEBMONEY_STATUS', 'True', 'Do you want to accept WEBMONEY payments?', '6', '3', NULL, '2002-11-22 07:13:45', NULL, 'tep_cfg_select_option(array('True', 'False'),');

insert into configuration (configuration_id, configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, last_modified, date_added, use_function, set_function) values ('292', 'WEBMONEY ID', 'MODULE_WEBMONEY_WEBMONEY_ID', 'Z1234567894512', 'The WMZ to use for the WEBMONEY service', '6', '4', NULL, '2002-11-22 07:13:45', NULL, NULL);
Мурань Евгений
И еще прочитай
https://merchant.webmoney.ru/conf/guide_simple.asp
Шаг 2
Незнама
да-а, Женя. уже 10-ый раз получаю ошибку при регистрации "минимум 3 символов" очень содержательно!
че ей надо? (это я про ваш магаз)
Мурань Евгений
ICQ есть?
Мой: 44436588
Давай в онлайне
Незнама
т.е. помимо установки модуля надо ещё на сайте маней заполнить формочку и прописать адреса саксесс и фола.
а я то думаю, что у меня не получается...
Незнама
нету аси
Мурань Евгений
Нужно обязательно.
Проверил - регистрация прошла. Вы все обязательные поля заполняете???
Незнама
не все, но ошибка какова. это она так на город реагировала.
теперь, на стр. Подтверждение заказа! товар: 1 x Диск тормозной BDC3150 продублирован, но в корзине один и цена одна
Незнама
нажав на сайте маней "отказ" попал на ваш сайт, но сессия потерялась.
залогинился снова. корзина пустая, так и должно быть?
Мурань Евгений
Нет, конечто! Исправил (мне так кажется). Огромнейшее спасибо - ждк дальнейших багрелизов!
Мурань Евгений
Спасибо, дружище, за помощь! За это получайте патченный модуль для вебмани, что бы показывал название товара в основании и работал с суммами более 1000. Еще раз спасибо!
(только в 54 строке вставте номер своего кошелька!)
Незнама
посмотрю. но мне он не пригодится (: ОСК не юзаю
Незнама
название товара потырил у тебя (:

я еще сделал работу с двумя кошелками
MODULE_PAYMENT_WEBMONEY_WMR
MODULE_PAYMENT_WEBMONEY_WMZ

как бы еще передавать номер заказ в
xtc_draw_hidden_field('LMI_PAYMENT_NO', '')
Незнама
я взял из базы максимальный номер заказа и увеличил его на 1.
это конечно не уберегает нас от путаницы с нумерацией, т.к. пока этот клиент будет сражаться с оплатой на вебмани в это время могут оформит ещё один заказ, но, что делать...
Мурань Евгений
да, ты прав. не очень красивое решение. буду думать smile.gif
vworld
Мурань Евгений
и все же я хотел распросить про твой модуль откуда же берется файл CVS?
Давай приведу свою ситуацию...есть у меня от поставщика прайс в Екселе...ну допустим я каким то образом переведу его в текстовый вид с разделением табуляцией, затем я так понимаю уже вступает в работу твой скрипт?
Только вот лично моя ситуация затрудняется в том, что например первый прайс, который завели в ишоп был из 1000 наименований одной разновидности товара, но второй прайс, который собираюсь завести на ишоп использует уже 1001 пункт + еще нюанс в том как с ID товара быть?
Мурань Евгений
Верно. Скрипт работает уже с плоским текстовым файлом.
Если у тебя много прайсов - надо генерировать один общий плоский файл со всеми позициями товара, группами и т.д. Только так. Если ты подсунеш один файл - затянеш его, потом второй - затянеш, то данные из первого пропадут. Только ПОЛНАЯ заливка базы!
ID товара в базе магазина - поле автоинкремента - вот сервер сам с ним и разбирается - забудьте о нем и привязывайтесь к модели товара!
Как я выше описал, если к товару была рецензия, то она в базе останется и будет привязана к это му же товару!
Как работает система скидок - читайте выше.
Мурань Евгений
Прикрутил, Total B2B и сделал следующую вещь:
Первая цена - розничная
Вторая цена - оптовая

Для этого попатчил свой скрипт.
Перед использованием нужно в админке количество цен на товар выставить в 2 (читайте доку по Total B2B).
Farmer
Евгений, а вот такой вопрос, поскольку с каждым обновлением прайса, меняется products_id на товар, значит после каждой смены прайса (2 раза в час) будет меняться ссылка на товар, то как быть с поисковыми системами? Получается индексация таких страниц в принципе работать не будет? Или я чего-то не понимаю? :-)
Мурань Евгений
Все верно! За удобство надо чем то жертвовать... sad.gif
Scener
Евгений! :?: Вопрос в следующем... Каким образом можно сделать форматирование описания? Т.е. когда вставляешь описание не одной строкой, а, например: 1. Атрибут 1
2. Атрибут 2 и т.д., получается, что этот товар не отображается.... Просто не всегда удобно, когда описание товара налеплено в одной строке...
Спасибо....
Мурань Евгений
А стандартную HTML-разметку пробовал?
1. Атрибут 1<br>2. Атрибут 2<br>...
Scener
Не хочется таким образом, уж очень много товара, нельзя ли попроще, что-то вроде nl2br() ? Просто я не силен в перле....
Мурань Евгений
Ну ты в CVS файл выгружаеш одной строкой. Как ты хочеш что бы я догадался что ты хочеш несколько? Правильно вставить разделитель и я его заменю на <br>. А смысл? Нету! Вставляй сам сразу <br>.
Ведь я обрабатываю и загружаю, а твой вариант требует обработки до выгрузки информации в CVS.
Scener
На счет поисковиков... Может просто поставить перенаправление, в случае, если пользователь нажимает на ссылку с несуществующим товарным id, его перебрасывает на главную страницу магазина.
Вопрос только в одном, каким образом это осуществить...smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.