Автор Тема: Автоматизация Import/Export?  (Прочитано 6006 раз)

nik-taraz

  • Гость
Автоматизация Import/Export?
« : Декабря 10, 2012, 08:40:06 pm »
Здравствуйте Уважаемые форумчане!

Вопрос:
Есть программа для ведения розничной торговли (keremet2030.kz/kassa), хочу организовать автоматическую выгрузку нового товара, цен и остатков, не прибегая к админке. Предположительно программа формирует xls прайс, заливает его по FTP на сайт, и отправляется некий post запрос и происходит обновление.
Как это реализовать?

Оффлайн Юрий

  • Старожил
  • ****
  • Сообщений: 322
    • Просмотр профиля
    • Во-Сток
Re: Автоматизация Import/Export?
« Ответ #1 : Декабря 12, 2012, 12:02:14 am »
ну нужно сделать php скрипт который при получении этого запроса выполнит импорт...

nictboom

  • Гость
Re: Автоматизация Import/Export?
« Ответ #2 : Декабря 12, 2012, 12:15:42 am »
Цитировать
Предположительно программа формирует xls прайс, заливает его по FTP на сайт
и предполагаю, возможно, еще крон..

nik-taraz

  • Гость
Re: Автоматизация Import/Export?
« Ответ #3 : Декабря 12, 2012, 09:15:42 pm »
Всем спасибо, решение нашлось. никаких скриптов писать не нужно, ничего заливать по FTP тоже не надо (Кроме изображений). Все делается посредством Post запросов. Если кому интересно, могу выложить код  ;)

nictboom

  • Гость
Re: Автоматизация Import/Export?
« Ответ #4 : Декабря 13, 2012, 02:50:21 am »
а давайте. и Вам как "отдушина", и нам интерес потешить. авось и в релиз "пристроят". ;)
ток все одно не понял полного объема задачи.

nik-taraz

  • Гость
Re: Автоматизация Import/Export?
« Ответ #5 : Декабря 13, 2012, 09:55:06 am »
Программа на дельфе, в ней ведется учет товара. дописал возможность выгрузки базы в XLS файл со структурой для импорта в Shop script. как доделаю, выложу в свободное пользование =)
Также программа парсит гугль на изображения и автоматически делает ресайз для интернет магазина
Пост запросы формируем следующим образом:
- Авторизация и загрузка прайса:
procedure TForm1.btn4Click(Sender: TObject);
var
  http:TidHttp;
  CooM:TidCookieManager;
  data:TStringList;
  page, id, name:String;
  fs:TFileStream;
  i:integer;
begin
  http:=TIdHTTP.Create(Self);
  data :=TStringList.Create;
  CooM:=TidCookieManager.Create(http);
  http.AllowCookies:=true;
  http.CookieManager:=CooM;
  http.HandleRedirects:=true;
  pnl2.Caption := 'Соединение...';
  data.Add('authorize=1');
  data.Add('login=admin');
  data.Add('password=123');
  Page:= http.Post('http://АДРЕС_МАГАЗИНА/access_admin.php?', data);
  pnl2.Caption := 'Авторизация...';


  if Pos('Логин / Login :',page) <> 0 then
  begin
    MessageDlg('Ошибка авторизации',  mtInformation, [mbOK], 0);
    pnl2.Caption := 'Ошибка авторизации!';
    data.Free;
    Coom.Free;
    http.Free;
    Exit;
  end;
  data.Clear;
  pnl2.Caption := 'Загрузка прайса, пожалуста подождите...';
  data.Add('dpt=catalog');
  data.Add('sub=import');
  data.Add('export=yes');
  data.Add('type=xls');

  fs := TFileStream.Create(ExtractFilePath(Application.ExeName) + 'Prise.xls',fmCreate);
  http.Post('http://АДРЕС_МАГАЗИНА/admin.php?', data, fs);
  if fs.Size = 0 then
    begin
    MessageDlg('Ошибка загрузки файла',  mtInformation, [mbOK], 0);
    pnl2.Caption := 'Ошибка загрузки  прайса!';
    data.Free;
    Coom.Free;
    http.Free;
    fs.Free;
    Exit;
    end;

  fs.Free;
  data.Free;
  Coom.Free;
  http.Free;

Таким же способом отправляем пост запрос на загрузку подготовленного прайса.

nik-taraz

  • Гость
Re: Автоматизация Import/Export?
« Ответ #6 : Декабря 13, 2012, 11:49:08 am »
pehser,
а имеется ли возможность импорта в csv а не в xls. если да, тогда получится мультиситемная прога. (xls в delphi или в том же лазэрус - это OLE объект, а это значит требуется установленный excel.)
пока что мои попытки получить CSV файл от магазина закончились этим:
<!--error--><br />
<b>Fatal error</b>:  Class 'PHPExcel_Calculation' not found in <b>Z:\home\k46\www\core\excel\Classes\PHPExcel\Writer\CSV.php</b> on line <b>130</b><br />
<script language=JavaScript src='/denwer/errors/phperror_js.php'></script>
« Последнее редактирование: Декабря 13, 2012, 11:57:03 am от nik-taraz »