} else { $cron_result[] = "Connected and logged in to ftp"; $order_file_exist = false; $contents = ftp_nlist($conn_id, $ftp_file_path); if (is_array($contents) && count($contents) > 0) { $downloaded = array(); foreach ($contents as $server_file) { $filename = basename($server_file); if ($filename != '.' && $filename != '..' && substr($filename, 0, 6) != '_done_') { $order_file_exist = true; $download = ftp_get($conn_id, $download_path . $filename, $ftp_file_path . $filename, FTP_BINARY); if ($download) { $downloaded[] = $filename; $download_type = strpos(strtolower($filename), 'pcl') !== false ? 'PCL' : 'ORDERS'; ftp_rename($conn_id, $ftp_file_path . $filename, $ftp_file_path . '_done_' . $filename); $class_jd->addDownload($jng_sp_id, $download_type, $filename, $download_status_to_decrypt); } } } } ftp_close($conn_id); if (!$order_file_exist) { $cron_result[] = "No file to download"; } else { $cron_result[] = count($downloaded) . " files downloaded:"; foreach ($downloaded as $d) { $cron_result[] = '- ' . $d; } } } ////////////////////////////
} function generateCustomerIDManually($postcode, $phone, $lastname, $firstname) { if ($phone != '') { $id = $postcode . $phone; } else { $id = $postcode . str_replace(' ', '', strtolower($lastname)) . str_replace(' ', '', strtolower($firstname)); } return $id; } $jng_sp_id = tep_db_prepare_input($_POST['jng_sp_id']); $sp_detail = $class_sp->retrieveDetail($jng_sp_id); $file = $_FILES['orders_file']; if (isFileTypeCSV($file['type'])) { $import_date = date('Y-m-d H:i:s'); $download_id = $class_jd->addDownload($jng_sp_id, 'ORDERS', $file['name'], 'R', $session_userinfo['username']); $file_handler = fopen($file['tmp_name'], "r"); $error_shipping_ward = false; $error_shipping_region = false; $error_billing_name = false; $error_billing_ward = false; $error_billing_region = false; $error_product = false; $prev_order_no = ''; $order_id = false; $order_created = 0; $item_count = 0; $total_price = 0; $first_row = true; while ($columns = fgetcsv($file_handler, 0, $csv_seperator, $csv_data_wrapper)) { if ($first_row) {
$filename = basename($server_file); if ($filename != '.' && $filename != '..' && substr($filename, 0, 6) != '_done_') { $order_file_exist = true; $fullpath = $download_path . $filename; $download = ftp_get($conn_id, $fullpath, $ftp_file_path . $filename, FTP_BINARY); if ($download && is_file($fullpath)) { $archive_path_raw = $archived_path . 'raw/' . date('Y') . '/'; if (!file_exists($archive_path_raw)) { mkdir($archive_path_raw); } $fullpath_archive = $archive_path_raw . $filename; copy($fullpath, $fullpath_archive); $fullpath_ready = $ready_path . $filename; rename($fullpath, $fullpath_ready); ftp_rename($conn_id, $ftp_file_path . $filename, $ftp_file_path . '_done_' . $filename); $class_jd->addDownload($jng_sp_id, 'ORDERS', $filename, $download_status_to_generate); $downloaded[] = $filename; } } } } ftp_close($conn_id); if (!$order_file_exist) { $cron_result[] = "No file to download"; } else { $cron_result[] = count($downloaded) . " files downloaded:"; foreach ($downloaded as $d) { $cron_result[] = '- ' . $d; } } }
function getAmazonNewOrders($with_header_message = true) { global $files; use_class('jng_sp_download'); $class_jd = new jng_sp_download(); $ready_path = SP_AMAZONEDE_DECRYPT_PATH; $archived_path = SP_AMAZONEDE_ARCHIVE_PATH; use_class('amazon/MarketplaceWebService/Client'); //MANDATORY CLASS use_class('amazon/MarketplaceWebService/Model/ErrorResponse'); //MANDATORY CLASS use_class('amazon/MarketplaceWebService/Model/GetReportRequest'); //FEED USED CLASS use_class('amazon/MarketplaceWebService/Model/GetReportResponse'); //FEED USED CLASS use_class('amazon/MarketplaceWebService/Model/GetReportListRequest'); //FEED USED CLASS use_class('amazon/MarketplaceWebService/Model/GetReportListResponse'); //FEED USED CLASS use_class('amazon/MarketplaceWebService/Model/TypeList'); //TYPE LIST CLASS $serviceUrl = "https://mws.amazonservices.de"; $aws_config = array('ServiceURL' => $serviceUrl, 'ProxyHost' => null, 'ProxyPort' => -1, 'MaxErrorRetry' => 3); $service = new MarketplaceWebService_Client(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, $aws_config, APPLICATION_NAME, APPLICATION_VERSION); $list = new MarketplaceWebService_Model_TypeList(); $list->setType('_GET_ORDERS_DATA_'); $report_from_date = new DateTime('-3 months', new DateTimeZone('UTC')); $report_to_date = new DateTime('now', new DateTimeZone('UTC')); $request = new MarketplaceWebService_Model_GetReportListRequest(); $request->setMerchant(MERCHANT_ID); $request->setMarketplace(MARKETPLACE_ID); $request->setAvailableToDate($report_to_date); $request->setAvailableFromDate($report_from_date); $request->setReportTypeList($list); $request->setAcknowledged(false); // echo"<pre>";var_dump($request);die(); $response = $service->getReportList($request); // echo"<pre>";var_dump($response);die(); if ($response->isSetGetReportListResult()) { if ($with_header_message) { echo "START DOWNLOADING NEW ORDERS FROM AMAZON PERIODE " . $report_from_date->format(DATE_ISO8601) . " TO " . $report_to_date->format(DATE_ISO8601) . "<br/>"; } $getReportListResult = $response->getGetReportListResult(); $reportInfoList = $getReportListResult->getReportInfoList(); if (count($reportInfoList) > 0) { $download_message = ' --- NO NEW ORDERS AVAILABLE ---<br/>'; foreach ($reportInfoList as $reportInfo) { if ($reportInfo->isSetReportId()) { $report_id = $reportInfo->getReportId(); $filename = date('Ymd') . '-' . $report_id . '.XML'; if (!$class_jd->isAlreadyDownloaded("jng_sp_id = 4 AND SUBSTRING_INDEX(filename, '-',-1) = '{$report_id}.XML'")) { $download_message = ''; echo " >> DOWNLOADING REPORT_ID: {$report_id} ... "; $fullpath_ready = $ready_path . $filename; $handle = fopen($fullpath_ready, 'w'); $request_report = new MarketplaceWebService_Model_GetReportRequest(); $request_report->setMarketplace(MARKETPLACE_ID); $request_report->setMerchant(MERCHANT_ID); $request_report->setReport($handle); $request_report->setReportId($report_id); $response_report = $service->getReport($request_report); echo "STREAMING XML {$filename} ... "; $archive_path_raw = $archived_path . 'raw/' . date('Y') . '/'; if (!file_exists($archive_path_raw)) { mkdir($archive_path_raw); } $fullpath_archive = $archive_path_raw . $filename; $class_jd->addDownload('4', 'ORDERS', $filename, 'R'); $files[] = $filename; fclose($handle); echo "PROCESS DONE<br/>"; } } } echo $download_message; } else { echo ' --- NO NEW ORDERS AVAILABLE ---<br/>'; } //LOOP MORE IF HAS NEXT NEW ORDERS if ($getReportListResult->isSetHasNext() && $getReportListResult->getHasNext()) { getAmazonNewOrders(false); } else { echo "DONE DOWNLOADING NEW ORDERS FROM AMAZON <br/>"; } } }
mkdir($backup_path); } //Give raw name also with $amazon_id to help cron order importer choose correct lastname $backup_name = "{$amazon_id}-{$file['name']}"; while (is_file($backup_path . $backup_name)) { $bn_split = explode('.', $backup_name); $bn_split_total = count($bn_split); $bn_split_ext = $bn_split_total - 1; $bn_split[$bn_split_total] = $bn_split[$bn_split_ext]; $bn_split[$bn_split_ext] = time(); $backup_name = implode('.', $bn_split); } $success_upload = false; if (move_uploaded_file($file['tmp_name'], SP_AMAZONVD_ARCHIVE_PATH . $backup_name)) { copy(SP_AMAZONVD_ARCHIVE_PATH . $backup_name, $backup_path . $backup_name); $class_jd->addDownload($jng_sp_id, 'ORDERS', $backup_name, $download_status_to_generate); $success_upload = true; } /* !!! MOVED THIS TO CRON sp-amazon-orders-downloader.php TO AVOID HALTED WHEN UPLOADING LARGE PO FILE !!! $download_id = $class_jd->addDownload($jng_sp_id, 'ORDERS', $backup_name, 'I', $session_userinfo['username']); $ean_detail_info = ($amazon_id==$amazon_sample_id) ? null : $class_jo->getAMVD_AutoCancelSupportingData($po_pid_collection, $sp_specsets); $line_counter = $items_starting_rows_in_excel; foreach($orders as $o) { $line_counter++; $logger->write("Processing Line $line_counter PO=$o[order_id] / EAN=$o[products_ean] / Qty=$o[order_quantity]"); $auto_cancel_rule = ($amazon_id==$amazon_sample_id) ? false : $class_jo->checkAMVD_AutoCancelRule($o['products_ean'], $ean_detail_info, $sp_specsets); if($o['order_quantity']>0 && !$auto_cancel_rule) { $dateonly = date('Y-m-d', $o['order_date']); if(!in_array($o['customer_shipping_id'], $amazon_shipment_id)) { if(!in_array($o['order_id'], $new_shipping_id_orders)) { $subjet = 'AM.VD New Shipping ID';
/** * Download order files from tb server * @return Array of String contain filename that available on tb out folder */ public function downloadOrders() { use_class('jng_sp_download'); $class_jd = new jng_sp_download(); $result = false; $target_dir = TRADEBYTE_FTP_OUT_PATH; $local_dir = TRADEBYTE_DOWNLOAD_ORDERS_PATH; $dir_handle = $this->openDir($target_dir); $jng_sp_id = 0; //ALL DOWNLOADED ORDERS VIA TRADEBYTE WE USE 0 AS jng_sp_id "ONLY" ON TABLE jng_sp_download $download_status_to_generate = 'R'; while (($file = readdir($dir_handle)) !== false) { if ($file != '.' && $file != '..') { $downloaded_file = $this->downloadFile($target_dir . $file, $local_dir . $file); if ($downloaded_file !== false && $downloaded_file != -1) { $files[] = $downloaded_file; $class_jd->addDownload($jng_sp_id, 'ORDERS', basename($downloaded_file), $download_status_to_generate); $order_done_filename = TRADEBYTE_FTP_ARCHIVE_PATH . $this->getFilePrefixDone() . $file; ssh2_sftp_rename($this->sftp, $target_dir . $file, $order_done_filename); } } } if (is_array($files) && count($files) > 0) { $result = $files; } return $result; }